Runbook: BGP route が広告されない¶
実行前提
clear ip bgp <peer> soft out は対向への full advertise を再送する。peer の inbound 処理に瞬間負荷がかかる。clear ip bgp * 全 reset は経路断を伴うので避ける。修正前に vtysh -c "show running-config bgpd" > /tmp/frr.bak を取得し、悪化時は vtysh -f /tmp/frr.bak で書き戻す。
症状¶
show ip routeには経路があるが、show ip bgp neighbors <peer> advertised-routesに出てこない- 対向側で受信されない
- 自分の loopback prefix が外に出ない
想定原因(優先度順)¶
network/ redistribute 文の不足: FRR でnetwork 1.1.1.0/24またはredistribute connectedが無い- outbound route-map で deny:
route-map RM_OUT permitの match で外れる - prefix-list で除外:
ip prefix-list PL_OUTの sequence で deny - next-hop self / community 設定不適: iBGP で next-hop が peer から到達不能
- best-path にならない: 同 prefix で他の経路(IGP / static)に負けて Adj-RIB-Out に乗らない
切り分け手順¶
flowchart TD
A[対向に経路が届かない] --> B{local RIB に経路あり?}
B -- No --> B1[起源側 redistribute / network 文を確認]
B -- Yes --> C{Adj-RIB-Out に乗っている?}
C -- No --> C1[route-map / prefix-list で deny されていないか]
C -- Yes --> D{outbound policy 適用順序 OK?}
D -- No --> D1[route-map seq 番号と match 条件を修正]
D -- Yes --> E[clear bgp <peer> soft out で再送信]
確認コマンド¶
1. local RIB と Adj-RIB-Out¶
docker exec bgp vtysh -c "show ip bgp 1.1.1.0/24"
docker exec bgp vtysh -c "show ip bgp neighbors <peer> advertised-routes"
docker exec bgp vtysh -c "show ip bgp neighbors <peer> received-routes" # 対向側用
- 期待: 該当 prefix が
*>(best, valid) で、advertised-routes に出る - 異常: best ではない → 他の同 prefix エントリと比較
2. route-map の適用¶
docker exec bgp vtysh -c "show running-config bgpd" | grep -A20 "neighbor <peer>"
docker exec bgp vtysh -c "show route-map"
3. prefix-list の確認¶
4. soft clear で再評価¶
5. CONFIG_DB の ROUTE_MAP¶
対処方法¶
network文追加:vtysh -c "conf t" -c "router bgp <ASN>" -c "network 1.1.1.0/24"→ CONFIG_DB 側にも反映- route-map 修正:
route-map RM_OUT permit 100を追加、または既存の deny を緩める - iBGP 経路で next-hop 問題:
neighbor <peer> next-hop-self
確認¶
対処後の正常化を以下で裏取りする。
- 症状解消: 「症状」節で挙げた事象 (counter / log / state) が回復していること
- 再発監視: 数分〜数十分の間隔で同コマンドを再実行し、値がフラップしていないこと
- 副作用なし: 関連サブシステム (syslog /
show interfaces counters errors/show ip bgp summary等) に新規 error が出ていないこと - 永続化:
sudo config save -y済みでconfig_db.jsonに変更が反映されていること (恒久対処の場合)
短時間で再発する場合は「想定原因」リストの次候補に進む。
関連ページ¶
引用元¶
-
sonic-net/sonic-frr @ 799f47f — bgpd/bgp_route.c ↩
-
sonic-net/sonic-swss @ 4305596 — fpmsyncd で zebra → APP_DB 反映 ↩