BGP_GLOBALS_AF_AGGREGATE_ADDR テーブル¶
概要¶
VRF × アドレスファミリ単位の BGP aggregate-address 設定 を保持する CONFIG_DB テーブル1。frr-mgmt-framework (DEVICE_METADATA の frr_mgmt_framework_config = true 経路) が CONFIG_DB から読み、FRR bgpd の router bgp <as> → address-family <afi> <safi> → aggregate-address <prefix> 系コマンドに反映する。
BGP_GLOBALS_AF で AF レベルの設定(multipath、route distance、L2VPN advertise-all-vni 等)を行い、その AF 配下の aggregate prefix をこのテーブルで列挙する。
なお、似た名前の BGP_AGGREGATE_ADDRESS テーブル (YANG sonic-bgp-aggregate-address) は AF/VRF を持たないフラットな aggregate 定義で、別経路 (bgpcfgd テンプレ) で利用される。両者は実装パスが異なる点に注意。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>BGP_GLOBALS_AF_AGGREGATE_ADDR")]
DM["frrcfgd"]
CDB --> DM
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
<vrf_name>:BGP_GLOBALS.vrf_nameへの leafref (例:default,Vrf01)<afi_safi>: 例ipv4_unicast,ipv6_unicast,l2vpn_evpn<ip_prefix>: 集約対象プレフィックス (inet:ip-prefix)
フィールド¶
| フィールド | 型 | 説明 |
|---|---|---|
vrf_name (key) |
leafref → BGP_GLOBALS.vrf_name |
所属 VRF |
afi_safi (key) |
string | アドレスファミリ |
ip_prefix (key) |
inet:ip-prefix | 集約プレフィックス |
as_set |
boolean | AS_SET path 情報を生成 (RFC 4271) |
summary_only |
boolean | より詳細 (more-specific) ルートを抑止し summary のみ広告 |
policy |
leafref → ROUTE_MAP_SET.name |
aggregate に適用する route-map |
制約¶
- 3 つのキー (
vrf_name/afi_safi/ip_prefix) で一意。 vrf_nameはBGP_GLOBALS_LIST.vrf_nameへの leafref のため、対応する VRF の BGP インスタンスが先に存在している必要がある。summary_only = trueを指定すると aggregate に含まれる more-specific ルートは BGP UPDATE から抑制される(FRR のaggregate-address ... summary-only相当)。
購読者¶
frr-mgmt-framework: 本テーブルを vtysh のaggregate-addressコマンドに変換しbgpdに投入bgpd(FRR): RIB から該当プレフィックス配下のルートを集約し、設定に応じて抑制・AS_SET 生成・route-map 適用を行う
bgpcfgd (テンプレベース) ではこのテーブルではなく BGP_AGGREGATE_ADDRESS を使う。設定経路を明確にするため、両方を併用するのは避ける。
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
BGP_GLOBALS,BGP_GLOBALS_AF,BGP_GLOBALS_AF_NETWORK,BGP_AGGREGATE_ADDRESS,ROUTE_MAP_SET - 関連 CLI:
config bgp(sonic-utilities 経由)、vtysh のaggregate-address(直接) - 関連 YANG:
sonic-bgp-global
例外条件・特殊挙動¶
| 条件 | 挙動 |
|---|---|
| key の IP prefix 形式不正 | normalize_ip_prefix() が None → syslog ERR & continue、FRR 未反映 |
AF_TYPE フォーマット不正(_ 区切り不可) |
ValueError が上位に伝播 |
| FRR コマンド実行失敗 | syslog ERR & continue、内部キャッシュ更新なし |
BGP_GLOBALS が未設定(bgp_asn 不在) |
上位ハンドラで依存待機、または KeyError 伝播 |
DEL 操作で af_aggr_list[vrf] に存在しない prefix |
pop(None) で KeyError なし |
as_set/summary_only フィールド欠如 |
デフォルト false 扱い(data.get(attr) で None) |
| 更新操作 | FRR に aggregate-address を再投入(既存エントリの削除と新規追加の組み合わせ) |
値依存挙動マトリクス¶
enum 型フィールド¶
該当無し (key の afi_safi は string だが YANG enum ではなく任意文字列)
boolean フィールド¶
| フィールド | true の効果 |
false の効果 |
evidence |
|---|---|---|---|
summary_only |
FRR aggregate-address <prefix> summary-only を生成。contributing route が BGP UPDATE から抑制される |
キーワードなし。contributing route と aggregate を両方広告 | sonic-bgp-global.yang; frrcfgd.py:3187 |
as_set |
FRR aggregate-address <prefix> as-set を生成。集約経路に AS_SET path 属性を付与 |
キーワードなし | sonic-bgp-global.yang |
policy (leafref → ROUTE_MAP_SET.name)¶
| 値 | 効果 | evidence |
|---|---|---|
| 文字列 (route-map 名) | aggregate-address <prefix> route-map <name> を生成。aggregate に route-map を適用して属性を加工 |
frrcfgd.py:3187 |
| 空/未設定 | route-map 指定なし | — |
複合条件¶
summary_only=trueかつ contributing route が RIB に 0 本 → FRR で aggregate 生成されない (BGP 仕様)- frr-mgmt-framework 経路 (
DEVICE_METADATA.frr_mgmt_framework_config=true) でのみ有効。bgpcfgd テンプレ経路ではBGP_AGGREGATE_ADDRESSテーブルを使い、両者を混在させると干渉する可能性がある
関連リファレンス¶
- YANG:
sonic-bgp-global - CLI:
config bgp
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
BGP_GLOBALS_AF_AGGREGATE_ADDR|<vrf>|<afi_safi>|<prefix>(例BGP_GLOBALS_AF_AGGREGATE_ADDR|default|ipv4_unicast|10.0.0.0/8)。 summary_only=trueで more-specific を抑制、as_set=trueで AS_SET 生成。
よくある誤設定¶
- 同一 AF に対して
BGP_AGGREGATE_ADDRESS(フラット) と本テーブル (frr-mgmt-framework 経路) を併用し、設定経路が衝突。 - 集約に含まれる more-specific ルートが RIB に無く、aggregate が広告されない (BGP では 1 本以上の構成ルートが必要)。
確認コマンド¶
sonic-db-cli CONFIG_DB keys 'BGP_GLOBALS_AF_AGGREGATE_ADDR|*'
vtysh -c "show ip bgp summary"
vtysh -c "show running-config bgpd" | grep aggregate-address
-
YANG 定義:
sonic-bgp-global.yang(BGP_GLOBALS_AF_AGGREGATE_ADDRcontainer). https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-bgp-global.yang ↩