Open5

EVPN Multihoming

ぽらりぽらり

構成

物理, 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が来ている