コンテンツにスキップ

PREFIX_LIST テーブル (BGP)

概要

BGP のルートフィルタ用 prefix リストを CONFIG_DB に持たせるための簡易テーブル1bgpcfgd テンプレートで FRRip prefix-list / ipv6 prefix-list に展開される。共通ルーティングポリシ用の汎用 PREFIX_SET / PREFIX_LIST (sonic-routing-policy-sets) とは別物(こちらは BGP 限定の簡易 entry)。

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

flowchart LR
  CDB[("CONFIG_DB<br/>PREFIX_LIST")]
  DM["bgpcfgd"]
  CDB --> DM

凡例

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

key 構造

PREFIX_LIST|<prefix_type>|<ip-prefix>
  • <prefix_type>: 任意文字列(リスト名相当)
  • <ip-prefix>: IPv4 または IPv6 プレフィクス(stypes:sonic-ip4-prefix / sonic-ip6-prefix の union)

フィールド

フィールド 説明
prefix_type string prefix list 名(key 部)
ip-prefix union(sonic-ip4-prefix | sonic-ip6-prefix) CIDR 表記の IPv4/IPv6 プレフィクス(key 部)
family enum IPv4 / IPv6 後方互換用 family。ip-prefix の表記と整合する must 制約

制約

  • YANG must: familyIPv6 のとき ip-prefix: を含むこと、IPv4 のとき . を含むこと
  • 簡易テーブルのため、シーケンス番号や action (permit/deny) は持たない。順序付き / アクション付きが必要なら PREFIX_SET + PREFIX (sonic-routing-policy-sets) を使う

購読者

  • bgpcfgd (docker-fpm-frr): テンプレート展開で FRR vtysh ip prefix-list <prefix_type> seq N permit <prefix> を生成

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: PREFIX_SET / PREFIX_LIST (sonic-routing-policy-sets), BGP_NEIGHBOR_AF, BGP_PEER_GROUP_AF, ROUTE_MAP
  • 関連 YANG: sonic-bgp-prefix-listsonic-routing-policy-sets
  • 関連 CLI: なし(config_db.json 投入)

関連リファレンス

  • YANG: sonic-bgp-prefix-list

引用元

運用ヒント

典型値

  • key 形式: PREFIX_LIST|<name>|<seq>
  • action: permit / denyprefix: CIDR、ge/le: 長さレンジ。

よくある誤設定

  • 末尾の暗黙 deny を忘れて意図しない prefix まで通してしまう。明示的に deny any を入れるのが安全。

確認コマンド

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

値依存挙動マトリクス

prefix_type 値別挙動

挙動
ANCHOR_PREFIX SpineRouter/UpstreamLC または UpperSpineRouter のみ許可。他デバイスは log_warn してスキップ。FRR の anchor prefix list に展開。
SUPPRESS_PREFIX 全デバイスタイプで許可。FRR の suppress prefix list に展開。
その他 log_warn("PrefixListMgr:: Prefix type '...' is not supported") → スキップ。FRR への設定生成は行われない。

family 値別挙動

挙動
IPv4 YANG must: ip-prefix. を含むこと。FRR の ip prefix-list に展開。
IPv6 YANG must: ip-prefix: を含むこと。FRR の ipv6 prefix-list に展開。

例外条件・特殊挙動

  • prefix_type が未サポート: ANCHOR_PREFIX / SUPPRESS_PREFIX 以外の type キーは log_warn を出してスキップされ、FRR への設定生成は行われない。2
  • DEVICE_METADATA 未準備: DEVICE_METADATA|localhost が未存在の場合はリトライ待ちになる。type / bgp_asn キーが欠けている場合も KeyError をキャッチしてスキップ。2
  • デバイスタイプ制限 (ANCHOR_PREFIX): ANCHOR_PREFIXSpineRouter/UpstreamLC または UpperSpineRouter デバイスのみ許可される。他デバイスでは log_warn してスキップ。SUPPRESS_PREFIX は全デバイスで有効。2
  • プレフィクス形式不正: netaddr.IPNetwork() がパース失敗した場合 (NotRegisteredError / AddrFormatError / AddrConversionError) は log_warn してエントリをスキップする(処理自体は return True で継続)。2
  • constants オーバーライド: bgp.prefix_list.<type>.ipv4_name / ipv6_name が constants に定義されていれば、デフォルトの prefix list 名を上書きする。

  1. YANG 定義: sonic-bgp-prefix-list.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-bgp-prefix-list.yang 

  2. bgpcfgd PrefixListMgr 実装: sonic-buildimage/src/sonic-bgpcfgd/bgpcfgd/managers_prefix_list.py