APRESIA Technical Blog

Cumulus LinuxでIP CLOS with EVPN-VXLAN構築

「Cumulus LinuxでIP CLOS構築」の続編です。 今回はBGPベースのCLOS構成にオーバーレイ(EVPN-VXLAN)を構築してきます。

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ルーティングをサポート

EVPN

座学はここまで。実機で確認していきます。

ネットワーク構成

BGP unnumberedのアンダーレイにEVPN-VXLANを設定します。

NW構成
  • 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キャンペーン開催中!!


ホワイトボックスに興味ある方はこちら