网络拓扑

在现代数据中心和企业网络中,传统的VLAN技术因其扩展性和灵活性的限制,逐渐难以满足大规模、多租户环境的网络需求。VXLAN(Virtual eXtensible Local Area Network)作为一种先进的网络虚拟化技术,通过在三层IP网络上构建大二层网络,突破了VLAN的4096个ID限制,支持跨地域的二层通信,广泛应用于数据中心互联、云服务和SDN(软件定义网络)架构。
本文将通过一个基于VXLAN的大二层实验,深入讲解如何利用VXLAN技术构建一个跨交换机的二层广播域,实现多站点间的无缝二层通信。实验基于四台交换机(Switch A、Switch B、Switch C 和 Switch D)的配置,模拟一个典型的数据中心网络场景,其中三台交换机(A、B、C)作为VXLAN隧道端点(VTEP),通过OSPF协议建立Underlay网络,承载VXLAN隧道;一台交换机(D)作为核心交换机,负责Underlay网络的IP路由。
实验目标与内容
本文的目标是通过一个精心设计的实验,展示VXLAN的工作原理、配置方法以及在大二层网络中的应用。实验将重点讲解以下内容:
- VXLAN基础概念:介绍VXLAN的封装机制、VNI(VXLAN Network Identifier)、VTEP以及与传统VLAN的区别,帮助读者理解VXLAN的核心优势。
- 网络拓扑设计:详细描述实验的网络架构,包括三台VTEP交换机(Switch A、B、C)通过VXLAN隧道互联,核心交换机(Switch D)提供IP路由支持,以及客户端设备如何接入二层广播域。
- Underlay网络搭建:展示如何使用OSPF协议在Switch A、B、C、D上配置IP路由,确保VTEP之间的三层连通性,为VXLAN隧道提供可靠的底层网络。
- VXLAN隧道配置:深入讲解Switch A、B、C上VXLAN隧道的静态配置,包括VSI(Virtual Switch Instance)、服务实例(Service Instance)以及VLAN到VXLAN的映射,突出配置的关键点和注意事项。
- 二层通信验证:通过客户端设备(连接到Switch A、B、C的接入接口)的通信测试,验证VXLAN大二层网络的连通性,展示PC间如何在同一VNI(VXLAN ID 10)内实现二层互通。
实验背景与意义
本实验模拟了一个典型的数据中心或企业分支网络场景,其中多个站点(由Switch A、B、C代表)需要通过二层网络互联,以支持虚拟机迁移、分布式应用或跨地域的业务连续性。Switch D作为核心交换机,模拟了Underlay网络的骨干路由设备,确保VTEP之间的IP可达性。实验使用的VXLAN ID 10和VSI vpna构建了一个统一的二层广播域,客户端设备通过VLAN 2接入,映射到VXLAN网络,实现跨站点的二层通信。
通过本文的讲解,读者将:
- 掌握VXLAN的基本原理和应用场景,理解其在现代网络中的重要性。
- 学习如何在实际设备上配置VXLAN隧道,包括Underlay网络的OSPF路由、VTEP的隧道设置以及服务实例的VLAN映射。
- 了解如何验证和调试VXLAN网络,解决常见的配置和通信问题。
- 获得可复现的实验指导,适合网络工程师、数据中心管理员或学习网络虚拟化的学生。
实验步骤
1、接口IP地址配置
Switch-D
vlan 10 to 12
#
interface LoopBack0
ip address 1.1.1.1 255.255.255.255
#
interface Vlan-interface10
ip address 10.1.1.1 255.255.255.252
#
interface Vlan-interface11
ip address 10.1.1.5 255.255.255.252
#
interface Vlan-interface12
ip address 10.1.1.9 255.255.255.252
Switch-A
vlan 10
#
interface LoopBack0
ip address 1.1.1.2 255.255.255.255
#
interface Vlan-interface10
ip address 10.1.1.2 255.255.255.252
Switch-B
vlan 11
#
interface LoopBack0
ip address 1.1.1.3 255.255.255.255
#
interface Vlan-interface11
ip address 10.1.1.6 255.255.255.252
Switch-C
vlan 12
#
interface LoopBack0
ip address 1.1.1.4 255.255.255.255
#
interface Vlan-interface12
ip address 10.1.1.10 255.255.255.252
IP配置非常简单,我们接着下一步
2、OSPF配置
Switch-D
ospf 1 router-id 1.1.1.1
area 0.0.0.0
network 1.1.1.1 0.0.0.0
network 10.1.1.0 0.0.0.3
network 10.1.1.4 0.0.0.3
network 10.1.1.8 0.0.0.3
Switch-A
ospf 1 router-id 1.1.1.2
area 0.0.0.0
network 1.1.1.2 0.0.0.0
network 10.1.1.0 0.0.0.3
Switch-B
ospf 1 router-id 1.1.1.3
area 0.0.0.0
network 1.1.1.3 0.0.0.0
network 10.1.1.4 0.0.0.3
Switch-C
ospf 1 router-id 1.1.1.4
area 0.0.0.0
network 1.1.1.4 0.0.0.0
network 10.1.1.8 0.0.0.3
验证

