コンテンツにスキップ

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 MatchRequestOptimizerplugins/executor.py:5 class Executor(ABC) を確認(verified at: 2026-05-09)。

dump state utility

なぜ必要か

SONiC の機能は 複数 DBCONFIG_DB / APPL_DB / ASIC_DB / STATE_DB / COUNTERS_DB / 設定 JSON)に状態が分散する。設定が orchagentSAI → 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>": { "keys": ["<table-or-key>", ...], "tables_not_found": ["..."] } }

<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]

ACLrule が 1 件以上ある時のみ ASIC 側に出る性質を反映し、ACL_COUNTER_RULE_MAP 経由で逆引きする1

techsupport 統合

Executor 継承の全モジュールの dump state <m> all -k 出力が techsupport に自動収録 される1。multi-asic では port.asic0 のように namespace suffix が付く:

dump/unified_view_dump/
├── port, copp, acl_table, acl_rule, ...
└── port.asic0, ...

設定例

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

既知の問題

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 は通常のビルドとは異なるライブラリセットを使用する

引用元

関連 Topics