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 から参照される。qosorch が SAI_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 から参照される。qosorch が SAI_QOS_MAP_TYPE_TC_TO_PRIORITY_GROUP オブジェクトを生成する。
コード証拠¶
qosorch.cpp:80-96 の m_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.j2 が AZURE という名前のマップを自動注入する |
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.j2 の generate_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_MAP、TC_TO_PRIORITY_GROUP_MAP、PORT_QOS_MAPの 3 テーブルを適切に設定する必要がある
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
DOT1P_TO_TC_MAP、TC_TO_PRIORITY_GROUP_MAP、PORT_QOS_MAP - 関連 CLI:
config qos
引用元¶
関連ページ¶
-
QosOrch m_qos_maps 初期化:
sonic-swss/orchagent/qosorch.cpp:80-96. https://github.com/sonic-net/sonic-swss/blob/master/orchagent/qosorch.cpp ↩ -
YANG モデル一覧:
sonic-buildimage/src/sonic-yang-models/yang-models/. https://github.com/sonic-net/sonic-buildimage/tree/master/src/sonic-yang-models/yang-models ↩