OSPF正常建立邻居,这里一些MD5验证、P2P的功能我就不去配置了,主要咱们就讲解VXLAN大二层的转发
3、VXLAN核心配置
Switch-A
l2vpn enable //全局启用二层虚拟专用网络
#
interface Tunnel2 mode vxlan // 进入Tunnel2接口并配置为VXLAN模式,用于创建VXLAN隧道
source 1.1.1.2 // 设置VXLAN隧道的源IP地址为1.1.1.2(通常为本地VTEP的Loopback接口IP)
destination 1.1.1.3 // 设置VXLAN隧道的目标IP地址为1.1.1.3(对端VTEP的IP地址)
#
interface Tunnel3 mode vxlan // 进入Tunnel3接口并配置为VXLAN模式,用于创建另一条VXLAN隧道
source 1.1.1.2 // 设置VXLAN隧道的源IP地址为1.1.1.2(与Tunnel2相同,表示本地VTEP)
destination 1.1.1.4 // 设置VXLAN隧道的目标IP地址为1.1.1.4(另一个对端VTEP的IP地址)
#
vsi vpna // 创建或进入名为vpna的虚拟交换实例(VSI),用于定义VXLAN的二层广播域
vxlan 10 // 指定VSI vpna关联的VXLAN网络标识符(VNI)为10,用于标识VXLAN二层网络
tunnel 2 // 将Tunnel2接口绑定到VSI vpna,表示该隧道的流量属于此VSI
tunnel 3 // 将Tunnel3接口绑定到VSI vpna,表示该隧道的流量也属于此VSI
- l2vpn enable 命令用于在交换机或路由器上全局启用二层虚拟专用网络(L2VPN)功能。
- VXLAN隧道(Tunnel2和Tunnel3) :
- 命令:interface Tunnel2 mode vxlan, source 1.1.1.2, destination 1.1.1.3(以及Tunnel3的类似配置)。
- 作用:创建两条VXLAN隧道,连接本地VTEP(IP 1.1.1.2)与两个远程VTEP(1.1.1.3和1.1.1.4)。
- 机制:VXLAN通过UDP(默认端口4789)封装二层帧,隧道定义了封装的源和目标IP,数据通过Underlay IP网络传输。Tunnel2连接一个远程站点,Tunnel3连接另一个,形成多点VXLAN网络。
- 意义:隧道是VXLAN的数据平面,负责将二层帧封装为UDP数据包并传输到对端。
- 虚拟交换实例(VSI vpna) :
- 命令:vsi vpna
- 作用:创建VSI vpna,作为虚拟交换机,管理一个独立的二层广播域,类似于VLAN的扩展。
- 功能:VSI负责MAC地址学习、广播/未知单播/多播(BUM)流量处理,并将客户端的二层帧映射到VXLAN网络。
- VXLAN网络标识符(VNI 10) :
- 命令:vxlan 10
- 作用:为VSI vpna指定VNI 10,唯一标识该VXLAN二层网络。
- 机制:VNI嵌入VXLAN头部,允许在同一Underlay网络上隔离多个二层网络。VNI 10内的设备(跨所有VTEP)如同在同一广播域。
- 意义:VNI提供网络隔离和扩展性,支持大规模二层网络。
- 隧道与VSI绑定 :
- 命令:tunnel 2, tunnel 3
- 作用:将Tunnel2和Tunnel3绑定到VSI vpna,关联隧道流量与该二层广播域。
- 机制:绑定确保VSI vpna的二层帧通过Tunnel2(到1.1.1.3)或Tunnel3(到1.1.1.4)封装传输,反之亦然。
- 意义:实现多站点二层互联,VSI vpna的流量可通过多个隧道分发。
Switch-B
l2vpn enable
#
interface Tunnel2 mode vxlan
source 1.1.1.3
destination 1.1.1.2
#
interface Tunnel3 mode vxlan
source 1.1.1.3
destination 1.1.1.4
#
vsi vpna
vxlan 10
tunnel 2
tunnel 3
Switch-C
l2vpn enable
#
interface Tunnel2 mode vxlan
source 1.1.1.4
destination 1.1.1.2
#
interface Tunnel3 mode vxlan
source 1.1.1.4
destination 1.1.1.3
#
vsi vpna
vxlan 10
tunnel 2
tunnel 3
配置完成后,Switch A、B、C 会形成一个 VXLAN 大二层网络(VNI 10,VSI vpna),通过 Tunnel2 和 Tunnel3 互联。PC1、PC2、PC3、PC4 就像在同一个局域网里,能互相 ping 通、发 ARP 请求,感觉不到它们其实隔着三层网络。
验证



