图5-33是基于IPv4网络分布式网关动态VXLAN配置示例的拓扑结构。某企业在研发部和市场部的数据中心中都拥有自己的VM,服务器1属于研发部,VM1在192.168.10.0/24网段中,被划分到VLAN 10,在VXLAN网络中,被分配到BD 10(映射VNI 10网段);服务器2和服务器3均属于市场部,VM2和VM3均在192.168.20.0/24网段中,被划分到VLAN 20,在VXLAN网络中,被分配到BD 20(映射VNI 20网段)。

Spine、Leaf1和Leaf2均为CE12800系列交换机,运行V200R005C10SPC607B607版本VRP系统,Switch1和Switch2均为S5700系列交换机,各VNI、BD ID,接口/VM的IP地址均如图中所示。Leaf1和Leaf2同时作为VXLAN二/三层网关,现需要通过基于IPv4网络分布式网关动态VXLAN实现各VM间的互通。
- 配置思路分析
在建立VXLAN隧道,首先要在Overlay网络中实现三层互通,故先配置Spine、Leaf1和Leaf2三者之间网络的三层互通,本示例采用OSPF路由实现。另外,在接入层Underlay网络要配置Switch1和Switch2的基本VLAN功能。
本示例同样包括VM2与VM3之间的同一子网互通和VM1与VM2、VM3之间的跨子网互通两方面需求,但与集中式网基于IPv4网络动态VXLAN的隧道建立方式不同,基于IPv4网络分布式网关动态VXLAN中的VXLAN隧道均是直接在Leaf节点间建立的,Spine节点无需感知。
根据5.4.1节介绍的基于IPv4网络分布式网关动态VXLAN的配置任务可知,主要配置都在Leaf节点上。本示例中,在Leaf1和Leaf2上要同时配置BGP EVPN对等体、VPN实例、EVPN实例、VLAN三层网关。Leaf1和Leaf2同时担当VXLAN二/三层网关角色,相同BD的VBDIF接口配置相同的IP地址和MAC地址。表5-23是Leaf1和Leaf2上的VPN实例和EVPN实例的RD、ERT与IRT配置规划。为了简便起见,和Leaf1和Leaf2采用了相同的VPN实例ERT和IRT,且各实例的ERT值和IRT值相等。

综上所述,本示例的基本配置思路如下:
(1)在Spine、Leaf1、Leaf2上配置IP路由协议,保证Underlay网络三层互通。
(2)在Switch1、Switch2上配置基本VLAN。
本示例与5.2.8节中示例的Underlay网络和接入层网络都相同,故以上第(1)、(2)项配置任务的配置均与5.2.8节对应配置任务的配置相同,参见即可。
(3)在Leaf1与Leaf2之间配置的BGP EVPN对等体关系。
(4)在Leaf1、Leaf2上创建并配置VPN实例。
(5)在Leaf1、Leaf2上配置基于BD的EVPN实例,相互在自己的EVPN实例中添加与对方VPN实例中IRT值相同的ERT。
(6)在Leaf1、Leaf2上配置VXLAN业务接入点。
(7)在Leaf1、Leaf2上配置头端复制功能。
(8)在Leaf1、Leaf2上配置VXLAN三层网关,绑定VPN实例,并使能分布式网关功能并配置发布主机路由功能。
(9)配置各VM的IP地址和默认网关(为VM所在BD对应的VBDIF接口IP地址)(略)。
- 配置步骤
(1)、(2)项配置任务的具体配置参见5.2.8节对应配置任务的配置方法。下面仅介绍第(3)~(8)项配置任务的配置方法。
(3)在Leaf1与Leaf2之间配置的BGP EVPN对等体关系。
本示例中需要在Leaf1与Leaf2直接建立VXLAN隧道,同时负责同子网和跨子网报文的传输,故Leaf1与Leaf2需要直接建立BGP EVPN对等体关系。
【说明】本示例不在Spine上配置RR功能,故在Spine上无需配置与Leaf1与Leaf2建立BGP EVPN对等体关系。但如果在Spine上配置RR功能,则仅需要配置Leaf1和Leaf2与Spine建立BGP EVPN对等体关系。
本示例中,Leaf1和Leaf2向BGP VPN对等体发布所连服务器的IRB类型主机路由。
- Leaf1上的配置
\~Leaf1 bgp 100
\*Leaf1-bgp router-id2.2.2.2
\*Leaf1-bgp peer 3.3.3.3as-number100
\*Leaf1-bgp peer 3.3.3.3 connect-interfaceLoopBack1
\*Leaf1-bgp l2vpn-family evpn
\*Leaf1-bgp-af-evpn peer 3.3.3.3 enable
\*Leaf1-bgp-af-evpn peer 3.3.3.3 advertise irb#---向Leaf2发布IRB类型主机路由
\*Leaf1-bgp-af-evpn quit
\*Leaf1-bgp-vpn1 quit
\*Leaf1-bgp quit
- Leaf2上的配置
\~Leaf2 bgp 100
\*Leaf2-bgp router-id3.3.3.3
\*Leaf2-bgp peer 2.2.2.2as-number100
\*Leaf2-bgp peer 2.2.2.2 connect-interfaceLoopBack1
\*Leaf2-bgp l2vpn-family evpn
\*Leaf2-bgp-af-evpn peer 2.2.2.2 enable
\*Leaf2-bgp-af-evpn peer 2.2.2.2 advertise irb
\*Leaf2-bgp-af-evpn quit
\*Leaf2-bgp-vpn1 quit
\*Leaf2-bgp quit
以上配置完成后,在Leaf1和Leaf2上执行display bgp evpn peer 命令,查看他们之间BGP EVPN对等体关系建立情况。图5-34是在Leaf1上执行display bgp evpn peer 命令的输出,从中可以见到,Leaf1与Leaf2之间建立了BGP EVPN对等体关系。

