config qos サブコマンド¶
概要¶
config qos は QoS と buffer 関連テンプレートを再生成して CONFIG_DB に反映する CLI グループ。clear は既存 QoS 設定を削除し、reload は platform/HWSKU の qos.json.j2 と buffers*.json.j2 を sonic-cfggen で展開する1。
コマンド一覧¶
| コマンド | 用途 |
|---|---|
config qos clear [--verbose] |
QoS 設定を削除 |
config qos reload [options] |
QoS/buffer 設定をテンプレートから再投入 |
config qos reload¶
用法:
config qos reload [--ports <port[,port...]>]
[--no-dynamic-buffer]
[--dry_run <file-prefix>]
[--json-data <json>]
[--verbose]
--ports がある場合は、対象 port に関連する table だけを再計算する _qos_update_ports() に進む。対象 table は port 単独 key の PORT_QOS_MAP, BUFFER_PORT_INGRESS_PROFILE_LIST, BUFFER_PORT_EGRESS_PROFILE_LIST と、複合 key の QUEUE, BUFFER_PG, BUFFER_QUEUE2。
--ports がない場合、既存 QoS を clear してから HWSKU 配下の template を展開する。Mellanox/Barefoot で --no-dynamic-buffer が無い場合は buffers_dynamic.json.j2 を使い、DEVICE_METADATA|localhost の buffer_model を dynamic に更新する。そうでない場合は buffers.json.j2 を使い、対応 ASIC では traditional に更新する3。
--dry_run を指定すると CONFIG_DB に書かず、展開後 JSON をファイルへ出力する。
関連する CONFIG_DB¶
| テーブル | 操作 |
|---|---|
DEVICE_METADATA |
buffer_model を dynamic / traditional に更新 |
PORT_QOS_MAP |
port 別 QoS map |
BUFFER_PORT_INGRESS_PROFILE_LIST |
ingress buffer profile list |
BUFFER_PORT_EGRESS_PROFILE_LIST |
egress buffer profile list |
BUFFER_PG / BUFFER_QUEUE |
port + PG/queue 単位の buffer 設定 |
関連リファレンス¶
- CONFIG_DB:
PORT_QOS_MAP/BUFFER_PORT_INGRESS_PROFILE_LIST/BUFFER_PORT_EGRESS_PROFILE_LIST/BUFFER_PG/BUFFER_QUEUE/DEVICE_METADATA
引用元¶
実行例¶
典型的な使い方¶
よくある引数の組み合わせ¶
# 既存設定をクリアして再ロード
sudo config qos clear
sudo config qos reload --no-dynamic-buffer
# 特定ポートだけ再適用
sudo config qos reload --ports Ethernet0,Ethernet4
期待される出力 (抜粋)¶
データフロー (自動生成)¶
flowchart LR
CLI["config qos"]
SC["sonic-cfggen<br/>(config CLI のみ)"]
CLI --> SC
CDB0[("CONFIG_DB<br/>PORT_QOS_MAP")]
SC --> CDB0
DM0["QosOrch"]
CDB0 --> DM0
CDB1[("CONFIG_DB<br/>BUFFER_PORT_INGRESS_PROFILE_LIST")]
SC --> CDB1
DM1["buffermgrd"]
CDB1 --> DM1
CDB2[("CONFIG_DB<br/>BUFFER_PORT_EGRESS_PROFILE_LIST")]
SC --> CDB2
DM2["buffermgrd"]
CDB2 --> DM2
CDB3[("CONFIG_DB<br/>BUFFER_PG")]
SC --> CDB3
DM3["buffermgrd"]
CDB3 --> DM3
凡例
config 系 (CLI → CONFIG_DB → daemon) のミニ図。テーブル → daemon 対応は docs/reference/config-db-orch-map.md から機械生成。
関連 Topics¶
運用ヒント¶
典型的な利用シーン¶
よくある落とし穴¶
config qos reloadは既存 buffer profile を一旦消すため、瞬断・パケロスが出る可能性。--no-dynamic-buffer機種で dynamic buffer 設定を投入しても無視される。config reload <file>でパイプ文字を含む QoS マップ参照が YANG 検証エラーになる (issue #4107):PORT_QOS_MAPのdot1p_to_tc_map/dscp_to_tc_map等に"DOT1P_TO_TC_MAP|ROCE"のようにパイプ文字 (|) を含む参照値があると、config reload -y <explicit-file>の YANG 検証でValue does not satisfy the constraintエラーが出て中断する。ファイル指定なしのconfig reload -yは検証コードパスが異なり発生しない。回避策: (1)config reload -y(引数なし) を使う、または (2) 参照値をパイプなしの名称に変更する。
関連する show / debug¶
関連 CLI コマンド¶
show buffer— show buffer サブコマンドshow buffer pool— show buffer_pool / headroom-pool サブコマンドshow pfc— show pfc サブコマンドshow priority group— show priority-group サブコマンドshow queue— show queue サブコマンド
-
config qosグループ、clear、reload定義。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/main.py#L3631 ↩ -
_qos_update_ports()の対象 table。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/main.py#L3715 ↩ -
reload()内の buffer template 選択とDEVICE_METADATA更新。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/main.py#L3666 ↩