BMP テーブル¶
概要¶
BGP Monitoring Protocol (BMP, RFC 7854) の テーブルダンプ機能のオンオフを設定するテーブル1。
BMP collector への接続自体は BGP_MONITORS で定義し、BMP テーブルは「どのテーブルダンプ (BGP neighbor / Adj-RIB-In / Adj-RIB-Out) を送るか」のフラグだけを持つ。
openbmpd(BMP collector 側)ではなく、SONiC スイッチ側の BMP exporter を制御する想定。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>BMP")]
DM["bmpcfgd"]
CDB --> DM
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
table シングルトン。
フィールド¶
| フィールド | 型 | 既定 | 説明 |
|---|---|---|---|
bgp_neighbor_table |
boolean | true |
BGP neighbor テーブルダンプを送る |
bgp_rib_in_table |
boolean | false |
Adj-RIB-In テーブルダンプを送る |
bgp_rib_out_table |
boolean | false |
Adj-RIB-Out テーブルダンプを送る |
購読者¶
関連 CONFIG_DB / YANG / CLI¶
関連リファレンス¶
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
BMP|table。 bgp_neighbor_table:true、bgp_rib_in_table:true、bgp_rib_out_table:false(負荷軽減)。
よくある誤設定¶
- rib_out まで
trueにすると BMP collector への帯域が想定以上に膨らむ。
確認コマンド¶
値依存挙動マトリクス¶
このテーブルには enum フィールドはない。全フィールドは boolean。
boolean フィールドの共通挙動 (bmpcfgd.py)¶
| フィールド | true |
false |
|---|---|---|
bgp_neighbor_table |
openbmpd が BGP_NEIGHBOR テーブルダンプを BMP_STATE_DB に書く | ダンプを送らない |
bgp_rib_in_table |
Adj-RIB-In テーブルダンプを送る | ダンプを送らない |
bgp_rib_out_table |
Adj-RIB-Out テーブルダンプを送る | ダンプを送らない |
副作用: 任意のフィールドを変更すると
bmpcfgdは常にopenbmpdを stop →BMP_STATE_DBをクリア → start する。部分的な変更でも全テーブルが再構築される。
例外条件・特殊挙動¶
| 条件 | 挙動 | ソース |
|---|---|---|
| 不明なフィールドが設定される | common_config.get('bgp_neighbor_table', 'false') 等のデフォルト補完で false 扱い。スキーマ外フィールドは silently ignored |
bmpcfgd.py L41-43 |
"True" / "TRUE" / "1" 等の値 |
is_true() は str(val).lower() == 'true' のみ受理。"true" 小文字のみ有効 |
bmpcfgd.py L28 |
| 設定変更ごとに openbmpd を再起動 | stop → BMP_STATE_DB クリア → start の順序。supervisorctl 失敗時は例外 catch なし → bmpcfgd クラッシュの可能性 |
bmpcfgd.py L46-49 |
| CONFIG_DB 接続不可 | retry_on=True で無限リトライ (CONFIG_DB 起動まで待機) |
bmpcfgd.py L78 |