Windows 11 Home環境 Virtual BoxでSONiC Community版でBGP Unnumberedをしてみた Part2

今回は、Windows11環境のVirtualBox に入れたSONiC VM 3台をBGP Unnumberedの設定をしていきます。

VirtualBoxにSONiC VMを入れて WindowsPC(ホストOS)からsshできるまでの方法は、前回の記事を参考にしてください。

Windows 11 Home環境 Virtual BoxでSONiC Community版でBGP Unnumberedをしてみた Part1 | ランスルネット (runsurunet.com)

環境の説明

構成図

spine1台とleaf 2台の構成です。緑色の内部ネットワークは、Virtualboxのネットワーク設定の名前です。

SONiCのバージョン

構成図とSONiCのバージョンは以下の通りです。あえてspineとleafで違うバージョンにしてみました。

sonic-spine01

SONiC Software Version: SONiC.master.632468-d66cb58f4
SONiC OS Version: 12

sonic-leaf01/02

SONiC Software Version: SONiC.202305.636497-151abec44
SONiC OS Version: 11


config_db.jsonを書き換える

config_db.jsonは、SONiCの設定ファイルです。

現在のバージョンでは、config_db.jsonの設定からBGPの設定を書き出して設定するようです。ただ、その設定方法の場合、BGPの設定が私にはわからなかったです。ですので、BGPの設定は、FRRで設定出来るように変更します。FRRとは、簡単にいうとオープンソースのルーティングソフトウェアで、SONiCはFRRを採用しています。

**FRR(Free Range Routing)は、オープンソースのルーティングソフトウェアスイートであり、様々なルーティングプロトコルをサポートしています。これは主にLinuxやUnixベースのシステムで動作し、ネットワークルーターとして機能します。FRRは、スケーラブルで柔軟なルーティングソリューションを提供し、特にデータセンターやクラウド環境で広く使われています。

SONiCの設定の基本

上記のようにBGPなどのルーティング設定をFRRにした場合、設定方法は以下の通りです。

  • 1.SONiCの基本的な設定は、シェル。
    • ホスト名やIPアドレスなどは、sudo config ** で設定します。
  • 2.ルーティングの設定は、vtysh と入力してFRRから行います。
    • FRR入るとCisco的なコマンドで設定を投入できます。

このような設定方法にするため、以下の手順でconfig_db.jsonの内容を書き換えていきます。

/etc/sonic/config_db.jsonを書き換えてsplit modeにする

SONiCにsshでログインをしてシェルから以下のコマンドを投入して config_db.jsonを編集します。

sudo vi /etc/sonic/config_db.json

DEVICE_METADATAに1行設定を追加する docker_routing_config_mode

開いたら、/METADATA と検索をします。見つかったら i を押して編集モードにします。

以下の1行をDEVICE_METADATAの途中に追加します。

       "docker_routing_config_mode": "split",

-参考

"DEVICE_METADATA": {
 "localhost": {
  "bgp_asn": "65100",
   "buffer_model": "traditional",
    "default_bgp_status": "up",
    "default_pfcwd_status": "disable",
    "docker_routing_config_mode": "split",←追加
    "hostname": "sonic-leaf01",
    "hwsku": "Force10-S6000",
    "mac": "08:00:27:ac:bf:89",
    "platform": "x86_64-kvm_x86_64-r0",
    "timezone": "UTC",
    "type": "LeafRouter"
 }
},

追加が終わったら、:wと入力して保存します。

これを3台分繰り返し設定をします。

DEVICE_METADATAのbgp_asnを削除する

DEVICE_METADATEのbgp_asnを削除します。iで編集モードになって削除します。

"DEVICE_METADATA": {
 "localhost": {
 "bgp_asn": "65100",
 "buffer_model": "traditional",
 "default_bgp_status": "up",
 "default_pfcwd_status": "disable",
 "docker_routing_config_mode": "split"
 "hostname": "sonic-leaf01",
 "hwsku": "Force10-S6000",
 "mac": "08:00:27:ac:bf:89",
 "platform": "x86_64-kvm_x86_64-r0",
 "timezone": "UTC",
 "type": "LeafRouter"
 }
},

削除が終わったら、:wと入力して保存します。

同じくこれも3台分繰り返し設定をします。

BGP_NEIGHBORの前に//を入れる

開いたら、BGP_NEI と検索をします。見つかったら i を押して編集モードにします。

BGP_NEIGHBORの前に // を入れます。

