コンテンツにスキップ

POLICER テーブル

YANG 未定義

POLICER 単独の YANG モジュールは sonic-yang-models に存在しない。COPP_GROUP (sonic-copp.yang)、ACL_RULE (sonic-acl.yang)、PORT_STORM_CONTROL (sonic-storm-control.yang)、SCHEDULER (sonic-scheduler.yang)、MIRROR_SESSION (sonic-mirror-session.yang) 等から「policer 名」あるいは個別フィールドが参照される形でのみ規定される。本ページは policerorch.cpp の実装を一次情報とする。

概要

SAI policer (sai_policer) を CONFIG_DB から作成・更新するためのテーブル。policerorch (orchagent) が CONFIG_DBPOLICER を読み出し、CIR/PIR の更新は SET、その他属性は create-only として扱う1。実利用は ACL ルール、COPP、ストーム制御、ミラーセッション、ポートスケジューラ等の指し先として参照される。

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

flowchart LR
  CDB[("CONFIG_DB<br/>POLICER")]
  DM["PolicerOrch"]
  CDB --> DM
  SAI["SAI<br/>sai_policer_api"]
  DM --> SAI

凡例

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

key 構造

POLICER|<name>
  • <name>: 任意の文字列(COPP / ACL の policer 名と一致させる)

フィールド

policerorch.cpp の field 定数および参照される SAI 属性は以下:

フィールド SAI 属性 / 説明
METER_TYPE PACKETS / BYTES SAI_POLICER_ATTR_METER_TYPE。create に必須
MODE SR_TCM / TR_TCM / STORM_CONTROL SAI_POLICER_ATTR_MODE。create に必須
COLOR_SOURCE AWARE / BLIND SAI_POLICER_ATTR_COLOR_SOURCE
CIR uint64 (bytes/sec or packets/sec) SAI_POLICER_ATTR_CIR。SET 可
CBS uint64 SAI_POLICER_ATTR_CBS。SET 可
PIR uint64 SAI_POLICER_ATTR_PIR。SET 可
PBS uint64 SAI_POLICER_ATTR_PBS。SET 可
GREEN_PACKET_ACTION FORWARD/DROP/... SAI_POLICER_ATTR_GREEN_PACKET_ACTION。create-only
YELLOW_PACKET_ACTION 同上 SAI_POLICER_ATTR_YELLOW_PACKET_ACTION。create-only
RED_PACKET_ACTION 同上 SAI_POLICER_ATTR_RED_PACKET_ACTION。create-only

制約

  • METER_TYPEMODE の両方が無いエントリは create でエラー (policerorch.cppif (!meter_type || !mode) 判定)
  • *_PACKET_ACTIONMETER_TYPEMODECOLOR_SOURCEcreate-only。生成済み policer に対する SET は反映されない(再作成が必要)
  • CIR 単独でも create 可能(storm-control が暗黙の STORM_CONTROL モード, BYTES として作成する経路を持つ)

購読者

  • policerorch (orchagent): SAI policer オブジェクトを作成・更新

利用先(参照テーブル例)

  • ACL_RULE: POLICER を action として指定
  • COPP_GROUP: control plane 制限に利用
  • PORT_STORM_CONTROL: ストーム制御
  • MIRROR_SESSION: span/erspan の policer

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: ACL_RULECOPP_GROUPPORT_STORM_CONTROLMIRROR_SESSION
  • 関連 YANG: 直接の YANG モジュールは無し(参照側 YANG が個別フィールドを持つ)
  • 関連 CLI: なし(config_db.json で投入)

値依存挙動マトリクス

POLICER.METER_TYPE

SAI 属性 挙動
PACKETS SAI_METER_TYPE_PACKETS パケット数でレート計算
BYTES SAI_METER_TYPE_BYTES バイト数でレート計算
未設定 / 不正 - if (!meter_type) 判定で create 失敗

POLICER.MODE

SAI 属性 挙動
SR_TCM SAI_POLICER_MODE_SR_TCM Single Rate Three Color Marker (CIR/CBS/PBS)
TR_TCM SAI_POLICER_MODE_TR_TCM Two Rate Three Color Marker (CIR/CBS/PIR/PBS)
STORM_CONTROL SAI_POLICER_MODE_STORM_CONTROL ストーム制御モード (CIR/CBS のみ有効)
未設定 / 不正 - if (!mode) 判定で create 失敗
(storm-control 経由) STORM_CONTROL 固定 METER_TYPE も BYTES に自動設定、RED_PACKET_ACTION を DROP に固定

POLICER.COLOR_SOURCE

SAI 属性 挙動
AWARE SAI_POLICER_COLOR_SOURCE_AWARE 入力パケットの color を引き継いでポリシング
BLIND SAI_POLICER_COLOR_SOURCE_BLIND 入力 color を無視して green 扱いで処理

POLICER.*_PACKET_ACTION

SAI 属性 挙動
FORWARD SAI_PACKET_ACTION_FORWARD そのトラフィックカラーのパケットを通過
DROP SAI_PACKET_ACTION_DROP そのトラフィックカラーのパケットを破棄
(不明な値) - Unknown policer attribute %s SWSS_LOG_ERROR

_PACKET_ACTION / METER_TYPE / MODE / COLOR_SOURCE は create-only。作成後の変更は反映されない(再作成が必要)。CIR / CBS / PIR / PBS は SET による更新可能。

例外条件・特殊挙動

consumer (policerorch) 例外動作

  • 重複 SET: 既存 policer は update パスへ分岐 (policerExists() チェック)。
  • DEL で存在しない policer: Policer %s does not exist → SWSS_LOG_WARN + return false
  • 不明な attribute: Unknown policer attribute %s specified → SWSS_LOG_ERROR。
  • SAI policer create 失敗: Failed to create policer %s, rv:%d → SWSS_LOG_ERROR。
  • SAI attribute update 失敗: Failed to update policer %s attribute, rv:%d → SWSS_LOG_ERROR。
  • DEL 時 SAI remove 失敗: Failed to remove policer %s, rv:%d → SWSS_LOG_ERROR。
  • 不正インターフェース (storm-control 経由): Unsupported / Invalid interface %s → SWSS_LOG_ERROR。
  • ポート未発見 (storm-control 経由): Failed to apply storm-control %s to port %s. Port not found → SWSS_LOG_ERROR。
  • 不明な storm_type: Unknown storm_type %s → SWSS_LOG_ERROR。

関連リファレンス

  • (関連リンクなし)

引用元

関連 Topics

運用ヒント

典型値

  • key 形式: POLICER|<name>
  • meter_type: packets / bytes
  • mode: sr_tcm / tr_tcm / storm
  • cir / cbs / pir / pbs

よくある誤設定

  • mode: stormpir を指定すると SAI がエラーを返す版がある。

確認コマンド

sonic-db-cli CONFIG_DB keys 'POLICER|*'
show policer