コンテンツにスキップ

TC_TO_QUEUE_MAP テーブル

概要

Traffic Class (TC) を egress queue インデックスへマップする1DSCP_TO_TC_MAP で TC 化された値が、このマップで物理キューに振り分けられる。qosorchSAI map (SAI_QOS_MAP_TYPE_TC_TO_QUEUE) を生成し、PORT_QOS_MAP.tc_to_queue_map で各ポートに適用する。

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>TC_TO_QUEUE_MAP")]
  DM["QosOrch"]
  CDB --> DM
  SAI["SAI<br/>sai_qos_map_api"]
  DM --> SAI

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

TC_TO_QUEUE_MAP|<name>|<tc>

<name> は 1..32 文字、<tc>tc_type (0..7)。

フィールド一覧

フィールド 必須 説明
name (key) string (1..32) マップ名
tc (key) tc_type (0..7) TC
qindex string (0..9) - egress queue index

購読者

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: PORT_QOS_MAPQUEUEDSCP_TO_TC_MAP
  • 関連 CLI: なし
  • 関連 YANG: sonic-tc-queue-map

関連リファレンス

引用元

関連 Topics

値依存挙動マトリクス

tc / qindex は enum 型ではなく数値 / 文字列型。

フィールド 挙動
tc 0..7 有効な Traffic Class インデックス
qindex "0".."9" 対応する egress queue インデックスにマッピング
qindex 空文字列 / 数字以外 stoi() 例外 → task_invalid_entry(エントリ破棄)
マップ全体 PORT_QOS_MAP から参照中に DEL DEL 保留 (m_pendingRemove=true)。参照解放まで待機
マップ全体 PORT_QOS_MAP 参照なし + DEL SAI remove_qos_map() を即時呼び出し

例外条件・特殊挙動

  • 参照中のエントリは DEL 保留: ポートに割り当てられているマップを DEL しようとすると "Can't remove object <name> due to being referenced" を LOG_NOTICE して m_pendingRemove = true をセット、task_need_retry を返す。参照が外れるまで削除は保留される。
  • pending remove 中の SET はリトライ: DEL 保留中のエントリへの SET は task_need_retry を返し、参照解放後に再処理される。
  • SAI create/modify 失敗: sai_qos_map_api->create_qos_map() 失敗時に "Failed to create tc_to_queue map. status:%d" を LOG_ERROR して task_failed を返す。既存マップの変更失敗時も "Failed to set [TC_TO_QUEUE_MAP:<name>]" を LOG_ERROR して task_failed を返す。
  • 存在しない object への DEL: SAI オブジェクトが未作成のエントリを DEL しようとすると "Object with name:<name> not found." を LOG_ERROR して task_invalid_entry を返す(エントリはキューから除去される)。
  • フィールド値の型変換失敗: TC 値または queue_index が整数として解釈できない場合、stoi() が例外を投げ task_invalid_entry を返す。

運用ヒント

典型値

  • key 形式: TC_TO_QUEUE_MAP|<name> (例 AZURE)。
  • 値: 0:0, 1:1, 3:3, 4:4 等。

よくある誤設定

  • TC→queue を 0..7 範囲外に書くと SAI が拒否し、マップ全体が install されない。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'TC_TO_QUEUE_MAP|AZURE'
show qos map tc-queue