VxLan技术

发布于 26 天前  71 次阅读


VxLan技术

VXLAN 实质上是一种VPN(虚拟专用网络)技术,能够在任意路由可达的物理网络(Underlay网络)上叠加二层虚拟网络(Overlay网络)。它通过VXLAN网关之间的VXLAN隧道实现网络内部的互通,同时也可以与传统非VXLAN网络互通。

VXLAN 使用MAC in UDP的封装方式,将以太网帧封装在UDP报头内,并通过IP报头在Underlay网络中传输,从而延伸二层网络。由于三层网络没有网络结构限制,VXLAN 具有大规模扩展能力,使虚拟机的热迁移不受限制。

VXLAN Overlay网络

VXLAN Overlay网络根据VXLAN隧道端点设备的不同形态,可以分为以下三种类型:

img

  • Network Overlay

    • 在这种类型中,VXLAN隧道的两个端点都是物理交换机。Network Overlay进一步分为集中式网关和分布式网关两类:

    • 集中式网关:所有VXLAN的终端设备集中在少数几个网关上。

    • 分布式网关:VXLAN的终端设备分布在多个网关上,以实现更高的灵活性和扩展性。

  • Host Overlay

    • 在这种类型中,VXLAN隧道的两个端点都是虚拟交换机。此时,物理交换机(如Spine和Leaf)仅负责IP报文的高速转发,不参与VXLAN的具体处理。
  • Hybrid Overlay

    • 在Hybrid Overlay中,VXLAN隧道的端点既可以是虚拟交换机,也可以是物理交换机。这种类型结合了Network Overlay和Host Overlay的特点,提供更大的灵活性和适应性。

VXLAN基本概念

NVE (Network Virtualization Edge)

img

  • NVE是实现网络虚拟化功能的网络设备,可以是硬件交换机或虚拟交换机。它在三层网络上构建二层虚拟网络并运行VXLAN。图中的SW1和SW2都是NVE设备

VTEP (VXLAN Tunnel Endpoints)

img

  • VTEP是VXLAN隧道端点,位于NVE中,负责VXLAN报文的封装和解封装。VXLAN报文的外层IP头部包含源VTEP的IP地址和目的VTEP的IP地址

VNI (VXLAN Network Identifier)

img

  • L2 VNI:类似于VLAN ID,用于标识二层广播域,不同广播域的虚拟机无法直接进行二层通信。
  • L3 VNI:用于标识VPN实例,支持跨子网转发。一个租户可以有一个或多个VNI,VNI长度为24位,支持多达1600万个租户。

BD(Bridge Domain)

BD在VXLAN中类似于传统网络中的VLAN,用于划分广播域。每个BD与VNI以1:1方式映射,同一BD内的终端可以进行二层通信。

业务接入VXLAN网络

  • 二层子接口方式:例如,在SW1创建二层子接口关联广播域BD10,该子接口下的流量会被注入到BD10。

  • VLAN绑定方式:例如,在SW2将VLAN10与广播域BD10关联,所有VLAN10的流量会被注入到BD10。

img

二层(L2)网关

用于实现VXLAN网络内部的二层流量转发,以及不同子网终端的通信。

img

三层(L3)网关

VBDIF (Virtual Bridge Device Interface) 用于处理VXLAN网络内终端的跨子网通信和对外部网络的访问。

类似于传统网络中的VLANIF,VBDIF在VXLAN三层网关上配置,是基于BD创建的三层逻辑接口。它允许不同网段用户通过VXLAN网络通信,及VXLAN与非VXLAN网络之间的互通,也支持二层网络接入三层网络。

网关部署

分为集中式网关和分布式网关,如图所示:

img

  • 集中式:L3网关部署在一台设备上,所有跨子网的流量都通过该设备转发,实现集中管理。

img

  • 分布式:VTEP设备同时充当L2和L3网关。非网关节点对VXLAN隧道不感知,仅转发VXLAN报文。

VXLAN 隧道的建立

VXLAN隧道由一对VTEP(VXLAN Tunnel Endpoints)定义。报文在VTEP设备上封装后,通过VXLAN隧道在三层网络中进行传输。只要VXLAN隧道两端的VTEP在三层网络中是可达的,VXLAN隧道就可以成功建立。

