引言
在现代数据中心网络中,VXLAN(Virtual eXtensible Local Area Network)结合(Ethernet Virtual Private Network)技术以其高扩展性和灵活性,成为构建大规模、多租户网络的首选方案。分布式网关通过在边缘交换机上实现三层路由功能,显著降低核心设备的压力,提升网络性能和扩展能力。本实验通过搭建一个基于VXLAN和EVPN的分布式网关网络,展示如何实现跨站点的二层通信、三层路由及外部网络互联,验证其在数据中心环境中的应用效果。
实验模拟了一个典型的数据中心网络场景,包含三台边缘交换机(SW-A、SW-B、SW-C)、一台核心交换机(SW-D,兼任路由反射器RR)、一台接入交换机(Access-1)以及一台出口路由器(Export)。SW-A、SW-B和SW-C作为边缘设备,运行分布式网关,负责本地VXLAN隧道的封装/解封装及三层路由;SW-D作为核心交换机和RR,负责Underlay网络互联及EVPN路由分发;Access-1扩展客户端接入能力;Export连接外部网络(模拟公网设备VSR-88_11)。实验使用VXLAN ID 10(VSI vpna)和VXLAN ID 20(VSI vpnb)构建两个二层广播域,客户端通过VLAN 100和VLAN 200接入,映射到VXLAN网络,实现跨站点通信及外部网络访问。
通过本文,读者将:
- 理解VXLAN结合EVPN的分布式网关工作原理及其在数据中心中的优势。
- 学习在H3C设备上配置EVPN和VXLAN分布式网关,包括Underlay网络、VXLAN隧道、三层网关及BGP EVPN协议设置。
- 掌握验证和调试分布式网关网络的方法,解决常见配置问题。
- 获取可复现的实验指导,适合网络工程师、数据中心管理员或网络虚拟化学习者。
实验背景与意义
本实验模拟了一个典型的数据中心网络环境,旨在验证VXLAN结合EVPN的分布式网关在实现跨站点二层通信、三层路由及外部网络互联中的能力。实验场景包括:
- 边缘交换机(SW-A、SW-B、SW-C):运行分布式网关,处理本地VXLAN隧道封装/解封装及三层路由,降低核心设备负载。
- 核心交换机(SW-D):作为路由反射器(RR)及Underlay网络互联设备,负责IP路由及EVPN路由分发。
- 接入交换机(Access-1):扩展SW-B的客户端接入能力,连接部分虚拟机(VM)。
- 出口路由器(Export):通过NAT和静态路由实现内部网络与外部网络(模拟公网设备VSR-88_11)的互联。
- 虚拟机(VM1至VM6):模拟客户端设备,分别接入VLAN 100(VNI 10,网段192.168.1.0/24)和VLAN 200(VNI 20,网段192.168.2.0/24)。
实验通过VXLAN ID 10和20构建两个虚拟二层网络,利用EVPN协议实现分布式网关间的MAC地址和ARP信息同步,确保跨站点的二层和三层通信高效运行,同时通过Export设备验证外部网络访问能力。
实验目标与内容
本实验旨在通过配置VXLAN和EVPN分布式网关,展示其在数据中心网络中的应用。实验内容包括:
- 分布式网关概念:介绍EVPN和VXLAN分布式网关的架构、VNI(VXLAN Network Identifier)、VTEP角色及与集中式网关的区别。
- 网络拓扑设计:描述实验网络架构,包括SW-A、SW-B、SW-C作为边缘分布式网关,SW-D作为核心交换机和RR,Access-1扩展客户端接入,Export提供外部网络互联。
- Underlay网络搭建:使用OSPF协议配置IP路由,确保VTEP间三层连通性。
- VXLAN和VSI配置:配置VXLAN隧道和VSI接口,支持二层虚拟化网络和客户端接入。
- VXLAN接入配置:配置客户端VLAN接入,映射到VXLAN网络。
- L3VPN配置:配置L3VPN实例,支持三层路由功能。
- BGP EVPN配置:配置BGP EVPN协议,实现分布式网关间的路由分发。
- NAT和路由配置:配置NAT和静态路由,实现内部网络与外部网络的互联。
- 连通性验证:通过虚拟机验证二层互通、三层路由及外部网络访问功能。
网络拓扑
- SW-A:连接VM1(VLAN 100,192.168.1.2)和VM5(VLAN 200,192.168.2.1),上联SW-D。
- SW-B:通过Access-1连接VM2(VLAN 200,192.168.2.3)和VM4(VLAN 100,192.168.1.1),上联SW-D。
- SW-C:连接VM3(VLAN 200,192.168.2.2)和VM6(VLAN 100,192.168.1.3),上联SW-D。
- SW-D:作为核心交换机和RR,上联Export,下联SW-A、SW-B、SW-C。
- Export:连接外部网络(VSR-88_11,202.101.111.1),提供NAT功能。
- Access-1:连接SW-B,扩展客户端接入。
实验步骤
1. 接口IP地址和VLAN配置
配置各设备的VLAN、接口IP地址及接入接口,为Underlay网络提供连通性,并为VXLAN隧道和三层网关奠定基础。
Internet(外部网络)
interface GigabitEthernet0/0/0
ip address 202.101.111.1 255.255.255.252 // 配置接口IP地址,与Export设备互联
说明:VSR-88_11模拟外部网络,配置接口IP地址以连接Export设备,为外部网络访问提供基础。 // 提供外部网络连接,模拟公网环境。
Export(出口路由器)
interface LoopBack0
ip address 1.1.1.5 255.255.255.255 // 配置Loopback0作为VTEP标识IP和BGP路由器ID
interface GigabitEthernet0/0
ip binding vpn-instance l3vpn
ip address 202.101.111.2 255.255.255.252 // 配置接口IP地址,连接外部网络
interface GigabitEthernet0/1
ip address 10.1.1.13 255.255.255.252 // 配置接口IP地址,连接SW-D
说明:Export配置Loopback0作为VTEP标识IP,GigabitEthernet0/0连接外部网络,GigabitEthernet0/1连接SW-D,为Underlay网络提供连通性。 // 建立Export的Underlay网络连接,支持VXLAN和BGP功能。
SW-D(核心交换机)
vlan 10 to 13 // 创建VLAN 10到13,划分Underlay网络接口
interface LoopBack0
ip address 1.1.1.1 255.255.255.255 // 配置Loopback0作为VTEP标识IP和BGP路由器ID
interface Vlan-interface10
ip address 10.1.1.1 255.255.255.252 // 配置VLAN 10接口IP,连接SW-A
interface Vlan-interface11
ip address 10.1.1.5 255.255.255.252 // 配置VLAN 11接口IP,连接SW-B
interface Vlan-interface12
ip address 10.1.1.9 255.255.255.252 // 配置VLAN 12接口IP,连接SW-C
interface Vlan-interface13
ip address 10.1.1.14 255.255.255.252 // 配置VLAN 13接口IP,连接Export
interface GigabitEthernet1/0/1
port access vlan 10 // 分配接口到VLAN 10,连接SW-A
interface GigabitEthernet1/0/2
port access vlan 11 // 分配接口到VLAN 11,连接SW-B
interface GigabitEthernet1/0/3
port access vlan 12 // 分配接口到VLAN 12,连接SW-C
interface GigabitEthernet1/0/4
port access vlan 13 // 分配接口到VLAN 13,连接Export
说明:SW-D配置VLAN和接口IP地址,连接SW-A、SW-B、SW-C和Export,确保Underlay网络的IP连通性。 // 提供核心交换机的Underlay网络互联,承载VXLAN隧道和EVPN路由分发。
SW-A(边缘交换机)
vlan 10 // 创建VLAN 10,连接SW-D
vlan 100 // 创建VLAN 100,客户端接入
vlan 200 // 创建VLAN 200,客户端接入
interface LoopBack0
ip address 1.1.1.2 255.255.255.255 // 配置Loopback0作为VTEP标识IP和BGP路由器ID
interface Vlan-interface10
ip address 10.1.1.2 255.255.255.252 // 配置VLAN 10接口IP,连接SW-D
interface GigabitEthernet1/0/1
port access vlan 10 // 分配接口到VLAN 10,连接SW-D
interface GigabitEthernet1/0/2
port link-type trunk // 配置为Trunk模式,允许多VLAN流量
undo port trunk permit vlan 1 // 移除默认VLAN 1
port trunk permit vlan 100 // 允许VLAN 100流量
port trunk pvid vlan 100 // 设置无标签帧默认VLAN为100
interface GigabitEthernet1/0/3
port link-type trunk // 配置为Trunk模式,允许多VLAN流量
undo port trunk permit vlan 1 // 移除默认VLAN 1
port trunk permit vlan 200 // 允许VLAN 200流量
port trunk pvid vlan 200 // 设置无标签帧默认VLAN为200
说明:SW-A配置VLAN和接口IP地址,连接SW-D和客户端(VM1和VM5),为Underlay网络和客户端接入提供基础。 // 实现SW-A的Underlay网络连通性和客户端VLAN接入。
SW-B(边缘交换机)
vlan 11 // 创建VLAN 11,连接SW-D
vlan 100 // 创建VLAN 100,客户端接入
vlan 200 // 创建VLAN 200,客户端接入
interface LoopBack0
ip address 1.1.1.3 255.255.255.255 // 配置Loopback0作为VTEP标识IP和BGP路由器ID
interface Vlan-interface11
ip address 10.1.1.6 255.255.255.252 // 配置VLAN 11接口IP,连接SW-D
interface GigabitEthernet1/0/1
port access vlan 11 // 分配接口到VLAN 11,连接SW-D
interface GigabitEthernet1/0/2
port link-type trunk // 配置为Trunk模式,允许多VLAN流量
port trunk permit vlan 1 100 200 // 允许VLAN 1、100和200流量
说明:SW-B配置VLAN和接口IP地址,连接SW-D和Access-1,为Underlay网络和客户端接入提供基础。 // 实现SW-B的Underlay网络连通性和客户端VLAN接入。
SW-C(边缘交换机)
vlan 12 // 创建VLAN 12,连接SW-D
vlan 100 // 创建VLAN 100,客户端接入
vlan 200 // 创建VLAN 200,客户端接入
interface LoopBack0
ip address 1.1.1.4 255.255.255.255 // 配置Loopback0作为VTEP标识IP和BGP路由器ID
interface Vlan-interface12
ip address 10.1.1.10 255.255.255.252 // 配置VLAN 12接口IP,连接SW-D
interface GigabitEthernet1/0/1
port access vlan 12 // 分配接口到VLAN 12,连接SW-D
interface GigabitEthernet1/0/2
port link-type trunk // 配置为Trunk模式,允许多VLAN流量
undo port trunk permit vlan 1 // 移除默认VLAN 1
port trunk permit vlan 200 // 允许VLAN 200流量
port trunk pvid vlan 200 // 设置无标签帧默认VLAN为200
interface GigabitEthernet1/0/3
port link-type trunk // 配置为Trunk模式,允许多VLAN流量
undo port trunk permit vlan 1 // 移除默认VLAN 1
port trunk permit vlan 100 // 允许VLAN 100流量
port trunk pvid vlan 100 // 设置无标签帧默认VLAN为100
说明:SW-C配置VLAN和接口IP地址,连接SW-D和客户端(VM3和VM6),为Underlay网络和客户端接入提供基础。 // 实现SW-C的Underlay网络连通性和客户端VLAN接入。
Access-1(接入交换机)
vlan 100 // 创建VLAN 100,客户端接入
vlan 200 // 创建VLAN 200,客户端接入
interface GigabitEthernet1/0/1
port link-type trunk // 配置为Trunk模式,允许多VLAN流量
undo port trunk permit vlan 1 // 移除默认VLAN 1
port trunk permit vlan 100 200 // 允许VLAN 100和200流量
interface GigabitEthernet1/0/2
port access vlan 200 // 配置为Access模式,分配VLAN 200
interface GigabitEthernet1/0/3
port access vlan 100 // 配置为Access模式,分配VLAN 100
说明:Access-1配置VLAN和接口,连接SW-B并扩展客户端接入(VM2和VM4)。Trunk接口汇总VLAN 100和200流量,Access接口分配客户端到对应VLAN。 // 扩展SW-B的客户端接入能力,支持VLAN 100和VLAN 200的虚拟机连接。
2. OSPF配置
配置OSPF协议,建立Underlay网络的IP路由,确保VTEP间三层连通性。
Export
ospf 1 router-id 1.1.1.5 // 启用OSPF进程1,设置路由器ID
area 0.0.0.0
network 1.1.1.5 0.0.0.0 // 宣布Loopback0 IP
network 10.1.1.12 0.0.0.3 // 宣布VLAN 13网段,连接SW-D
说明:Export配置OSPF,宣布Loopback0和VLAN 13网段,确保与SW-D的Underlay网络连通性。 // 提供Underlay网络的动态路由,支持VTEP间的IP可达性。
SW-D
ospf 1 router-id 1.1.1.1 // 启用OSPF进程1,设置路由器ID
area 0.0.0.0
network 1.1.1.1 0.0.0.0 // 宣布Loopback0 IP
network 10.1.1.0 0.0.0.3 // 宣布VLAN 10网段,连接SW-A
network 10.1.1.4 0.0.0.3 // 宣布VLAN 11网段,连接SW-B
network 10.1.1.8 0.0.0.3 // 宣布VLAN 12网段,连接SW-C
network 10.1.1.12 0.0.0.3 // 宣布VLAN 13网段,连接Export
说明:SW-D配置OSPF,宣布所有VLAN接口和Loopback0的IP地址,确保与SW-A、SW-B、SW-C和Export的Underlay网络连通性。 // 提供核心交换机的动态路由,支撑VXLAN隧道和EVPN路由分发。
SW-A
ospf 1 router-id 1.1.1.3 // 启用OSPF进程1,设置路由器ID
area 0.0.0.0
network 1.1.1.3 0.0.0.0 // 宣布Loopback0 IP
network 10.1.1.4 0.0.0.3 // 宣布VLAN 11网段,连接SW-D
说明:SW-A配置OSPF,宣布Loopback0和VLAN 10网段,确保与SW-D的Underlay网络连通性。 // 支持SW-A的VTEP IP可达性,保障VXLAN隧道建立。
SW-B
ospf 1 router-id 1.1.1.3 // 启用OSPF进程1,设置路由器ID
area 0.0.0.0
network 1.1.1.3 0.0.0.0 // 宣布Loopback0 IP
network 10.1.1.4 0.0.0.3 // 宣布VLAN 11网段,连接SW-D
说明:SW-B配置OSPF,宣布Loopback0和VLAN 11网段,确保与SW-D的Underlay网络连通性。 // 支持SW-B的VTEP IP可达性,保障VXLAN隧道建立。
SW-C
ospf 1 router-id 1.1.1.4 // 启用OSPF进程1,设置路由器ID
area 0.0.0.0
network 1.1.1.4 0.0.0.0 // 宣布Loopback0 IP
network 10.1.1.8 0.0.0.3 // 宣布VLAN 12网段,连接SW-D
说明:SW-C配置OSPF,宣布Loopback0和VLAN 12网段,确保与SW-D的Underlay网络连通性。 支持SW-C的VTEP IP可达性,保障VXLAN隧道建立。
3. VXLAN和VSI配置
配置VXLAN隧道和VSI接口,支持二层虚拟化网络和分布式网关功能。
Export
vxlan tunnel mac-learning disable // 禁用VXLAN隧道MAC学习
vxlan tunnel arp-learning disable // 禁用VXLAN隧道ARP学习
vsi vpna
vxlan 10 // 关联VXLAN ID 10
evpn encapsulation vxlan
route-distinguisher 1:10 // 配置EVPN的RD
vpn-target 1:10 export-extcommunity // 配置EVPN的出口RT
vpn-target 1:10 1:20 import-extcommunity // 配置EVPN的入口RT
vsi vpnb
vxlan 20 // 关联VXLAN ID 20
evpn encapsulation vxlan
route-distinguisher 1:20 // 配置EVPN的RD
vpn-target 1:20 export-extcommunity // 配置EVPN的出口RT
vpn-target 1:20 20:20 import-extcommunity // 配置EVPN的入口RT
说明:Export配置VXLAN,禁用MAC和ARP学习,设置VSI vpna和vpnb以支持VNI 10和VNI 20的二层网络。 // 启用VXLAN功能,支持二层虚拟化网络。
SW-A
l2vpn enable // 启用二层虚拟专用网络功能,支持VXLAN
vsi vpna
gateway vsi-interface 1 // 指定VSI接口1作为VNI 10的网关
vxlan 10 // 关联VXLAN ID 10
evpn encapsulation vxlan
route-distinguisher 1:10 // 配置EVPN的RD
vpn-target 1:10 export-extcommunity // 配置EVPN的出口RT
vpn-target 1:10 1:20 import-extcommunity // 配置EVPN的入口RT
vsi vpnb
gateway vsi-interface 2 // 指定VSI接口2作为VNI 20的网关
vxlan 20 // 关联VXLAN ID 20
evpn encapsulation vxlan
route-distinguisher 1:20 // 配置EVPN的RD
vpn-target 1:20 export-extcommunity // 配置EVPN的出口RT
vpn-target 1:10 1:20 import-extcommunity // 配置EVPN的入口RT
interface Vsi-interface1
ip binding vpn-instance l3vpn
ip address 192.168.1.254 255.255.255.0 // 配置VSI接口1作为VNI 10的三层网关
mac-address 0001-0001-0001 // 设置网关MAC地址
local-proxy-arp enable // 启用本地代理ARP,优化ARP广播
distributed-gateway local // 启用分布式网关功能
interface Vsi-interface2
ip binding vpn-instance l3vpn
ip address 192.168.2.254 255.255.255.0 // 配置VSI接口2作为VNI 20的三层网关
mac-address 0002-0002-0002 // 设置网关MAC地址
local-proxy-arp enable // 启用本地代理ARP
distributed-gateway local // 启用分布式网关功能
说明:SW-A启用L2VPN功能,配置VSI vpna和vpnb支持VNI 10和VNI 20,VSI接口作为分布式网关提供三层路由功能。 // 实现SW-A的VXLAN二层网络和分布式网关三层路由。
SW-B
l2vpn enable // 启用二层虚拟专用网络功能,支持VXLAN
vsi vpna
gateway vsi-interface 1 // 指定VSI接口1作为VNI 10的网关
vxlan 10 // 关联VXLAN ID 10
evpn encapsulation vxlan
route-distinguisher 1:10 // 配置EVPN的RD
vpn-target 1:10 export-extcommunity // 配置EVPN的出口RT
vpn-target 1:10 1:20 import-extcommunity // 配置EVPN的入口RT
vsi vpnb
gateway vsi-interface 2 // 指定VSI接口2作为VNI 20的网关
vxlan 20 // 关联VXLAN ID 20
evpn encapsulation vxlan
route-distinguisher 1:20 // 配置EVPN的RD
vpn-target 1:20 export-extcommunity // 配置EVPN的出口RT
vpn-target 1:10 1:20 import-extcommunity // 配置EVPN的入口RT
interface Vsi-interface1
ip binding vpn-instance l3vpn
ip address 192.168.1.254 255.255.255.0 // 配置VSI接口1作为VNI 10的三层网关
mac-address 0001-0001-0001 // 设置网关MAC地址
local-proxy-arp enable // 启用本地代理ARP,优化ARP广播
distributed-gateway local // 启用分布式网关功能
interface Vsi-interface2
ip binding vpn-instance l3vpn
ip address 192.168.2.254 255.255.255.0 // 配置VSI接口2作为VNI 20的三层网关
mac-address 0002-0002-0002 // 设置网关MAC地址
local-proxy-arp enable // 启用本地代理ARP
distributed-gateway local // 启用分布式网关功能
说明:SW-B启用L2VPN功能,配置VSI vpna和vpnb支持VNI 10和VNI 20,VSI接口作为分布式网关提供三层路由功能。 // 实现SW-B的VXLAN二层网络和分布式网关三层路由。
SW-C
l2vpn enable // 启用二层虚拟专用网络功能,支持VXLAN
vsi vpna
gateway vsi-interface 1 // 指定VSI接口1作为VNI 10的网关
vxlan 10 // 关联VXLAN ID 10
evpn encapsulation vxlan
route-distinguisher 1:10 // 配置EVPN的RD
vpn-target 1:10 export-extcommunity // 配置EVPN的出口RT
vpn-target 1:10 1:20 import-extcommunity // 配置EVPN的入口RT
vsi vpnb
gateway vsi-interface 2 // 指定VSI接口2作为VNI 20的网关
vxlan 20 // 关联VXLAN ID 20
evpn encapsulation vxlan
route-distinguisher 1:20 // 配置EVPN的RD
vpn-target 1:20 export-extcommunity // 配置EVPN的出口RT
vpn-target 1:10 1:20 import-extcommunity // 配置EVPN的入口RT
interface Vsi-interface1
ip binding vpn-instance l3vpn
ip address 192.168.1.254 255.255.255.0 // 配置VSI接口1作为VNI 10的三层网关
mac-address 0001-0001-0001 // 设置网关MAC地址
local-proxy-arp enable // 启用本地代理ARP,优化ARP广播
distributed-gateway local // 启用分布式网关功能
interface Vsi-interface2
ip binding vpn-instance l3vpn
ip address 192.168.2.254 255.255.255.0 // 配置VSI接口2作为VNI 20的三层网关
mac-address 0002-0002-0002 // 设置网关MAC地址
local-proxy-arp enable // 启用本地代理ARP
distributed-gateway local // 启用分布式网关功能
说明:SW-C启用L2VPN功能,配置VSI vpna和vpnb支持VNI 10和VNI 20,VSI接口作为分布式网关提供三层路由功能。 // 实现SW-C的VXLAN二层网络和分布式网关三层路由。
4. VXLAN接入配置
配置客户端VLAN接入,将本地VLAN流量映射到VXLAN网络。
SW-A
interface GigabitEthernet1/0/2
service-instance 1000
encapsulation s-vid 100 // 匹配VLAN 100标签的帧
xconnect vsi vpna // 将VLAN 100流量映射到VSI vpna(VNI 10)
interface GigabitEthernet1/0/3
service-instance 2000
encapsulation s-vid 200 // 匹配VLAN 200标签的帧
xconnect vsi vpnb // 将VLAN 200流量映射到VSI vpnb(VNI 20)
SW-B
interface GigabitEthernet1/0/2
service-instance 1000
encapsulation s-vid 100 // 匹配VLAN 100标签的帧
xconnect vsi vpna // 将VLAN 100流量映射到VSI vpna(VNI 10)
service-instance 2000
encapsulation s-vid 200 // 匹配VLAN 200标签的帧
xconnect vsi vpnb // 将VLAN 200流量映射到VSI vpnb(VNI 20)
说明:SW-B配置服务实例,将VLAN 100和VLAN 200流量映射到VSI vpna和vpnb,支持通过Access-1的客户端接入VXLAN网络。 // 支持SW-B的客户端VLAN流量映射到VXLAN网络。
SW-C
interface GigabitEthernet1/0/2
service-instance 2000
encapsulation s-vid 200 // 匹配VLAN 200标签的帧
xconnect vsi vpnb // 将VLAN 200流量映射到VSI vpnb(VNI 20)
interface GigabitEthernet1/0/3
service-instance 1000
encapsulation s-vid 100 // 匹配VLAN 100标签的帧
xconnect vsi vpna // 将VLAN 100流量映射到VSI vpna(VNI 10)
验证
Flags含义
- B(Broadcast):表示该表项是通过广播(如ARP请求)学习到的,通常对应客户端设备的MAC地址。例如,192.168.1.1和192.168.1.3的Flags为B,说明这些IP的MAC地址是通过ARP广播学习到的。
- DL(Distributed Local):表示该表项是本地学习的,且属于分布式网关的本地接口。例如,192.168.1.2的Flags为DL,说明该主机直接连接到本地VTEP,且MAC地址由本地接口学习。
- GL(Gateway Local):表示该表项是本地分布式网关的地址,绑定到VSI接口。例如,192.168.1.254的Flags为GL,说明这是本地VSI接口的网关IP和MAC地址(0001-0001-0001),用于三层路由。
说明:SW-C配置服务实例,将VLAN 100和VLAN 200流量映射到VSI vpna和vpnb,实现客户端接入VXLAN网络。 // 支持SW-C的客户端VLAN流量映射到VXLAN网络。
5. L3VPN配置
配置L3VPN实例,支持三层路由功能。
Export
ip vpn-instance l3vpn
route-distinguisher 1:100 // 配置L3VPN的RD
address-family ipv4
vpn-target 20:20 import-extcommunity // 配置IPv4 VPN的入口RT
vpn-target 20:20 export-extcommunity // 配置IPv4 VPN的出口RT
address-family evpn
vpn-target 30:30 import-extcommunity // 配置EVPN的入口RT
vpn-target 30:30 export-extcommunity // 配置EVPN的出口RT
interface Vsi-interface3
ip binding vpn-instance l3vpn
l3-vni 3000 // 配置L3 VNI,用于三层路由
说明:Export配置L3VPN实例,设置RD和RT支持IPv4和EVPN地址族,Vsi-interface3绑定L3VPN并配置L3 VNI,用于三层路由。 // 实现Export的三层路由功能,支持跨VNI通信。
SW-A
ip vpn-instance l3vpn
route-distinguisher 1:200 // 配置L3VPN的RD
address-family ipv4
vpn-target 20:20 import-extcommunity // 配置IPv4 VPN的入口RT
vpn-target 20:20 export-extcommunity // 配置IPv4 VPN的出口RT
address-family evpn
vpn-target 30:30 import-extcommunity // 配置EVPN的入口RT
vpn-target 30:30 export-extcommunity // 配置EVPN的出口RT
interface Vsi-interface3
ip binding vpn-instance l3vpn
l3-vni 3000 // 配置L3 VNI,用于三层路由
说明:SW-A配置L3VPN实例,设置RD和RT支持IPv4和EVPN地址族,Vsi-interface3绑定L3VPN并配置L3 VNI,用于三层路由。 // 实现SW-A的三层路由功能,支持跨VNI通信。
SW-B
ip vpn-instance l3vpn
route-distinguisher 1:300 // 配置L3VPN的RD
address-family ipv4
vpn-target 20:20 import-extcommunity // 配置IPv4 VPN的入口RT
vpn-target 20:20 export-extcommunity // 配置IPv4 VPN的出口RT
address-family evpn
vpn-target 30:30 import-extcommunity // 配置EVPN的入口RT
vpn-target 30:30 export-extcommunity // 配置EVPN的出口RT
interface Vsi-interface3
ip binding vpn-instance l3vpn
l3-vni 3000 // 配置L3 VNI,用于三层路由
说明:SW-B配置L3VPN实例,设置RD和RT支持IPv4和EVPN地址族,Vsi-interface3绑定L3VPN并配置L3 VNI,用于三层路由。 // 实现SW-B的三层路由功能,支持跨VNI通信。
SW-C
ip vpn-instance l3vpn
route-distinguisher 1:400 // 配置L3VPN的RD
address-family ipv4
vpn-target 20:20 import-extcommunity // 配置IPv4 VPN的入口RT
vpn-target 20:20 export-extcommunity // 配置IPv4 VPN的出口RT
address-family evpn
vpn-target 30:30 import-extcommunity // 配置EVPN的入口RT
vpn-target 30:30 export-extcommunity // 配置EVPN的出口RT
interface Vsi-interface3
ip binding vpn-instance l3vpn
l3-vni 3000 // 配置L3 VNI,用于三层路由
说明:SW-C配置L3VPN实例,设置RD和RT支持IPv4和EVPN地址族,Vsi-interface3绑定L3VPN并配置L3 VNI,用于三层路由。 // 实现SW-C的三层路由功能,支持跨VNI通信。
6. BGP EVPN配置
配置BGP EVPN协议,实现分布式网关间的路由分发。
SW-D
bgp 65000
router-id 1.1.1.1 // 设置BGP路由器ID
group evpn internal // 创建EVPN内部组
peer evpn connect-interface LoopBack0 // 指定EVPN组连接接口
peer 1.1.1.2 group evpn // 将SW-A加入EVPN组
peer 1.1.1.3 group evpn // 将SW-B加入EVPN组
peer 1.1.1.4 group evpn // 将SW-C加入EVPN组
peer 1.1.1.5 group evpn // 将Export加入EVPN组
address-family vpnv4 // 启用VPNv4地址族
address-family l2vpn evpn
undo policy vpn-target // 禁用VPN目标策略
peer evpn enable // 启用EVPN地址族
peer evpn reflect-client // 配置SW-D为路由反射器
说明:SW-D配置BGP EVPN,作为路由反射器,与SW-A、SW-B、SW-C和Export建立邻居关系,分发EVPN路由。 // 实现核心交换机的EVPN路由分发,支撑分布式网关的路由同步。
Export
bgp 65000
peer 1.1.1.1 as-number 65000 // 配置BGP邻居SW-D
peer 1.1.1.1 connect-interface LoopBack0 // 指定BGP邻居连接接口
address-family l2vpn evpn
peer 1.1.1.1 enable // 启用EVPN地址族
ip vpn-instance l3vpn
address-family ipv4 unicast
default-route imported // 导入默认路由
import-route static // 导入静态路由
说明:Export配置BGP EVPN,与SW-D建立邻居关系,分发EVPN路由,并导入L3VPN的默认路由和静态路由。 // 实现Export的EVPN路由分发和L3VPN路由导入。
SW-A
bgp 65000
router-id 1.1.1.2 // 设置BGP路由器ID
peer 1.1.1.1 as-number 65000 // 配置BGP邻居SW-D
peer 1.1.1.1 connect-interface LoopBack0 // 指定BGP邻居连接接口
address-family l2vpn evpn
peer 1.1.1.1 enable // 启用EVPN地址族
说明:SW-A配置BGP EVPN,与SW-D建立邻居关系,分发EVPN路由。 // 实现SW-A的EVPN路由分发,支持分布式网关。
SW-B
bgp 65000
router-id 1.1.1.3 // 设置BGP路由器ID
peer 1.1.1.1 as-number 65000 // 配置BGP邻居SW-D
peer 1.1.1.1 connect-interface LoopBack0 // 指定BGP邻居连接接口
address-family l2vpn evpn
peer 1.1.1.1 enable // 启用EVPN地址族
说明:SW-B配置BGP EVPN,与SW-D建立邻居关系,分发EVPN路由。 // 实现SW-B的EVPN路由分发,支持分布式网关。
SW-C
bgp 65000
router-id 1.1.1.4 // 设置BGP路由器ID
peer 1.1.1.1 as-number 65000 // 配置BGP邻居SW-D
peer 1.1.1.1 connect-interface LoopBack0 // 指定BGP邻居连接接口
address-family l2vpn evpn
peer 1.1.1.1 enable // 启用EVPN地址族
说明:SW-C配置BGP EVPN,与SW-D建立邻居关系,分发EVPN路由。 // 实现SW-C的EVPN路由分发,支持分布式网关。
7. NAT和路由配置
配置NAT和静态路由,实现内部网络与外部网络的互联。
Export
ip route-static vpn-instance l3vpn 0.0.0.0 0 202.101.111.1 // 配置默认路由,指向外部网络
acl advanced 3000
rule 5 permit ip vpn-instance l3vpn source 192.168.1.0 0.0.0.255 // 允许VNI 10网段的流量进行NAT
rule 10 permit ip vpn-instance l3vpn source 192.168.2.0 0.0.0.255 // 允许VNI 20网段的流量进行NAT
interface GigabitEthernet0/0
nat outbound 3000 vpn-instance l3vpn // 启用NAT,允许L3VPN内的流量访问外部网络
说明:Export配置静态路由和NAT,允许VNI 10和VNI 20网段的流量通过GigabitEthernet0/0访问外部网络。 // 实现内部网络与外部网络的互联,支持NAT转换。
8. PC配置
配置客户端虚拟机的IP地址和网关:
- VM1(连接SW-A):IP 192.168.1.2,网关 192.168.1.254 // 接入VNI 10,VLAN 100
- VM5(连接SW-A):IP 192.168.2.1,网关 192.168.2.254 // 接入VNI 20,VLAN 200
- VM4(连接Access-1):IP 192.168.1.1,网关 192.168.1.254 // 接入VNI 10,VLAN 100
- VM2(连接Access-1):IP 192.168.2.3,网关 192.168.2.254 // 接入VNI 20,VLAN 200
- VM6(连接SW-C):IP 192.168.1.3,网关 192.168.1.254 // 接入VNI 10,VLAN 100
- VM3(连接SW-C):IP 192.168.2.2,网关 192.168.2.254 // 接入VNI 20,VLAN 200
说明:虚拟机配置IP地址和网关,分别接入VNI 10和VNI 20,网关指向分布式网关的VSI接口地址。 // 确保客户端正确接入VXLAN网络,支持二层和三层通信。
9. 连通性验证
验证网络的二层和三层连通性,以及外部网络访问能力。
- 二层连通性:在VM1(192.168.1.2)、VM4(192.168.1.1)和VM6(192.168.1.3)之间执行ping操作,验证VNI 10内的二层通信;在VM5(192.168.2.1)、VM2(192.168.2.3)和VM3(192.168.2.2)之间执行ping操作,验证VNI 20内的二层通信。
- 三层连通性:在VM1(192.168.1.2)ping VM2(192.168.2.3),验证跨VNI的三层路由功能。
- 外部网络访问:从任意VM ping外部网络(202.101.111.1),验证NAT和外部路由功能。
VM联通性验证
外网验证
说明:通过ping测试验证二层和三层连通性,以及外部网络访问能力,确保VXLAN和EVPN分布式网关的正确运行。 // 验证网络配置的有效性,确认分布式网关和外部互联功能。
10. Wireshark验证(在SWD的G1/0/1接口进行抓包)
VM5访问VM3
VM5访问互联网
说明:我们可以看到,从Wireshark抓取的数据显示,VM5访问互联网是通过封装为VXLAN报文实现的。外层IP从1.1.1.2(SW-A的VTEP)发送至1.1.1.5(可能是Export的VTEP),使用UDP端口4789封装,VNI为3000表示L3VPN流量。内层IP从192.168.2.1(VM5)到202.101.111.1(外部网络),通过ICMP回显请求进行连通性测试。这表明VXLAN隧道已建立,Underlay网络支持数据传输
总结
本实验通过配置VXLAN和EVPN分布式网关,成功实现了跨站点的二层通信、三层路由及外部网络访问。SW-A、SW-B和SW-C作为边缘交换机,运行分布式网关,处理本地VXLAN隧道和三层路由;SW-D作为核心交换机和RR,负责Underlay网络互联和EVPN路由分发;Export通过NAT实现外部网络访问。实验验证了VXLAN和EVPN在数据中心网络中的高效性和灵活性,提供了可复现的配置参考,如果文章有不对的地方欢迎大家指出。