Runbook: SAI failure / syncd リスタート多発¶
実行前提
systemctl restart swss は syncd 連動再起動を伴い、ASIC を一度再初期化 するため data plane が 30 秒~数分中断する(cold restart 相当)。warm_restart が enable でも syncd crash 直後は再生成必須。実行前に sudo cp -r /var/log/syncd* /tmp/syncd.bak.$(date +%s)/ で crash log を退避し、show techsupport を取得して原因解析用 evidence を残す。問題が ASIC ハード障害の場合は再起動しても改善せず、platform vendor の RMA フロー(chassis 全交換)が必要。
症状¶
syncdコンテナがExited (134)/Aborted (core dumped)で再起動を繰り返すASIC_DBへの書き込みが詰まる、orchagent ログにSAI API failedが連続- ASIC レベルのテーブル限界エラー (
CRMの overflow) が観測される
確認コマンド¶
# syncd 異常終了 / core
docker ps -a | grep syncd
sudo journalctl -u syncd -n 200
docker logs syncd 2>&1 | tail -200
ls /var/core/ /var/dump/ 2>/dev/null
# SAI API エラー (orchagent 側)
docker logs swss 2>&1 | grep -iE "SAI_STATUS|SAI API failed" | tail -50
# ASIC リソース枯渇 (CRM)
crm show resources all
crm show thresholds all
想定原因¶
- CRM (Critical Resource Monitor) で table 枯渇: FDB / ROUTE / NEXTHOP / ACL のいずれかが ASIC 容量を超過
- SAI 属性の未対応: SDK バージョンが古く、orchagent が新属性を打って失敗
- 同名 object の重複作成 / 削除順序ミス: 古い参照を残したまま親 object を削除
- メモリ / shared memory 不足: redis / syncd が OOM kill
- HW 側の障害: ASIC reset、PCIe link down、Fabric link error
切り分け手順¶
flowchart TD
A[SAI API がエラーを返す] --> B{syncd ログにエラーコード?}
B -- Yes --> B1[SAI_STATUS_* をベンダ SDK ドキュメントで照合]
B -- No --> C{ASIC リソース枯渇?}
C -- Yes --> C1[CRM 出力を確認]
C -- No --> D{特定 OID で再現?}
D -- Yes --> D1["該当 object 削除 / 再投入"]
D -- No --> E["syncd 再起動 (warm 不可なら cold)"]
1. syncd の異常終了情報¶
docker ps -a | grep syncd
sudo journalctl -u syncd -n 200
docker logs syncd 2>&1 | tail -200
ls /var/core/ /var/dump/ 2>/dev/null
- 期待: 直近 Exit code 0、core file なし
- 異常:
SIGABRT/coredump→ core を解析(gdb 必要)
2. CRM の閾値超過¶
- 期待: usage がいずれの table も threshold 未満
- 異常:
fdb_entry,ipv4_route,ipv6_nexthop,acl_table_entry等が 95% 超 → 容量超過
3. orchagent ログから具体的失敗 API¶
SAI_STATUS_TABLE_FULL→ CRM 枯渇SAI_STATUS_NOT_SUPPORTED→ SDK 非対応属性SAI_STATUS_INVALID_OBJECT_ID→ object 削除順序の問題
4. プラットフォーム / SDK バージョン¶
show platform summary
show version
sudo cat /etc/sonic/sonic_version.yml
docker exec syncd ls /usr/lib/aarch64-linux-gnu/ | grep -i sai 2>/dev/null
5. メモリ¶
対処方法¶
- CRM 枯渇: 容量設計を見直す(FDB aging を短く、ACL の
match_in_portsを集約、route summarization) - syncd / swss の単発復旧:
sudo systemctl restart swss→ syncd も連動再起動 - 重大障害(PCIe 等)の疑い時: techsupport を取得して保守問い合わせ
- SDK のバグの場合: 該当 image にバックポートされた fix を持つ build に更新
関連ページ¶
- ../../topics/20-swss-sai-redis/architecture.md
- ../../topics/20-swss-sai-redis/internals.md
- ../config-db/crm.md
引用元¶
-
sonic-net/sonic-sairedis @ 88bc51a — syncd 本体 ↩
-
sonic-net/sonic-swss @ 4305596 — orchagent ↩