コンテンツにスキップ

PORT_QOS_MAP テーブル

概要

PORT_QOS_MAPQoS map、PFC enable bitmap、PFC watchdog software enable bitmap、scheduler profile を port または global default に bind する CONFIG_DB テーブル1schema.h では APPL_DB 側の PORT_QOS_MAP_TABLE 定数が定義されている2

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

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

凡例

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

key 構造

PORT_QOS_MAP|global
PORT_QOS_MAP|<PORT.name>

ifnameglobal 文字列、または PORT.name への leafref。

主要フィールド

フィールド 説明
tc_to_pg_map leafref TC_TO_PRIORITY_GROUP_MAP.name traffic class から ingress priority group への map
tc_to_queue_map leafref TC_TO_QUEUE_MAP.name traffic class から egress queue への map
pfc_enable string pattern ([0-7](,[0-7])*)? PFC を有効にする queue / priority のカンマ区切り。空文字は全無効
pfcwd_sw_enable string pattern ([0-7](,[0-7])*)? software PFC watchdog を有効にする queue のカンマ区切り
pfc_to_queue_map leafref MAP_PFC_PRIORITY_TO_QUEUE.name PFC priority から egress queue への map
pfc_to_pg_map leafref PFC_PRIORITY_TO_PRIORITY_GROUP_MAP.name PFC priority から priority group への map
dscp_to_tc_map leafref DSCP_TO_TC_MAP.name DSCP から traffic class への map
tc_to_dscp_map leafref TC_TO_DSCP_MAP.name traffic class から DSCP remarking への map
dot1p_to_tc_map leafref DOT1P_TO_TC_MAP.name 802.1p priority から traffic class への map
scheduler leafref SCHEDULER.name port scheduler profile

制約

  • ifnameglobal または既存 PORT への leafref。
  • 各 map field は対応する QoS map table への leafref。
  • pfc_enablepfcwd_sw_enable は 0..7 のカンマ区切り、または空文字。

購読者

  • orchagentQosOrch (sonic-swss/orchagent/qosorch.cpp): CONFIG_DBQoS map binding を直接 subscribe し、SAI QoS map、scheduler、PFC 設定として port に反映する(master には独立した qosmgrd プロセスは存在せず、CONFIG_DBAPPL_DB の中間段は無い)。

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: PORTDSCP_TO_TC_MAPTC_TO_QUEUE_MAPTC_TO_PRIORITY_GROUP_MAPPFC_PRIORITY_TO_PRIORITY_GROUP_MAPSCHEDULERPFC_WD
  • 関連 CLI: config qos
  • 関連 YANG: sonic-port-qos-map

値依存挙動マトリクス

PORT_QOS_MAP.pfc_enable / pfcwd_sw_enable

QosOrch 挙動
3,4 (典型) PFC priority 3 と 4 を有効化 (RoCEv2 lossless 設定)
0,1,2,3,4,5,6,7 全 8 priority を有効化
空文字 PFC 全無効
YANG pattern 違反 (例: 8) YANG validate で reject

PORT_QOS_MAP.ifname

QosOrch 挙動
global グローバルデフォルト設定として全ポートに適用
PORT.name (例: Ethernet0) 指定ポートのみに binding
存在しない PORT 名 YANG leafref 違反 reject

MAP 系フィールド (dscp_to_tc_map / tc_to_queue_map 等)

QosOrch 挙動
存在する map 名 SAI port QoS 属性として binding
存在しない map 名 Object with name:%s not found. SWSS_LOG_ERROR、適用中断
未設定 (optional) その map は binding しない

enum なし — pfc_enable / pfcwd_sw_enable は (0-7)? の string pattern。map 系は leafref。*

例外条件・特殊挙動

YANG スキーマ検証

  • sonic-port-qos-map.yangmust / mandatory 制約なし。各 *_map フィールドは optional。

consumer (qosorch) 例外動作

  • 参照先 QoS map が存在しない: Object with name:%s not found. → SWSS_LOG_ERROR、設定適用中断。
  • SAI sai_qos_map_api SET 失敗: Failed to set [%s:%s] → SWSS_LOG_ERROR。
  • SAI sai_qos_map_api CREATE 失敗: Failed to create [%s:%s] → SWSS_LOG_ERROR。
  • ハンドラ未初期化: Task %s handler is not initialized → SWSS_LOG_ERROR。
  • 順序依存: PORT_QOS_MAP を先に DEL してから参照 QoS map を DEL しないと SAI 参照カウントで失敗する。

関連リファレンス

引用元

関連 Topics

運用ヒント

典型値

  • key 形式: PORT_QOS_MAP|<port>
  • dscp_to_tc_maptc_to_queue_maptc_to_pg_mappfc_to_queue_mappfc_enable: 3,4

よくある誤設定

  • pfc_enable で指定した priority と BUFFER_PG の lossless 範囲が不一致だと PFC が機能しない。
  • map 名を AZURE 以外に変えると初期 SKU 設定との整合が崩れる。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'PORT_QOS_MAP|Ethernet0'
show qos map