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)
Contents
環境の説明
構成図
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
ホスト名を入力する
最初にホスト名を入力して保存をします。
例) sonic-leaf02というホスト名の場合
sudo config hostname sonic-leaf02設定を保存します。
sudo config save -yconfig_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 **で設定します。
 
- ホスト名やIPアドレスなどは、
- 2.ルーティングの設定は、vtyshと入力してFRRから行います。- FRR入るとCisco的なコマンドで設定を投入できます。
 
このような設定方法にするため、以下の手順でconfig_db.jsonの内容を書き換えていきます。
/etc/sonic/config_db.jsonを書き換えてsplit modeにする
SONiCにsshでログインをしてシェルから以下のコマンドを投入して config_db.jsonのバックアップをしてから編集します。
sudo cp /etc/sonic/config_db.json /etc/sonic/config_db.json.bk
sudo vi /etc/sonic/config_db.jsonDEVICE_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
不要な設定を消す
デフォルトで入っている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の設定の他にもhostnameやLoopback1の設定もしていきます。最終的に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 -yBGPの設定 (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
endBGPを設定します。
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
  neighbor LEAF prefix-list Private_IP_Addresses out
 exit-address-family
exit
end設定を確認します。
show run保存します。
write memorysonic-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 -yBGPの設定 (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
endBGPを設定します。
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 memorysonic-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 -yBGPの設定 (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
endBGPを設定します。
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 memoryBGP 設定内容の解説
spineの場合
特徴は、BGP Unnumbered なのでBGP peerの設定は、interfaceの名前を定義するだけです。対向のAS番号やIPv4アドレスの定義は不要です。
以下は、BGP設定の詳細を解説した表です。(by ChatGTP)
| コマンド | 解説 | 
|---|---|
| router bgp 65101 | AS番号65101でBGPを有効化。 | 
| bgp router-id 10.0.1.1 | BGPルーターIDとして 10.0.1.1を設定。BGPピアとの識別用。 | 
| bgp log-neighbor-changes | 隣接ルーターとの接続状態の変更をログに記録する。 | 
| bgp bestpath as-path multipath-relax | BGPの複数パス選択をASパスの制約を緩和して許可する。 | 
| neighbor LEAF peer-group | “LEAF” というピアグループを作成。共通設定を適用するために使用。 | 
| neighbor LEAF remote-as external | LEAFピアグループは外部BGP(eBGP)を示し、異なるASとの接続。 | 
| neighbor LEAF advertisement-interval 0 | ルート広報間隔を0秒に設定し、即時にルート広報を行う。 | 
| neighbor LEAF timers 1 3 | Keepaliveタイマーを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 unicast | IPv4ユニキャストアドレスファミリーの設定を開始。 | 
| 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 Loopback0 | Loopback0インターフェースに一致するルートをルートマップで指定。 | 
| 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_SRC | BGPプロトコルで、ルート送信時に 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 65201 | AS番号65201でBGPを有効化。 | 
| bgp router-id 10.0.2.1 | BGPのルーターIDを 10.0.2.1に設定。ピアとの識別に使用。 | 
| bgp log-neighbor-changes | 隣接ルーターの接続状態変更をログに記録。 | 
| bgp bestpath as-path multipath-relax | ASパスの制限を緩和し、複数経路を許可する設定。 | 
| neighbor SPINE peer-group | “SPINE” というピアグループを作成。共通設定を複数隣接ルーターに適用するために使用。 | 
| neighbor SPINE remote-as external | SPINEピアグループは外部BGP(eBGP)で、異なるAS(外部ネットワーク)と接続。 | 
| neighbor SPINE advertisement-interval 0 | ルート広報の間隔を0秒に設定し、即時広報を行う。 | 
| neighbor SPINE timers 1 3 | Keepaliveタイマーを1秒、Holdタイマーを3秒に設定。短い間隔で接続の確認を行う。 | 
| neighbor SPINE timers connect 5 | 接続再試行のタイマーを5秒に設定。 | 
| neighbor SPINE capability extended-nexthop | 拡張ネクストホップ機能を有効にし、異なるアドレスファミリーでのネクストホップ情報をサポート。 | 
| neighbor Ethernet0 interface peer-group SPINE | Ethernet0インターフェースにSPINEピアグループを適用。 | 
| address-family ipv4 unicast | IPv4ユニキャストのアドレスファミリーの設定を開始。 | 
| 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-family | IPv4ユニキャストアドレスファミリーの設定を終了。 | 
| 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 10 | Loopback0インターフェースにマッチするルートを再配布するルートマップ。 | 
| 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 3spine01と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 pathsleaf01(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:44leaf01/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 1leaf01の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 pathsspine01(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:25spine01/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:  2BGPの状況 (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 pathsspine01(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:07spine01/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


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