VXLAN隧道的创建方式分为两种:

  • 静态隧道:通过手动配置本端和远端的VNI、VTEP IP地址以及头端复制列表(head-end peer-list)来建立隧道。
  • 动态隧道:通过BGP EVPN协议动态建立VXLAN隧道。VTEP之间建立BGP EVPN对等体,并利用BGP EVPN路由交换VNI和VTEP IP地址信息,实现VXLAN隧道的自动创建。

静态VXLAN隧道

静态VXLAN隧道的建立完全依赖于手动配置。只要VXLAN隧道两端的VTEP IP地址在三层路由中可达,就可以成功建立VXLAN隧道。

img

VXLAN MAC地址表项

VXLAN在Overlay网络中实现二层转发,依赖于MAC地址表项来进行单播数据帧的转发。VTEP设备会将数据帧的源MAC地址添加到对应BD的MAC地址表中,并记录出接口。这个表项用于指导发往本VTEP连接终端的数据帧的转发。

img

MAC地址动态学习

在VXLAN网络中,为了转发来自远端VTEP设备的数据帧,需要首先学习到远端设备的MAC地址。这一过程与传统MAC地址表形成过程类似,主要依靠主机之间的报文交互,通常通过ARP报文来建立MAC地址表项。

img

例子:PC1与PC2的通信过程

  1. ARP请求:

    PC1向PC2发送ARP请求广播帧,询问PC2的MAC地址。

    SW1收到该ARP请求广播帧,判断流量所属的BD ID、VXLAN隧道和VNI,学习PC1的MAC地址,将其与BD ID和接收接口绑定。

    SW1将ARP请求帧封装为VXLAN报文,并按头端复制列表转发。

    SW2解封装VXLAN报文,学习PC1的MAC地址,并将ARP请求广播到本地广播域,PC2收到并学习PC1的ARP信息。

    PC2发送单播的ARP响应,SW2将其封装为VXLAN报文,发送到远端VTEP(SW1)。

    SW1解封装VXLAN报文,记录PC2的MAC地址到MAC地址表,并将数据帧转发给PC1。

  2. 结果:

    PC1和PC2相互学习到对方的ARP信息,SW1和SW2也学习到相应的MAC地址信息。

跨子网单播报文转发

img

当PC1希望与PC2通信,并发现对端不在同一子网时,报文将发送给网关进行转发。

  1. 报文封装:

    1. PC1发送的数据帧的目的MAC地址为网关MAC(00AB-09FF-1111)。SW1收到该帧后,通过L2查表发现出接口为远端VTEP(L3网关),将报文封装为VXLAN报文(VNI=1000)后发送到SW3。
  2. L3转发:

    1. SW3解封装VXLAN报文后,发现目的MAC为自身接口VBDIF10的MAC地址,执行L3查表转发。SW3查找路由表,找到目的IP(192.168.2.1)与接口VBDIF20匹配,查找ARP表项确定目的MAC,并从MAC地址表确定出接口。
    2. SW3将报文封装为VXLAN报文,并发送到远端VTEP(2.2.2.2)。
  3. 最终转发:

    1. SW2收到报文后解封装VXLAN,发现目的MAC地址不在本地接口中,执行L2查表,根据MAC地址表将报文从本地接口转发出去。

实验

image-20260428100205874

其中VTEP使用Loopback接口,Loopback接口(环回接口) 是一种纯逻辑的、虚拟的网络接口。它不由物理硬件(如网卡)支持,完全由操作系统软件创建和维护。一旦被创建并配置IP地址,只要设备在运行,该接口及其地址就始终处于活动(Up)状态,不会因为任何物理链路故障而宕机。

为什么使用Loopback接口:

  • VTEP地址:在VXLAN网络中,强烈建议将Loopback接口的IP地址配置为VTEP的地址。这样,无论VTEP设备通过哪条物理链路与对端通信,其隧道源地址始终不变,VXLAN隧道会非常稳定。
  • BGP EVPN对等体:建立BGP EVPN邻居关系时,通常使用对方的Loopback地址作为对等体地址。这确保了BGP控制平面会话的稳定性,即使设备间存在多条物理链路(ECMP),会话也不会因单条链路故障而中断。

SW01交换机配置如图

# 第一部分:初始设置
<HUAWEI>sys
# 进入系统视图,从普通用户模式进入特权配置模式
Enter system view, return user view with return command.

[~HUAWEI]sysname SW01
# 将设备名称改为"SW01",便于网络管理时识别设备
[*HUAWEI]commit
# 在VRP8系统中提交配置变更,使设备名修改生效
[~SW01]