4、VXLAN 接入配置
Switch-A
vlan 1000
#
interface GigabitEthernet1/0/2
port link-mode bridge // 将接口设置为二层桥接模式,处理二层帧
port link-type trunk // 配置接口为 Trunk 模式,允许传输多个 VLAN 的流量
port trunk permit vlan 1 1000 // 允许 VLAN 1 和 VLAN 1000 的流量通过该接口
port trunk pvid vlan 1000 // 设置无标签帧的默认 VLAN 为 1000(PVID)
combo enable fiber // 启用接口的光纤模式(针对 Combo 端口的物理连接)
#
service-instance 1000
encapsulation s-vid 1000 // 定义服务实例 1000,期望接收 VLAN 1000 标签的帧
xconnect vsi vpna // 将服务实例绑定到 VSI vpna,将 VLAN 1000 流量映射到 VXLAN 网络
Switch-B
vlan 1000
#
interface GigabitEthernet1/0/2
port link-mode bridge
port link-type trunk
port trunk permit vlan 1 1000
combo enable fiber
#
service-instance 1000
encapsulation s-vid 1000
xconnect vsi vpna
Switch-C
vlan 1000
#
interface GigabitEthernet1/0/2 // 进入 GigabitEthernet1/0/2 接口配置模式
port link-mode bridge // 将接口设置为二层桥接模式,处理二层帧
port access vlan 1000 // 配置接口为 Access 模式,并指定默认 VLAN 为 1000,接收和发送的帧属于 VLAN 1000
combo enable fiber // 启用接口的光纤模式,适配 Combo 端口的物理连接(如光纤)
#
service-instance 1000 // 创建或进入服务实例 1000,用于处理特定流量并映射到 VXLAN
encapsulation untagged // 配置服务实例接收无 VLAN 标签的帧(剥离 VLAN 标签后处理)
xconnect vsi vpna // 将服务实例绑定到 VSI vpna,将无标签流量映射到 VXLAN 网络(VNI 10)
Access-1
vlan 1000
#
interface GigabitEthernet1/0/1
port link-mode bridge
port link-type trunk
port trunk permit vlan 1 1000
combo enable fiber
#
interface GigabitEthernet1/0/2
port link-mode bridge
port access vlan 1000
combo enable fiber
解释
首先声明一下,模拟器中交换机与pc互联的配置直接按照官网的文档进行配置是无法正常通信的,需要在交换机接入pc的接口上打上标签才可以正常通信,在实际中对于有些服务器直接配置trunk是能够正常通信的,大家根据现实情况来配置就行了,这个看实际使用的服务器接收数据包是带标签还是不带标签的
说明
1、Switch-A
- 接口是 Trunk 模式,支持多个 VLAN(VLAN 1 和 1000)。
- 客户端(PC)发送无标签帧,port trunk pvid vlan 1000 分配 VLAN 1000。
- 接收带 VLAN 1000 标签的帧,送入 VSI vpna。
2、Switch-C
- 接口是 Access 模式,只处理 VLAN 1000 的流量。
- 客户端(PC)发送无标签帧,接口自动分配 VLAN 1000。
- 服务实例 encapsulation untagged 接收无标签帧(因为 Access 模式会剥离 VLAN 1000 标签),直接送入 VSI vpna。
- Switch-C也可以使用encapsulation s-vid 1000,但是使用encapsulation untagged也不影响
encapsulation s-vid 1000 的工作原理
- 作用 :
- 服务实例 1000 配置 encapsulation s-vid 1000,表示它只处理带 VLAN 1000 标签的二层帧。
- 帧进入服务实例后,VLAN 1000 标签会被剥离,原始帧送入 VSI vpna,然后通过 VXLAN 隧道(Tunnel2/3)封装为 VXLAN 数据包(VNI 10)发送到其他 VTEP(比如 1.1.1.3 或 1.1.1.4)。
encapsulation untagged 的工作原理
- 作用 :
- 服务实例 1000 配置 encapsulation untagged,表示它处理 无 VLAN 标签的帧(或者从接口接收后已剥离标签的帧)。
- 帧进入服务实例后,直接送入 VSI vpna,无需处理 VLAN 标签,然后通过 VXLAN 隧道封装发送。
3、Switch-B(下接access-1)
为什么 Switch-B 的 GE1/0/2 没配 PVID:
- GE1/0/2 连接的服务器可能发送带 VLAN 1000 标签的帧,Trunk 模式直接接收,服务实例(encapsulation s-vid 1000)处理,无需 PVID。
- 未配 PVID 避免无标签帧被错误分配(默认 VLAN 1),保持配置灵活性,适合特殊服务器或统一 Trunk 设计。
- 如果服务器发送无标签帧,需加 port trunk pvid vlan 1000 或改用 Access 模式。
设计 Access-1 支持更多服务器:
- Access-1 作为接入层交换机,通过多个 Access 接口(比如 GE1/0/2、GE1/0/3)连接服务器,每个接口分配 VLAN 1000,适合普通无标签帧的服务器。
- GE1/0/1(Trunk)汇总多个服务器的 VLAN 1000 流量到 Switch-B,扩展性强,支持一个交换机下面接入更多服务器。
- Switch-B 作为 VTEP,GE1/0/2 只接一个服务器,专注 VXLAN 隧道传输,Access-1 分担接入任务。
作用
这些配置的最终目标都是:让客户端(PC)的二层流量(比如 ping 数据或 ARP 请求)进入 VXLAN 网络(VSI vpna,VNI 10),通过隧道(比如 1.1.1.2 到 1.1.1.3/1.1.1.4)发送到其他交换机,实现跨站点通信。尽管模式不同(Access vs. Trunk),它们都能实现这个目标,因为:
- 核心功能相同 :
- 两种配置都确保客户端的二层帧被分配到 VLAN 1000,并通过服务实例 1000 送入 VSI vpna。
- 在 Access 模式下,接口直接给无标签帧分配 VLAN 1000,服务实例处理剥离标签后的帧(encapsulation untagged)。
- 在 Trunk 模式下,port trunk pvid vlan 1000 给无标签帧分配 VLAN 1000,服务实例直接处理带 VLAN 1000 标签的帧(encapsulation s-vid 1000)。
- 最终,VSI vpna 收到相同的二层帧,封装为 VXLAN 数据包,通过隧道发送出去。
- 客户端行为一致 :
- 假设 PC 连接到 GE1/0/2,发送无 VLAN 标签的帧(普通 PC 网卡的典型行为)。
- Access 模式:接口自动分配 VLAN 1000,剥离标签后送入服务实例。
- Trunk 模式:port trunk pvid vlan 1000 分配 VLAN 1000,服务实例直接处理带标签的帧。
- 结果:PC 的帧都被正确映射到 VLAN 1000,进入 VXLAN 网络,效果一样。
- 服务实例适配 :
- 服务实例的 encapsulation 设置(untagged 或 s-vid 1000)与接口模式匹配:
- Access 模式剥离 VLAN 1000 标签,所以用 encapsulation untagged。
- Trunk 模式保留 VLAN 1000 标签,所以用 encapsulation s-vid 1000。
- 这两种方式只是处理 VLAN 标签的时机不同(接口剥离 vs. 服务实例匹配),但最终都把帧送进 VSI vpna。
- 服务实例的 encapsulation 设置(untagged 或 s-vid 1000)与接口模式匹配:
验证

