コンテンツにスキップ

PFC_PRIORITY_TO_PRIORITY_GROUP_MAP テーブル

概要

PFC_PRIORITY_TO_PRIORITY_GROUP_MAPPFC priority 0..7 を ingress priority group 0..7 に対応付ける named QoS map テーブル1PORT_QOS_MAP.pfc_to_pg_map から参照され、lossless traffic の buffer priority group 選択に使われる。schema.h では APPL_DB 側の PFC_PRIORITY_TO_PRIORITY_GROUP_MAP_TABLE 定数が定義されている2

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

flowchart LR
  CDB[("CONFIG_DB<br/>PFC_PRIORITY_TO_PRIORITY_GROUP_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 構造

PFC_PRIORITY_TO_PRIORITY_GROUP_MAP|<name>|<pfc_priority>

YANG 上は map 名を key にする outer list と、pfc_priority を key にする inner list の 2 階層。

主要フィールド

フィールド 説明
name string map 名。PORT_QOS_MAP.pfc_to_pg_map から参照される
pfc_priority string pattern [0-7]? 入力 PFC priority
pg string pattern [0-7]? 対応する ingress priority group

制約

  • name は 1..32 文字、英数字で始まり、英数字 / - / _ を利用可能。
  • pfc_prioritypg は 0..7 の 1 桁値、または空文字を許す pattern。
  • PORT_QOS_MAP.pfc_to_pg_map から leafref 参照されるため、port に適用する前に map entry が存在する必要がある。

購読者

  • orchagentQosOrch (sonic-swss/orchagent/qosorch.cpp): CONFIG_DBQoS map を直接 subscribe し、SAI QoS map (SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP) として作成、port QoS binding に利用する(master には独立した qosmgrd プロセスは存在しない)。

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: PORT_QOS_MAPBUFFER_PGPFC_WD
  • 関連 CLI: config qos
  • 関連 YANG: sonic-pfc-priority-priority-group-mapsonic-port-qos-map

値依存挙動マトリクス

pfc_priority / pg フィールド

フィールド QosOrch 挙動
pfc_priority 0..7 (文字列) SAI SAI_QOS_MAP_TYPE_PFC_PRIORITY_TO_PRIORITY_GROUP に key として登録
pfc_priority 空文字 YANG pattern では許容するが QosOrch は数値変換失敗でエラー
pg 0..7 (文字列) 対応する ingress priority group として SAI に反映
pg 空文字 同上 (QosOrch で変換失敗)

enum なし — pfc_priority / pg ともに pattern [0-7]? の string 型。name は 1..32 文字の任意文字列。

例外条件・特殊挙動

YANG スキーマ検証

  • pfc_priority / pg は pattern [0-7]?。空文字も YANG 上は許容するが、orch は数値として処理するため実質 0..7 必須。

consumer (qosorch) 例外動作

  • SAI sai_qos_map_api create 失敗: Failed to create pfc_priority_to_queue map. status:%d → SWSS_LOG_ERROR。
  • 参照先 map が存在しない名前で PORT_QOS_MAP から参照された場合: Object with name:%s not found. → SWSS_LOG_ERROR + 処理中断。
  • DEL 時 SAI remove 失敗: Failed to remove map, status:%dreturn false で再試行。
  • PORT_QOS_MAP の参照が解除される前にマップを DEL すると、SAI 参照カウントエラーが発生する可能性がある。

関連リファレンス

引用元

関連 Topics

運用ヒント

典型値

  • key 形式: PFC_PRIORITY_TO_PRIORITY_GROUP_MAP|<map-name>
  • lossless 用に dot1p 3→PG 34→PG 4 をマップするのが RoCE v2 の定番。

よくある誤設定

  • PORT_QOS_MAP に紐付け忘れて PFC が効かず head-of-line blocking が継続する。

確認コマンド

sonic-db-cli CONFIG_DB keys 'PFC_PRIORITY_TO_PRIORITY_GROUP_MAP|*'
show priority-group persistent-watermark