(4)在Leaf1、Leaf2上创建并配置VPN实例。
本示例所创建的VPN实例名称为vpn1,Leaf1、Leaf2上的RD值分别为20:2、20:3,用于与EVPN实例进行路由交叉的ERT/IRT值均为1:100,绑定的三层VNI为5010。
- Leaf1上的配置
Leaf1 ip vpn-instancevpn1
Leaf1-vpn-instance-vpn1 vxlan vni 5010 #---配置三层VNI 5010
Leaf1-vpn-instance-vpn1 ipv4-family
Leaf1-vpn-instance-vpn1-af-ipv4 route-distinguisher20:2 #---指定VPN实例的RD为20:2
Leaf1-vpn-instance-vpn1-af-ipv4 vpn-target 1:100both evpn#---指定VPN实例的ERT/IRT均为1:100
Leaf1-vpn-instance-vpn1-af-ipv4 quit
Leaf1-vpn-instance-vpn1 quit
- Leaf2上的配置
Leaf2 ip vpn-instancevpn1
Leaf2-vpn-instance-vpn1 vxlan vni 5010
Leaf2-vpn-instance-vpn1 ipv4-family
Leaf2-vpn-instance-vpn1-af-ipv4 route-distinguisher20:3
Leaf2-vpn-instance-vpn1-af-ipv4 vpn-target 1:100both evpn
Leaf2-vpn-instance-vpn1-af-ipv4 quit
Leaf2-vpn-instance-vpn1 quit
(5)在Leaf1、Leaf2上配置基于BD的EVPN实例。
按照表5-23所示配置Leaf1、Leaf2中各BD下EVPN实例的二层VNI、RD、ERT/IRT,并在各EVPN实例中添加与对端VPN实例中配置的IRT值相等的ERT。
- Leaf1上的配置
\*Leaf1 bridge-domain10
\*Leaf1-bd10 vxlan vni10
\*Leaf1-bd10 evpn
\*Leaf1-bd10-evpn route-distinguisher1:10
\*Leaf1-bd10-evpn vpn-target10:1
\*Leaf1-bd10-evpn vpn-target 1:100export-extcommunity #---添加与Leaf2上vpn1实例中IRT值相同的ERT值1:100
\*Leaf1-bd10-evpn quit
\*Leaf1-bd10 quit
\*Leaf1 bridge-domain20
\*Leaf1-bd20 vxlan vni20
\*Leaf1-bd20 evpn
\*Leaf1-bd20-evpn route-distinguisher1:20
\*Leaf1-bd20-evpn vpn-target20:1
\*Leaf1-bd20-evpn vpn-target 1:100export-extcommunity
\*Leaf1-bd20-evpn quit
\*Leaf1-bd20 quit
- Leaf2上的配置
\*Leaf2 bridge-domain20
\*Leaf2-bd20 vxlan vni20
\*Leaf2-bd20 evpn
\*Leaf2-bd20-evpn route-distinguisher2:20
\*Leaf2-bd20-evpn vpn-target20:1
\*Leaf2-bd20-evpn vpn-target 1:100export-extcommunity
\*Leaf2-bd20-evpn quit
\*Leaf2-bd20 quit
(6)在Leaf1、Leaf2上配置VXLAN业务接入点。
本示例采用基于 dot1q二层子接口业务接入方式,在Leaf1创建dot1q业务流封类型的GE1/0/0.1和GE1/0/0.2两个二层子接口,GE1/0/0.1子接口封装VLAN 10,绑定BD 10,GE1/0/0.2子接口封装VLAN 20,绑定BD 20。在Leaf2创建dot1q业务流封类型的GE1/0/0.2二层子接口,封装VLAN 20,绑定BD 20。
- Leaf1上的配置
\~Leaf1 interfaceGE1/0/1
\*Leaf1-GE1/0/1 undo shutdown
\*Leaf1-GE1/0/1 port link-type trunk
\*Leaf1-GE1/0/1 quit
\*Leaf1 interface GE1/0/1.1mode l2
\*Leaf1-GE1/0/1.1 encapsulation dot1q vid10
\*Leaf1-GE1/0/1.1 bridge-domain10
\*Leaf1-GE1/0/1.1 quit
\*Leaf1 interface GE1/0/1.2mode l2
\*Leaf1-GE1/0/1.2 encapsulation dot1q vid20
\*Leaf1-GE1/0/1.2 bridge-domain20
\*Leaf1-GE1/0/1.2 quit
\*Leaf1 commit
- Leaf2上的配置
\~Leaf2 interfaceGE1/0/1
\*Leaf2-GE1/0/1 undo shutdown
\*Leaf2-GE1/0/1 port link-type trunk
\*Leaf2-GE1/0/1 quit
\*Leaf2 interface GE1/0/1.2mode l2
\*Leaf2-GE1/0/1.2 encapsulation dot1q vid20
\*Leaf2-GE1/0/1.2 bridge-domain20
\*Leaf2-GE1/0/1.2 quit
\*Leaf2 commit
(7)在Leaf1、Leaf2上配置头端复制功能。
因为在分布式网关场景中,VXLAN隧道是在各Leaf节点间直接建立的,Spine节点无需配置VXLAN功能,故Spine上无需配置头端复制功能。因为Leaf1同时连接了VNI 10中的VM1和VNI 20中的VM2,故要同时配置这两个VXLAN网段的头端复制列表;Leaf2上仅连接了VNI 20中的VM3,故仅需配置该VXLAN网段的头端复制列表。本示例中,NVE接口的源IP地址为对应设备的VTEP IP地址,采用各自的Loopback1接口IPv4地址。
- Leaf1上的配置
\~Leaf1 interfacenve 1
\*Leaf1-Nve1 source2.2.2.2
\*Leaf1-Nve1 vni 10head-end peer-list protocol bgp
\*Leaf1-Nve1 vni 20head-end peer-list protocol bgp
\*Leaf1-Nve1 quit
\*Leaf1 commit
- Leaf2上的配置
\~Leaf2 interfacenve 1
\*Leaf2-Nve1 source3.3.3.3
\*Leaf2-Nve1 vni 20head-end peer-list protocol bgp
\*Leaf2-Nve1 quit
\*Leaf2 commit
(8)在Leaf1、Leaf2上配置VXLAN三层网关。
在分布式网关动态VXLAN中,VXLAN三层网关需要绑定VPN实例,使能分布式网关功能和向BGP EVPN对等体发布IRB类型主机路由功能。
因为Leaf1和Leaf2上均连接有BD 20下的VM,在分布式网关动态VXLAN中,需要在Leaf1和Leaf2上创建的VBDIF20接口配置相同的IP地址(因为本示例为IPv4 Overlay网络,故VBDIF接口IP地址也是IPv4地址)和MAC地址(本示例为0000-005e-0002)。
- Leaf1上的配置
\~Leaf1 interfacevbdif10
\*Leaf1-Vbdif10 ip binding vpn-instancevpn1
\*Leaf1-Vbdif10 ip address192.168.10.1 255.255.255.0
\*Leaf1-Vbdif10 mac-address0000-005e-0001
\*Leaf1-Vbdif10 vxlan anycast-gateway enable
\*Leaf1-Vbdif10 arp collect host enable
\*Leaf1-Vbdif10 quit
\~Leaf1 interfacevbdif20
\*Leaf1-Vbdif20 ip binding vpn-instancevpn1
\*Leaf1-Vbdif20 ip address192.168.20.1 255.255.255.0
\*Leaf1-Vbdif20 mac-address0000-005e-0002
\*Leaf1-Vbdif20 vxlan anycast-gateway enable
\*Leaf1-Vbdif10 arp collect host enable
\*Leaf1-Vbdif10 quit
\*Leaf1 commit
- Leaf2上的配置
\~Leaf2 interfacevbdif20
\*Leaf2-Vbdif20 ip binding vpn-instancevpn1
\*Leaf2-Vbdif20 ip address192.168.20.1 255.255.255.0
\*Leaf2-Vbdif20 mac-address0000-005e-0002
\*Leaf2-Vbdif20 vxlan anycast-gateway enable
\*Leaf2-Vbdif10 arp collect host enable
\*Leaf2-Vbdif10 quit
\*Leaf2 commit
- 配置结果验证
以上配置完成后,可进行以下配置结果验证。
(1)在Leaf1和Leaf2上执行display vxlan tunnel 命令,查看他们之间的VXLAN隧道建立情况。图5-35是在Leaf1上执行display vxlan tunnel 命令的输出,从可以见到Leaf1已与Leaf2成功建立了动态VXLAN隧道。

