Runbook: SAI table full (route / nexthop / FDB 上限到達)¶
実行前提
table full は data plane で「新規 route が programming されない」状態を生む。直接的に新規通信が黒落ちする可能性がある。CRM threshold 越えと同時に発生していることが多く crm-threshold-exceeded.md と併読のこと。config reload は問題を悪化させうる(再 program 中の race)ので、まずは投入 prefix を絞る方向で対処する。
症状¶
- syslog に
SAI_STATUS_TABLE_FULL/SAI_STATUS_INSUFFICIENT_RESOURCES - 新規 BGP route が
Inactiveのまま crm show resourcesでused / available比が 95%+
想定原因(優先度順)¶
- route prefix の過剰投入: peer から default + specific の二重広告
- next-hop group の枯渇: ECMP メンバー組み合わせが爆発
- FDB age out 不足: aging 0 で MAC が滞留
- ACL TCAM 競合: 同 stage の table が ACL リソースを奪い合う
切り分け手順¶
flowchart TD
A[SAI table 満杯エラー] --> B{どの table?}
B -- ROUTE/NH --> B1[BGP 経路数 / ECMP group を削減]
B -- ACL --> B2[ACL_TABLE 数 / entry を整理]
B -- FDB --> B3[VLAN aging / mac 学習量を見直し]
B1 --> C[platform のリソース上限を確認]
B2 --> C
B3 --> C
確認コマンド¶
1. CRM¶
- 期待: 80% 以下
- 異常: ipv4_route / ipv4_nexthop / fdb_entry が 95%+
2. syncd ログ¶
3. RIB のサイズ¶
4. FDB¶
対処方法¶
- BGP inbound filter で prefix を絞る:
neighbor <peer> prefix-list PL_IN in - ECMP grouping を縮小:
crm config polling interval 60で観測しつつ調整 - FDB aging を有効化:
sudo config mac aging-time 600 - 不要 ACL table 削除
関連ページ¶
引用元¶
-
sonic-net/sonic-swss @ 4305596 — orchagent/crmorch.cpp ↩
-
sonic-net/sonic-sairedis @ 4305596 — syncd/Syncd.cpp ↩