配置VXLAN构建集中式网关部署方式的虚拟网络示例(BGP EVPN方式)
组网需求
- 将散落在不同部门的服务器构建成一个虚拟网络,实现资源整合和业务灵活部署。
- 各服务器上部署着大量的VM,相同网段的VM之间实现二层互通,不同网段的VM之间实现三层互通。
本举例中VXLAN隧道侧接口以X系列单板为例。
数据准备
设备 |
EVPN实例 |
RD值 |
BD |
VNI |
Router id |
Peer IP |
---|---|---|---|---|---|---|
VTEP1 |
evpn10:
|
1:10 |
10 |
10 |
10.1.1.1 |
10.2.2.2;10.3.3.3 |
evpn20:
|
1:20 |
20 |
20 |
10.1.1.1 |
10.2.2.2;10.3.3.3 |
|
VTEP2 |
evpn10:
|
2:10 |
10 |
10 |
10.2.2.2 |
10.1.1.1;10.3.3.3 |
evpn20:
|
2:20 |
20 |
20 |
10.2.2.2 |
10.1.1.1;10.3.3.3 |
|
VTEP3 |
evpn10:
|
3:10 |
10 |
10 |
10.3.3.3 |
10.2.2.2;10.1.1.1 |
evpn20:
|
3:20 |
20 |
20 |
10.3.3.3 |
10.2.2.2;10.1.1.1 |
配置思路
采用如下思路配置不同网段用户通过VXLAN网关互通:
- 分别在VTEP1、VTEP2、VTEP3上配置路由协议,保证网络三层互通。
- 分别在VTEP2、VTEP3上配置VXLAN接入业务部署方式,在Switch1、Switch2上配置VLAN。
- 分别在VTEP1、VTEP2、VTEP3上配置EVPN实例并绑定BD域。
- 分别在VTEP1、VTEP2、VTEP3上配置之间的BGP EVPN对等体关系。
- 分别在VTEP1、VTEP2、VTEP3上配置VXLAN隧道目的端地址。
- 在VTEP1上配置VXLAN三层网关。
园区网络的三层互通是构建虚拟网络的基础条件,现网中,如果园区网络已经实现三层网络的互通,那么该举例中的步骤1可以省略。
操作步骤
- 配置路由协议
# 配置VTEP2各接口IP地址。VTEP1和VTEP3的配置与VTEP2类似,这里不再赘述。配置OSPF时,注意需要发布设备上的Loopback接口地址。
<HUAWEI> system-view [HUAWEI] sysname VTEP2 [VTEP2] interface loopback 1 [VTEP2-LoopBack1] ip address 10.2.2.2 32 [VTEP2-LoopBack1] quit [VTEP2] interface gigabitethernet 1/0/1 [VTEP2-GigabitEthernet1/0/1] undo portswitch [VTEP2-GigabitEthernet1/0/1] ip address 192.168.1.1 24 [VTEP2-GigabitEthernet1/0/1] quit [VTEP2] ospf router-id 10.2.2.2 [VTEP2-ospf-1] area 0 [VTEP2-ospf-1-area-0.0.0.0] network 10.2.2.2 0.0.0.0 [VTEP2-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255 [VTEP2-ospf-1-area-0.0.0.0] quit [VTEP2-ospf-1] quit
# OSPF成功配置后,VTEP1、VTEP2和VTEP3之间可通过OSPF协议发现对方的Loopback接口的IP地址,并能互相ping通。以VTEP2 ping VTEP1的显示为例。
[VTEP2] ping 10.1.1.1 PING 10.1.1.1: 56 data bytes, press CTRL_C to break Reply from 10.1.1.1: bytes=56 Sequence=1 ttl=255 time=240 ms Reply from 10.1.1.1: bytes=56 Sequence=2 ttl=255 time=5 ms Reply from 10.1.1.1: bytes=56 Sequence=3 ttl=255 time=5 ms Reply from 10.1.1.1: bytes=56 Sequence=4 ttl=255 time=14 ms Reply from 10.1.1.1: bytes=56 Sequence=5 ttl=255 time=5 ms --- 10.1.1.1 ping statistics --- 5 packet(s) transmitted 5 packet(s) received 0.00% packet loss round-trip min/avg/max = 5/53/240 ms
- 分别在Switch1、Switch2上进行VLAN接入的配置,在VTEP2、VTEP3上配置VXLAN业务接入点
# 配置Switch1。
<HUAWEI> system-view [HUAWEI] sysname Switch1 [Switch1] vlan batch 10 20 [Switch1] interface gigabitethernet 1/0/2 [Switch1-GigabitEthernet1/0/2] port link-type access [Switch1-GigabitEthernet1/0/2] port default vlan 10 [Switch1-GigabitEthernet1/0/2] quit [Switch1] interface gigabitethernet 1/0/3 [Switch1-GigabitEthernet1/0/3] port link-type access [Switch1-GigabitEthernet1/0/3] port default vlan 20 [Switch1-GigabitEthernet1/0/3] quit [Switch1] interface gigabitethernet 1/0/1 [Switch1-GigabitEthernet1/0/1] port link-type trunk [Switch1-GigabitEthernet1/0/1] port trunk allow-pass vlan 10 20 [Switch1-GigabitEthernet1/0/1] quit
# 配置Switch2。
<HUAWEI> system-view [HUAWEI] sysname Switch2 [Switch2] vlan batch 10 20 [Switch2] interface gigabitethernet 1/0/2 [Switch2-GigabitEthernet1/0/2] port link-type access [Switch2-GigabitEthernet1/0/2] port default vlan 10 [Switch2-GigabitEthernet1/0/2] quit [Switch2] interface gigabitethernet 1/0/3 [Switch2-GigabitEthernet1/0/3] port link-type access [Switch2-GigabitEthernet1/0/3] port default vlan 20 [Switch2-GigabitEthernet1/0/3] quit [Switch2] interface gigabitethernet 1/0/1 [Switch2-GigabitEthernet1/0/1] port link-type trunk [Switch2-GigabitEthernet1/0/1] port trunk allow-pass vlan 10 20 [Switch2-GigabitEthernet1/0/1] quit
# 配置VTEP2。
[VTEP2] bridge-domain 10 [VTEP2-bd10] quit [VTEP2] vcmp role silent [VTEP2] interface gigabitethernet 1/0/2 [VTEP2-GigabitEthernet1/0/2] port link-type trunk [VTEP2-GigabitEthernet1/0/2] quit [VTEP2] interface gigabitethernet 1/0/2.1 mode l2 [VTEP2-GigabitEthernet1/0/2.1] encapsulation dot1q vid 10 [VTEP2-GigabitEthernet1/0/2.1] bridge-domain 10 [VTEP2-GigabitEthernet1/0/2.1] quit [VTEP2] bridge-domain 20 [VTEP2-bd20] quit [VTEP2] interface gigabitethernet 1/0/2.2 mode l2 [VTEP2-GigabitEthernet1/0/2.2] encapsulation dot1q vid 20 [VTEP2-GigabitEthernet1/0/2.2] bridge-domain 20 [VTEP2-GigabitEthernet1/0/2.2] quit
# 配置VTEP3。
[VTEP3] bridge-domain 10 [VTEP3-bd10] quit [VTEP3] vcmp role silent [VTEP3] interface gigabitethernet 1/0/2 [VTEP3-GigabitEthernet1/0/2] port link-type trunk [VTEP3-GigabitEthernet1/0/2] quit [VTEP3] interface gigabitethernet 1/0/2.1 mode l2 [VTEP3-GigabitEthernet1/0/2.1] encapsulation dot1q vid 10 [VTEP3-GigabitEthernet1/0/2.1] bridge-domain 10 [VTEP3-GigabitEthernet1/0/2.1] quit [VTEP3] bridge-domain 20 [VTEP3-bd20] quit [VTEP3] interface gigabitethernet 1/0/2.2 mode l2 [VTEP3-GigabitEthernet1/0/2.2] encapsulation dot1q vid 20 [VTEP3-GigabitEthernet1/0/2.2] bridge-domain 20 [VTEP3-GigabitEthernet1/0/2.2] quit
- 分别在VTEP1、VTEP2、VTEP3上配置EVPN实例并绑定BD域
# 配置VTEP1。
[VTEP1] evpn vpn-instance evpn10 bd-mode [VTEP1-evpn-instance-evpn10] route-distinguisher 1:10 [VTEP1-evpn-instance-evpn10] vpn-target 10:1 both [VTEP1-evpn-instance-evpn10] quit [VTEP1] bridge-domain 10 [VTEP1-bd10] vxlan vni 10 [VTEP1-bd10] evpn binding vpn-instance evpn10 [VTEP1-bd10] quit [VTEP1] evpn vpn-instance evpn20 bd-mode [VTEP1-evpn-instance-evpn20] route-distinguisher 1:20 [VTEP1-evpn-instance-evpn20] vpn-target 20:1 both [VTEP1-evpn-instance-evpn20] quit [VTEP1] bridge-domain 20 [VTEP1-bd20] vxlan vni 20 [VTEP1-bd20] evpn binding vpn-instance evpn20 [VTEP1-bd20] quit
# 配置VTEP2。
[VTEP2] evpn vpn-instance evpn10 bd-mode [VTEP2-evpn-instance-evpn10] route-distinguisher 2:10 [VTEP2-evpn-instance-evpn10] vpn-target 10:1 both [VTEP2-evpn-instance-evpn10] quit [VTEP2] bridge-domain 10 [VTEP2-bd10] vxlan vni 10 [VTEP2-bd10] evpn binding vpn-instance evpn10 [VTEP2-bd10] quit [VTEP2] evpn vpn-instance evpn20 bd-mode [VTEP2-evpn-instance-evpn20] route-distinguisher 2:20 [VTEP2-evpn-instance-evpn20] vpn-target 20:1 both [VTEP2-evpn-instance-evpn20] quit [VTEP2] bridge-domain 20 [VTEP2-bd20] vxlan vni 20 [VTEP2-bd20] evpn binding vpn-instance evpn20 [VTEP2-bd20] quit
# 配置VTEP3。
[VTEP3] evpn vpn-instance evpn10 bd-mode [VTEP3-evpn-instance-evpn10] route-distinguisher 3:10 [VTEP3-evpn-instance-evpn10] vpn-target 10:1 both [VTEP3-evpn-instance-evpn10] quit [VTEP3] bridge-domain 10 [VTEP3-bd10] vxlan vni 10 [VTEP3-bd10] evpn binding vpn-instance evpn10 [VTEP3-bd10] quit [VTEP3] evpn vpn-instance evpn20 bd-mode [VTEP3-evpn-instance-evpn20] route-distinguisher 3:20 [VTEP3-evpn-instance-evpn20] vpn-target 20:1 both [VTEP3-evpn-instance-evpn20] quit [VTEP3] bridge-domain 20 [VTEP3-bd20] vxlan vni 20 [VTEP3-bd20] evpn binding vpn-instance evpn20 [VTEP3-bd20] quit
- 配置VTEP1、VTEP2、VTEP3之间的BGP EVPN对等体关系
# 配置VTEP1。
[VTEP1] bgp 100 [VTEP1-bgp] router-id 10.1.1.1 [VTEP1-bgp] peer 10.2.2.2 as-number 100 [VTEP1-bgp] peer 10.2.2.2 connect-interface LoopBack1 [VTEP1-bgp] peer 10.3.3.3 as-number 100 [VTEP1-bgp] peer 10.3.3.3 connect-interface LoopBack1 [VTEP1-bgp] l2vpn-family evpn [VTEP1-bgp-af-evpn] peer 10.2.2.2 enable [VTEP1-bgp-af-evpn] peer 10.3.3.3 enable [VTEP1-bgp-af-evpn] quit [VTEP1-bgp] quit
# 配置VTEP2。
[VTEP2] bgp 100 [VTEP2-bgp] router-id 10.2.2.2 [VTEP2-bgp] peer 10.1.1.1 as-number 100 [VTEP2-bgp] peer 10.1.1.1 connect-interface LoopBack1 [VTEP2-bgp] peer 10.3.3.3 as-number 100 [VTEP2-bgp] peer 10.3.3.3 connect-interface LoopBack1 [VTEP2-bgp] l2vpn-family evpn [VTEP2-bgp-af-evpn] peer 10.1.1.1 enable [VTEP2-bgp-af-evpn] peer 10.3.3.3 enable [VTEP2-bgp-af-evpn] quit [VTEP2-bgp] quit
# 配置VTEP3。
[VTEP3] bgp 100 [VTEP3-bgp] router-id 10.3.3.3 [VTEP3-bgp] peer 10.1.1.1 as-number 100 [VTEP3-bgp] peer 10.1.1.1 connect-interface LoopBack1 [VTEP3-bgp] peer 10.2.2.2 as-number 100 [VTEP3-bgp] peer 10.2.2.2 connect-interface LoopBack1 [VTEP3-bgp] l2vpn-family evpn [VTEP3-bgp-af-evpn] peer 10.1.1.1 enable [VTEP3-bgp-af-evpn] peer 10.2.2.2 enable [VTEP3-bgp-af-evpn] quit [VTEP3-bgp] quit
- 在VTEP1、VTEP2、VTEP3上配置VXLAN隧道目的端地址
# 配置VTEP1。
[VTEP1] interface nve 1 [VTEP1-Nve1] source 10.1.1.1 [VTEP1-Nve1] vni 10 head-end peer-list protocol bgp [VTEP1-Nve1] vni 20 head-end peer-list protocol bgp [VTEP1-Nve1] quit
# 配置VTEP2。
[VTEP2] interface nve 1 [VTEP2-Nve1] source 10.2.2.2 [VTEP2-Nve1] vni 10 head-end peer-list protocol bgp [VTEP2-Nve1] vni 20 head-end peer-list protocol bgp [VTEP2-Nve1] quit
# 配置VTEP3。
[VTEP3] interface nve 1 [VTEP3-Nve1] source 10.3.3.3 [VTEP3-Nve1] vni 10 head-end peer-list protocol bgp [VTEP3-Nve1] vni 20 head-end peer-list protocol bgp [VTEP3-Nve1] quit
- 在VTEP1上配置VXLAN三层网关
# 配置VTEP1。
[VTEP1] interface vbdif 10 [VTEP1-Nve1] ip address 192.168.10.1 24 [VTEP1-Nve1] quit [VTEP1] interface vbdif 20 [VTEP1-Nve1] ip address 192.168.20.1 24 [VTEP1-Nve1] quit
- 验证配置结果
# 上述配置成功后,在VTEP1、VTEP2、VTEP3上执行命令display vxlan vni可查看到VNI的状态是Up;执行命令display vxlan tunnel可查看到VXLAN隧道的信息。以VTEP2显示为例。
[VTEP2] display vxlan vni VNI BD-ID State ----------------------------------------- 10 10 up 20 20 up ----------------------------------------- Number of vxlan vni bound to BD is : 2 VNI VRF-ID ----------------------------------------- ----------------------------------------- Number of vxlan vni bound to VPN is : 0
[VTEP2] display vxlan tunnel Tunnel ID Source Destination State Type ---------------------------------------------------------------------------- 4026531842 10.2.2.2 10.1.1.1 up l2 dynamic 4026531841 10.2.2.2 10.3.3.3 up l2 dynamic ---------------------------------------------------------------------------- Number of vxlan tunnel : Total : 2 Static: 0 L2 dynamic: 2 L3 dynamic: 0
# 配置完成后,相同网段用户之间可以二层互通。以Server1上的VM1 ping Server3上的VM1的显示为例。
C:\Users\VM1>ping 192.168.10.11 Pinging 192.168.10.11 with 32 bytes of data: Reply from 192.168.10.11: bytes=32 time=1ms TTL=126 Reply from 192.168.10.11: bytes=32 time=1ms TTL=126 Reply from 192.168.10.11: bytes=32 time=1ms TTL=126 Reply from 192.168.10.11: bytes=32 time=1ms TTL=126 Ping statistics for 192.168.10.11: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 1ms, Average = 1ms
# 不同网段用户之间可以三层互通。以Server1上的VM1 ping Server4上的VM1的显示为例。
C:\Users\VM1>ping 192.168.20.11 Pinging 192.168.20.11 with 32 bytes of data: Reply from 192.168.20.11: bytes=32 time=1ms TTL=126 Reply from 192.168.20.11: bytes=32 time=1ms TTL=126 Reply from 192.168.20.11: bytes=32 time=1ms TTL=126 Reply from 192.168.20.11: bytes=32 time=1ms TTL=126 Ping statistics for 192.168.20.11: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 1ms, Maximum = 1ms, Average = 1ms
配置文件
VTEP1的配置文件
# sysname VTEP1 # evpn vpn-instance evpn10 bd-mode route-distinguisher 1:10 vpn-target 10:1 export-extcommunity vpn-target 10:1 import-extcommunity # evpn vpn-instance evpn20 bd-mode route-distinguisher 1:20 vpn-target 20:1 export-extcommunity vpn-target 20:1 import-extcommunity # bridge-domain 10 vxlan vni 10 evpn binding vpn-instance evpn10 # bridge-domain 20 vxlan vni 20 evpn binding vpn-instance evpn20 # interface GigabitEthernet1/0/1 undo portswitch ip address 192.168.1.2 255.255.255.0 # interface GigabitEthernet1/0/2 undo portswitch ip address 192.168.2.1 255.255.255.0 # interface LoopBack1 ip address 10.1.1.1 255.255.255.255 # interface Vbdif10 ip address 192.168.10.1 255.255.255.0 # interface Vbdif20 ip address 192.168.20.1 255.255.255.0 # interface Nve1 source 10.1.1.1 vni 10 head-end peer-list protocol bgp vni 20 head-end peer-list protocol bgp # bgp 100 router-id 10.1.1.1 peer 10.2.2.2 as-number 100 peer 10.2.2.2 connect-interface LoopBack1 peer 10.3.3.3 as-number 100 peer 10.3.3.3 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer 10.2.2.2 enable peer 10.3.3.3 enable # l2vpn-family evpn policy vpn-target peer 10.2.2.2 enable peer 10.3.3.3 enable # ospf 1 router-id 10.1.1.1 area 0.0.0.0 network 10.1.1.1 0.0.0.0 network 192.168.1.0 0.0.0.255 network 192.168.2.0 0.0.0.255 # return
VTEP2的配置文件
# sysname VTEP2 # vcmp role silent # evpn vpn-instance evpn10 bd-mode route-distinguisher 2:10 vpn-target 10:1 export-extcommunity vpn-target 10:1 import-extcommunity # evpn vpn-instance evpn20 bd-mode route-distinguisher 2:20 vpn-target 20:1 export-extcommunity vpn-target 20:1 import-extcommunity # bridge-domain 10 vxlan vni 10 evpn binding vpn-instance evpn10 # bridge-domain 20 vxlan vni 20 evpn binding vpn-instance evpn20 # interface GigabitEthernet1/0/1 undo portswitch ip address 192.168.1.1 255.255.255.0 # interface GigabitEthernet1/0/2 port link-type trunk # interface GigabitEthernet1/0/2.1 mode l2 encapsulation dot1q vid 10 bridge-domain 10 # interface GigabitEthernet1/0/2.2 mode l2 encapsulation dot1q vid 20 bridge-domain 20 # interface LoopBack1 ip address 10.2.2.2 255.255.255.255 # interface Nve1 source 10.2.2.2 vni 10 head-end peer-list protocol bgp vni 20 head-end peer-list protocol bgp # bgp 100 router-id 10.2.2.2 peer 10.1.1.1 as-number 100 peer 10.1.1.1 connect-interface LoopBack1 peer 10.3.3.3 as-number 100 peer 10.3.3.3 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer 10.1.1.1 enable peer 10.3.3.3 enable # l2vpn-family evpn policy vpn-target peer 10.1.1.1 enable peer 10.3.3.3 enable # ospf 1 router-id 10.2.2.2 area 0.0.0.0 network 10.2.2.2 0.0.0.0 network 192.168.1.0 0.0.0.255 # return
VTEP3的配置文件
# sysname VTEP3 # vcmp role silent # evpn vpn-instance evpn10 bd-mode route-distinguisher 3:10 vpn-target 10:1 export-extcommunity vpn-target 10:1 import-extcommunity # evpn vpn-instance evpn20 bd-mode route-distinguisher 3:20 vpn-target 20:1 export-extcommunity vpn-target 20:1 import-extcommunity # bridge-domain 10 vxlan vni 10 evpn binding vpn-instance evpn10 # bridge-domain 20 vxlan vni 20 evpn binding vpn-instance evpn20 # interface GigabitEthernet1/0/1 undo portswitch ip address 192.168.2.2 255.255.255.0 # interface GigabitEthernet1/0/2 port link-type trunk # interface GigabitEthernet1/0/2.1 mode l2 encapsulation dot1q vid 10 bridge-domain 10 # interface GigabitEthernet1/0/2.2 mode l2 encapsulation dot1q vid 20 bridge-domain 20 # interface LoopBack1 ip address 10.3.3.3 255.255.255.255 # interface Nve1 source 10.3.3.3 vni 10 head-end peer-list protocol bgp vni 20 head-end peer-list protocol bgp # bgp 100 router-id 10.3.3.3 peer 10.1.1.1 as-number 100 peer 10.1.1.1 connect-interface LoopBack1 peer 10.2.2.2 as-number 100 peer 10.2.2.2 connect-interface LoopBack1 # ipv4-family unicast undo synchronization peer 10.1.1.1 enable peer 10.2.2.2 enable # l2vpn-family evpn policy vpn-target peer 10.1.1.1 enable peer 10.2.2.2 enable # ospf 1 router-id 10.3.3.3 area 0.0.0.0 network 10.3.3.3 0.0.0.0 network 192.168.2.0 0.0.0.255 # return
Switch1的配置文件
# sysname Switch1 # vlan batch 10 20 # interface GigabitEthernet1/0/1 port link-type trunk port trunk allow-pass vlan 10 20 # interface GigabitEthernet1/0/2 port link-type access port default vlan 10 # interface GigabitEthernet1/0/3 port link-type access port default vlan 20 # return
Switch2的配置文件
# sysname Switch2 # vlan batch 10 20 # interface GigabitEthernet1/0/1 port link-type trunk port trunk allow-pass vlan 10 20 # interface GigabitEthernet1/0/2 port link-type access port default vlan 10 # interface GigabitEthernet1/0/3 port link-type access port default vlan 20 # return