(2)在VM1上分别ping VM2和VM3,在VM2上分别ping VM1和VM3,验证它们是否可以互通。图5-36是VM1成功ping通VM2和VM3的输出,证明VM1可与不同子网的VM2和VM3之间互通;图5-37是VM2成功ping通VM1和VM3的输出,证明VM2可与不同子网的VM1间,以及同子网的VM3之间互通。

(3)在VM1 ping VM3后,Leaf1会向Leaf2发布IRB类型的MAC/IP通告路由,其中包括VM1的32位掩码的主机IP地址192.168.10.10和MAC地址5489-98f4-5e02。图5-38是Leaf1向Leaf2发布的MAC/IP通告路由。Leaf2收到后,就可以获取到VM1的IP地址和MAC地址,生成对应的EVPN路由。

(4)在各主机相互进行ping操作后,在Leaf1和Leaf2上执行display bgp evpn all routing-table 命令,可以看到已生成Type2(MAC/IP通告路由)、Type3(Inclusive Multicast路由)和Type5(IP前缀路由)类型EVPN路由。
图5-39是在Leaf2上执行display bgp evpn all routing-table 命令输出中MAC/IP通告路由部分。从中可以见到各VM、三层网关VBDIF接口的IP地址和MAC地址。图5-40是在Leaf2上执行display bgp evpn all routing-table 命令输出中IP前缀路由部分,从中可以见到两Leaf所连主机的32位掩码主机路由和对应的网段路由,以及发布该EVPN路由的VETP设备(从NextHop字段得出)。

通过以上验证,已可证明本示例以上配置是正确且成功的。
以上内容摘自笔者刚刚发布的2026年新作《华为VXLAN+BGP EVPN实战指南------数据中心网络工程师进阶之路》(电子版,无纸质版,需要者请私信),全国唯一的华为数据中心网络核心技术VXLAN和BGP EVPN专著。
