コンテンツにスキップ

BGP_MONITORS テーブル

概要

BGP_MONITORS テーブルは BGP Monitoring Protocol (BMP) ではなく、BGP モニター用の特殊隣接(route-monitor)を定義する。bgpcfgd がテンプレ展開して bgpdneighbor 設定を生成する1。各エントリは BGP 隣接共通プロパティ (sonic-bgp-cmn-neigh grouping) を流用する。

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

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

凡例

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

key 構造

BGP_MONITORS|<addr>
キー 説明
addr inet:ip-address モニター隣接の IP

フィールド

sonic-bgp-common.yangsonic-bgp-cmn-neigh grouping を uses する。代表的 leaf:

フィールド 説明
name string 隣接名。must "current() = 'BGPMonitor'"BGPMonitor に固定
asn as-number モニター AS
local_addr ip-address source address
admin_status up/down 管理状態
sonic-bgp-cmn-neigh 由来の leaf keepalive/holdtime/peer_type/auth_password 等

制約

  • nameBGPMonitor 固定(YANG must で強制)。複数モニターは addr で区別する

購読者

  • bgpcfgd (docker-fpm-frr)
  • 間接的に bgpd (FRR)

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: BGP_NEIGHBORBGP_GLOBALS
  • 関連 YANG: sonic-bgp-monitorsonic-bgp-common
  • 関連 CLI: config bgp

関連リファレンス

引用元

関連ページ

運用ヒント

典型値

  • key 形式: BGP_MONITORS|<ip>
  • asn: 監視先 AS。admin_status: upname: 識別名。

よくある誤設定

  • BGP monitor を普通の neighbor と混同して route policy を当ててしまうと、本番経路に副作用が出る。

確認コマンド

sonic-db-cli CONFIG_DB keys 'BGP_MONITORS|*'
vtysh -c 'show bgp summary'

値依存挙動マトリクス

admin_status (sonic-bgp-cmn-neigh 由来)

FRR コマンド 備考
up no neighbor <addr> shutdown managers_bgp.py:334
down neighbor <addr> shutdown managers_bgp.py:336

name (固定値制約)

動作
BGPMonitor YANG must 制約で強制。monitors テンプレ (bgpd/templates/monitors/) を使用
それ以外 YANG 検証段階で拒否

注意: admin_status のみがライブ更新可能。他フィールドの変更は bgpcfgd に到達しても drop される (例外条件参照)。

例外条件・特殊挙動

条件 挙動 ソース
Loopback0 IPv4 未設定 かつ bgp_router_id 未設定 log_warn して return False (再試行待ち) managers_bgp.py add_peer()
local_addr フィールドが欠如 Missing attribute 'local_addr' を warn ログ、処理は続行 (interface 紐付けなし) managers_bgp.py
local address に対応する interface が未登録 wait for the corresponding interface to be set → return False (再試行) managers_bgp.py get_local_interface()
既存ピアへの admin_status 以外のフィールド更新 Can't update the peer. Only 'admin_status' attribute is supported を LOG_ERR → drop managers_bgp.py update_peer()
admin_status'up'/'down' 以外 wrong attribute value を LOG_ERR → drop managers_bgp.py change_admin_status()
Jinja2 テンプレートレンダリング失敗 log_err して return True (再試行なし、drop) managers_bgp.py add_peer()
check_neig_meta=False BGP_MONITORS は DEVICE_NEIGHBOR_METADATA への依存なし (monitors peer_type で固定) managers_bgp.py main.py L89

  1. YANG 定義: sonic-bgp-monitor.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-bgp-monitor.yang; 共通 leaf grouping は sonic-bgp-common.yangsonic-bgp-cmn-neigh