コンテンツにスキップ

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 構造

LOSSLESS_TRAFFIC_PATTERN|<name>

<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-calculation Jinja マクロ系で参照

関連 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 の動的モードのみ参照)。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'LOSSLESS_TRAFFIC_PATTERN|AZURE'
show buffer profile

値依存挙動マトリクス

このテーブルに 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") → サイレントスキップ