LOSSLESS_TRAFFIC_PATTERN テーブル¶
概要¶
ロスレスフロー (PFC で守るフロー) のトラフィックパターンを記述する設定テーブル1。
ヘッドルームサイズの動的計算 (buffermgrd の dynamic-buffer モード) において、平均パケットサイズや小パケット比率を入力として使う。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>LOSSLESS_TRAFFIC_PATTERN")]
DM["buffermgrd"]
CDB --> DM
APPDB[("APP_DB<br/>APP_BUFFER_PROFILE_TABLE")]
DM --> APPDB
SYNCD["syncd"]
APPDB --> SYNCD
SAI["SAI<br/>sai_buffer_api"]
SYNCD --> SAI
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
<name>: 1–32 文字。通常は AZURE の 1 件のみ。
フィールド¶
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
mtu |
uint16 (1..9216) | yes | ロスレスパケットの最大サイズ。ヘッドルームの XOFF サイズ計算に使う |
small_packet_percentage |
uint8 (0..100) | yes | 小パケット (<= mtu/2 想定) の比率。これが大きいほどヘッドルームを増やす |
購読者¶
buffermgrd(dynamic buffer モード)。headroom-pool-calculationJinja マクロ系で参照
関連 CONFIG_DB / YANG¶
- 関連 CONFIG_DB:
DEFAULT_LOSSLESS_BUFFER_PARAMETER,BUFFER_PROFILE,BUFFER_POOL - 関連 YANG:
sonic-lossless-traffic-pattern
関連リファレンス¶
- YANG:
sonic-lossless-traffic-pattern
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key:
LOSSLESS_TRAFFIC_PATTERN|AZURE(通常 1 件のみ)。 mtu:1500または9216(jumbo)。small_packet_percentage: 経験的に50程度。
よくある誤設定¶
mtuを実 MTU と乖離した値にし、ヘッドルームが過小/過大になる。- dynamic-buffer モード以外でこのテーブルを変更しても効かない (
buffermgrdの動的モードのみ参照)。
確認コマンド¶
値依存挙動マトリクス¶
このテーブルに enum フィールドはない。数値フィールドの値と dynamic buffer モードの有無で動作が決まる。
mtu(uint16 1..9216)¶
| 値 | 挙動 |
|---|---|
1500 |
標準イーサネット MTU。ヘッドルーム計算の標準入力 |
9216 |
ジャンボフレーム。ヘッドルームが大きくなる |
| 未設定 | buffermgrdyn がデフォルト mtu 値を使用("if mtu isn't configured, take the default value") |
| 実 MTU と乖離した値 | headroom が過小(パケットロス)または過大(バッファ浪費)。バリデーションなし |
small_packet_percentage(uint8 0..100)¶
| 値 | 挙動 |
|---|---|
0 |
小パケットなし。ヘッドルーム計算で最小のマージンを使用 |
50 |
経験的な標準値 |
100 |
全パケットが小パケット想定。ヘッドルームを最大化 |
| 0〜100 範囲外 | コード上バリデーションなし → headroom 計算式が異常値を返す可能性 |
dynamic バッファモードの有無¶
| 条件 | 挙動 |
|---|---|
| dynamic buffer モード | buffermgrdyn がこのテーブルを参照してヘッドルームを動的計算 |
| 静的バッファモード | buffermgr.cpp はこのテーブルを参照しない。設定変更は headroom 計算に影響しない |
例外条件・特殊挙動¶
| 条件 | 挙動 |
|---|---|
| dynamic バッファモード以外 | buffermgr.cpp(静的モード)はこのテーブルを参照しない。設定変更は headroom 計算に影響しない |
mtu 未設定 |
buffermgrdyn がデフォルト mtu 値を使用(buffermgrdyn.cpp L2263「if mtu isn't configured, take the default value」) |
mtu が実 MTU と乖離 |
headroom が過小(パケットロス)または過大(バッファ浪費)になる。バリデーションなし |
small_packet_percentage が 0〜100 範囲外 |
コード上でバリデーションなし。headroom 計算式が異常値を返す可能性。YANG スキーマ依存 |
| DB migration 時(AZURE エントリ自動挿入) | db_migrator.py L414 が mtu=1024, small_packet_percentage=100 を挿入。Mellanox 向け初期値で他プラットフォームには不適切な場合がある |
| バッファプール未設定 | SWSS_LOG_INFO("No shared buffer pool configured, skip calculating shared buffer pool size") → サイレントスキップ |
-
YANG 定義:
sonic-lossless-traffic-pattern.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-lossless-traffic-pattern.yang ↩