コンテンツにスキップ

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_TUNNELsrc_ip 必須、dst_ip は P2P 用にオプション。VXLAN_TUNNEL_MAPVLAN ↔ 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_TABLEtunnel 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、Vlan2000Vnet_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 と一致
VRFSAI に作られない VrfMgrDSTATE_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'

関連ページ

引用元


  1. sonic-net/SONiC doc/vxlan/Vxlan_hld.md @ 49bab5b5ff0e924f1ea52b3d9db0dfa4191a7c06