コンテンツにスキップ

BGP_DEVICE_GLOBAL テーブル

概要

スイッチ全体(VRF 横断)の BGP 動作スイッチを保持する。BGP_GLOBALSVRF 単位なのに対し、BGP_DEVICE_GLOBAL は装置全体スコープ。TSA (Traffic-Shift-Away)、W-ECMP (BGP link-bandwidth ベース重み付き ECMP)、IDF (Inter-DC Fabric) 隔離状態、confederation の代表設定を持つ1

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

flowchart LR
  CDB[("CONFIG_DB<br/>BGP_DEVICE_GLOBAL")]
  DM["BgpGlobalStateOrch"]
  CDB --> DM
  SAI["SAI<br/>sai_switch_api"]
  DM --> SAI

凡例

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

key 構造

BGP_DEVICE_GLOBAL|STATE
BGP_DEVICE_GLOBAL|CONFED

二つの固定キーを持つ container 型。

STATE のフィールド

フィールド デフォルト 説明
tsa_enabled boolean false true で外部隣接へ経路広告を停止 (TSA)
wcmp_enabled boolean false BGP link-bandwidth W-ECMP 有効化
idf_isolation_state enum isolated_no_export / isolated_withdraw_all / unisolated unisolated IDF 隔離状態

CONFED のフィールド

フィールド 説明
asn uint32 (1..2^32-1) confederation AS 番号
peers string confederation 内の sub-AS をセミコロン区切りで列挙

購読者

  • bgpcfgd: STATE / CONFED を読み出し vtysh コマンドに変換
  • frr-mgmt-framework (frr_mgmt_framework_config = true 時)
  • TSA / W-ECMP は bgpcfgdTsaHandler / WcmpHandler が直接担当

関連 CONFIG_DB / YANG / CLI

例外条件・特殊挙動

条件 挙動
data が None log_err 後 return False
tsa_enabled"true"/"false" 以外 log_err 後 FRR push しない(return False)
wcmp_enabled"true"/"false" 以外 log_err 後 FRR push しない(return False)
chassis_tsa が "true" 個別デバイスの TSA 操作をスキップ(シャーシ全体 TSA が優先)
キャッシュと同一値 is_update_required() が False → FRR push スキップ
Jinja2 テンプレートレンダリング失敗 log_err 後 return False、FRR 未反映
DEVICE_METADATA.localhost.type 未設定 switch_role が空文字列のまま処理継続(テンプレート条件分岐依存)
idf_isolation_state の不正値 idf handler 側での検証に委ねる(DeviceGlobalCfgMgr では未検証)

値依存挙動マトリクス

idf_isolation_state (enum) — BGP_DEVICE_GLOBAL|STATE

FRR ルートマップ効果 evidence
unisolated (既定) idf_unisolate.conf.j2 を適用。CHECK_IDF_ISOLATION ルートマップは標準状態 managers_device_global.py:IDF_DEFAULTS; idf_unisolate.conf.j2
isolated_no_export idf_isolate.conf.j2 適用。route-map CHECK_IDF_ISOLATION permit 10set community no-export additive を追加 idf_isolate.conf.j2:17
isolated_withdraw_all idf_isolate.conf.j2 適用。route-map CHECK_IDF_ISOLATION deny 4 を追加し残 prefix をすべてドロップ idf_isolate.conf.j2:11

tsa_enabled (boolean) — BGP_DEVICE_GLOBAL|STATE

FRR ルートマップ効果 evidence
false (既定) bgpd.tsa.unisolate.conf.j2 を適用。TSB 状態 (通常広告) managers_device_global.py:TSA_DEFAULTS
true bgpd.tsa.isolate.conf.j2 を適用。外部 BGP 隣接への route-map に deny 40 を挿入し経路広告を停止 managers_device_global.py:isolate_unisolate_device

wcmp_enabled (boolean) — BGP_DEVICE_GLOBAL|STATE

FRR ルートマップ効果 evidence
false (既定) TO_BGP_PEER_V4/V6 permit 100 に no set extcommunity bandwidth bgpd.wcmp.conf.j2:6
true TO_BGP_PEER_V4/V6 permit 100 に set extcommunity bandwidth num-multipaths bgpd.wcmp.conf.j2:5

複合条件

  • tsa_enabled=true かつ chassis_tsa が "true" (chassis-level TSA) → 個別デバイスの TSA 操作をスキップ (chassis TSA 優先) (managers_device_global.py:105-106)
  • idf_isolation_state=isolated_no_exportisolated_withdraw_all の違い: no_export は AS 外への再広告のみ抑制、withdraw_all は deny 4 で隣接への送信そのものを遮断

関連リファレンス

引用元

運用ヒント

典型値

  • key: BGP_DEVICE_GLOBAL|STATE / BGP_DEVICE_GLOBAL|CONFED
  • STATE: tsa_enabled=false / wcmp_enabled=false / idf_isolation_state=unisolated が通常運用。
  • TSA メンテ時のみ tsa_enabled=true

よくある誤設定

  • TSA を有効にしたまま戻し忘れて外部広告が長時間停止する。
  • wcmp_enabled=true を W-ECMP 非対応のプラットフォームで設定し、効果が出ず混乱する。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'BGP_DEVICE_GLOBAL|STATE'
TSA -s   # TSA 状態確認
vtysh -c "show running-config bgpd" | grep -i ecmp