コンテンツにスキップ

BGP_GLOBALS_AF_AGGREGATE_ADDR テーブル

概要

VRF × アドレスファミリ単位の BGP aggregate-address 設定 を保持する CONFIG_DB テーブル1frr-mgmt-framework (DEVICE_METADATA の frr_mgmt_framework_config = true 経路) が CONFIG_DB から読み、FRR bgpdrouter 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 構造

BGP_GLOBALS_AF_AGGREGATE_ADDR|<vrf_name>|<afi_safi>|<ip_prefix>
  • <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_nameBGP_GLOBALS_LIST.vrf_name への leafref のため、対応する VRF の BGP インスタンスが先に存在している必要がある。
  • summary_only = true を指定すると aggregate に含まれる more-specific ルートは BGP UPDATE から抑制される(FRRaggregate-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 テーブルを使い、両者を混在させると干渉する可能性がある

関連リファレンス

引用元

関連ページ

運用ヒント

典型値

  • 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