MGMT_VRF_CONFIG テーブル¶
概要¶
管理 VRF(OOB 管理トラフィックをデータプレーンから分離する)のグローバル ON/OFF を保持するシングルトンテーブル1。hostcfgd が監視し、有効化されると Linux カーネル側に mgmt という名前の VRF を作成し、management port (eth0) を所属させる。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>MGMT_VRF_CONFIG")]
DM["vrfmgrd"]
CDB --> DM
凡例
CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。
key 構造¶
container 構造のため key は固定文字列 vrf_global。
フィールド¶
| フィールド | 型 | 既定値 | 説明 |
|---|---|---|---|
mgmtVrfEnabled |
boolean | false |
管理 VRF を有効化するか |
制約¶
- フィールドは 1 つのみ。シンプルなトグル
- 他テーブルから
mustで参照される。たとえばNTP/global/vrfがmgmtのとき本フィールドがtrueでないとバリデーション失敗
購読者¶
hostcfgd(host-services): カーネルmgmtVRF の作成・削除、eth0の所属切替、関連サービス (snmp, ssh, ntp 等) の VRF 適用
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
NTP、MGMT_INTERFACE、MGMT_PORT、SNMP_AGENT_ADDRESS_CONFIG - 関連 YANG:
sonic-mgmt_vrf - 関連 CLI:
config vrf add mgmt/config vrf del mgmt(CLI ヘルパが本フィールドを書き換える)
関連リファレンス¶
- YANG:
sonic-mgmt_vrf - CLI:
config vrf
引用元¶
運用ヒント¶
典型値¶
- key 形式:
MGMT_VRF_CONFIG|vrf_global。 mgmtVrfEnabled:trueで eth0 をmgmtVRF に分離。
よくある誤設定¶
- mgmt VRF を有効化したのに NTP/SNMP/SYSLOG 側で vrf 指定を忘れて疎通しない。
確認コマンド¶
例外条件・特殊挙動¶
- mgmtVrfEnabled=false または in_band_mgmt_enabled=false → SET が DEL として処理:
vrfmgr.cppL257 — 両条件のいずれかが false の場合、SET コマンドが受信されても op をDEL_COMMANDに上書きして管理 VRF を削除する。 - 既に VRF が存在する状態での SET → スキップ:
m_vrfTableMapに "mgmt" が既に存在する場合、エントリを消費してスキップ(重複 SET 無効化)。 - 存在しない VRF への DEL → スキップ:
m_vrfTableMapに "mgmt" が存在しない状態での DEL もスキップ。 - VRF netdev 作成失敗 → SWSS_LOG_ERROR:
setLink()失敗時に"Failed to create vrf netdev %s"をログ。処理は継続されるが netdev が未作成の状態になる。 - mgmtVrfEnabled のデフォルト = false: YANG
default false。エントリが存在しない場合は管理 VRF 無効として扱われる。NTP でvrf = "mgmt"を使う場合は先にtrueに設定する必要がある。
値依存挙動マトリクス¶
| フィールド | 値 | 挙動 |
|---|---|---|
mgmtVrfEnabled |
false (default) |
mgmt VRF を作成しない。eth0 はデフォルト VRF に所属 |
mgmtVrfEnabled |
true |
Linux カーネルに mgmt VRF (table ID 6000) を作成。eth0 を mgmt VRF に所属させる |
mgmtVrfEnabled |
false → true 変更 |
vrfmgr が VRF netdev 作成 + hostcfgd が stop chrony → restart interfaces-config → start chrony を実行 |
mgmtVrfEnabled |
true → false 変更 |
vrfmgr.cpp が SET を DEL_COMMAND に変換して VRF netdev 削除 + サービス再起動 |
enum なし (boolean)。NTP.vrf=mgmt は本フィールドが true の場合のみ YANG バリデーション通過。