コンテンツにスキップ

MGMT_VRF_CONFIG テーブル

概要

管理 VRF(OOB 管理トラフィックをデータプレーンから分離する)のグローバル ON/OFF を保持するシングルトンテーブル1hostcfgd が監視し、有効化されると 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 構造

MGMT_VRF_CONFIG|vrf_global

container 構造のため key は固定文字列 vrf_global

フィールド

フィールド 既定値 説明
mgmtVrfEnabled boolean false 管理 VRF を有効化するか

制約

  • フィールドは 1 つのみ。シンプルなトグル
  • 他テーブルから must で参照される。たとえば NTP/global/vrfmgmt のとき本フィールドが true でないとバリデーション失敗

購読者

  • hostcfgd (host-services): カーネル mgmt VRF の作成・削除、eth0 の所属切替、関連サービス (snmp, ssh, ntp 等) の VRF 適用

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: NTPMGMT_INTERFACEMGMT_PORTSNMP_AGENT_ADDRESS_CONFIG
  • 関連 YANG: sonic-mgmt_vrf
  • 関連 CLI: config vrf add mgmt / config vrf del mgmt(CLI ヘルパが本フィールドを書き換える)

関連リファレンス

引用元

運用ヒント

典型値

  • key 形式: MGMT_VRF_CONFIG|vrf_global
  • mgmtVrfEnabled: true で eth0 を mgmt VRF に分離。

よくある誤設定

  • mgmt VRF を有効化したのに NTP/SNMP/SYSLOG 側で vrf 指定を忘れて疎通しない。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'MGMT_VRF_CONFIG|vrf_global'
show mgmt-vrf

例外条件・特殊挙動

  • mgmtVrfEnabled=false または in_band_mgmt_enabled=false → SET が DEL として処理: vrfmgr.cpp L257 — 両条件のいずれかが 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 falsetrue 変更 vrfmgr が VRF netdev 作成 + hostcfgd が stop chronyrestart interfaces-configstart chrony を実行
mgmtVrfEnabled truefalse 変更 vrfmgr.cpp が SET を DEL_COMMAND に変換して VRF netdev 削除 + サービス再起動

enum なし (boolean)。NTP.vrf=mgmt は本フィールドが true の場合のみ YANG バリデーション通過。