コンテンツにスキップ

NVGRE_TUNNEL / NVGRE_TUNNEL_MAP テーブル

概要

NVGRE (Network Virtualization using GRE, RFC 7637) のトンネル端点と VLAN ↔ VSID マップを CONFIG_DB に保持する1vxlanorch 系(NVGRE は VXLAN orch と一部実装を共有)が SAI 経由でカプセル化/デカプセル化を構成する。

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

flowchart LR
  CDB[("CONFIG_DB<br/>NVGRE_TUNNEL")]
  DM["NvgreTunnelOrch"]
  CDB --> DM
  SAI["SAI<br/>sai_tunnel_api"]
  DM --> SAI

凡例

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

key 構造

NVGRE_TUNNEL|<tunnel_name>
NVGRE_TUNNEL_MAP|<tunnel_name>|<tunnel_map_name>

NVGRE_TUNNEL フィールド

フィールド 必須 説明
tunnel_name (key) string (1..255) NVGRE トンネル名
src_ip inet:ip-address yes ソース VTEP IP

NVGRE_TUNNEL_MAP フィールド

フィールド 必須 説明
tunnel_name (key) leafref → NVGRE_TUNNEL.tunnel_name 親トンネル
tunnel_map_name (key) string (1..255) マップエントリ名
vlan_id uint16 (1..4094) yes VLAN ID
vsid uint32 (0..16777214) yes NVGRE Virtual Subnet ID (24bit)

制約

  • vsid は 24bit (0..16777214)、vlan_id は 1..4094

購読者

  • orchagent (vxlanorch / NVGRE 拡張) — SAI tunnel オブジェクト生成

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: VLANVXLAN_TUNNEL(並存可能)
  • 関連 YANG: sonic-nvgre-tunnel
  • 関連 CLI: config nvgre

値依存挙動マトリクス

NVGRE_TUNNEL フィールド

フィールド 値 / 範囲 orchagent 挙動
src_ip 任意の有効 IP アドレス SAI sai_tunnel_api でトンネル端点として設定
src_ip フォーマット不正 / 未設定 YANG validate 段階で reject

NVGRE_TUNNEL_MAP フィールド

フィールド 値 / 範囲 orchagent 挙動
vlan_id 1..4094 VLAN ID として SAI トンネルマップに登録
vlan_id 範囲外 WARN ログ後スキップ: VLAN ID doesn't exist: %d
vsid 0..16777214 NVGRE VSID として SAI に反映
vsid 範囲外 WARN ログ後スキップ: VSID is invalid: %d
tunnel_name 存在する NVGRE_TUNNEL を参照 MAP エントリ作成
tunnel_name 存在しない親トンネルを参照 WARN ログ: NVGRE tunnel '%s' doesn't exist

enum なし — src_ip は inet:ip-address 型、vlan_id / vsid は数値範囲のみ。

例外条件・特殊挙動

YANG スキーマ検証

  • src_ip は mandatory (inet:ip-address)。未設定またはフォーマット不正は YANG validate で reject。
  • vlan_id は uint16 (1..4094)、vsid は uint32 (0..16777214)。範囲外は YANG 段階で拒否。
  • NVGRE_TUNNEL_MAP.tunnel_nameNVGRE_TUNNEL への leafref。親トンネルが存在しない場合は reject。

consumer (nvgreorch) 例外動作

  • 重複 SET: NVGRE tunnel '%s' already exists → WARN ログ、処理スキップ。
  • 存在しない親トンネルへの MAP 追加: NVGRE tunnel '%s' doesn't exist → WARN。
  • vlan_id 未登録: VLAN ID doesn't exist: %d → WARN。
  • vsid 範囲外: VSID is invalid: %d → WARN。
  • SAI オブジェクト生成失敗: std::runtime_error throw → orchagent クラッシュ扱い。
  • DEL で存在しない tunnel/map: WARN ログ、処理スキップ。

関連リファレンス

引用元

関連ページ

運用ヒント

典型値

  • key 形式: NVGRE_TUNNEL|<name> / NVGRE_TUNNEL_MAP|<tunnel>|<map_entry>
  • src_ip: ローカル VTEP の loopback アドレス。
  • vsid: 24bit (0..16777214)、vlan_id: 1..4094。

よくある誤設定

  • src_ip がローカル IP として実在しない (Loopback 未設定) ためトンネルが up しない。
  • VXLAN_TUNNELNVGRE_TUNNEL を同一スイッチで併用し、orch が想定外動作。

確認コマンド

sonic-db-cli CONFIG_DB keys 'NVGRE_TUNNEL*'
sonic-db-cli ASIC_DB keys 'ASIC_STATE:SAI_OBJECT_TYPE_TUNNEL:*'