Topics で読み物として読む
この HLD は実装詳細を含みます。機能の概念・設定・運用を読み物として読みたい場合は Topics 20 章: SWSS / SAI / Redis を参照。
裏取りステータス: code-verified
sonic-utilities/dump/ に main.py / match_infra.py / helper.py / plugins/ を確認。match_infra.py:35 MatchRequest / :346 MatchEngine / :454 MatchRequestOptimizer、plugins/executor.py:5 class Executor(ABC) を確認(verified at: 2026-05-09)。
dump state utility¶
なぜ必要か¶
SONiC の機能は 複数 DB(CONFIG_DB / APPL_DB / ASIC_DB / STATE_DB / COUNTERS_DB / 設定 JSON)に状態が分散する。設定が orchagent → SAI → ASIC まで伝播したかを見るには各 DB を個別に grep する必要があり、属人化していた1。
dump state <module> <id> は、モジュール毎に「どの DB のどのキーを取れば良いか」を プラグイン定義 で持ち、DB 横断で 1 view に集約する。
コマンド¶
dump state <module> <identifier> [options]
--show module 一覧
--db <NAME> DB / CONFIG_FILE フィルタ(複数可)
--table | -t 表形式(既定 JSON)
--key-map | -k field-value を返さず key のみ
--verbose | -v MatchEngine の中間出力
--namespace <n> multi-asic
<identifier> はカンマ区切り、all(モジュールが認識する全 entry)、または単一値。
プラグイン抽象¶
各モジュールは Executor を継承1:
class Executor(ABC):
ARG_NAME = "id"
CONFIG_FILE = ""
@abstractmethod
def execute(self, params): ...
@abstractmethod
def get_all_args(self, namespace): ...
sonic-utilities/dump/plugins/{port,copp,acl_table,acl_rule,...}.py に実装。execute() は次の JSON テンプレを返す1:
<DB_NAME> は CONFIG_DB / APPL_DB / ASIC_DB / STATE_DB / ... または CONFIG_FILE(例: COPP は copp_cfg.json 由来 entry を CONFIG_FILE キーで返す)。
MatchRequest / MatchEngine¶
繰り返しの「DB → table → key_pattern マッチ」を抽象化1:
| field | 必須 | 用途 |
|---|---|---|
Table |
yes | テーブル名 |
key_pattern |
no (既定 *) |
正規表現マッチ |
field / value |
no | field-value フィルタ |
return_fields |
no | 部分 field のみ |
db または file |
yes (排他) | redis or JSON |
just_keys |
yes | true=key のみ |
match_entire_list |
no | カンマ区切り値の全体 vs 個別 |
戻り値: { "error", "keys": [...], "return_values": { "<key>": {...} } }
モジュール例: ACL Table の OID 辿り¶
flowchart LR
AT[ACL_TABLE<br>CONFIG_DB] --> H{rule≥1?}
H -- no --> X[ASIC_DB に出ない]
H -- yes --> ACR[ACL_COUNTER_RULE_MAP<br>COUNTERS_DB]
ACR --> COID[ACL_COUNTER OID]
COID --> TOID[ACL_TABLE OID]
TOID --> TGM[ACL_TABLE_GROUP_MEMBER]
TGM --> TG[ACL_TABLE_GROUP]
ACL は rule が 1 件以上ある時のみ ASIC 側に出る性質を反映し、ACL_COUNTER_RULE_MAP 経由で逆引きする1。
techsupport 統合¶
Executor 継承の全モジュールの dump state <m> all -k 出力が techsupport に自動収録 される1。multi-asic では port.asic0 のように namespace suffix が付く:
設定例¶
dump state --show # module 一覧
dump state port Ethernet0 # 単一 port の全 DB 関連 key
dump state port Ethernet0,Ethernet4 -t # 複数 port、表形式
dump state acl_table all -k --db ASIC_DB # 全 ACL_TABLE の ASIC_DB key のみ
dump state copp all # CONFIG_FILE も含む
制限事項¶
- single-ASIC で
--namespaceを指定するとエラー終了1 - COPP のように
/etc/sonic/copp_cfg.json経由のエントリはCONFIG_FILEキーで別扱い
干渉する機能¶
- techsupport: 全モジュールの dump が含まれるため、モジュール追加で techsupport が肥大化
- multi-asic:
--namespaceで対象 asic 切替
関連 Topics¶
- 09-telemetry-snmp/operations: techsupport / debug ツール
- 20-swss-sai-redis/internals: DB 構造(dump state が辿る対象)
- 12-multi-asic-voq/operations: namespace 切替
既知の問題¶
orchagent が `transfer_attributes: src vs dst attr id don't m(sonic-buildimage#3832)¶
orchagent が transfer_attributes: src vs dst attr id don't match でクラッシュする問題。syncd と orchagent の互換性を確認すること
S6100 T0-64 構成で orchagent が継続的にクラッシュする問題(sonic-buildimage#4089)¶
S6100 T0-64 構成で orchagent が継続的にクラッシュする問題。syncd との API バージョン不一致が原因の場合が多い
syncd の再起動が完了しない問題(sonic-buildimage#4127)¶
syncd の再起動が完了しない問題。syncd プロセスが SIGTERM を無視して終了しない場合、kill -9 が必要になることがある
DellEmc S5232 で orchagent がクラッシュする既知の問題 (201911 イメージ)(sonic-buildimage#4331)¶
DellEmc S5232 で orchagent がクラッシュする既知の問題 (201911 イメージ)。Broadcom SAI の特定バージョンとの互換性問題
DellEmc S5232 で master #238 イメージの orchagent クラッシュ問題(sonic-buildimage#4339)¶
DellEmc S5232 で master #238 イメージの orchagent クラッシュ問題。libsaibcm バージョンアップ後に再現
libsaibcm_3.7.3.3-3 への移行後に orchagent がクラッシュする問題(sonic-buildimage#4347)¶
libsaibcm_3.7.3.3-3 への移行後に orchagent がクラッシュする問題。SAI ライブラリのバージョンと orchagent の互換性を確認すること
S6100 T0 での cold reboot 後に syncd クラッシュが発生する問題 (HEAD.253)(sonic-buildimage#4428)¶
S6100 T0 での cold reboot 後に syncd クラッシュが発生する問題 (HEAD.253)
collectPortCounters: Failed to get stats of port 0 エラーが sy(sonic-buildimage#4586)¶
collectPortCounters: Failed to get stats of port 0 エラーが syncd ログに出力される問題。CPU ポート(port 0)の統計収集が SAI でサポートされていないプラットフォームで発生
syncd が libprotobuf.so.0 不足で異常終了する問題(sonic-buildimage#4682)¶
syncd が libprotobuf.so.0 不足で異常終了する問題。syncd docker イメージのビルド時に protobuf ライブラリが含まれていない場合に発生
最新 SONiC イメージで orchagent が断続的にクラッシュする問題(sonic-buildimage#4907)¶
最新 SONiC イメージで orchagent が断続的にクラッシュする問題。コアダンプを収集し、sudo gdb /usr/bin/orchagent core.* でバックトレースを確認すること
Z9264/201911-170 での warm-reboot 中に orchagent と Python プロセスがク(sonic-buildimage#5258)¶
Z9264/201911-170 での warm-reboot 中に orchagent と Python プロセスがクラッシュし、カーネルクラッシュが発生する問題
最新 SONiC イメージで orchagent がクラッシュする問題(sonic-buildimage#5704)¶
最新 SONiC イメージで orchagent がクラッシュする問題。コアダンプが /var/core/ に生成される。sudo show techsupport でデバッグ情報を収集すること
サブインターフェース作成時に BRCM で swss と syncd が終了する問題(sonic-buildimage#6167)¶
サブインターフェース作成時に BRCM で swss と syncd が終了する問題。サブインターフェースの SAI サポートがプラットフォームによって異なる
ブート時に syncd が共有ライブラリ不足で失敗する問題(sonic-buildimage#6253)¶
ブート時に syncd が共有ライブラリ不足で失敗する問題。syncd の依存ライブラリが正しくインストールされていることを確認すること
SAI_OBJECT_TYPE_PORT の削除をサポートしない SAI 実装で orchagent がクラッシュす(sonic-buildimage#6459)¶
SAI_OBJECT_TYPE_PORT の削除をサポートしない SAI 実装で orchagent がクラッシュする問題。port deletion は全 SAI プラットフォームでサポートされているわけではない
SAI_SWITCH_ATTR_AVAILABLE_IPMC_ENTRY 属性がサポートされていない SAI 実装で(sonic-buildimage#6563)¶
SAI_SWITCH_ATTR_AVAILABLE_IPMC_ENTRY 属性がサポートされていない SAI 実装でエラーが発生する問題。CRM での IPMC エントリ監視が利用できないプラットフォームがある
syncd が master RPC イメージでクラッシュする問題(sonic-buildimage#6622)¶
syncd が master RPC イメージでクラッシュする問題。RPC ビルドの syncd は通常のビルドとは異なるライブラリセットを使用する