VSI Name: vpna
VSI State : Up // VSI vpna 状态正常运行
Flooding : Enabled // 泛洪功能启用
VXLAN ID : 10 // VXLAN 网络标识符为 10
Tunnels:
Tunnel2 ... UP ... Manual // 隧道 2 正常,连接到远程 VTEP
Tunnel3 ... UP ... Manual // 隧道 3 正常,连接到另一远程 VTEP
ACs:
AC: GE1/0/2 srv1000 ... Up ... Manual // 接入电路为 GE1/0/2 的服务实例 1000,状态正常
5、PC配置

验证MAC地址学习情况

连通性验证

抓包
我们在Switch-D的G1/0/1口进行抓包,尝试从vm1访问vm2



- VXLAN 隧道:报文的外层 IP(1.1.1.1 → 1.1.1.4)和 UDP(端口 4789)对应 interface Tunnel2,实现 Switch-A 到 Switch-C 的传输。
- VNI 10:VXLAN 头部的 VNI 10 匹配 vsi vpna vxlan 10,确保 vm1 和 vm2 在同一个二层网络(192.168.1.0/24)。
- 封装过程 :
- Switch-A 的 AC(GE1/0/2 srv1000)接收 VM1 的帧,VSI vpna 封装为 VXLAN 数据包,通过 Tunnel2 发送。
- Switch-C 解封装,送给 VM3(通过其 AC,GE1/0/2 srv1000)。
报文讲解
报文协议栈为 eth:ethertype:ip:udp:vxlan:eth:ethertype:ip:icmp,VXLAN 部分负责将 PC1 的 ping 请求封装并传输到 Switch-C。以下是关键字段和作用:
- 外层封装:VXLAN 隧道
-
字段 :
Ethernet II, Src: 4a:e2:39:1b:02:02, Dst: 4c:96:69:1f:01:02 Internet Protocol Version 4, Src: 1.1.1.2, Dst: 1.1.1.3 User Datagram Protocol, Src Port: 58628, Dst Port: 4789
-
讲解 :
- 外层以太网:报文在 Underlay 网络(Switch-D 的 GE_0-1)传输,源 MAC(4a:e2:39:1b:02:02,Switch-A)到目标 MAC(4c:96:69:1f:01:02,下一跳如 Switch-D 或 Switch-C)。
- IP 层 :源 IP 1.1.1.2(Switch-A 的 VTEP,Loopback0)到目标 IP 1.1.1.3(Switch-C 的 VTEP),对应配置中的 interface Tunnel2(source 1.1.1.2 destination 1.1.1.3)。注意:报文显示目标是 1.1.1.3,但上下文表明 PC4 在 Switch-C(1.1.1.4),可能是配置或捕获中的笔误,需验证隧道配置。
- UDP 层:目标端口 4789 是 VXLAN 标准端口,源端口 58628 动态分配。VXLAN 用 UDP 封装二层帧,适配三层网络传输。
-
作用 :
- VXLAN 隧道将 PC1 的二层帧从 Switch-A 传输到 Switch-C,通过 Underlay 网络(Switch-D 转发)。
-
通俗比喻 :
- VXLAN 是"魔法快递信封",信封外写着寄件人(1.1.1.2,Switch-A)和收件人(1.1.1.3,Switch-C),通过快递网络(Underlay)寄送。
- VXLAN 头部:网络标识
-
字段 :
Virtual eXtensible Local Area Network Flags: 0x0800, VXLAN Network ID (VNI) Group Policy ID: 0 VXLAN Network Identifier (VNI): 10 Reserved: 0
-
讲解 :
- VNI: 10:VXLAN 网络标识符,匹配配置中的 vsi vpna vxlan 10,表示报文属于 VSI vpna 的二层广播域(VNI 10)。PC1(192.168.1.1)和 PC4(192.168.1.4)在同一虚拟局域网内。
- Flags: 0x0800:表示 VNI 有效,VXLAN 头部正确。
- Group Policy ID 和 Reserved:默认值 0,未使用。
-
作用 :
- VNI 10 确保 Switch-C 将报文解封装后送往 VSI vpna,正确转发到 PC4。
-
通俗比喻 :
- VNI 10 是"包裹的邮编",告诉 Switch-C 这封信属于"VNI 10 社区"(VSI vpna),只送给这个社区的 PC4。
- 内层报文:原始 ping 请求
-
字段 :
Ethernet II, Src: 4c:98:06:2e:05:06, Dst: 4c:0d:84:c6:09:06 Internet Protocol Version 4, Src: 192.168.1.1, Dst: 192.168.1.4 Internet Control Message Protocol Type: 8 (Echo (ping) request)
-
讲解 :
- 内层以太网:源 MAC(4c:98:06:2e:05:06,PC1)和目标 MAC(4c:0d:84:c6:09:06,PC4)是客户端的 MAC,由 VSI vpna 学习(display l2vpn mac-address 可查)。
- IP 和 ICMP:源 IP 192.168.1.1(PC1)到目标 IP 192.168.1.4(PC4),ICMP Type 8 是 ping 请求。
- VXLAN 封装这个二层帧(以太网 + IP + ICMP),通过 UDP 传输。
-
作用 :
- VXLAN 保护内层帧,确保 Switch-A 到 Switch-C 的二层通信。