Runbook: Routing loop が発生している¶
実行前提
loop は CPU / バックプレーン帯域を消費し、control plane (BGP / LLDP / management) を巻き込みダウンさせる恐れがある。即時切り分けが最優先。修正前に show ip route > /tmp/rib.before と sudo cp /etc/sonic/config_db.json /etc/sonic/config_db.json.bak.$(date +%s) を取得。間違って正常経路を消した場合は backup を config reload -y で戻す。
症状¶
tracerouteで同一 hop の繰り返し- TTL exceeded が大量に発生(
show interfaces countersのRX_ERR増加 / control plane CPU 急上昇) - pingが通らずレイテンシ巨大
想定原因(優先度順)¶
- static route と BGP 経路の競合: 自身を next-hop に向ける static
- default route の相互広告: ToR ↔ Leaf 双方が default を交換
- redistribute connected + summary-only が一致しない: 集約経路で自分の subnet が抜ける
- BGP の next-hop unchanged 設定誤り
切り分け手順¶
flowchart TD
A[traceroute がループ / TTL 枯渇] --> B{ループ区間特定?}
B -- Yes --> B1[該当 hop の FIB を比較]
B -- No --> B2[両端で traceroute / show ip route]
B1 --> C{static route と BGP の競合?}
C -- Yes --> C1[AD/preference を見直し]
C -- No --> D{ECMP nh の片側が誤り?}
D -- Yes --> D1[該当 nh を一時 shutdown]
D -- No --> E[redistribute / route-map のループを確認]
確認コマンド¶
1. traceroute で loop hop 特定¶
2. 該当 prefix の RIB¶
- 期待: 1 つの best 経路
- 異常: 自身に戻る next-hop / 不適切な ECMP メンバー
3. static route 確認¶
4. control plane CPU¶
5. counter 急上昇¶
対処方法¶
- 怪しい static を一時 disable:
sudo config route del prefix <p> - BGP の default 広告抑制:
neighbor <peer> default-originateを外す - summary 配下を明示 announce:
aggregate-address <p> as-setの見直し - ループ確定箇所の interface を一時 admin down:
sudo config interface shutdown Ethernet0
関連ページ¶
引用元¶
-
sonic-net/sonic-swss @ 4305596 — routeorch.cpp ↩