以下の内容はhttps://yokohama539.hatenablog.com/entry/2025/02/05/011117より取得しました。


vJunosでIP-Closなネットワーク作ってみた。~その2~

前回から引き続き、EVE-NG上でvJunos-SwitchとvJunos-Routerを使ってIP-Closなネットワークを検証したいと思います。
ちなみに前回の記事はこちらです。
yokohama539.hatenablog.com

今回はEVPN Multihomigについて検証したいと思います。

Multihomigというのはホストのリンクを冗長化して耐障害性を高める技術です。
異なるデバイスを跨いでLAGを組んで運用する感じです。
過去、各メーカーが独自の技術を出しまくって業を煮やしたのかEVPNは標準技術としてMultihomigの仕様をRFC7432にて定めてます。
その辺の詳しい話はNTTリミテッド(当時)のJANOGの発表資料をご覧ください。

流れとしては、まずMultihomigの設定(と確認)をして、リンク障害が発生してもホスト間の通信は継続される動作を確認したいと思います。

1. Multihomig設定

まず構成とパラメーターを考えます。
前回の記事での構成を元にして、Multihomig構成となるようvRouterとleaf間の構成を変更します(対向leafが足りないので1台増やします)
そしてESI(Ethernet Segment ID)の値を決めます。ESIはMultihomigを行うリンク1対の識別子になります。
フォーマットは「xx:xx:xx:xx:xx:xx:xx:xx:xx:xx」(10octet)となります。
手動で設定する際はRFC7432にて最初の1octet目は00にする決まりらしいので「00:01:02:03:04:05:06:07:08:09」にします。
必須ではないですが、わかりやすくleaf側のLACP System ID(LACPのMACアドレス)も「00:00:00:00:00:12」で定義します。
また、今回、冗長モードはデフォルトの「All-Active」で、DF選出アルゴリズムは「Preference based」を使いたいと思います。
DF(Designated forwarder)とはBroadcastやMulticastパケットなどを転送する役目を指します。よくわからん人はググってください(投げやり)

以上を踏まえると、今回の検証環境は以下の図のようになります。

それでは実際に設定をしていきます。
leaf-1とleaf-2についてはUplink側(Underlay/Overlayネットワーク)の設定は前回の記事から変わりません。
ge-0/0/6をae1にバンドルするようにし、ae1にトランクポートとESI周りの設定をするイメージです。
vRouter1についてはMultihomigできるよう物理IFを増やしLAG設定をします(EVPN Multihomig特有の設定とかはありません)
あと新規に増やすleaf-3の設定がありますが、前回の記事のleaf-1、leaf-2と(パラメーターが異なるだけで)一緒なので省略します。

//leaf-1
set chassis aggregated-devices ethernet device-count 1
set interfaces ge-0/0/6 gigether-options 802.3ad ae1
set interfaces ae1 esi 00:01:02:03:04:05:06:07:08:09
set interfaces ae1 esi single-active
set interfaces ae1 esi df-election-type preference value 150
set interfaces ae1 aggregated-ether-options lacp active
set interfaces ae1 aggregated-ether-options lacp system-id 00:00:00:00:00:12
set interfaces ae1 unit 0 family ethernet-switching interface-mode trunk
set interfaces ae1 unit 0 family ethernet-switching vlan members all
//leaf-2
set chassis aggregated-devices ethernet device-count 1
set interfaces ge-0/0/6 gigether-options 802.3ad ae1
set interfaces ae1 esi 00:01:02:03:04:05:06:07:08:09
set interfaces ae1 esi single-active
set interfaces ae1 esi df-election-type preference value 100
set interfaces ae1 aggregated-ether-options lacp active
set interfaces ae1 aggregated-ether-options lacp system-id 00:00:00:00:00:12
set interfaces ae1 unit 0 family ethernet-switching interface-mode trunk
set interfaces ae1 unit 0 family ethernet-switching vlan members all
//vRouter-1
set chassis aggregated-devices ethernet device-count 1
set interfaces ge-0/0/0 gigether-options 802.3ad ae1
set interfaces ge-0/0/1 gigether-options 802.3ad ae1
set interfaces ae1 vlan-tagging
set interfaces ae1 aggregated-ether-options lacp active
set interfaces ae1 unit 0 vlan-id 12
set interfaces ae1 unit 0 family inet address 12.12.12.1/24

