BGP_PEER_RANGE テーブル¶
概要¶
BGP_PEER_RANGE テーブルは BGP の dynamic neighbor 用 listen-range / peer-range を CONFIG_DB に定義する1。bgpcfgd テンプレが bgpd の bgp listen range <prefix> peer-group <name> 相当を生成するための入力。
定義は 2 list:
BGP_PEER_RANGE_LIST(vrf_name, peer_range_name): VRF または VNET 別の peer rangeBGP_PEER_RANGE_TEMPLATE_LIST(peer_range_name): テンプレベース
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>BGP_PEER_RANGE")]
DM["bgpcfgd"]
CDB --> DM
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
BGP_PEER_RANGE|<vrf_name>|<peer_range_name> # generic
BGP_PEER_RANGE_TEMPLATE|<peer_range_name> # template
| キー | 型 | 説明 |
|---|---|---|
vrf_name |
union (leafref to VRF.name または VNET.name) |
所属 VRF または VNET |
peer_range_name |
string | peer range の一意名 |
フィールド¶
| フィールド | 型 | 説明 |
|---|---|---|
name |
string | 表示名。must で peer_range_name と一致を強制 |
src_address |
inet:ip-address | コネクションのソース IP |
peer_asn |
uint32 (1..4294967295) | 隣接 AS 番号 |
ip_range |
leaf-list sonic-ip-prefix (ordered-by user) |
listen-range のプレフィックス集合 |
制約¶
vrf_nameはVRFかVNETのいずれかへの leafref(union)nameはpeer_range_nameと完全一致必須peer_asnは AS4 範囲
購読者¶
bgpcfgd(docker-fpm-frr)
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
BGP_GLOBALS、VRF、VNET、BGP_PEER_GROUP - 関連 YANG:
sonic-bgp-peerrange、sonic-vrf、sonic-vnet - 関連 CLI:
config bgp
関連リファレンス¶
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
BGP_PEER_RANGE|<vrf>|<range-name>。 ip_range: CIDR、peer_asn: 対向 AS、name: 識別子。dynamic neighbor 用途。
よくある誤設定¶
listen limitを超えると新規 dynamic neighbor が拒否される。
確認コマンド¶
値依存挙動マトリクス¶
このテーブルには enum フィールドはない。
vrf_name (key、VRF/VNET 分岐)¶
| 型 | 動作 |
|---|---|
VRF.name への leafref |
VRF コンテキストで bgp listen range <prefix> peer-group <name> を生成 |
VNET.name への leafref |
VNET 対応 VRF で同様のコマンドを生成 |
ip_range (leaf-list)¶
- 複数プレフィックスを user-ordered で指定可能
dynamic/update.conf.j2が各プレフィックスに対してbgp listen range <prefix> peer-group <name>を展開- 削除時は既存 range との差分を計算して
no bgp listen rangeを発行
例外条件・特殊挙動¶
| 条件 | 挙動 | ソース |
|---|---|---|
deployment_id が DEVICE_METADATA に未設定で peer_asn も未設定 |
Jinja2 で UndefinedError / KeyError → log_err + return True (drop) |
dynamic/instance.conf.j2, managers_bgp.py |
ip_range が空または未設定 |
bgp listen range <empty> が vtysh に送られ FRR エラー |
dynamic/instance.conf.j2 |
ip_range 更新時の既存 range 取得失敗 |
LOG_ERR して空リスト返却 → 全 range を新規追加として処理 |
managers_bgp.py get_existing_ip_ranges() |
src_address 未設定 |
Loopback1 の IPv4 アドレスで補完。Loopback1 が未設定の場合 Jinja2 エラー → drop | dynamic/instance.conf.j2 |
| FRR 10.1 以降: listen range 削除失敗後も peer-group 削除を続行 | range 削除の log_err 後、peer-group 削除を試みる → FRR 側エラーの可能性 |
managers_bgp.py del_handler() |