PREFIX_LIST テーブル (BGP)¶
概要¶
BGP のルートフィルタ用 prefix リストを CONFIG_DB に持たせるための簡易テーブル1。bgpcfgd テンプレートで FRR の ip 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_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:familyがIPv6のときip-prefixに:を含むこと、IPv4のとき.を含むこと - 簡易テーブルのため、シーケンス番号や action (permit/deny) は持たない。順序付き / アクション付きが必要なら
PREFIX_SET+PREFIX(sonic-routing-policy-sets) を使う
購読者¶
bgpcfgd(docker-fpm-frr): テンプレート展開で FRR vtyship 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-list、sonic-routing-policy-sets - 関連 CLI: なし(
config_db.json投入)
関連リファレンス¶
- YANG:
sonic-bgp-prefix-list
引用元¶
運用ヒント¶
典型値¶
- key 形式:
PREFIX_LIST|<name>|<seq>。 action:permit/deny、prefix: CIDR、ge/le: 長さレンジ。
よくある誤設定¶
- 末尾の暗黙 deny を忘れて意図しない prefix まで通してしまう。明示的に
deny anyを入れるのが安全。
確認コマンド¶
値依存挙動マトリクス¶
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_PREFIXはSpineRouter/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 名を上書きする。