コンテンツにスキップ

QUEUE テーブル

概要

ポートの egress queue ごとに SCHEDULER (WRR/DWRR/STRICT) と WRED_PROFILE を割り当てる1qosorchSAI queue scheduler / WRED を設定する。VOQ シャーシでは QUEUE_LIST ではなく VOQ_QUEUE_LIST を使う。

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

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

凡例

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

key 構造

VOQ:

QUEUE|<ifname>|<qindex>

VOQ chassis:

QUEUE|<hostname>|<asic_name>|<ifname>|<qindex>

<ifname>PORT.name への leafref または文字列 CPU<qindex> はプラットフォーム依存(物理 0-7、CPU 0-48 等)、範囲表現も可。

フィールド一覧 (非 VOQ: QUEUE_LIST)

フィールド 必須 説明
ifname (key) leafref PORT.name または CPU IF 名
qindex (key) string Q-index または範囲
scheduler leafref SCHEDULER.name - スケジューラ参照
wred_profile leafref WRED_PROFILE.name - WRED プロファイル参照

when 条件: switch_typevoq でないか未指定。

フィールド一覧 (VOQ: VOQ_QUEUE_LIST)

フィールド 必須 説明
hostname (key) hostname シャーシホスト名
asic_name (key) asic_name ASIC 名
ifname (key) string (1..128) IF 名
qindex (key) string Q-index
scheduler leafref SCHEDULER.name - スケジューラ
wred_profile leafref WRED_PROFILE.name - WRED プロファイル

when 条件: switch_type = voq

購読者

  • qosorch: SAI queue scheduler / WRED を生成
  • bufferorch と協調

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: SCHEDULERWRED_PROFILEPORTBUFFER_QUEUETC_TO_QUEUE_MAP
  • 関連 CLI: なし(config_db.json ロード)
  • 関連 YANG: sonic-queue

関連リファレンス

引用元

関連 Topics

運用ヒント

典型値

  • key 形式: QUEUE|<port>|<queue-range> (例 QUEUE|Ethernet0|3-4)。
  • scheduler: scheduler.0 等。
  • wred_profile: AZURE_LOSSY 等。

よくある誤設定

  • PFC 対応 queue に wred_profile を当てて ECN を有効にしないと、輻輳時に PFC が連続発火する。

確認コマンド

sonic-db-cli CONFIG_DB keys 'QUEUE|Ethernet0|*'
show queue counters

値依存挙動マトリクス

ifname 値別挙動

挙動
PORT.name に存在する値 正常処理。SAI queue scheduler / WRED 適用。
CPU CPU queue 用の専用処理パス。
存在しないポート名 SWSS_LOG_ERROR("Port with alias:%s not found")task_invalid_entry でスキップ。

scheduler フィールド挙動

状態 挙動
省略 スケジューラなし。ASIC デフォルト動作。
存在する SCHEDULER 名 qosorch が SAI scheduler を queue に適用。
存在しない SCHEDULER 名 task_need_retry(後で再試行)。解決不可なら task_failed

wred_profile フィールド挙動

状態 挙動
省略 WRED なし。
存在する WRED_PROFILE 名 SAI WRED を queue に適用。
存在しない WRED_PROFILE 名 task_need_retry。解決不可なら task_failed

例外条件・特殊挙動

  • key トークン数不正: 非 VOQ 環境では <ifname>|<qindex> の 2 トークン必須。VOQ 環境では <hostname>|<asic_name>|<ifname>|<qindex> の 4 トークン必須。違反時は task_invalid_entry で処理中断。2
  • queue index 範囲外: <qindex> が SAI の queue 数を超えた場合 SWSS_LOG_ERROR("Invalid queue index specified") でエントリがスキップされる。2
  • SCHEDULER 参照未解決 (リトライ): scheduler フィールドの参照先 SCHEDULER エントリがまだ存在しない場合は task_need_retry で後で再試行される。解決できない恒久エラーの場合は task_failed2
  • WRED_PROFILE 参照未解決 (リトライ): wred_profile も同様に未解決なら task_need_retry、恒久エラーは task_failed2
  • port 未検出: <ifname> が PORT テーブルに存在しない場合 SWSS_LOG_ERROR("Port with alias:%s not found") でスキップ。2
  • scheduler group 未検出: ポートは存在しても queue index に対応する SAI scheduler group が見つからない場合 task_failed2