BUFFER_PORT_INGRESS_PROFILE_LIST テーブル¶
概要¶
ポートに紐づけるイングレスバッファプロファイル群 を定義する CONFIG_DB テーブル1。SAI における 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 構造¶
<port>:PORT.nameへの leafref (例:Ethernet0)
フィールド¶
| フィールド | 型 | 説明 |
|---|---|---|
port (key) |
leafref → PORT.name |
対象ポート |
profile_list |
leaf-list of leafref → BUFFER_PROFILE.name (ordered-by user) |
ポートにバインドする ingress バッファプロファイル名の順序付きリスト |
profile_list は ordered-by user で設定順を保持する。CONFIG_DB では "," 区切りの文字列として保存される慣習。
制約¶
portはPORT_LIST.nameへの leafref で、対象ポートが存在しないと validation エラー。- 各
profile_list要素もBUFFER_PROFILE_LIST.nameへの leafref。
例外条件・特殊挙動¶
- プロファイル参照未解決 → retry:
profile_listに参照するBUFFER_PROFILEが未存在の場合、orchagentはtask_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 |
BufferOrch が isTrimmingEligible=true を検出し task_failed を返す(bufferorch.cpp:1725-1731)。ingress profile list への trim プロファイルの適用は SAI 仕様上 禁止。 |
また、buffer_model=dynamic では buffermgrd が profile list を自動生成するため、ユーザによる手動設定は通常不要。
購読者¶
buffermgrd(docker-swss): CONFIG_DB → APPL_DB のBUFFER_PORT_INGRESS_PROFILE_LIST_TABLEorchagent(BufferOrch): APPL_DB → SAI の 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
関連リファレンス¶
- YANG:
sonic-buffer-port-ingress-profile-list - CLI:
config buffer
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- 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
-
YANG 定義:
sonic-buffer-port-ingress-profile-list.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-buffer-port-ingress-profile-list.yang ↩