2. Multihomig設定確認

確認をしていきます。
まずはLACPでLAGが組めているか確認します。

//leaf-1
lab@leaf-1# run show lacp interfaces ae1 extensive
Aggregated interface: ae1
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/6       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/6     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/6                  Current   Fast periodic Collecting distributing
    LACP info:        Role     System             System       Port     Port    Port
                             priority         identifier   priority   number     key
      ge-0/0/6       Actor        127  00:00:00:00:00:12        127        1       2
      ge-0/0/6     Partner        127  2c:6b:f5:da:79:c0        127        1       2
//leaf-2
lab@leaf-2# run show lacp interfaces ae1 extensive
Aggregated interface: ae1
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/6       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/6     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/6                  Current   Fast periodic Collecting distributing
    LACP info:        Role     System             System       Port     Port    Port
                             priority         identifier   priority   number     key
      ge-0/0/6       Actor        127  00:00:00:00:00:12        127        1       2
      ge-0/0/6     Partner        127  2c:6b:f5:da:79:c0        127        2       2
//vRouter-1
lab@vRouter-1# run show lacp interfaces ae1 extensive
Aggregated interface: ae1
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/0     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/0                  Current   Fast periodic Collecting distributing
      ge-0/0/1                  Current   Fast periodic Collecting distributing
    LACP info:        Role     System             System       Port     Port    Port
                             priority         identifier   priority   number     key
      ge-0/0/0       Actor        127  2c:6b:f5:da:79:c0        127        1       2
      ge-0/0/0     Partner        127  00:00:00:00:00:12        127        1       2
      ge-0/0/1       Actor        127  2c:6b:f5:da:79:c0        127        2       2
      ge-0/0/1     Partner        127  00:00:00:00:00:12        127        1       2

各物理IFのStateがCollecting distributingなのでLAGが正常に組めてるのが確認できます。
また、leaf側のLACP System IDが設定通り「00:00:00:00:00:12」となっているのが確認できます。

次にMultihomigの状態を確認します。まずleaf-1の状態から確認します。

//leaf-1
lab@leaf-1# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.12      0          0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 03 00:57:23
  Router-ID: 172.16.0.11
  Source VTEP interface IP: 172.16.0.11
  SMET Forwarding: Disabled

設定通り、(Redundancy)Modeが「all-active」となっています。
また、「Status: Up/Forwarding」より正常にパケット転送が可能な状態になっています。
そしてDesignated forwarderのPreferenceが150でleaf-1(172.16.0.11)になっており、Backup forwarderもleaf-2(172.16.0.12)が選出され、設定通りに動作してそうです。

次にleaf-2の状態を確認します。

//leaf-2
lab@leaf-2# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Configuration Error
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.11      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 03 00:57:23
  Router-ID: 172.16.0.12
  Source VTEP interface IP: 172.16.0.12
  SMET Forwarding: Disabled

leaf-1と同様に、「all-active」と「Status: Up/Forwarding」が表示されています。
また、自身(172.16.0.12)はBackup forwarderとなっています。leaf-2も設定通りに動作してそうですね。

もう少し詳しく見ていきます。

//leaf-1
lab@leaf-1# run show interfaces ae1 extensive | no-more
<snip>
    Mesh Group: __all_ces__, EVPN multi-homed status: Forwarding,
    EVPN multi-homed ESI Split Horizon Label: 0, Next-hop: 591, vpls-status: up
    Local Bias Logical Interface Name: vtep.32770, Index: 347, VXLAN Endpoint Address: 172.16.0.12
      Flags: Is-Primary, Trunk-Mode, 0x4000000
//leaf-2
lab@leaf-2# run show interfaces ae1 extensive | no-more
<snip>
    Mesh Group: __all_ces__,
    EVPN multi-homed status: Blocking BUM Traffic to ESI,
    EVPN multi-homed ESI Split Horizon Label: 0, Next-hop: 590, vpls-status: up
    Local Bias Logical Interface Name: vtep.32770, Index: 349, VXLAN Endpoint Address: 172.16.0.11
      Flags: Is-Primary, Trunk-Mode, 0x4000000

