1. 理论
1.1 为什么需要 VXLAN
传统数据中心(DC)里用 VLAN 来做二层隔离:
- VLAN ID 是 12 bit → 只能有 4096 个 VLAN,在大规模云计算/多租户环境远远不够。
- 二层广播域太大,STP 收敛慢,扩展性差。
- 多租户环境下,虚拟机频繁迁移,VLAN 不方便跨数据中心扩展。
所以需要一种 Overlay 网络 技术,在三层 IP 网络上虚拟出二层网络,VXLAN 就是为此设计的。
1.2 VXLAN 的核心思想
VXLAN = Virtual eXtensible LAN(可扩展虚拟局域网)
它的核心就是一句话:
把二层的以太网帧封装在 UDP 包里,在三层 IP 网络上传输,实现跨三层的二层互通。
VXLAN 封装格式
当一个二层帧要通过 VXLAN 网络传输时:
[原始以太帧]
↓ VXLAN 封装
[Outer MAC | Outer IP | UDP | VXLAN Header | Inner Ethernet Frame]
- Outer MAC/IP/UDP:外层封装,用于在三层网络传输(隧道头部)
- VXLAN Header:包含 VNI (VXLAN Network Identifier),相当于 VLAN 的升级版
- Inner Ethernet Frame:原始二层帧(源 VM 发出来的帧)
1.3 VTEP(VXLAN Tunnel EndPoint)
VXLAN 的实现依赖 VTEP,它是 VXLAN 的端点设备(通常是交换机、路由器或虚拟交换机)。
VTEP 的作用:
- 封装:把本地二层帧加上 VXLAN 封装,送入三层网络
- 解封装:把收到的 VXLAN UDP 包剥掉外层头,恢复出二层帧,转发到本地二层网络
所以你拓扑里的 vtep1、vtep2 就是 VXLAN 的关键设备。
1.4 VXLAN 的核心机制
1. VNI(VXLAN Network Identifier)
- VXLAN 取代 VLAN 的关键字段
- 长度 24 bit,可以支持 1677 万个虚拟网络,远远超过 4096 VLAN
2. Flood & Learn(学习机制)
VXLAN 最初没有类似 VLAN 的 控制平面协议,所以早期实现是:
- 当 VTEP 不知道目的 MAC 的位置时,就 组播 到所有 VTEP(像二层 Flood)。
- 当对端 VTEP 收到后,就学习 MAC ↔ VTEP 的对应关系。
这种方式效率不高,所以后续就发展出了 EVPN(BGP EVPN VXLAN) 来代替组播。
3. 单播 VXLAN
很多厂商(包括 H3C)支持通过 手工配置静态 VXLAN 映射(单播隧道) 来避免组播,适合小规模实验。
1.5 VXLAN 的应用场景
- 多租户隔离
- 每个租户分配一个 VNI,相互隔离
- 可以跨三层互通,适合云数据中心
- 虚拟机跨数据中心迁移
- VM 迁移后,IP/MAC 不变
- VXLAN 保证二层网络的一致性
- SDN/云网络
- VXLAN 结合 EVPN 控制平面,由 BGP 分发 MAC/IP 信息,解决传统 Flood & Learn 的效率问题
info.support.huawei.com/info-finder…
实验
2.1 拓扑图
2.2 组件配置
A S8250....4
#
interface GigabitEthernet1/0/1
port link-mode bridge
port access vlan 10
combo enable fiber
#
interface GigabitEthernet1/0/2
port link-mode bridge
port access vlan 20
combo enable fiber
#
interface GigabitEthernet1/0/3
port link-mode bridge
port link-type trunk
port trunk permit vlan 1 10 20
combo enable fiber
#
B S8250....5
#
interface GigabitEthernet1/0/1
port link-mode bridge
port access vlan 10
combo enable fiber
#
interface GigabitEthernet1/0/2
port link-mode bridge
port access vlan 20
combo enable fiber
#
interface GigabitEthernet1/0/3
port link-mode bridge
port link-type trunk
port trunk permit vlan 1 10 20
combo enable fiber
#
C S6850_1(vtep1)
#
vlan 10
#
vlan 20
#
l2vpn enable
#
vsi user1
vxlan 10
tunnel 1
#
vsi user2
vxlan 20
tunnel 1
#
#
interface Tunnel1 mode vxlan
source 1.1.1.1
destination 3.3.3.3
#
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
#
interface GigabitEthernet1/0/2
port link-mode route
combo enable fiber
ip address 100.1.1.1 255.255.255.0
#
interface GigabitEthernet1/0/1
port link-mode bridge
port link-type trunk
port trunk permit vlan 1 10 20
combo enable fiber
#
service-instance 10
encapsulation s-vid 10
xconnect vsi user1
#
service-instance 20
encapsulation s-vid 20
xconnect vsi user2
#
#
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 100.1.1.0 0.0.0.255
#
return
D S6850_2
#
interface LoopBack0
ip address 2.2.2.2 255.255.255.255
#
interface GigabitEthernet1/0/1
port link-mode route
combo enable fiber
ip address 100.1.1.2 255.255.255.0
#
interface GigabitEthernet1/0/2
port link-mode route
combo enable fiber
ip address 100.2.2.2 255.255.255.0
#
#
ospf 1 router-id 2.2.2.2
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 100.1.1.0 0.0.0.255
network 100.2.2.0 0.0.0.255
#
return
E S6850_3(vtep2)
#
ospf 1 router-id 3.3.3.3
area 0.0.0.0
network 3.3.3.3 0.0.0.0
network 100.2.2.0 0.0.0.255
#
#
vlan 10
#
vlan 20
#
l2vpn enable
#
vsi user1
vxlan 10
tunnel 1
#
vsi user2
vxlan 20
tunnel 1
#
#
interface LoopBack0
ip address 3.3.3.3 255.255.255.255
#
interface GigabitEthernet1/0/1
port link-mode route
combo enable fiber
ip address 100.2.2.3 255.255.255.0
#
interface GigabitEthernet1/0/2
port link-mode bridge
port link-type trunk
port trunk permit vlan 1 10 20
combo enable fiber
#
service-instance 10
encapsulation s-vid 10
xconnect vsi user1
#
service-instance 20
encapsulation s-vid 20
xconnect vsi user2
#
#
interface Tunnel1 mode vxlan
source 3.3.3.3
destination 1.1.1.1
#
return
2.3 实验结果
相同vni能互通:
S6850_3 1端口的抓包结果:
S6850_3 2端口的抓包结果: