Open5
EVPN Multihoming

EVPN Multihoming
FrroutingでEVPN Mulitihomingの検証環境を構築します。
進捗をスクラップとして記載していきます。
config等はこちら

構成
物理, Underlay
- Spine 1台、Leaf 3台のClosトポロジを構築。
- UnderlayにはIS-ISを使用。
- host01はleaf01, leaf02とLAG接続。Leaf01, Leaf02間でMC-LAG構成。
- host02はleaf03と物理接続。
Leaf01 - Host01間
- Leaf01,02 - host01間はLacp FastでLAGを構成。
Overlay
- Spine01をRRとしてBGP接続。

設定
Leaf
Leaf01 ip command (抜粋)
ip link add vxlan100 type vxlan id 100 dstport 4789 learning
ip link set vxlan100 type bridge_slave
ip link set dev vxlan100 master br100 addrgenmode none
ip link set dev vxlan100
ip link set dev vxlan100 up
ip link add bond0 type bond mode 802.3ad lacp_rate fast
ip link set bond0 address aa:bb:00:00:00:aa
ip link set dev eth3 master bond0
ip link set dev bond0 up
ip link set dev bond0 master br100
- VXLAN インターフェイス
- VID は100
- Data-Plane学習を有効化
- Bond インターフェイス
- bond のモードはLACP(802.3ad)を使用。rateはfast
leaf01 frr.conf (抜粋)
hostname leaf01
~~~ 中略 ~~~
interface bond0
evpn mh es-id 1
evpn mh es-sys-mac aa:bb:00:00:00:aa
evpn mh es-df-pref 100
router bgp 65000
neighbor fabric peer-group
neighbor fabric remote-as 65000
neighbor fabric capability extended-nexthop
neighbor fabric update-source 1.1.1.1
neighbor 1.1.1.11 peer-group fabric
~~~ 中略 ~~~
address-family l2vpn evpn
neighbor fabric activate
advertise-all-vni
advertise-svi-ip
exit-address-family
- host01向けのbond IFにes-id 1, es-sys-mac aa:bb:00:00:00:aa を設定。
- spine01(1.1.1.11)とbgp接続。

動作確認 1
事前確認
BGPのConvergenceが完了した状態
Leaf03# show bgp l2vpn evpn
BGP table version is 1, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-1 prefix: [1]:[EthTag]:[ESI]:[IPlen]:[VTEP-IP]:[Frag-id]
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1.1.1.1:2
*> [3]:[0]:[32]:[1.1.1.1]
1.1.1.1 32768 i
ET:8 RT:65000:100
Route Distinguisher: 1.1.1.2:2
*>i[3]:[0]:[32]:[1.1.1.2]
1.1.1.2 0 100 0 i
RT:65000:100 ET:8
Route Distinguisher: 1.1.1.3:2
*>i[3]:[0]:[32]:[1.1.1.3]
1.1.1.3 0 100 0 i
RT:65000:100 ET:8
Displayed 3 out of 3 total prefixes
- Route-Type 3でそれぞれのTEPを学習している
- VNIは100
Ping実施
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.292 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.315 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.094 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=0.243 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=0.240 ms
- ping疎通ができている
事後確認
BGP table version is 2, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-1 prefix: [1]:[EthTag]:[ESI]:[IPlen]:[VTEP-IP]:[Frag-id]
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1.1.1.1:2
*> [2]:[0]:[48]:[aa:cc:00:00:01:a1]
1.1.1.1 32768 i
ESI:03:aa:bb:00:00:00:aa:00:00:01
ET:8 RT:65000:100
*> [3]:[0]:[32]:[1.1.1.1]
1.1.1.1 32768 i
ET:8 RT:65000:100
Route Distinguisher: 1.1.1.2:2
*>i[3]:[0]:[32]:[1.1.1.2]
1.1.1.2 0 100 0 i
RT:65000:100 ET:8
Route Distinguisher: 1.1.1.3:2
*>i[2]:[0]:[48]:[aa:cc:00:00:02:01]
1.1.1.3 0 100 0 i
RT:65000:100 ET:8
*>i[3]:[0]:[32]:[1.1.1.3]
1.1.1.3 0 100 0 i
RT:65000:100 ET:8
Displayed 5 out of 5 total prefixes
- 1.1.1.1(Leaf01)から host01 bond0の macアドレスをRoute-Type2で学習している。
- 上記のアドレスをESI付きで学習している
- 1.1.1.3(leaf03)は、 host02 eth3の macアドレスをRoute-Type2で学習している
- こちらはESIタグは無し。
パケットキャプチャ
- host02 → host01へのarp解決からpingの通信ができている。
- leaf03(1.1.1.3) → spine01(1.1.1.11)への BGP アップデートメッセージ
- spine01(1.1.1.3) → spine01(1.1.1.11)への BGP アップデートメッセージ
- leaf01(1.1.1.1), leaf02(1.1.1.2)宛両方にarpパケットをVXLANでencapして送信している
- VNIは100