「EVPN multi-homed status」がleaf-1とleaf-2で状態が異なっていることが確認できます。
leaf-1はDFなので「Forwarding,」となっており、leaf-2はnon-DF(Backup forwarder)なので「Blocking BUM Traffic to ESI,」となっています。
これによってホストが(ARP Reqなどの)ブロードキャストパケットなどを二重に受け取る問題がなくなります。

続いてルーティングテーブルを詳しく見ていきます。
MultihomingではEVPN Route-type1と4のエントリーが非常に重要になります。
まずはleaf-1にてRoute-type1について確認していきます。

//leaf-1
lab@leaf-1# run show route table bgp.evpn.0 match-prefix 1:*

bgp.evpn.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1:172.16.0.11:0::010203040506070809::FFFF:FFFF/192 AD/ESI
                   *[EVPN/170] 00:12:23
                       Indirect
1:172.16.0.11:1::010203040506070809::0/192 AD/EVI
                   *[EVPN/170] 00:12:24
                       Indirect
1:172.16.0.12:0::010203040506070809::FFFF:FFFF/192 AD/ESI
                   *[BGP/170] 00:12:22, localpref 100, from 172.16.0.1
                      AS path: 4200000001 4200001002 I, validation-state: unverified
                    >  to 10.1.1.0 via ge-0/0/0.0
1:172.16.0.12:1::010203040506070809::0/192 AD/EVI
                   *[BGP/170] 00:12:23, localpref 100, from 172.16.0.1
                      AS path: 4200000001 4200001002 I, validation-state: unverified
                    >  to 10.1.1.0 via ge-0/0/0.0

四つのエントリーが載っており、上二つが自生成した経路情報、下二つが受信した経路情報となっています。
詳しい説明は省略しますが、末尾が「AD/ESI」の方は冗長モードなどの情報があり、「AD/EVI」はVTEPのリスト作成のための情報があります。
詳しい内容を知りたい方はRFC7432のSection 8.2.1と8.4.1に書いてますので、そちらをご覧ください。
とりあえずRoute-type1はこの2種のエントリーを生成および受信してれば大丈夫…って感じです。

続いてEVPN Route-type4について確認していきます。

//leaf-1
lab@leaf-1# run show route table bgp.evpn.0 match-prefix 4:*

bgp.evpn.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

4:172.16.0.11:0::010203040506070809:172.16.0.11/296 ES
                   *[EVPN/170] 00:53:07
                       Indirect
4:172.16.0.12:0::010203040506070809:172.16.0.12/296 ES
                   *[BGP/170] 00:53:06, localpref 100, from 172.16.0.1
                      AS path: 4200000001 4200001002 I, validation-state: unverified
                    >  to 10.1.1.0 via ge-0/0/0.0

こちらは二つのエントリーが載っており、上が自生成した経路情報、下が受信した経路情報となってます。
Route-type4はDFの選出に使われる情報になります。
Route-type1、4どちらも設定した通りのESI value「010203040506070809」の9octetの情報があるので大丈夫そうです(設定した最初の1octetは省略されます)

leaf-2側のルーティングテーブルも見ておきましょう。

//leaf-2
lab@leaf-2# run show route table bgp.evpn.0 match-prefix 1:*

bgp.evpn.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

1:172.16.0.11:0::010203040506070809::FFFF:FFFF/192 AD/ESI
                   *[BGP/170] 01:16:12, localpref 100, from 172.16.0.1
                      AS path: 4200000001 4200001001 I, validation-state: unverified
                    >  to 10.1.1.2 via ge-0/0/0.0
1:172.16.0.11:1::010203040506070809::0/192 AD/EVI
                   *[BGP/170] 01:16:13, localpref 100, from 172.16.0.1
                      AS path: 4200000001 4200001001 I, validation-state: unverified
                    >  to 10.1.1.2 via ge-0/0/0.0
1:172.16.0.12:0::010203040506070809::FFFF:FFFF/192 AD/ESI
                   *[EVPN/170] 01:16:11
                       Indirect
1:172.16.0.12:1::010203040506070809::0/192 AD/EVI
                   *[EVPN/170] 01:16:12
                       Indirect

lab@leaf-2# run show route table bgp.evpn.0 match-prefix 4:*

bgp.evpn.0: 9 destinations, 9 routes (9 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both

4:172.16.0.11:0::010203040506070809:172.16.0.11/296 ES
                   *[BGP/170] 01:16:30, localpref 100, from 172.16.0.1
                      AS path: 4200000001 4200001001 I, validation-state: unverified
                    >  to 10.1.1.2 via ge-0/0/0.0
4:172.16.0.12:0::010203040506070809:172.16.0.12/296 ES
                   *[EVPN/170] 01:16:29
                       Indirect

leaf-1の経路情報を受信してますね。問題なさそうです。
以上で設定の確認は終わりになります。

3. 動作確認その1 (vRouter側 通信断)

通信断を起こしても、もう一方のリンクで通信(経路収束)できるか動作確認してみたいと思います。
今回は尺の都合でDF(leaf-1)側のリンクダウンの検証のみとさせてください…。

まず、leaf-1とvRouter-1間のリンクをダウンさせてみます。
リンクダウン契機でDFがleaf-2となり、vRouter間の通信が継続されるか確認します。
概要はこんな感じです。

まずはリンクダウン前の状態を確認します。
まだ何もしてないので、leaf-1、leaf-2のDF選出状況は先の確認時と変わってないことを確認します。

//leaf-1
lab@leaf-1# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.12      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 04 22:39:06
  Router-ID: 172.16.0.11
  Source VTEP interface IP: 172.16.0.11
  SMET Forwarding: Disabled
//leaf-2
lab@leaf-2# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.11      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 04 22:39:06
  Router-ID: 172.16.0.12
  Source VTEP interface IP: 172.16.0.12
  SMET Forwarding: Disabled


そして、leaf-3にて「show ethernet-switching vxlan-tunnel-end-point esi」コマンドで各ESIにおけるVTEPマッピング状況を確認します。

//leaf-3
lab@leaf-3# run show ethernet-switching vxlan-tunnel-end-point esi
ESI                           RTT                      VLNBH INH     ESI-IFL   LOC-IFL   #RVTEPs
00:01:02:03:04:05:06:07:08:09 default-switch           590   1048574 esi.590             2      Aliasing
    RVTEP-IP             RVTEP-IFL      VENH     MASK-ID   FLAGS        MAC-COUNT
    172.16.0.11          vtep.32770     589      1         18           1
    172.16.0.12          vtep.32769     586      0         18           1

ESI「00:01:02:03:04:05:06:07:08:09」に対してleaf-1(172.16.0.11)とleaf-2(172.16.0.12)がマッピングされています。

ではleaf-1のge-0/0/6をdisableにします。show | compareで振り返らずcommitします。

//leaf-1
lab@leaf-1# set interfaces ge-0/0/6 disable

[edit]
lab@leaf-1# commit
commit complete

[edit]
lab@leaf-1# run show interfaces ge-0/0/6
Physical interface: ge-0/0/6, Administratively down, Physical link is Down
<snip>


では確認していきます。
まず、DF選出状況を確認します。

//leaf-1
lab@leaf-1# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved
      Local interface: ae1.0, Status: Down
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.12      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 04 22:46:18
  Router-ID: 172.16.0.11
  Source VTEP interface IP: 172.16.0.11
  SMET Forwarding: Disabled
//leaf-2
lab@leaf-2# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 04 22:46:18
  Router-ID: 172.16.0.12
  Source VTEP interface IP: 172.16.0.12
  SMET Forwarding: Disabled

leaf-1とleaf-2にて、leaf-2がDFに昇格されているのが確認できます。
また、leaf-1にてLocal InterfaceがDownとなっており、検知されているのが確認できます。

併せて、leaf-3でVTEPマッピング状況を確認します。

//leaf-3
lab@leaf-3# run show ethernet-switching vxlan-tunnel-end-point esi
ESI                           RTT                      VLNBH INH     ESI-IFL   LOC-IFL   #RVTEPs
00:01:02:03:04:05:06:07:08:09 default-switch           590   1048574 esi.590             1      Aliasing
    RVTEP-IP             RVTEP-IFL      VENH     MASK-ID   FLAGS        MAC-COUNT
    172.16.0.12          vtep.32769     586      0         18           1

リンクダウン契機にてマッピングされているVTEPがleaf-2のみになりました。
なので、leaf-3から通信する際はleaf-2のみの経路になります。
この間、vRouter-1とvRouter-2間でPingを飛ばしてましたが、timeoutはありませんでしたので、速やかに経路収束は行われてそうですね。

さて、leaf-1とvRouter-1間のリンクダウン後、なぜ「leaf-2のDFの昇格」と「leaf-3のVTEPマッピング状況の更新」が速やかに行われてるかが気になります。
仕組みとしては、leaf-1はリンクダウン検知後、速やかにMP-BGPでwithdrawなUPDATEメッセージをspine-1へ広報します。
当然、spine-1はleaf-2とleaf-3にもUPDATEメッセージを送るので、leaf-1がリンクダウンしたら他のleafにもすぐ広報される流れ…って感じです。

下記が実際にリンクダウン時に送出されたUPDATEメッセージのパケットキャプチャーになります。
Withdrawn Routesを通知しているのが確認できますね。

リンクを復旧させて、DF選出状況やVTEPマッピング状況が元に戻るか確認します。

//leaf-1
lab@leaf-1# show | compare
[edit interfaces ge-0/0/6]
-   disable;

[edit]
lab@leaf-1# commit
commit complete

[edit]
lab@leaf-1# run show interfaces ge-0/0/6
Physical interface: ge-0/0/6, Enabled, Physical link is Up
<snip>
//leaf-1
lab@leaf-1# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.12      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 04 23:24:31
  Router-ID: 172.16.0.11
  Source VTEP interface IP: 172.16.0.11
  SMET Forwarding: Disabled
//leaf-2
lab@leaf-2# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.11      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 04 23:24:31
  Router-ID: 172.16.0.12
  Source VTEP interface IP: 172.16.0.12
  SMET Forwarding: Disabled
//leaf-3
lab@leaf-3# run show ethernet-switching vxlan-tunnel-end-point esi
ESI                           RTT                      VLNBH INH     ESI-IFL   LOC-IFL   #RVTEPs
00:01:02:03:04:05:06:07:08:09 default-switch           590   1048574 esi.590             2      Aliasing
    RVTEP-IP             RVTEP-IFL      VENH     MASK-ID   FLAGS        MAC-COUNT
    172.16.0.11          vtep.32770     592      1         18           1
    172.16.0.12          vtep.32769     586      0         18           1

DFはleaf-1になり、(leaf-3からみて)VTEPはleaf-1とleaf-2にマッピングされたので元に戻りました!!

4. 動作確認その2 (spine側 通信断 (Core Isolation))

最後に「Core Isolation」の機能を確認します。
Core IsolationとはleafのUplink(spine間)とのBGP Peer down契機でDownlink(vRouter間)のLAGインターフェイスをダウンさせてブラックホール化を回避する技術です。
Junosはデフォルトで有効になっていますので、設定追加はしなくとも動作します。
今回はspine-1とleaf-1間でBGP Peer Down状態にして動作を確認したいと思います。
概要はこんな感じです。

まずはPeer Down前の状態を確認します。
まだ何もしてないので、DF選出状況やVTEPマッピング状況は先の確認時と変わってないことを確認します。

//leaf-1
lab@leaf-1# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.12      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 04 23:24:31
  Router-ID: 172.16.0.11
  Source VTEP interface IP: 172.16.0.11
  SMET Forwarding: Disabled
//leaf-2
lab@leaf-2# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.11      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 04 23:24:31
  Router-ID: 172.16.0.12
  Source VTEP interface IP: 172.16.0.12
  SMET Forwarding: Disabled
//leaf-3
lab@leaf-3# run show ethernet-switching vxlan-tunnel-end-point esi
ESI                           RTT                      VLNBH INH     ESI-IFL   LOC-IFL   #RVTEPs
00:01:02:03:04:05:06:07:08:09 default-switch           590   1048574 esi.590             2      Aliasing
    RVTEP-IP             RVTEP-IFL      VENH     MASK-ID   FLAGS        MAC-COUNT
    172.16.0.11          vtep.32770     592      1         18           1
    172.16.0.12          vtep.32769     586      0         18           1


併せて、BGP Peering状況を確認します。

//leaf-1
lab@leaf-1# run show bgp summary

Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 2 Peers: 2 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0
                       3          3          0          0          0          0
bgp.evpn.0
                       9          9          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.1.1.0         4200000001        203        203       0       0     1:30:06 Establ
  inet.0: 3/3/3/0
172.16.0.1       4200000001         10          8       0       0          57 Establ
  bgp.evpn.0: 9/9/9/0
  default-switch.evpn.0: 8/8/8/0
  __default_evpn__.evpn.0: 1/1/1/0
//spine-1
lab@spine-1# run show bgp summary | grep 172.16.0.11
172.16.0.11      4200001001          9          8       0       2          30 Establ

leaf-1とspine-1間のPeeringが確認できます。

ではleaf-1にて、Overlayでのspine-1とのPeerをdownします。今回もshow | compareで振り返らずcommitします。

//leaf-1
[edit]
lab@leaf-1# deactivate protocols bgp group OVERLAY neighbor 172.16.0.1

[edit]
lab@leaf-1# commit
commit complete


BGP Peering状況を確認します。

//leaf-1
lab@leaf-1# run show bgp summary

Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 1 Peers: 1 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0
                       3          3          0          0          0          0
bgp.evpn.0
                       0          0          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.1.1.0         4200000001        197        197       0       0     1:27:40 Establ
  inet.0: 3/3/3/0
//172.16.0.1のPeerがなくなっている。
//spine-1
[edit]
lab@spine-1# run show bgp summary | grep 172.16.0.11
172.16.0.11      4200001001          0          0       0       2        1:25 Active

Peer down状態になりました。

では確認していきます。
まず、leaf-1とvRrouter-1間のae1インターフェイス状態を確認します。

//leaf-1
lab@leaf-1# run show lacp interfaces ae1
Aggregated interface: ae1
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/6 CDN    Actor   No    No    No   No   No   Yes     Fast    Active
      ge-0/0/6 CDN  Partner   No    No    No   No  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/6                  Current   Fast periodic            Waiting
//vRouter-1
lab@vRouter-1# run show lacp interfaces ae1
Aggregated interface: ae1
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No    No    No   No  Yes   Yes     Fast    Active
      ge-0/0/0     Partner    No    No    No   No   No   Yes     Fast    Active
      ge-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/0                  Current   Fast periodic           Attached
      ge-0/0/1                  Current   Fast periodic Collecting distributing

leaf-1側のstateが「Waiting」となり、vRouter-1側のge-0/0/0のLAGがダウンしているのが確認できます。

この時のleaf-1とvRouter-1間パケットキャプチャーを見てみましょう。
leaf-1から送信される、LACPのsyncフラグのbitが0へと変更となり、ae1インターフェイスをダウンさせているようです。

続いてDF選出状況やVTEPマッピング状況を見ていきましょう。一気に見ます。

//leaf-1
lab@leaf-1# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved
      Local interface: ae1.0, Status: Down
      DF Election Algorithm: Preference based
      Designated forwarder: DF not elected yet
      Last designated forwarder update: Feb 05 00:26:59
  Router-ID: 172.16.0.11
  Source VTEP interface IP: 172.16.0.11
  SMET Forwarding: Disabled
//leaf-2
lab@leaf-2# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 05 00:27:02
  Router-ID: 172.16.0.12
  Source VTEP interface IP: 172.16.0.12
  SMET Forwarding: Disabled
//leaf-3
lab@leaf-3# run show ethernet-switching vxlan-tunnel-end-point esi
ESI                           RTT                      VLNBH INH     ESI-IFL   LOC-IFL   #RVTEPs
00:01:02:03:04:05:06:07:08:09 default-switch           590   1048574 esi.590             1      Aliasing
    RVTEP-IP             RVTEP-IFL      VENH     MASK-ID   FLAGS        MAC-COUNT
    172.16.0.12          vtep.32769     586      0         18           1

spine-1から見てleaf-1がdownしているので、当然leaf-2がDFへ昇格しています。
また、leaf-3にてマッピングされているVTEPがleaf-2のみになりました。
この間、vRouter-1とvRouter-2間でPingを飛ばしてましたが、timeoutはありませんでした。いい感じに経路収束されてそうですね。

ではBGP Peerを復旧させます。

//leaf-1
lab@leaf-1# show | compare
[edit protocols bgp group OVERLAY]
!      active: neighbor 172.16.0.1 { ... }

[edit]
lab@leaf-1# commit
commit complete

lab@leaf-1# run show bgp summary

Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 2 Peers: 2 Down peers: 0
Table          Tot Paths  Act Paths Suppressed    History Damp State    Pending
inet.0
                       3          3          0          0          0          0
bgp.evpn.0
                       7          7          0          0          0          0
Peer                     AS      InPkt     OutPkt    OutQ   Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
10.1.1.0         4200000001        275        275       0       0     2:03:10 Establ
  inet.0: 3/3/3/0
172.16.0.1       4200000001         10          7       0       0          42 Establ
  bgp.evpn.0: 7/7/7/0
  default-switch.evpn.0: 6/6/6/0
  __default_evpn__.evpn.0: 1/1/1/0
//Overlayでspine-1とPeerが張れている。
//spine-1
lab@spine-1# run show bgp summary | grep 172.16.0.11
172.16.0.11      4200001001         11         11       0       6        1:42 Establ
//Overlayでleaf-1とPeerが張れている。


leaf-1とvRouter-1間のLAGが復旧したか確認します。

//leaf-1
lab@leaf-1# run show lacp interfaces ae1
Aggregated interface: ae1
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/6       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/6     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/6                  Current   Fast periodic Collecting distributing
//vRouter-1
lab@vRouter-1# run show lacp interfaces ae1
Aggregated interface: ae1
    LACP state:       Role   Exp   Def  Dist  Col  Syn  Aggr  Timeout  Activity
      ge-0/0/0       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/0     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1       Actor    No    No   Yes  Yes  Yes   Yes     Fast    Active
      ge-0/0/1     Partner    No    No   Yes  Yes  Yes   Yes     Fast    Active
    LACP protocol:        Receive State  Transmit State          Mux State
      ge-0/0/0                  Current   Fast periodic Collecting distributing
      ge-0/0/1                  Current   Fast periodic Collecting distributing

leaf-1、vRouter-1ともにCollecting distributingになり、復旧されてますね。

最後にDF選出状況やVTEPマッピング状況が元に戻っているか確認します。

//leaf-1
lab@leaf-1# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.12      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 05 00:41:26
  Router-ID: 172.16.0.11
  Source VTEP interface IP: 172.16.0.11
  SMET Forwarding: Disabled
//leaf-2
lab@leaf-2# run show evpn instance default-switch extensive | no-more
<snip>
  Number of ethernet segments: 1
    ESI: 00:01:02:03:04:05:06:07:08:09
      Status: Resolved by IFL ae1.0
      Local interface: ae1.0, Status: Up/Forwarding
      Number of remote PEs connected: 1
        Remote-PE        MAC-label  Aliasing-label  Mode
        172.16.0.11      10012      0               all-active
      DF Election Algorithm: Preference based
      Designated forwarder: 172.16.0.11, Preference: 150
      Backup forwarder: 172.16.0.12, Preference: 100
      Last designated forwarder update: Feb 05 00:41:26
  Router-ID: 172.16.0.12
  Source VTEP interface IP: 172.16.0.12
  SMET Forwarding: Disabled
//leaf-3
lab@leaf-3# run show ethernet-switching vxlan-tunnel-end-point esi
ESI                           RTT                      VLNBH INH     ESI-IFL   LOC-IFL   #RVTEPs
00:01:02:03:04:05:06:07:08:09 default-switch           590   1048574 esi.590             2      Aliasing
    RVTEP-IP             RVTEP-IFL      VENH     MASK-ID   FLAGS        MAC-COUNT
    172.16.0.11          vtep.32770     598      1         18           1
    172.16.0.12          vtep.32769     586      0         18           1

DFはleaf-1になり、(leaf-3からみて)VTEPはleaf-1とleaf-2にマッピングされたので元に戻りました!!

という訳でめちゃくちゃ長くなりましたが、EVPN Multihomingの検証は以上になります!!
ここまでお読みいただき、ありがとうございました!!!!

5. 参考資料

書籍「Deploying Juniper Data Centers with EVPN VXLAN」




以上の内容はhttps://yokohama539.hatenablog.com/entry/2025/02/05/011117より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14