# 第二部分:配置Loopback接口(VTEP地址)
[~SW01]int loopback 1
# 创建并进入Loopback 1接口视图。Loopback是逻辑接口,状态永远UP
[*SW01-LoopBack1]ip address 1.1.1.1 32
# 为Loopback 1配置IP地址1.1.1.1/32,这个地址将作为VXLAN隧道端点(VTEP)的标识
[*SW01-LoopBack1]quit
# 退出Loopback接口视图,返回系统视图

# 第三部分:配置物理接口(Underlay网络)
[*SW01]int GE 1/0/1
# 进入千兆以太网接口1/0/1的配置视图
[*SW01-GE1/0/1]undo portswitch
# 将接口从二层交换模式切换为三层路由模式,使其可以配置IP地址
[*SW01-GE1/0/1]ip address 10.0.0.1 30
# 为接口配置IP地址10.0.0.1/30,用于与对端设备(SW02)建立底层IP连接
[*SW01-GE1/0/1]quit
# 退出接口视图

# 第四部分:配置静态路由(建立VTEP间通信)
[*SW01]ip route-static 2.2.2.2 32 10.0.0.2
# 添加静态路由:去往2.2.2.2/32的数据包,下一跳发送到10.0.0.2
# 目的:让SW01能访问SW02的Loopback地址(2.2.2.2),这是VXLAN隧道建立的前提
[*SW01]commit
# 提交所有配置变更
[~SW01]

# 第五部分:创建桥接域(Bridge-Domain)
[~SW01]bridge-domain 1
# 创建并进入桥接域1的配置视图。桥接域是VXLAN的二层广播域
[*SW01-bd1]vxlan vn
# 输入不完整,系统会提示正确的命令格式
[*SW01-bd1]vxlan vni 1
# 为桥接域1分配VXLAN网络标识符(VNI)为1
[*SW01-bd1]quit
# 退出桥接域视图

# 第六部分:配置NVE接口(VXLAN隧道接口)
[*SW01]int Nve 1
# 创建并进入NVE 1接口视图。NVE是VXLAN隧道的逻辑端点接口
Info: Ensure that the IP addresses and MAC addresses of the NVE interfaces on Devices are the same, as they are dual-active gateways using M-LAG.
# 系统提示:如果使用M-LAG双活网关,需确保NVE接口的IP和MAC地址相同
[*SW01-Nve1]source 1.1.1.1
# 设置NVE接口的源IP地址为1.1.1.1,即使用Loopback 1作为VTEP地址
[*SW01-Nve1]vni 1 head-end peer-list 2.2.2.2
# 为VNI 1配置头端复制模式,并指定对端VTEP地址为2.2.2.2
# 头端复制:当收到广播/组播/未知单播时,会复制报文发送到peer-list中的所有对端
[*SW01-Nve1]commit
# 提交NVE接口配置
[~SW01]

# 第七部分:配置接入侧子接口(连接主机)
[~SW01]int GE 1/0/0.1 mode l2
# 创建二层子接口GE1/0/0.1,用于连接终端设备
[*SW01-GE1/0/0.1]commit
# 提交子接口创建
[~SW01-GE1/0/0.1]encapsulation untag
# 配置子接口封装类型为untag(不带VLAN标签)
Warning: To prevent unpredictable results, ensure that a main interface is not configured before you configure the untag or default mode for its sub-interface.
# 警告:为了避免不可预知的结果,配置子接口untag/default模式前,确保主接口没有配置
[*SW01-GE1/0/0.1]bridge-domain 1
# 将子接口绑定到桥接域1,使从此接口进入的流量进入VNI 1对应的VXLAN网络
[*SW01-GE1/0/0.1]commit
# 提交子接口配置

SW02根据SW01进行相应配置

image-20260428111902699

在PC1上进行ping PC2的操作,在上图位置进行抓包:

image-20260428112024803

可以发现首先双方发送了ARP协议用来获取MAC地址。查看ping数据包,也进行了VXLAN的封装。可以看道VNI标识为1,上层封装了IP数据包,其中IP地址为Loopback接口的网络地址,在SW中通过路由找到SW2

image-20260428112526138

文章参考资料:https://blog.csdn.net/weixin_42175752/article/details/140741760,如有侵权请联系

Daniel_WRF
最后更新于 2026-04-29