動作確認 2
leaf01 eth3 - host01 eth1間のリンクを落としたときの動作を確認
事前確認
leaf03# show bgp l2vpn evpn
BGP table version is 1, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-1 prefix: [1]:[EthTag]:[ESI]:[IPlen]:[VTEP-IP]:[Frag-id]
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1.1.1.1:2
*> [3]:[0]:[32]:[1.1.1.1]
1.1.1.1 32768 i
ET:8 RT:65000:100
Route Distinguisher: 1.1.1.2:2
*>i[3]:[0]:[32]:[1.1.1.2]
1.1.1.2 0 100 0 i
RT:65000:100 ET:8
Route Distinguisher: 1.1.1.3:2
*>i[3]:[0]:[32]:[1.1.1.3]
1.1.1.3 0 100 0 i
RT:65000:100 ET:8
Displayed 3 out of 3 total prefixes
- 動作確認 1の事後確認と同じ結果
leaf01 eth3 Down
leaf01
ip link set dev eth3 down
ping 疎通
host02 ping -c 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
--- 192.168.0.1 ping statistics ---
5 packets transmitted, 0 received, 100% packet loss, time 4092ms
host02 ping -c 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.239 ms
64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.240 ms
64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.244 ms
64 bytes from 192.168.0.1: icmp_seq=4 ttl=64 time=0.241 ms
64 bytes from 192.168.0.1: icmp_seq=5 ttl=64 time=0.241 ms
--- 192.168.0.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4092ms
rtt min/avg/max/mdev = 0.239/0.241/0.244/0.001 ms
- 1回目は不通。2回目で疎通が通った。
事後確認
leaf03# show bgp l2vpn evpn
clab-evpn-l2vpn-leaf03 show bgp l2vpn evpn
BGP table version is 3, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal
Origin codes: i - IGP, e - EGP, ? - incomplete
EVPN type-1 prefix: [1]:[EthTag]:[ESI]:[IPlen]:[VTEP-IP]:[Frag-id]
EVPN type-2 prefix: [2]:[EthTag]:[MAClen]:[MAC]:[IPlen]:[IP]
EVPN type-3 prefix: [3]:[EthTag]:[IPlen]:[OrigIP]
EVPN type-4 prefix: [4]:[ESI]:[IPlen]:[OrigIP]
EVPN type-5 prefix: [5]:[EthTag]:[IPlen]:[IP]
Network Next Hop Metric LocPrf Weight Path
Route Distinguisher: 1.1.1.1:2
*> [3]:[0]:[32]:[1.1.1.1]
1.1.1.1 32768 i
ET:8 RT:65000:100
Route Distinguisher: 1.1.1.2:2
*>i[2]:[0]:[48]:[aa:cc:00:00:01:a1]
1.1.1.2 0 100 0 i
ESI:03:aa:bb:00:00:00:aa:00:00:01
RT:65000:100 ET:8
*>i[3]:[0]:[32]:[1.1.1.2]
1.1.1.2 0 100 0 i
RT:65000:100 ET:8
Route Distinguisher: 1.1.1.3:2
*>i[2]:[0]:[48]:[aa:cc:00:00:02:01]
1.1.1.3 0 100 0 i
RT:65000:100 ET:8
*>i[3]:[0]:[32]:[1.1.1.3]
1.1.1.3 0 100 0 i
RT:65000:100 ET:8
Displayed 5 out of 5 total prefixes
- 1.1.1.1(leaf01)から macアドレスが消えている
- 1.1.1.2(leaf02)から macアドレスを学習している
パケットキャプチャ: 全体
- 1.1.1.11(spine01)→ 1.1.1.3(leaf03) へ BGP Update (withdrawn)を送信。
- 一回目のPingはReplyが来ず、ARPの再送も行っている
- ARPが帰って来ているのはeth1 Downから約25秒後。その後はPingが通っている
- No.160で1.1.1.11(spine01)から BGP Updateが来ている
パケットキャプチャ: BGP Withdrawn
*host01 bond0のmacアドレスがwithdrawn routesとして広報されている
パケットキャプチャ: Ping, ARP
- Requestが帰ってきていない
- VXLANパケットの宛先は10.0.0.1(leaf01 eth1)
- No.146/149/150 と No.155/156でVXLANパケットの宛先がことなっている
- ※画像はNo.146,155,156のみ
- No.156(1.1.1.2 leaf02宛のARP Request)のみResponseが来ている