SWITCH_TRIMMING テーブル¶
概要¶
輻輳テレメトリ向けの パケットトリミング (packet trimming) を全スイッチに対して設定するテーブル1。 ドロップ予定のパケットを「短縮コピー」して別の DSCP / TC / queue で送り出すことで、輻輳発生を末端まで伝える。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>SWITCH_TRIMMING")]
DM["SwitchOrch"]
CDB --> DM
SAI["SAI<br/>sai_switch_api"]
DM --> SAI
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
シングルトン。
フィールド¶
| フィールド | 型 | 説明 |
|---|---|---|
size |
uint32 | トリミング後のパケットサイズ [bytes] |
dscp_value |
uint8 (0..63) または from-tc |
トリミング後パケットに付ける DSCP。from-tc で tc_value から DSCP_TO_TC マッピング逆引きで導出 |
tc_value |
uint8 | トリミング後パケットに付ける Traffic Class |
queue_index |
uint8 または dynamic |
トリミング後パケットの送信キュー。dynamic で dscp_value から導出 |
dscp_value=from-tc と queue_index=dynamic の組み合わせは矛盾するので、どちらか一方だけを使う想定。
購読者¶
orchagent(SwitchOrch trimming 拡張)。SAI の switch-level trimming 属性に push
関連 YANG¶
sonic-trimming
関連リファレンス¶
引用元¶
関連ページ¶
値依存挙動マトリクス¶
dscp_value と queue_index は enum ではなく union 型(数値 + 固定文字列)。
| フィールド | 値 | 挙動 |
|---|---|---|
dscp_value |
from-tc |
tc_value を使い DSCP マッピング逆引きで DSCP を導出。tc_value 必須 |
dscp_value |
0..63 (数値) |
指定値をトリミング後パケットの DSCP に直接設定 |
queue_index |
dynamic |
dscp_value からキューを導出 |
queue_index |
0..255 (数値) |
指定インデックスのキューへ送出 |
dscp_value=from-tc + queue_index=dynamic |
組み合わせ | 導出元が循環し得るため非推奨(YANG は禁止しない) |
| 任意フィールド | DEL | 拒否 (operation is not supported) |
例外条件・特殊挙動¶
- フィールド削除不可:
size・dscp.modeはいずれも DEL 操作をサポートしない。削除を試みると"Failed to remove switch trimming size/DSCP configuration: operation is not supported"を LOG_ERROR してreturn false。 - ASIC capability 未サポート: DSCP mode / queue_index の capability チェック失敗時、
"Failed to validate switch trimming DSCP mode/queue index: capability is not supported"を LOG_ERROR して SET を拒否する。 - SAI set 失敗: SAI API 呼び出し失敗時は対応するエラーを LOG_ERROR して
return false。 - ASIC/CONFIG_DB 乖離: 初期化時に ASIC 側と CONFIG_DB 側の値が食い違っていると SET/DEL どちらの操作も
"Failed to set/remove switch trimming: ASIC and CONFIG DB are diverged"を LOG_ERROR して拒否。 - 空キー: key が空文字列だと
"Failed to parse switch trimming key: empty string"を LOG_ERROR してエントリをスキップする。
運用ヒント¶
典型値¶
- key:
SWITCH_TRIMMING|GLOBAL(シングルトン)。 size: 128〜256 bytes 程度。dscp_value:from-tcまたは明示 DSCP。queue_index:dynamicまたは特定 queue。
よくある誤設定¶
dscp_value=from-tcとqueue_index=dynamicを同時指定して導出元が曖昧になる。- packet trimming 非対応 ASIC に投入して SAI でエラーになる。