BUFFER_PORT_EGRESS_PROFILE_LIST テーブル¶
概要¶
ポートに紐づけるエグレスバッファプロファイル群 を定義する CONFIG_DB テーブル1。SAI における 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 構造¶
<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が未存在の場合、orchagentはtask_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 |
BufferOrch が isTrimmingEligible=true を検出し task_failed を返す(bufferorch.cpp:1915-1921)。egress profile list への trim プロファイルの適用は 禁止。 |
profile_list の設定順(ordered-by user)は SAI へのバインド順と対応する。
購読者¶
buffermgrd: CONFIG_DB → APPL_DBBUFFER_PORT_EGRESS_PROFILE_LIST_TABLEorchagent(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
関連リファレンス¶
- YANG:
sonic-buffer-port-egress-profile-list - CLI:
config buffer
引用元¶
関連ページ¶
- CONFIG_DB: BUFFER_PROFILE
- CONFIG_DB: BUFFER_POOL
- CONFIG_DB: BUFFER_QUEUE
- CONFIG_DB: BUFFER_PORT_INGRESS_PROFILE_LIST
運用ヒント¶
典型値¶
- 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
-
YANG 定義:
sonic-buffer-port-egress-profile-list.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-buffer-port-egress-profile-list.yang ↩