コンテンツにスキップ

BUFFER_PORT_INGRESS_PROFILE_LIST テーブル

概要

ポートに紐づけるイングレスバッファプロファイル群 を定義する CONFIG_DB テーブル1SAI における SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST 相当で、BUFFER_PROFILE テーブルで定義した複数プロファイルを、ポート単位で 順序を保ったリスト として束ねる。

ingress 方向の BUFFER_PG (priority-group ごとのバッファ) と並ぶ別系統で、こちらはポート全体としての ingress プロファイル群の集約。動的バッファモデル (buffer_model = dynamic) ではあまり使われず、静的バッファ設定で利用されることが多い。

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>BUFFER_PORT_INGRESS_PROFILE_LIST")]
  DM["buffermgrd"]
  CDB --> DM
  APPDB[("APP_DB<br/>APP_DB")]
  DM --> APPDB
  SYNCD["syncd"]
  APPDB --> SYNCD
  SAI["SAI<br/>sai_port_api"]
  SYNCD --> SAI

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

BUFFER_PORT_INGRESS_PROFILE_LIST|<port>
  • <port>: PORT.name への leafref (例: Ethernet0)

フィールド

フィールド 説明
port (key) leafref → PORT.name 対象ポート
profile_list leaf-list of leafref → BUFFER_PROFILE.name (ordered-by user) ポートにバインドする ingress バッファプロファイル名の順序付きリスト

profile_listordered-by user で設定順を保持する。CONFIG_DB では "," 区切りの文字列として保存される慣習。

制約

  • portPORT_LIST.name への leafref で、対象ポートが存在しないと validation エラー。
  • profile_list 要素も BUFFER_PROFILE_LIST.name への leafref。

例外条件・特殊挙動

  • プロファイル参照未解決 → retry: profile_list に参照する BUFFER_PROFILE が未存在の場合、orchagenttask_need_retry を返しエントリを保留する。
  • リスト変更なし → SAI 呼び出しスキップ: プロファイルリストが既存キャッシュと同一の場合は SAI を呼ばずにスキップする。
  • trimming-eligible プロファイル禁止 → task_failed: packet_discard_action = trim のプロファイルは ingress profile list に設定不可。SAI 仕様上 ingress 側でのパケットトリミングは禁止されており task_failed となる。
  • ポート未存在 → task_invalid_entry: 指定ポート名が PortsOrch のポートマップに存在しない場合 task_invalid_entry を返す。

値依存挙動マトリクス

このテーブルに enum フィールドはない。ただし参照する BUFFER_PROFILE.packet_discard_action の値によって挙動が変わる。

参照プロファイルの packet_discard_action 挙動
drop(既定) profile_list に含めて ingress profile list として設定可能。BufferOrch が SAI SAI_PORT_ATTR_QOS_INGRESS_BUFFER_PROFILE_LIST を更新する。
trim BufferOrchisTrimmingEligible=true を検出し task_failed を返す(bufferorch.cpp:1725-1731)。ingress profile list への trim プロファイルの適用は SAI 仕様上 禁止

また、buffer_model=dynamic では buffermgrd が profile list を自動生成するため、ユーザによる手動設定は通常不要。

購読者

  • buffermgrd (docker-swss): CONFIG_DBAPPL_DBBUFFER_PORT_INGRESS_PROFILE_LIST_TABLE
  • orchagent (BufferOrch): APPL_DBSAI の port ingress buffer profile list 設定

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: BUFFER_PROFILE, BUFFER_POOL, BUFFER_PG, PORT, BUFFER_PORT_EGRESS_PROFILE_LIST
  • 関連 CLI: config buffer profile (sonic-utilities)
  • 関連 YANG: sonic-buffer-port-ingress-profile-list, sonic-buffer-profile

関連リファレンス

引用元

関連ページ

運用ヒント

典型値

  • key 形式: BUFFER_PORT_INGRESS_PROFILE_LIST|<port> (例 BUFFER_PORT_INGRESS_PROFILE_LIST|Ethernet0)。
  • profile_list: "," 区切り (例 "ingress_lossless_profile,ingress_lossy_profile")。
  • static-buffer モードでの利用が中心。dynamic-buffer モードでは通常不要。

よくある誤設定

  • BUFFER_PROFILE に存在しないプロファイル名を入れて leafref 検証エラー。
  • dynamic-buffer モードで設定したが反映されず混乱する (dynamic では buffermgrd が自動生成)。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'BUFFER_PORT_INGRESS_PROFILE_LIST|Ethernet0'
sonic-db-cli APPL_DB hgetall 'BUFFER_PORT_INGRESS_PROFILE_LIST_TABLE:Ethernet0'
show buffer pool