コンテンツにスキップ

DOT1P_TO_PG_MAP テーブル

このテーブルは SONiC に存在しない

DOT1P_TO_PG_MAP という CONFIG_DB テーブルは SONiC master ブランチに存在しない。dot1p (IEEE 802.1p Priority Code Point) から Priority Group (PG) へのマッピングは 2 段構成 で実現される。

概要

SONiC の QoS アーキテクチャでは dot1p 値を PG に直接マッピングするテーブルを持たない。実際の経路は以下のとおり:

dot1p (0-7)
  ──→ Traffic Class  (DOT1P_TO_TC_MAP テーブル)
  ──→ Priority Group (TC_TO_PRIORITY_GROUP_MAP テーブル)

PORT_QOS_MAP テーブルの dot1p_to_tc_map leaf と tc_to_pg_map leaf を組み合わせることで、入口ポートの dot1p 値が最終的に ingress buffer priority group へ到達する。

実際のアーキテクチャ

データフロー

flowchart LR
  PKT["受信パケット<br/>dot1p 0-7"]
  D2T[("CONFIG_DB<br/>DOT1P_TO_TC_MAP")]
  T2P[("CONFIG_DB<br/>TC_TO_PRIORITY_GROUP_MAP")]
  PORT[("CONFIG_DB<br/>PORT_QOS_MAP")]
  ORC["QosOrch"]
  SAI["SAI<br/>sai_qos_map_api"]

  PORT -->|dot1p_to_tc_map| D2T
  PORT -->|tc_to_pg_map| T2P
  D2T --> ORC
  T2P --> ORC
  ORC --> SAI
  PKT -->|ingress| SAI

段階 1 — dot1p → Traffic Class

DOT1P_TO_TC_MAP|<name> テーブルに dot1p 値(0-7)→ Traffic Class 値(0-7)のエントリを定義する。PORT_QOS_MAP.<port>.dot1p_to_tc_map から参照される。qosorchSAI_QOS_MAP_TYPE_DOT1P_TO_TC オブジェクトを生成する。

詳細: DOT1P_TO_TC_MAP

段階 2 — Traffic Class → Priority Group

TC_TO_PRIORITY_GROUP_MAP|<name> テーブルに TC 値(0-7)→ PG 値(0-7)のエントリを定義する。PORT_QOS_MAP.<port>.tc_to_pg_map から参照される。qosorchSAI_QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP オブジェクトを生成する。

詳細: TC_TO_PRIORITY_GROUP_MAP

コード証拠

qosorch.cpp:80-96m_qos_maps 初期化リストには以下のテーブルが登録されているが、DOT1P_TO_PG_MAP は含まれない1:

type_map QosOrch::m_qos_maps = {
    {CFG_DSCP_TO_TC_MAP_TABLE_NAME, ...},
    {CFG_DOT1P_TO_TC_MAP_TABLE_NAME, ...},       // "DOT1P_TO_TC_MAP"
    {CFG_TC_TO_PRIORITY_GROUP_MAP_TABLE_NAME, ...}, // "TC_TO_PRIORITY_GROUP_MAP"
    // DOT1P_TO_PG_MAP に対応するエントリはない
    ...
};

sonic-buildimage/src/sonic-yang-models/yang-models/ には sonic-dot1p-pg-map.yang も存在しない2

暗黙デフォルト・コード由来挙動

DOT1P_TO_PG_MAP テーブル自体が存在しないため、フィールドデフォルトは定義されない。2 段マッピングを構成する各テーブルのデフォルトは以下のとおり:

DOT1P_TO_TC_MAP のデフォルト(段階 1)

フィールド デフォルト有無 内容
name プラットフォーム依存 ストレージバックエンドプラットフォームのみ qos_config.j2AZURE という名前のマップを自動注入する
dot1p なし 0-7 の値を明示的に設定する必要あり
tc なし 0-7 の Traffic Class 値を明示的に設定する必要あり

ストレージバックエンドプラットフォームで注入されるデフォルト値(qos_config.j2):

{
  "DOT1P_TO_TC_MAP": {
    "AZURE": {
      "0": "1",
      "1": "0",
      "2": "2",
      "3": "3",
      "4": "4",
      "5": "5",
      "6": "6",
      "7": "7"
    }
  }
}

dot1p=1(Background)を TC=0 へ、dot1p=0(Best Effort)を TC=1 へとスワップしている点に注意。

TC_TO_PRIORITY_GROUP_MAP のデフォルト(段階 2)

qos_config.j2generate_tc_to_pg_map() マクロが platform 別に生成する。マクロが未定義の platform ではビルド時デフォルトなし(PORT_QOS_MAP.tc_to_pg_map が未設定となる)。

制約

  • DOT1P_TO_PG_MAP テーブルは存在しないため、このキー名で CONFIG_DB に書き込んでも qosorch は無視する
  • 実際の dot1p → PG 経路を設定するには DOT1P_TO_TC_MAPTC_TO_PRIORITY_GROUP_MAPPORT_QOS_MAP の 3 テーブルを適切に設定する必要がある

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: DOT1P_TO_TC_MAPTC_TO_PRIORITY_GROUP_MAPPORT_QOS_MAP
  • 関連 CLI: config qos

引用元

関連ページ


  1. QosOrch m_qos_maps 初期化: sonic-swss/orchagent/qosorch.cpp:80-96. https://github.com/sonic-net/sonic-swss/blob/master/orchagent/qosorch.cpp 

  2. YANG モデル一覧: sonic-buildimage/src/sonic-yang-models/yang-models/. https://github.com/sonic-net/sonic-buildimage/tree/master/src/sonic-yang-models/yang-models