コンテンツにスキップ

PREFIX_SET テーブル

概要

sonic-routing-policy-sets モジュールが定義する 汎用 prefix set の宣言テーブル1。実際のメンバ prefix は PREFIX (PREFIX_LIST / PREFIX_NOSEQ_LIST) 側に格納し、PREFIX_SET_LIST.name を leafref で参照する。frr-mgmt-framework 経路のルーティングポリシで route-map match ip address prefix-list に展開される。

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

flowchart LR
  CDB[("CONFIG_DB<br/>PREFIX_SET")]
  DM["frrcfgd"]
  CDB --> DM

凡例

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

key 構造

PREFIX_SET|<name>

フィールド

フィールド 説明
name string prefix set 名(key)
mode enum IPv4 / IPv6 アドレスファミリ。デフォルト IPv4

メンバ prefix(派生テーブル)

メンバは同モジュール内 PREFIX コンテナに格納される:

  • PREFIX_LIST (key: name sequence_number ip_prefix masklength_range): シーケンス番号付き
  • sequence_number (uint32 1..4294967295)
  • ip_prefix (inet:ip-prefix)
  • masklength_range (string、exact または lo..hi)
  • action (enum permit/deny)
  • PREFIX_NOSEQ_LIST (key: name ip_prefix masklength_range): シーケンス番号なし

grouping prefix-common-fieldsname../../../PREFIX_SET/PREFIX_SET_LIST/name への leafref になる。

制約

  • PREFIX_LISTsequence_numbermust "count(... = 1) <= 1" で同一 set 内ユニーク
  • mode と実プレフィクスの family の整合チェックは TODO コメントで未実装

購読者

  • frr-mgmt-framework: ルーティングポリシ管理(DEVICE_METADATA.frr_mgmt_framework_config = true 環境)
  • 一部 sonic-mgmt-common transformer がここから FRR vtysh コマンドへ変換

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: PREFIX_LIST / PREFIX_NOSEQ_LISTCOMMUNITY_SETAS_PATH_SETROUTE_MAP
  • 関連 YANG: sonic-routing-policy-sets
  • 関連 CLI: なし(config_db.json 投入。FRR 側の ip prefix-list 等に最終的に変換される)

関連リファレンス

  • YANG: sonic-routing-policy-sets

引用元

運用ヒント

典型値

  • key 形式: PREFIX_SET|<name>
  • mode: IPv4 / IPv6prefix: CIDR 列。route-map から match ip address prefix-list で参照。

よくある誤設定

  • IPv6 entry を IPv4 set に混在させて FRR が syntax エラーで読み込めない。

確認コマンド

sonic-db-cli CONFIG_DB keys 'PREFIX_SET|*'
vtysh -c 'show ip prefix-list'

値依存挙動マトリクス

mode 値別挙動

挙動
IPv4 デフォルト。FRR の ip prefix-list に展開。IPv6 prefix を混在させると FRR が syntax エラー。
IPv6 FRR の ipv6 prefix-list に展開。IPv4 prefix との混在は FRR エラー。

action 値別挙動(PREFIX_LIST / PREFIX_NOSEQ_LIST 共通)

挙動
permit プレフィクスを許可。FRR に permit で展開。
deny プレフィクスを拒否。FRR に deny で展開。

masklength_range 値別挙動

挙動
exact プレフィクス長を完全一致で評価。FRR に ge / le 修飾子なし。
lo..hi 形式 範囲指定。FRR の ge lo le hi に変換。

例外条件・特殊挙動

  • bgpcfgd は直接購読しない: PREFIX_SET には専用の consumer manager がなく、CONFIG_DB 変更はリアルタイムに FRR へプッシュされない。FRR テンプレート展開は sonic-cfggen が起動時に CONFIG_DB を読み込む形式で行われる。2
  • YANG leafref 違反で保存拒否: PREFIX list の set_name が存在しない PREFIX_SET.name を参照している場合、sonic-yang バリデーション時に leafref エラーでロードが拒否される。ただし実行時の整合性検査はないため、実行中に PREFIX_SET エントリを削除しても参照中の PREFIX は残る。2
  • ip_prefix の型バリデーション: IPv4/IPv6 union 型の入力文字列が不正なとき YANG pattern 制約違反でロード拒否される。2
  • 未定義 prefix-set を参照する policy: FRR 側では未定義の prefix-set を参照しているルーティングポリシは inactive 状態になり、BGP フィルタとして機能しない。