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 構造¶
フィールド¶
| フィールド | 型 | 説明 |
|---|---|---|
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(enumpermit/deny)PREFIX_NOSEQ_LIST(key:name ip_prefix masklength_range): シーケンス番号なし
grouping prefix-common-fields で name が ../../../PREFIX_SET/PREFIX_SET_LIST/name への leafref になる。
制約¶
PREFIX_LISTのsequence_numberはmust "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_LIST、COMMUNITY_SET、AS_PATH_SET、ROUTE_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/IPv6、prefix: CIDR 列。route-map からmatch ip address prefix-listで参照。
よくある誤設定¶
- IPv6 entry を IPv4 set に混在させて FRR が syntax エラーで読み込めない。
確認コマンド¶
値依存挙動マトリクス¶
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 違反で保存拒否:
PREFIXlist の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 フィルタとして機能しない。
-
YANG 定義:
sonic-routing-policy-sets.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-routing-policy-sets.yang ↩ -
YANG 定義:
sonic-routing-policy-sets.yang. https://github.com/sonic-net/sonic-buildimage/blob/master/src/sonic-yang-models/yang-models/sonic-routing-policy-sets.yang ↩↩↩