BGP_MONITORS テーブル¶
概要¶
BGP_MONITORS テーブルは BGP Monitoring Protocol (BMP) ではなく、BGP モニター用の特殊隣接(route-monitor)を定義する。bgpcfgd がテンプレ展開して bgpd の neighbor 設定を生成する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 構造¶
| キー | 型 | 説明 |
|---|---|---|
addr |
inet:ip-address | モニター隣接の IP |
フィールド¶
sonic-bgp-common.yang の sonic-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 等 |
制約¶
nameはBGPMonitor固定(YANGmustで強制)。複数モニターはaddrで区別する
購読者¶
bgpcfgd(docker-fpm-frr)- 間接的に
bgpd(FRR)
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
BGP_NEIGHBOR、BGP_GLOBALS - 関連 YANG:
sonic-bgp-monitor、sonic-bgp-common - 関連 CLI:
config bgp
関連リファレンス¶
- YANG:
sonic-bgp-monitor/sonic-bgp-common - CLI:
config bgp
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
BGP_MONITORS|<ip>。 asn: 監視先 AS。admin_status:up。name: 識別名。
よくある誤設定¶
- BGP monitor を普通の neighbor と混同して route policy を当ててしまうと、本番経路に副作用が出る。
確認コマンド¶
値依存挙動マトリクス¶
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 |
-
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.yangのsonic-bgp-cmn-neigh↩