コンテンツにスキップ

VXLAN_TUNNEL_MAP テーブル

概要

VXLAN tunnel に対し、ローカル VLAN と VNI (VXLAN Network Identifier) のマッピングを与える3orchagentVxlanTunnelMapOrch がこのテーブルを購読し、SAI tunnel-map (SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI / SAI_TUNNEL_MAP_TYPE_VNI_TO_VLAN_ID) のエントリを生成する。

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

flowchart LR
  CDB[("CONFIG_DB<br/>VXLAN_TUNNEL_MAP")]
  DM["vxlanmgrd"]
  CDB --> DM
  APPDB[("APP_DB<br/>APP_VXLAN_TUNNEL_MAP_TABLE")]
  DM --> APPDB
  SYNCD["syncd"]
  APPDB --> SYNCD
  SAI["SAI<br/>sai_tunnel_api"]
  SYNCD --> SAI

凡例

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

key 構造

VXLAN_TUNNEL_MAP|<tunnel_name>|<map_name>

<tunnel_name>VXLAN_TUNNEL.name への leafref、<map_name> はユーザ任意。

フィールド一覧

フィールド 必須 説明
name (key) leafref VXLAN_TUNNEL.name 親トンネル
mapname (key) string マッピング名(任意ラベル)
vlan string Vlan<id> (パターン) 対応 VLAN
vni vnid_type (uint32 0..2^24-1) VNI

備考: vlan 本来は VLAN.name への leafref が望ましいが、libyang の back-link 問題により暫定的に文字列パターン化されている (sonic-vxlan.yang のコメント参照)。

購読者

  • orchagent VxlanTunnelMapOrch: SAI tunnel-map エントリ生成
  • EVPN フローでは VxlanMgr がここから VLAN-VNI を引き、type-2/3 経路と紐付ける

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: VXLAN_TUNNELVLANVLAN_INTERFACEVNET
  • 関連 CLI: config vxlan (map add / map del)
  • 関連 YANG: sonic-vxlan

値依存挙動マトリクス

フィールド 実挙動
vlan Vlan<id> 形式 YANG pattern で検証。SAI tunnel-map に SAI_TUNNEL_MAP_TYPE_VLAN_ID_TO_VNI / _TO_VLAN_ID エントリを生成
vlan Vlan プレフィクスなし YANG pattern 違反で reject
vlan 既にマップ済みの VLAN vxlanmgr"Vlan %s already mapped. Map Create failed" でエラーして破棄 (vxlanmgr.cpp)
vni 有効な VNI VLAN と VNI を紐付け。EVPN type-2/3 経路と紐付く
vni 既にマップ済みの VNI vxlanmgr が重複エラーで破棄
vni 0 予約済み値。使用不可(vnid_type 型は 1 以上が実質有効)

例外条件・特殊挙動

  • vlan 必須 (YANG): mandatory truepattern 'Vlan([0-9]{1,3}|...)' — パターン違反は YANG で reject される2
  • vni 必須 (YANG): mandatory true2
  • VLAN leafref 無効化 (既知制限): libyang の back-link 問題のため VLAN の leafref はコメントアウトされ、文字列パターンのみで検証される(sonic-vlan.yang との整合性チェックなし)2
  • VLAN 重複マッピング禁止: 同じ vlan が既にマップされている場合 SWSS_LOG_ERROR("Vlan %s already mapped. Map Create failed") を記録して破棄1
  • VNI 重複マッピング禁止: 同じ vni が既にマップされている場合も同様に破棄1
  • マップキー重複: キャッシュに同名マップが存在する場合 SWSS_LOG_ERROR("Map already present") で破棄1
  • 参照トンネル未 active: VXLAN_TUNNEL が active でない場合リトライ待ち1

関連リファレンス

引用元

関連ページ

運用ヒント

典型値

  • key 形式: VXLAN_TUNNEL_MAP|<tunnel>|<map-name> (例 tunnel1|map_1000_Vlan100)。
  • vni: L2 VNI (例 1000)。
  • vlan: Vlan100

よくある誤設定

  • VLAN 未作成のまま VNI map を入れると orchagent が pending、トンネルが半開状態。

確認コマンド

sonic-db-cli CONFIG_DB keys 'VXLAN_TUNNEL_MAP|*'
show vxlan vlanvnimap