VXLAN_TUNNEL テーブル¶
概要¶
VXLAN VTEP (Virtual Tunnel End Point) を定義するテーブル。source / destination IP と decap TTL モードを保持する3。orchagent の VxlanOrch / VxlanTunnelOrch が SAI VXLAN tunnel と SAI tunnel termination を生成する。EVPN ベースのオーバーレイでは destination は省略され、VXLAN_EVPN_NVO で NVO がバインドされる。
データフロー (自動生成)¶
flowchart LR
CDB[("CONFIG_DB<br/>VXLAN_TUNNEL")]
DM["vxlanmgrd"]
CDB --> DM
APPDB[("APP_DB<br/>APP_VXLAN_TUNNEL_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 構造¶
YANG max-elements 2 制約により最大 2 トンネルまで(実装的に EVPN 用 1 + 静的 1 を想定)。
フィールド一覧¶
| フィールド | 型 | 必須 | 説明 |
|---|---|---|---|
name (key) |
string | ✅ | トンネル名 |
src_ip |
ip-address | - | 自 VTEP IP(origination 用) |
dst_ip |
ip-address | - | 対向 VTEP IP(point-to-point の場合) |
ttl_mode |
string uniform/pipe |
- | decap 時 TTL モード |
関連サブテーブル¶
VXLAN_TUNNEL_MAP(key:name,mapname): VLAN ↔ VNI マッピングvlan(stringVlan<id>, mandatory)vni(vnid_type, mandatory)
VXLAN_EVPN_NVO(key:name, max-elements 1): EVPN NVO インスタンスsource_vtep(leafrefVXLAN_TUNNEL.name, mandatory)
購読者¶
orchagentVxlanTunnelOrch/VxlanTunnelMapOrch/EvpnNvoOrch: SAI tunnel / tunnel-map / NVO を生成bgpcfgd(EVPN type-2 / type-3 advertise との連携)
関連 CONFIG_DB / YANG / CLI¶
- 関連 CONFIG_DB:
VXLAN_TUNNEL_MAP、VXLAN_EVPN_NVO、VLAN、VNET、VLAN_INTERFACE - 関連 CLI:
config vxlan - 関連 YANG:
sonic-vxlan
値依存挙動マトリクス¶
| フィールド | 値 | 実挙動 |
|---|---|---|
ttl_mode |
uniform |
decap 時に outer TTL を inner TTL にコピーして適用 |
ttl_mode |
pipe |
decap 時に inner TTL を保持(outer TTL は無視) |
ttl_mode |
その他 | YANG pattern "uniform\|pipe" 違反で reject |
dst_ip |
省略 | EVPN 動的学習モード。ip link add ... type vxlan id <vni> local <src_ip> の remote オプションなし (vxlanmgr.cpp:1014) |
dst_ip |
明示指定 | P2P 静的トンネル。ip link add ... remote <dst_ip> が追加される。EVPN との併用は非推奨 |
src_ip |
Loopback0 IP | 推奨構成。リンクダウン影響なし |
src_ip |
物理 IF IP | リンクダウン時に VTEP が消失するため非推奨 |
| エントリ数 | 1〜2 件 | YANG max-elements 2。通常 EVPN 用 1 + P2P 用 1 |
| エントリ数 | 3 件以上 | YANG バリデーションで reject |
例外条件・特殊挙動 ¶
- 最大 2 エントリ (YANG):
max-elements 2— 3 エントリ目は YANG バリデーションで reject される2。 ttl_modeパターン (YANG):pattern "uniform|pipe"— それ以外の値は YANG で reject2。src_ip/dst_ip型 (YANG):inet:ip-address型 — 不正 IP は YANG で reject2。- 削除時の NVO 残留: tunnel 削除時に NVO エントリが残存していると
SWSS_LOG_WARN("Tunnel %s deletion failed. Need to delete NVO")を記録してリトライ待ち1。 - 削除時のマップ残留: tunnel map エントリが残存していると
SWSS_LOG_WARN("Need to delete mapping entries")でリトライ待ち1。 - State テーブル未クリア: state VXLAN tunnel テーブルが空でない場合
SWSS_LOG_WARN("State VXLAN tunnel table not yet empty.")を記録してリトライ1。 - Vxlan Net Dev 作成失敗:
SWSS_LOG_WARN("Vxlan Net Dev creation failure for %s VNI(%s) VLAN(%s)")を記録1。
関連リファレンス¶
- YANG:
sonic-vxlan - CLI:
config vxlan
引用元¶
関連ページ¶
運用ヒント¶
典型値¶
- key 形式:
VXLAN_TUNNEL|<name>。 src_ip: 自 Loopback IP(VTEP)。dst_ip: P2P トンネル先(EVPN 動的の場合は省略)。
よくある誤設定¶
src_ipを物理 IF に置くとリンクダウンで VTEP が消える。Loopback0 を使う。- EVPN 構成で
dst_ipを静的指定すると EVPN type-3 と競合する。
確認コマンド¶
-
sonic-swss/cfgmgr/vxlanmgr.cpphttps://github.com/sonic-net/sonic-swss/blob/master/cfgmgr/vxlanmgr.cpp ↩↩↩↩ -
sonic-buildimage/src/sonic-yang-models/yang-models/sonic-vxlan.yanghttps://github.com/sonic-net/sonic-buildimage/blob/master/src/sonic-yang-models/yang-models/sonic-vxlan.yang ↩↩↩ -
YANG 定義:
sonic-vxlan.yang. https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-vxlan.yang ↩