Cumulus LinuxでIP CLOS with EVPN-VXLAN構築
「Cumulus LinuxでIP CLOS構築」の続編です。
今回はBGPベースのCLOS構成にオーバーレイ(EVPN-VXLAN)を構築してきます。
次回は、この構成にVXLANルーティングを追加してみようと思います。
実機で試してみたい方必見!POCキャンペーン開催中!!
ホワイトボックスに興味ある方はこちらへ
EVPN-VXLANとは?
スケーラブルなIP CLOS構成のアンダーレイ上にL2オーバーレイを構築し、マルチテナンシーを実現する技術です。- データプレーンにVXLANを使用し、L3NW上にL2オーバーレイを構築
- VXLANのコントロールプレーンとしてEVPN使用(MP-BGPを用いて、MACアドレスやIPアドレス情報を伝搬)
- 一つのプロトコル(BGP)でIP CLOS(アンダーレイ)とVXLANのコントロールプレーン(EVPN)を提供
EVPN/VXLANデザイン(Cumulus Linux)
Cumulus LinuxでEVPN-VXLANを構成した場合の特徴を纏めてみました。- コントローラレスVXLANトンネル
- EVPNによりコントローラ不要
- ARP SusppressionによりDC内のブロードキャストトラフィックを削減
- ローカルのLeafSWがホストのARP要求に応答
- スケーラビリティと安定性
- スケーラブルで柔軟性があるBGPをコントロールプレーンとして使用
- ホストモビリティ
- BGP EVPNアドレスファミリーはホストのDC内の移動をトラックし、ホスト移動後のファーストコンバージェンスを実現
- VXLAN Active/Activeモードをサポート
- MLAGによりホストのリダンダンシーに対応
- VXLANルーティングをサポート
- VXLAN VNI間のIPルーティングをサポート
- マルチテナント用にVRF内のVXLANルーティングをサポート
座学はここまで。実機で確認していきます。
ネットワーク構成
BGP unnumberedのアンダーレイにEVPN-VXLANを設定します。- Leaf SWは、Edgecore Networks社のAS5812-54Tを使用
- Spine SWは、Edgecore Networks社のAS5812-54Xを使用
- Cumulus Linux 3.7.3を使用
Config設定
Leaf01
- /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*.intf
# The loopback network interface
auto lo
iface lo inet loopback
address 10.0.0.11/32
# The primary network interface
auto eth0
iface eth0
address 192.168.100.90/24
gateway 192.168.100.1
auto swp1
iface swp1
bridge-vids 100
auto swp49
iface swp49
link-speed 40000
auto swp50
iface swp50
link-speed 40000
auto bridge
iface bridge
bridge-ports swp1 vni-10100
bridge-vids 100
bridge-vlan-aware yes
auto vlan100
iface vlan100
vlan-id 100
vlan-raw-device bridge
auto vni-10100
iface vni-10100
bridge-access 100 # VNI-VIDマッピング
bridge-arp-nd-suppress on # ARP抑制
bridge-learning off
mstpctl-bpduguard yes
mstpctl-portbpdufilter yes
vxlan-id 10100 # VNI
vxlan-local-tunnelip 10.0.0.11 # VTEP(loopback指定)
- /etc/frr/frr.conf
frr version 4.0+cl3u9
frr defaults datacenter
hostname Leaf01
username cumulus nopassword
!
service integrated-vtysh-config
!
log syslog
!
interface swp49
ipv6 nd ra-interval 10
no ipv6 nd suppress-ra
!
interface swp50
ipv6 nd ra-interval 10
no ipv6 nd suppress-ra
!
router bgp 65011
bgp router-id 10.0.0.11
bgp bestpath as-path multipath-relax
neighbor FABRIC peer-group
neighbor FABRIC remote-as external
neighbor FABRIC bfd
neighbor FABRIC capability extended-nexthop
neighbor swp49 interface peer-group FABRIC
neighbor swp50 interface peer-group FABRIC
!
address-family ipv4 unicast
network 10.0.0.11/32
exit-address-family
!
address-family l2vpn evpn # EVPN設定
neighbor FABRIC activate
advertise-all-vni # 全てのVNIの情報を広報
exit-address-family
!
line vty
!
Spine01
- /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*.intf
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
address 10.0.0.1/32
# The primary network interface
auto eth0
iface eth0
address 192.168.100.85/24
gateway 192.168.100.1
auto swp49
iface swp49
link-speed 40000
auto swp50
iface swp50
link-speed 40000
- /etc/frr/frr.conf
frr version 4.0+cl3u9
frr defaults datacenter
hostname Spine01
username cumulus nopassword
!
service integrated-vtysh-config
!
log syslog
!
interface swp49
ipv6 nd ra-interval 10
no ipv6 nd suppress-ra
!
interface swp50
ipv6 nd ra-interval 10
no ipv6 nd suppress-ra
!
router bgp 65020
bgp router-id 10.0.0.1
bgp bestpath as-path multipath-relax
neighbor FABRIC peer-group
neighbor FABRIC remote-as external
neighbor FABRIC bfd
neighbor FABRIC capability extended-nexthop
neighbor swp49 interface peer-group FABRIC
neighbor swp50 interface peer-group FABRIC
!
address-family ipv4 unicast
network 10.0.0.1/32
exit-address-family
!
address-family l2vpn evpn # EVPN設定
neighbor FABRIC activate
exit-address-family
!
line vty
!
- Leaf02、Spine02は割愛(IPアドレス、ASN、ルーターIDなど個別パラメーターのみの違い)
動作確認
- VM1→VM2へPing: 当然通ります
# ping 172.16.100.20 -c 1
PING 172.16.100.20 (172.16.100.20) 56(84) bytes of data.
64 bytes from 172.16.100.20: icmp_seq=1 ttl=64 time=1.48 ms
--- 172.16.100.20 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.482/1.482/1.482/0.000 ms
- FDB(Leaf01)
cumulus@Leaf01:~$ net show bridge macs 08:00:27:8e:a4:c7
VLAN Master Interface MAC TunnelDest State Flags LastSeen
-------- ------ --------- ----------------- ---------- ----- ------------- ----------------
100 bridge vni-10100 08:00:27:8e:a4:c7 offload 8 days, 17:35:20
untagged vni-10100 08:00:27:8e:a4:c7 10.0.0.12 self, offload 8 days, 17:38:43
VM-2のMACアドレス(08:00:27:8e:a4:c7)をMP-BGPで学習し、ネクストホップがLeaf02のVTEP(10.0.0.12)になっていることが分かります。- BGP(Leaf01)
cumulus@Leaf01:~$ net show bgp
show bgp ipv4 unicast
=====================
BGP table version is 41, local router ID is 10.0.0.11
Status codes: s suppressed, d damped, h history, * valid, > best, = multipath,
i internal, r RIB-failure, S Stale, R Removed
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 10.0.0.1/32 swp49 0 0 65020 i
*> 10.0.0.2/32 swp50 0 0 65020 i
*> 10.0.0.11/32 0.0.0.0 0 32768 i
*= 10.0.0.12/32 swp49 0 65020 65012 i
*> swp50 0 65020 65012 i
Leaf02のVTEP(10.0.0.12)をマルチパスで学習しています。VM-2(08:00:27:8e:a4:c7)宛ての通信は、宛先IP:10.0.0.12でVXLANカプセル化し、ECMPにより分散されます。- ARP抑制(Leaf01)
cumulus@Leaf01:~$ net show evpn arp-cache vni 10100
Number of ARPs (local and remote) known for this VNI: 4
IP Type State MAC Remote VTEP
172.16.100.1 local active a8:2b:b5:cc:cc:94
fe80::aa2b:b5ff:fecc:cc94 local active a8:2b:b5:cc:cc:94
172.16.100.20 remote active 08:00:27:8e:a4:c7 10.0.0.12
172.16.100.10 local active 08:00:27:81:70:77
VM-2のARP情報(172.16.100.20 + 08:00:27:8e:a4:c7)をLeaf02のVTEPより、MP-BGPで学習しています。VM-1からのARP Requestは、ホストに最も近いLeaf01が応答します。まとめ
BGPベースのアンダーレイに、VXLANとEVPNの設定を追加するだけで、簡単にL2オーバレイを構成できることが確認できました。一つのプロトコル(BGP)でアンダーレイもオーバレイも構成出来るところがGoodですね!次回は、この構成にVXLANルーティングを追加してみようと思います。
実機で試してみたい方必見!POCキャンペーン開催中!!
ホワイトボックスに興味ある方はこちらへ