PORT_STORM_CONTROL テーブル¶
概要¶
物理ポートで BUM (broadcast / unknown-unicast / unknown-multicast) トラフィックのレート制限 (storm control) を設定するテーブル1。
3 種類のトラフィックに対して個別にレートを指定でき、orchagent が SAI SAI_PORT_ATTR_*_STORM_CONTROL_POLICER_ID 系で SAI policer を作って attach する。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>PORT_STORM_CONTROL")]
DM["PolicerOrch"]
CDB --> DM
SAI["SAI<br/>sai_policer_api"]
DM --> SAI
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
<ifname>:PORT.nameへの leafref (物理ポートのみ。LAG / VLAN は非対応)<storm_type>:broadcast/unknown-unicast/unknown-multicastのいずれか
フィールド¶
| フィールド | 型 | 説明 |
|---|---|---|
kbps |
uint64 (0..100000000) | レート制限 [kbps]。0 で無制限相当 (実装依存) |
制約¶
ifnameはPORT_LIST.nameへの leafref のため、PORT に存在しないインタフェースは指定不可- 3 種類の storm_type を別々のエントリで設定する
- range 上限 100 Gbps 相当 (実装側でハードウェア上限による更なる制約あり)
購読者¶
orchagent(PortsOrchの storm-control パス)。内部で SAI policer を作成し、ATTR_BROADCAST_STORM_CONTROL_POLICER_ID/UNKNOWN_UNICAST_STORM_CONTROL_POLICER_ID/UNKNOWN_MULTICAST_STORM_CONTROL_POLICER_IDを更新
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
PORT,POLICER - 関連 CLI:
config interface storm-control <type> <ifname> <kbps> - 関連 YANG:
sonic-storm-control
値依存挙動マトリクス¶
PORT_STORM_CONTROL キー: storm_type¶
| 値 | SAI 属性 | 挙動 |
|---|---|---|
broadcast |
SAI_PORT_ATTR_BROADCAST_STORM_CONTROL_POLICER_ID | broadcast トラフィックをレート制限 |
unknown-unicast |
SAI_PORT_ATTR_FLOOD_STORM_CONTROL_POLICER_ID | unknown unicast をレート制限 |
unknown-multicast |
SAI_PORT_ATTR_MULTICAST_STORM_CONTROL_POLICER_ID | unknown multicast をレート制限 |
| その他 | - | Unknown storm_type %s SWSS_LOG_ERROR |
PORT_STORM_CONTROL.kbps¶
| 値 | 挙動 |
|---|---|
| 0 | 実装依存 (SAI が 0 を無制限として扱うかはプラットフォーム依存) |
| 1..100000000 | SAI policer CIR として設定 (BYTES / STORM_CONTROL モード固定) |
| 範囲外 | YANG range 違反 reject |
PORT_STORM_CONTROL キー: ifname¶
| 値 | 挙動 |
|---|---|
| 物理ポート (PORT.name) | 正常: storm control policer を attach |
| LAG / VLAN など非物理 IF | Unsupported / Invalid interface %s SWSS_LOG_ERROR |
| 存在しないポート | Failed to apply storm-control %s to port %s. Port not found SWSS_LOG_ERROR |
enum なし — storm_type はキーの一部として broadcast/unknown-unicast/unknown-multicast を pattern 制約。kbps は uint64。
例外条件・特殊挙動¶
consumer (policerorch) 例外動作¶
- 不正/非サポートインターフェース:
Unsupported / Invalid interface %s→ SWSS_LOG_ERROR。 - ポート未発見:
Failed to apply storm-control %s to port %s. Port not found→ SWSS_LOG_ERROR。 - 不明な storm_type:
Unknown storm_type %s→ SWSS_LOG_ERROR。 - 不明な storm control attribute:
Unknown storm control attribute %s specified→ SWSS_LOG_ERROR。 - SAI policer create 失敗:
Failed to create storm control policer %s→ SWSS_LOG_ERROR。 - SAI attribute update 失敗:
Failed to update policer %s attribute, rv:%d→ SWSS_LOG_ERROR。 - SAI remove storm-control 失敗:
Failed to remove storm-control %s from port %s, rv:%d→ SWSS_LOG_ERROR。 - 未設定 storm policer の参照:
Policer %s not configured→ SWSS_LOG_ERROR。
関連リファレンス¶
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
PORT_STORM_CONTROL|<Ethernet>|<traffic-type>(broadcast/unknown-unicast/unknown-multicast)`。 kbps: 帯域上限。サーバ向けは 1000〜10000kbps、uplink は無効化することが多い。
よくある誤設定¶
- uplink にも storm-control を当てて BUM トラフィックを誤遮断する。