コンテンツにスキップ

BUFFER_PORT_EGRESS_PROFILE_LIST テーブル

概要

ポートに紐づけるエグレスバッファプロファイル群 を定義する CONFIG_DB テーブル1SAI における SAI_PORT_ATTR_QOS_EGRESS_BUFFER_PROFILE_LIST 相当。BUFFER_PROFILE で定義した複数プロファイルをポート単位で順序付きリストにまとめる。

BUFFER_QUEUE テーブル (queue 単位の buffer profile) と並ぶ別レベルで、こちらはポート全体としての egress プロファイル群の集約。BUFFER_PORT_INGRESS_PROFILE_LIST と対になる構造。

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

flowchart LR
  CDB[("CONFIG_DB<br/>BUFFER_PORT_EGRESS_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_EGRESS_PROFILE_LIST|<port>
  • <port>: PORT.name への leafref

フィールド

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

ordered-by user のため、設定順がそのまま SAI への bind 順となる。

制約

  • port / profile_list 要素は leafref。実体が無いと validation で拒否される。

例外条件・特殊挙動

  • プロファイル参照未解決 → retry: profile_list に参照する BUFFER_PROFILE が未存在の場合、orchagenttask_need_retry を返しエントリを保留する。プロファイル到着後に再処理される。
  • リスト変更なし → SAI 呼び出しスキップ: プロファイルリストが既存キャッシュと同一の場合は SAI を呼ばずにスキップする。
  • trimming-eligible プロファイル禁止 → task_failed: packet_discard_action = trim のプロファイルは egress profile list に設定不可。SWSS_LOG_ERROR("Failed to configure egress buffer profile list(%s): buffer profile(%s) is trimming eligible") が出力され処理失敗となる。
  • ポート未存在 → task_invalid_entry: 指定ポート名が PortsOrch のポートマップに存在しない場合 task_invalid_entry を返す。

値依存挙動マトリクス

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

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

profile_list の設定順(ordered-by user)は SAI へのバインド順と対応する。

購読者

  • buffermgrd: CONFIG_DBAPPL_DB BUFFER_PORT_EGRESS_PROFILE_LIST_TABLE
  • orchagent (BufferOrch): SAI 側 port egress profile list 設定

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: BUFFER_PROFILE, BUFFER_POOL, BUFFER_QUEUE, PORT, BUFFER_PORT_INGRESS_PROFILE_LIST
  • 関連 CLI: config buffer profile
  • 関連 YANG: sonic-buffer-port-egress-profile-list, sonic-buffer-profile

関連リファレンス

引用元

関連ページ

運用ヒント

典型値

  • key 形式: BUFFER_PORT_EGRESS_PROFILE_LIST|<port> (例 BUFFER_PORT_EGRESS_PROFILE_LIST|Ethernet0)。
  • profile_list: "," 区切り (例 "egress_lossless_profile,egress_lossy_profile")。

よくある誤設定

  • BUFFER_PROFILE 未登録のプロファイル名を入れて leafref エラー。
  • BUFFER_QUEUE の queue 単位 profile とポート単位 profile_list の役割を混同する。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'BUFFER_PORT_EGRESS_PROFILE_LIST|Ethernet0'
sonic-db-cli APPL_DB hgetall 'BUFFER_PORT_EGRESS_PROFILE_LIST_TABLE:Ethernet0'
show buffer pool