VXLAN / VNet 設定と運用¶
このページは VXLAN / VNet 全体設計(概要ハブ) の派生ページで、設定経路・CLI・運用 に絞って整理する。概念は vxlan-sonic-concepts.md、内部実装は vxlan-sonic-internals.md、制限事項は vxlan-sonic-limitations.md を参照。
1. CONFIG_DB スキーマ¶
VXLAN_TUNNEL|<tunnel_name>
src_ip : <ipv4>
dst_ip : <ipv4> (OPTIONAL, P2P 用)
VXLAN_TUNNEL_MAP|<tunnel_name>|<map_name>
vni : <int>
vlan : <vlan_id>
VNET|<vnet_name>
vxlan_tunnel : <tunnel_name>
vni : <int>
scope : "default" (OPTIONAL)
peer_list : <vnet_name,...> (OPTIONAL)
INTERFACE|<intf>
vnet_name : <vnet_name>
INTERFACE|<intf>|<prefix>
{}
VLAN_INTERFACE|<vlan_intf>
vnet_name : <vnet_name>
VLAN_INTERFACE|<vlan_intf>|<prefix>
{}
NEIGH_TABLE|<intf>|<ip>
family : IPv4 | IPv6
VXLAN_TUNNEL に src_ip 必須、dst_ip は P2P 用にオプション。VXLAN_TUNNEL_MAP で VLAN ↔ VNI を関連付ける1。
2. APP_DB スキーマ¶
VNET_ROUTE_TABLE:<vnet>:<prefix>
nexthop : <ip> (OPTIONAL)
ifname : <intf>
VNET_ROUTE_TUNNEL_TABLE:<vnet>:<prefix>
endpoint : <vtep ip>
mac_address : <mac> (OPTIONAL: inner DST MAC)
vni : <int> (OPTIONAL)
VXLAN_FDB_TABLE:<tunnel>:<vni>:<mac>
remote_vtep : <ip>
VNET_TABLE:<vnet>
vxlan_tunnel : <tunnel>
vni : <int>
scope : "default"
peer_list : <vnet,...>
VNET_ROUTE_TABLE は 同 VNet 内の直接到達、VNET_ROUTE_TUNNEL_TABLE は tunnel nexthop 経由のリモート経路1。
3. CLI¶
| Command | 用途 |
|---|---|
config vxlan <name> vlan <vid> vni <vni> |
VLAN ↔ VNI |
config vxlan <name> src_if <intf> |
VTEP の source IF |
config vxlan <name> vlan <vid> flood vtep <ip,...> |
HER 用 flood list |
show vxlan <name> |
VXLAN tunnel 情報 |
show mac vxlan <name> <vni> |
VNI 別 learned MAC |
VNet ピアリングの CLI は無く、CONFIG_DB を直接編集する想定1。
4. 設定例(VNet ピアリング)¶
Vnet_2000(VNI 2000、ベアメタル Ethernet1)と Vnet_3000(VNI 3000、Vlan2000、Vnet_2000 をピア):
{
"VXLAN_TUNNEL": { "tunnel1": { "src_ip": "10.10.10.10" } },
"VNET": {
"Vnet_2000": { "vxlan_tunnel": "tunnel1", "vni": "2000", "peer_list": "" },
"Vnet_3000": { "vxlan_tunnel": "tunnel1", "vni": "3000", "peer_list": "Vnet_2000" }
},
"INTERFACE": {
"Ethernet1": { "vnet_name": "Vnet_2000" },
"Ethernet1|100.100.3.1/24": {}
},
"VLAN_INTERFACE": {
"Vlan2000": { "vnet_name": "Vnet_3000" },
"Vlan2000|100.100.4.1/24": {}
}
}
APP_DB に VNET_ROUTE_TABLE / VNET_ROUTE_TUNNEL_TABLE を投入してベアメタル subnet 経路と VM tunnel nexthop 経路を作る1。
5. トラブルシューティング¶
| 症状 | 最初に見る場所 |
|---|---|
| VTEP が上がらない | VXLAN_TUNNEL.src_ip が実在 IF(Loopback 等)の IP か |
| L2 VXLAN で MAC が伝搬しない | VXLAN_FDB_TABLE(APP_DB)に remote_vtep |
| L3 VXLAN で経路が乗らない | VNET_ROUTE_TUNNEL_TABLE.endpoint が remote VTEP IP と一致 |
| VRF が SAI に作られない | VrfMgrD の STATE_DB 更新が間に合っているか |
コマンド例¶
VXLAN トンネルと EVPN ピアの状態を確認する。
# VXLAN tunnel / VNI / EVPN
show vxlan tunnel
show vxlan remotevni all
show evpn vni
redis-cli -n 4 keys 'VXLAN_TUNNEL|*'
docker exec bgp vtysh -c 'show bgp l2vpn evpn summary'
関連ページ¶
- VXLAN / VNet 全体設計(概要ハブ) — 元 HLD ページ
- vxlan-sonic-concepts.md — 概念・用語
- vxlan-sonic-internals.md — Orch 内部実装
- vxlan-sonic-limitations.md — 制限事項
- CLI: config vxlan
- CONFIG_DB: VXLAN_TUNNEL
- CONFIG_DB: VXLAN_TUNNEL_MAP