4. l2 vxlan

22 阅读4分钟

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 的作用:

  1. 封装:把本地二层帧加上 VXLAN 封装,送入三层网络
  2. 解封装:把收到的 VXLAN UDP 包剥掉外层头,恢复出二层帧,转发到本地二层网络

所以你拓扑里的 vtep1vtep2 就是 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 的应用场景

  1. 多租户隔离
    • 每个租户分配一个 VNI,相互隔离
    • 可以跨三层互通,适合云数据中心
  2. 虚拟机跨数据中心迁移
    • VM 迁移后,IP/MAC 不变
    • VXLAN 保证二层网络的一致性
  3. SDN/云网络
    • VXLAN 结合 EVPN 控制平面,由 BGP 分发 MAC/IP 信息,解决传统 Flood & Learn 的效率问题

info.support.huawei.com/info-finder…

实验

2.1 拓扑图

image.png

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 实验结果

image.png

image.png 相同vni能互通:

image.png S6850_3 1端口的抓包结果:

image.png S6850_3 2端口的抓包结果:

image.png