"//BGP_NEIGHBOR": {
     "10.0.0.1": {
      "rrclient": 0,
      "name": "ARISTA01T2",
      "local_addr": "10.0.0.0",
      "nhopself": 0,
      "holdtime": "180",
      "asn": "65200",
      "keepalive": "60"

//を入れ終わったら、:wqと入力して保存&終了します。

同じくこれも3台分繰り返し設定をします。

設定ファイルをリロードする

コンフィグをリロードします。

sudo config reload -y

Warning

うまく反映されないければ、 sudo reboot で再起動しましょう。

不要な設定を消す

デフォルトで入っているIPv4アドレスをすべて消す

SONiCのバージョンにもよると思うのですが、私が入れた2つのバージョンは、最初からIPv4アドレスがはいっていました。今回BGP Unnumberedでは不要なのですべて削除します。

■確認コマンド

show ip interface

■削除コマンド

sudo config interface ip remove Ethernet0 10.0.0.0/31
sudo config interface ip remove Ethernet4 10.0.0.2/31
sudo config interface ip remove Ethernet8 10.0.0.4/31
sudo config interface ip remove Ethernet12 10.0.0.6/31
sudo config interface ip remove Ethernet16 10.0.0.8/31
sudo config interface ip remove Ethernet20 10.0.0.10/31
sudo config interface ip remove Ethernet24 10.0.0.12/31
sudo config interface ip remove Ethernet28 10.0.0.14/31
sudo config interface ip remove Ethernet32 10.0.0.16/31
sudo config interface ip remove Ethernet36 10.0.0.18/31
sudo config interface ip remove Ethernet40 10.0.0.20/31
sudo config interface ip remove Ethernet44 10.0.0.22/31
sudo config interface ip remove Ethernet48 10.0.0.24/31
sudo config interface ip remove Ethernet52 10.0.0.26/31
sudo config interface ip remove Ethernet56 10.0.0.28/31
sudo config interface ip remove Ethernet60 10.0.0.30/31
sudo config interface ip remove Ethernet64 10.0.0.32/31
sudo config interface ip remove Ethernet68 10.0.0.34/31
sudo config interface ip remove Ethernet72 10.0.0.36/31
sudo config interface ip remove Ethernet76 10.0.0.38/31
sudo config interface ip remove Ethernet80 10.0.0.40/31
sudo config interface ip remove Ethernet84 10.0.0.42/31
sudo config interface ip remove Ethernet88 10.0.0.44/31
sudo config interface ip remove Ethernet92 10.0.0.46/31
sudo config interface ip remove Ethernet96 10.0.0.48/31
sudo config interface ip remove Ethernet100 10.0.0.50/31
sudo config interface ip remove Ethernet104 10.0.0.52/31
sudo config interface ip remove Ethernet108 10.0.0.54/31
sudo config interface ip remove Ethernet112 10.0.0.56/31
sudo config interface ip remove Ethernet116 10.0.0.58/31
sudo config interface ip remove Ethernet120 10.0.0.60/31
sudo config interface ip remove Ethernet124 10.0.0.62/31

デフォルトで入っているBGPの設定を消す

まず最初にFRRに入ってからBGPの設定を丸ごと消します。

SONiCシェルから以下のコマンドでFRRに入ります。

vtysh

※プロンプトが sonic# に変わる

BGPの設定が入っていることを確認します。

show run

確認したらBGPの設定を消します。

conf t
 no route bgp
end

ここはバージョンにもよるかもしれませんが、最初からprefix-listやroute-mapの設定が入っているのでこれも消します。私の入れたSONiCのバージョンでは以下の設定が不要でした。環境に応じてno ** と変更すれば設定を消すことが出来ます。

conf t
 no ip prefix-list PL_LoopbackV4 seq 5 permit 10.1.0.1/32
!
 no bgp community-list standard allow_list_default_community seq 5 permit no-export
 no bgp community-list standard allow_list_default_community seq 10 permit 5060:12345
!
 no route-map RM_SET_SRC permit 10

!
 no route-map ALLOW_LIST_DEPLOYMENT_ID_0_V4 permit 65535
 no route-map ALLOW_LIST_DEPLOYMENT_ID_0_V6 permit 65535!
 no route-map FROM_BGP_PEER_V4 permit 10
 no route-map FROM_BGP_PEER_V4 permit 11
 no route-map FROM_BGP_PEER_V4 permit 100
 no route-map FROM_BGP_PEER_V6 permit 1
 no route-map FROM_BGP_PEER_V6 permit 10
 no route-map FROM_BGP_PEER_V6 permit 11
 no route-map FROM_BGP_PEER_V6 permit 100
 no route-map TO_BGP_PEER_V4 permit 100
 no route-map TO_BGP_PEER_V6 permit 100
 no route-map CHECK_IDF_ISOLATION permit 10
 no ip nht resolve-via-default
 no ipv6 nht resolve-via-default
 no ip protocol bgp route-map RM_SET_SRC
end

設定が消えたことを確認します。残っていたらno で消します。

show run

最後にFRRの設定保存をします。

write memory

設定を投入する

以下の通り、spine1台、leaf2台の構成です。BGP Unnumberedの設定の他にもhostnameLoopback1の設定もしていきます。最終的にBGPでLoopback1を広報するように設定します。

sonic-spine01の設定

hostnameとLoopback0の設定 (sonic-spine01)

admin@sonic:~$ のシェルからコマンドを投入していきます。

sudo config hostname sonic-spine01
sudo config interface ip add Loopback0 10.0.1.1/32

確認 

show ip interface

ホスト名は、一度sshからexitをして再度ログインするとプロンプトが変わっています。

保存

sudo config save -y

BGPの設定 (sonic-spine01)

admin@sonic:~$ のシェルからvtyshコマンドでFRRに入ります。

vtysh

設定を投入します。最初にprefix-listとroute-mapを投入します。

conf t
ip prefix-list Private_IP_Addresses seq 5 permit 10.0.0.0/8 le 32
ip prefix-list Private_IP_Addresses seq 10 permit 172.16.0.0/12 le 32
ip prefix-list Private_IP_Addresses seq 15 permit 192.168.0.0/16 le 32
ip prefix-list Loopback_LIST seq 5 permit 10.0.1.1/32
ip prefix-list Loopback_LIST seq 10 permit 10.0.2.1/32
ip prefix-list Loopback_LIST seq 15 permit 10.0.2.2/32
!
route-map Redistribute_Loopback permit 10
 match interface Loopback0
exit

end

BGPを設定します。

conf t

router bgp 65101
 bgp router-id 10.0.1.1
 bgp log-neighbor-changes
 bgp bestpath as-path multipath-relax
 neighbor LEAF peer-group
 neighbor LEAF remote-as external
 neighbor LEAF advertisement-interval 0
 neighbor LEAF timers 1 3
 neighbor LEAF timers connect 5
 neighbor LEAF capability extended-nexthop
 neighbor Ethernet0 interface peer-group LEAF
 neighbor Ethernet4 interface peer-group LEAF
 !
 address-family ipv4 unicast
  redistribute connected route-map Redistribute_Loopback
  neighbor LEAF soft-reconfiguration inbound
  neighbor LEAF prefix-list Loopback_LIST in
  ip prefix-list Private_IP_Addresses seq 5 permit 10.0.0.0/8 le 32
  ip prefix-list Private_IP_Addresses seq 10 permit 172.16.0.0/12 le 32
  ip prefix-list Private_IP_Addresses seq 15 permit 192.168.0.0/16 le 32
 exit-address-family
exit
end

設定を確認します。

show run

保存します。

write memory

sonic-leaf01の設定

hostnameとLoopback0の設定(sonic-leaf01)

admin@sonic:~$ のシェルからコマンドを投入していきます。

sudo config hostname sonic-leaf01
sudo config interface ip add Loopback0 10.0.2.1/32

確認 

show ip interface

ホスト名は、一度sshからexitをして再度ログインするとプロンプトが変わっています。

保存

sudo config save -y

BGPの設定 (sonic-leaf01)

admin@sonic:~$ のシェルからvtyshコマンドでFRRに入ります。

vtysh

設定を投入します。最初にprefix-listとroute-mapを投入します。

conf t
ip prefix-list Loopback0 seq 5 permit 10.0.2.1/32
ip prefix-list Loopback_LIST seq 5 permit 10.0.1.1/32
ip prefix-list Loopback_LIST seq 10 permit 10.0.2.1/32
ip prefix-list Loopback_LIST seq 15 permit 10.0.2.2/32
!
route-map Redistribute_Loopback permit 10
 match interface Loopback0
exit

end

BGPを設定します。

conf t

router bgp 65201
 bgp router-id 10.0.2.1
 bgp log-neighbor-changes
 bgp bestpath as-path multipath-relax
 neighbor SPINE peer-group
 neighbor SPINE remote-as external
 neighbor SPINE advertisement-interval 0
 neighbor SPINE timers 1 3
 neighbor SPINE timers connect 5
 neighbor SPINE capability extended-nexthop
 neighbor Ethernet0 interface peer-group SPINE
 neighbor Ethernet4 interface peer-group SPINE
 !
 address-family ipv4 unicast
  redistribute connected route-map Redistribute_Loopback
  neighbor SPINE soft-reconfiguration inbound
  neighbor SPINE prefix-list Loopback_LIST in
  neighbor SPINE prefix-list Loopback0 out
 exit-address-family
exit

設定を確認します。

show run

保存します。

write memory

sonic-leaf02の設定

hostnameとLoopback0の設定(sonic-leaf02)

admin@sonic:~$ のシェルからコマンドを投入していきます。

sudo config hostname sonic-leaf02
sudo config interface ip add Loopback0 10.0.2.2/32

確認 

show ip interface

ホスト名は、一度sshからexitをして再度ログインするとプロンプトが変わっています。

保存

sudo config save -y

BGPの設定 (sonic-leaf02)

admin@sonic:~$ のシェルからvtyshコマンドでFRRに入ります。

vtysh

設定を投入します。最初にprefix-listとroute-mapを投入します。

conf t
ip prefix-list Loopback0 seq 5 permit 10.0.2.2/32
ip prefix-list Loopback_LIST seq 5 permit 10.0.1.1/32
ip prefix-list Loopback_LIST seq 10 permit 10.0.2.1/32
ip prefix-list Loopback_LIST seq 15 permit 10.0.2.2/32
!
route-map Redistribute_Loopback permit 10
 match interface Loopback0
exit

end

BGPを設定します。

conf t

router bgp 65202
 bgp router-id 10.0.2.2
 bgp log-neighbor-changes
 bgp bestpath as-path multipath-relax
 neighbor SPINE peer-group
 neighbor SPINE remote-as external
 neighbor SPINE advertisement-interval 0
 neighbor SPINE timers 1 3
 neighbor SPINE timers connect 5
 neighbor SPINE capability extended-nexthop
 neighbor Ethernet0 interface peer-group SPINE
 neighbor Ethernet4 interface peer-group SPINE
 !
 address-family ipv4 unicast
  redistribute connected route-map Redistribute_Loopback
  neighbor SPINE soft-reconfiguration inbound
  neighbor SPINE prefix-list Loopback_LIST in
  neighbor SPINE prefix-list Loopback0 out
 exit-address-family
exit

設定を確認します。

show run

保存します。

write memory

BGP 設定内容の解説

spineの場合

特徴は、BGP Unnumbered なのでBGP peerの設定は、interfaceの名前を定義するだけです。対向のAS番号やIPv4アドレスの定義は不要です。

以下は、BGP設定の詳細を解説した表です。(by ChatGTP)

コマンド解説
router bgp 65101AS番号65101でBGPを有効化。
bgp router-id 10.0.1.1BGPルーターIDとして 10.0.1.1 を設定。BGPピアとの識別用。
bgp log-neighbor-changes隣接ルーターとの接続状態の変更をログに記録する。
bgp bestpath as-path multipath-relaxBGPの複数パス選択をASパスの制約を緩和して許可する。
neighbor LEAF peer-group“LEAF” というピアグループを作成。共通設定を適用するために使用。
neighbor LEAF remote-as externalLEAFピアグループは外部BGP(eBGP)を示し、異なるASとの接続。
neighbor LEAF advertisement-interval 0ルート広報間隔を0秒に設定し、即時にルート広報を行う。
neighbor LEAF timers 1 3Keepaliveタイマーを1秒、Holdタイマーを3秒に設定。接続確認の間隔を短く設定。
neighbor LEAF timers connect 5接続再試行間隔を5秒に設定。
neighbor LEAF capability extended-nexthop拡張ネクストホップ機能を有効化し、異なるアドレスファミリーをサポート。
neighbor Ethernet0 interface peer-group LEAFインターフェースEthernet0にLEAFピアグループを適用。
neighbor Ethernet4 interface peer-group LEAFインターフェースEthernet4にもLEAFピアグループを適用。
address-family ipv4 unicastIPv4ユニキャストアドレスファミリーの設定を開始。
redistribute connected route-map Redistribute_Loopback接続されたルートをBGP経由で再配布し、Redistribute_Loopbackルートマップを適用。
neighbor LEAF soft-reconfiguration inbound隣接ルーターから受信したルート情報のソフト再構成を有効化。ルーター再起動なしでポリシー変更を適用可能。
neighbor LEAF prefix-list Loopback_LIST in隣接ルーターから受信するルートに対して、Loopback_LIST プレフィックスリストを適用。
neighbor LEAF prefix-list Private_IP_Addresses out隣接ルーターに送信する際に、プライベートIPアドレス範囲のルートを制限する Private_IP_Addresses プレフィックスリストを適用。
ip prefix-list Loopback_LIST seq 5 permit 10.0.1.1/32ループバックアドレス 10.0.1.1/32 を許可する受信用プレフィックスリスト。
ip prefix-list Loopback_LIST seq 10 permit 10.0.2.1/32ループバックアドレス 10.0.2.1/32 を許可する受信用プレフィックスリスト。
ip prefix-list Loopback_LIST seq 15 permit 10.0.2.2/32ループバックアドレス 10.0.2.2/32 を許可する受信用プレフィックスリスト。
ip prefix-list Private_IP_Addresses seq 5 permit 10.0.0.0/8 le 32プライベートIP範囲 10.0.0.0/8 のアドレスを許可。
ip prefix-list Private_IP_Addresses seq 10 permit 172.16.0.0/12 le 32プライベートIP範囲 172.16.0.0/12 のアドレスを許可。
ip prefix-list Private_IP_Addresses seq 15 permit 192.168.0.0/16 le 32プライベートIP範囲 192.168.0.0/16 のアドレスを許可。
route-map Redistribute_Loopback permit 10ループバックインターフェース Loopback0 をルート再配布の対象とするルートマップ。
match interface Loopback0Loopback0 インターフェースに一致するルートをルートマップで指定。
route-map RM_SET_SRC permit 10ルートマップ RM_SET_SRC を定義し、ソースIPアドレスを設定。
set src 10.0.1.1ルート送信時にソースアドレスを 10.0.1.1 に設定。
ip protocol bgp route-map RM_SET_SRCBGPプロトコルで、ルート送信時に RM_SET_SRC ルートマップを適用。

解説

この設定は、BGP(AS 65101)の基本的な構成に加えて、特定のループバックインターフェースを経由するルートの再配布と、特定のプレフィックス(プライベートIPアドレス)に対して送受信時のフィルタリングを行います。また、送信ルートに対してソースIPアドレスを設定するルートマップも導入されています。

leafの場合

spineとの大きな違いは、prefix-listです。spineは、10.0.0.0/8などのプライベートIPアドレスを広報するのに対して、leafは自分のloopback だけ広報するように設定しています。

以下は、指定されたBGP設定の詳細を解説した表です。(by ChatGTP)

コマンド解説
router bgp 65201AS番号65201でBGPを有効化。
bgp router-id 10.0.2.1BGPのルーターIDを 10.0.2.1 に設定。ピアとの識別に使用。
bgp log-neighbor-changes隣接ルーターの接続状態変更をログに記録。
bgp bestpath as-path multipath-relaxASパスの制限を緩和し、複数経路を許可する設定。
neighbor SPINE peer-group“SPINE” というピアグループを作成。共通設定を複数隣接ルーターに適用するために使用。
neighbor SPINE remote-as externalSPINEピアグループは外部BGP(eBGP)で、異なるAS(外部ネットワーク)と接続。
neighbor SPINE advertisement-interval 0ルート広報の間隔を0秒に設定し、即時広報を行う。
neighbor SPINE timers 1 3Keepaliveタイマーを1秒、Holdタイマーを3秒に設定。短い間隔で接続の確認を行う。
neighbor SPINE timers connect 5接続再試行のタイマーを5秒に設定。
neighbor SPINE capability extended-nexthop拡張ネクストホップ機能を有効にし、異なるアドレスファミリーでのネクストホップ情報をサポート。
neighbor Ethernet0 interface peer-group SPINEEthernet0インターフェースにSPINEピアグループを適用。
address-family ipv4 unicastIPv4ユニキャストのアドレスファミリーの設定を開始。
redistribute connected route-map Redistribute_Loopback接続されたルートをBGP経由で再配布し、Redistribute_Loopbackルートマップを適用。
neighbor SPINE soft-reconfiguration inbound隣接ルーターから受信したルート情報を、ソフト再構成によって再適用できる設定。ルーターの再起動なしでフィルタやポリシー変更が可能。
neighbor SPINE prefix-list Loopback_LIST in隣接ルーターからのルート受信時に、 Loopback_LIST プレフィックスリストを適用。
neighbor SPINE prefix-list Loopback0 out隣接ルーターにルートを送信する際に、Loopback0 プレフィックスリストを適用。
exit-address-familyIPv4ユニキャストアドレスファミリーの設定を終了。
ip prefix-list Loopback0 seq 5 permit 10.0.2.1/32ループバックアドレス 10.0.2.1/32 を許可する送信用プレフィックスリスト。
ip prefix-list Loopback_LIST seq 5 permit 10.0.1.1/32ループバックアドレス 10.0.1.1/32 を許可する受信用プレフィックスリスト。
ip prefix-list Loopback_LIST seq 10 permit 10.0.2.1/32ループバックアドレス 10.0.2.1/32 を許可する受信用プレフィックスリスト。
ip prefix-list Loopback_LIST seq 15 permit 10.0.2.2/32ループバックアドレス 10.0.2.2/32 を許可する受信用プレフィックスリスト。
route-map Redistribute_Loopback permit 10Loopback0インターフェースにマッチするルートを再配布するルートマップ。
match interface Loopback0ループバックインターフェース Loopback0 を再配布の対象として指定。

解説

この設定は、AS 65201のBGPルーターでの構成です。ループバックアドレスを含むルートをBGP経由で再配布し、特定のプレフィックスリストを用いてルートの受信と送信を制御しています。再配布するルートには、特定のループバックインターフェース Loopback0 を使用し、柔軟なルートフィルタリングを行うために、プレフィックスリストが適用されています。また、BGPピアとの接続タイマーや広報間隔も調整されています。

状態を確認する。

sonic-spine01

lldpの状況 (sonic-spine01)

show lldp table で確認できます。Ethernet0/4にそれぞれleaf01/leaf02がいます。

admin@sonic-spine01:~$ show lldp table
Capability codes: (R) Router, (B) Bridge, (O) Other
LocalPort    RemoteDevice    RemotePortID       Capability    RemotePortDescr
-----------  --------------  -----------------  ------------  -----------------
Ethernet0    sonic-leaf01    08:00:27:ac:bf:89  BR            Ethernet0
Ethernet4    sonic-leaf02    08:00:27:17:7e:7f  BR            Ethernet0
eth0         sonic-leaf01    eth0               BR            eth0
--------------------------------------------------

BGPの状況 (sonic-spine01)

admin@sonic:~$ のシェルからvtyshコマンドでFRRに入ります。

vtysh

■BGPの接続状態

show ip bgp summary コマンドで確認できます。

sonic-spine01# show ip bgp summary

IPv4 Unicast Summary (VRF default):
BGP router identifier 10.0.1.1, local AS number 65101 vrf-id 0
BGP table version 3
RIB entries 5, using 1120 bytes of memory
Peers 2, using 1449 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
Ethernet0       4      65201        70        75        0    0    0 00:01:08            1        3 N/A
Ethernet4       4      65202        19        24        0    0    0 00:00:17            1        3 N/A

※BGPが接続できていない時は、State/pfxRcdがActive だったり connectになっています。

■BGP広報経路の確認

show ip bgp neighbor Ethernet0 advertised-routes show ip bgp neighbor Ethernet4 advertised-routesコマンドで確認できます。

sonic-spine01# show ip bgp neighbors Ethernet0 advertised-routes
BGP table version is 3, local router ID is 10.0.1.1, vrf id 0
Default local pref 100, local AS 65101
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.1.1/32      ::                       0         32768 ?
 *> 10.0.2.1/32      ::                                     0 65201 ?
 *> 10.0.2.2/32      ::                                     0 65202 ?

Total number of prefixes 3
sonic-spine01# show ip bgp neighbors Ethernet4 advertised-routes
BGP table version is 3, local router ID is 10.0.1.1, vrf id 0
Default local pref 100, local AS 65101
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.1.1/32      ::                       0         32768 ?
 *> 10.0.2.1/32      ::                                     0 65201 ?
 *> 10.0.2.2/32      ::                                     0 65202 ?

Total number of prefixes 3

spine01とleaf01/leaf02のloopbackアドレスが表示されていれば、正常にBGP広報が出来ています。以下の部分です。

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.1.1/32      ::                       0         32768 ?
 *> 10.0.2.1/32      ::                                     0 65201 ?
 *> 10.0.2.2/32      ::                                     0 65202 ?

■BGP広報経路の確認

show ip bgp neighbor Ethernet0 routes show ip bgp neighbor Ethernet4 routesコマンドで確認できます。

sonic-spine01# show ip bgp neighbors Ethernet0 routes
BGP table version is 5, local router ID is 10.0.1.1, vrf id 0
Default local pref 100, local AS 65101
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.2.1/32      Ethernet0                0             0 65201 ?

Displayed  1 routes and 3 total paths




sonic-spine01# show ip bgp neighbors Ethernet4 routes
BGP table version is 5, local router ID is 10.0.1.1, vrf id 0
Default local pref 100, local AS 65101
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.2.2/32      Ethernet4                0             0 65202 ?

Displayed  1 routes and 3 total paths

leaf01(10.0.2.1/32)とleaf02(10.0.2.2/32)のloopbackのIPが受信できていれば、正常です。

      Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.2.1/32      Ethernet0                0             0 65201 ?

   Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.2.2/32      Ethernet4                0             0 65202 ?

■ルーティングテーブル

sonic-spine01# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

C>* 10.0.1.1/32 is directly connected, Loopback0, 04:16:44
B>* 10.0.2.1/32 [20/0] via fe80::a00:27ff:feac:bf89, Ethernet0, weight 1, 00:43:39
B>* 10.0.2.2/32 [20/0] via fe80::a00:27ff:fe17:7e7f, Ethernet4, weight 1, 00:04:50
C>* 192.168.56.0/24 is directly connected, eth0, 04:16:44

leaf01/leaf02のloopbackアドレスがBGPで学習出来ていれば、正常にBGP広報が出来ています。以下の部分です。B>*

sonic-leaf01

lldpの状況 (sonic-leaf01)

show lldp table で確認できます。Ethernet0にsonic-spine01がいます。

admin@sonic-leaf01:~$ show lldp table
Capability codes: (R) Router, (B) Bridge, (O) Other
LocalPort    RemoteDevice    RemotePortID    Capability    RemotePortDescr
-----------  --------------  --------------  ------------  -----------------
Ethernet0    sonic-spine01   fortyGigE0/0    BR            Ethernet0
eth0         sonic-spine01   eth0            BR            eth0
--------------------------------------------------

BGPの状況 (sonic-leaf01)

admin@sonic:~$ のシェルからvtyshコマンドでFRRに入ります。

vtysh

■BGPの接続状態

show ip bgp summary コマンドで確認できます。

sonic-leaf01# show ip bgp summary

IPv4 Unicast Summary (VRF default):
BGP router identifier 10.0.2.1, local AS number 65201 vrf-id 0
BGP table version 3
RIB entries 5, using 960 bytes of memory
Peers 1, using 725 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
Ethernet0       4      65101       606       601        0    0    0 00:10:02            2        1 N/A

※BGPが接続できていない時は、State/pfxRcdがActive だったり connectになっています。

■BGP広報経路の確認

show ip bgp neighbor Ethernet0 advertised-routesコマンドで確認できます。

sonic-leaf01# show ip bgp neighbors Ethernet0 advertised-routes
BGP table version is 3, local router ID is 10.0.2.1, vrf id 0
Default local pref 100, local AS 65201
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.2.1/32      ::                       0         32768 ?

Total number of prefixes 1

leaf01のloopbackアドレスのみが表示されていれば、正常にBGP広報が出来ています。以下の部分です。

     Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.2.1/32      ::                       0         32768 ?

■BGP広報経路の確認

show ip bgp neighbor Ethernet0 routes show ip bgp neighbor Ethernet4 routesコマンドで確認できます。


sonic-leaf01# show ip bgp neighbors Ethernet0 routes
BGP table version is 3, local router ID is 10.0.2.1, vrf id 0
Default local pref 100, local AS 65201
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.1.1/32      Ethernet0                0             0 65101 ?
 *> 10.0.2.2/32      Ethernet0                              0 65101 65202 ?

Displayed  2 routes and 3 total paths

spine01(10.0.1.1/32)とleaf02(10.0.2.2/32)のloopbackのIPが受信できていれば、正常です。

      Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.1.1/32      Ethernet0                0             0 65101 ?
 *> 10.0.2.2/32      Ethernet0                              0 65101 65202 ?

■ルーティングテーブル

sonic-leaf01# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

B>* 10.0.1.1/32 [20/0] via fe80::2099:c1ff:fefc:7b30, Ethernet0, weight 1, 00:13:18
C>* 10.0.2.1/32 is directly connected, Loopback0, 00:14:25
B>* 10.0.2.2/32 [20/0] via fe80::2099:c1ff:fefc:7b30, Ethernet0, weight 1, 00:12:27
C>* 192.168.56.0/24 is directly connected, eth0, 00:14:25

spine01/leaf02のloopbackアドレスがBGPで学習出来ていれば、正常にBGP広報が出来ています。以下の部分です。B>*

sonic-leaf02

lldpの状況 (sonic-leaf02)

show lldp table で確認できます。Ethernet0にsonic-spine01がいます。

admin@sonic-leaf02:~$ show lldp table
Capability codes: (R) Router, (B) Bridge, (O) Other
LocalPort    RemoteDevice    RemotePortID    Capability    RemotePortDescr
-----------  --------------  --------------  ------------  -----------------
Ethernet0    sonic-spine01   fortyGigE0/4    BR            Ethernet4
eth0         sonic-spine01   eth0            BR            eth0
--------------------------------------------------
Total entries displayed:  2

BGPの状況 (sonic-leaf02)

admin@sonic:~$ のシェルからvtyshコマンドでFRRに入ります。

vtysh

■BGPの接続状態

show ip bgp summary コマンドで確認できます。

sonic-leaf02# show ip bgp summary

IPv4 Unicast Summary (VRF default):
BGP router identifier 10.0.2.2, local AS number 65202 vrf-id 0
BGP table version 3
RIB entries 5, using 960 bytes of memory
Peers 1, using 725 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd   PfxSnt Desc
Ethernet0       4      65101      1022      1015        0    0    0 00:16:58            2        1 N/A

※BGPが接続できていない時は、State/pfxRcdがActive だったり connectになっています。

■BGP広報経路の確認

show ip bgp neighbor Ethernet0 advertised-routesコマンドで確認できます。

sonic-leaf02# show ip bgp neighbors Ethernet0 advertised-routes
BGP table version is 3, local router ID is 10.0.2.2, vrf id 0
Default local pref 100, local AS 65202
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.2.2/32      ::                       0         32768 ?

leaf02のloopbackアドレスのみが表示されていれば、正常にBGP広報が出来ています。以下の部分です。

     Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.2.1/32      ::                       0         32768 ?

■BGP広報経路の確認

show ip bgp neighbor Ethernet0 routes show ip bgp neighbor Ethernet4 routesコマンドで確認できます。


sonic-leaf02# show ip bgp neighbors Ethernet0 routes
BGP table version is 3, local router ID is 10.0.2.2, vrf id 0
Default local pref 100, local AS 65202
Status codes:  s suppressed, d damped, h history, * valid, > best, = multipath,
               i internal, r RIB-failure, S Stale, R Removed
Nexthop codes: @NNN nexthop's vrf id, < announce-nh-self
Origin codes:  i - IGP, e - EGP, ? - incomplete
RPKI validation codes: V valid, I invalid, N Not found

    Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.1.1/32      Ethernet0                0             0 65101 ?
 *> 10.0.2.1/32      Ethernet0                              0 65101 65201 ?

Displayed  2 routes and 3 total paths

spine01(10.0.1.1/32)とleaf01(10.0.2.1/32)のloopbackのIPが受信できていれば、正常です。

      Network          Next Hop            Metric LocPrf Weight Path
 *> 10.0.1.1/32      Ethernet0                0             0 65101 ?
 *> 10.0.2.1/32      Ethernet0                              0 65101 65201 ?

■ルーティングテーブル

sonic-leaf02# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP,
       O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
       T - Table, v - VNC, V - VNC-Direct, A - Babel, F - PBR,
       f - OpenFabric,
       > - selected route, * - FIB route, q - queued, r - rejected, b - backup
       t - trapped, o - offload failure

B>* 10.0.1.1/32 [20/0] via fe80::2099:c1ff:fefc:7b30, Ethernet0, weight 1, 00:19:11
B>* 10.0.2.1/32 [20/0] via fe80::2099:c1ff:fefc:7b30, Ethernet0, weight 1, 00:19:11
C>* 10.0.2.2/32 is directly connected, Loopback0, 00:21:07
C>* 192.168.56.0/24 is directly connected, eth0, 00:21:07

spine01/leaf01のloopbackアドレスがBGPで学習出来ていれば、正常にBGP広報が出来ています。以下の部分です。B>*

次回

次回はサーバのFRRでSONiCとBGP Unnumberedで接続するか、もしくは自動化 ansibleの設定も紹介できればと思っています。

参考ページ

大変参考になりました。ありがとうございました。

[Enterprise SONiC] FRRouting and config initialization – Edgecore Help Center (edge-core.com)

SONiC と FRR — sonic-bgpcfgd 編 #Linux – Qiita

Follow me!

Windows 11 Home環境 Virtual BoxでSONiC Community版でBGP Unnumberedをしてみた Part2” に対して1件のコメントがあります。

コメントを残す