QUEUE テーブル¶
概要¶
ポートの egress queue ごとに SCHEDULER (WRR/DWRR/STRICT) と WRED_PROFILE を割り当てる1。qosorch が SAI 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:
VOQ chassis:
<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_type が voq でないか未指定。
フィールド一覧 (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:
SCHEDULER、WRED_PROFILE、PORT、BUFFER_QUEUE、TC_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等。
よくある誤設定¶
確認コマンド¶
値依存挙動マトリクス¶
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_failed。2 - WRED_PROFILE 参照未解決 (リトライ):
wred_profileも同様に未解決ならtask_need_retry、恒久エラーはtask_failed。2 - port 未検出:
<ifname>が PORT テーブルに存在しない場合SWSS_LOG_ERROR("Port with alias:%s not found")でスキップ。2 - scheduler group 未検出: ポートは存在しても queue index に対応する SAI scheduler group が見つからない場合
task_failed。2
-
YANG 定義:
sonic-queue.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-queue.yang ↩ -
qosorch 実装:
sonic-swss/orchagent/qosorch.cpp. https://github.com/sonic-net/sonic-swss/blob/master/orchagent/qosorch.cpp ↩↩↩↩↩↩