组网需求
如下图所示,企业的服务器位于不同的位置,Server1和Server3属于相同的网段,Server2和Server4属于相同的网段。现需要通过VXLAN隧道实现相同网段的服务器之间二层互通,不同网段的服务器之间三层互通。
数据规划
BGP EVPN相关数据
VPN实例相关数据
操作步骤
1.VTEP1、VTEP2和VTEP3配置路由协议,实现VTEP1、VTEP2和VTEP3之间Loopback接口的IP地址互通。
# 配置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
VTEP1和VTEP3的配置与VTEP2类似。
2.分别在Switch2、Switch3上进行VLAN接入的配置,在VTEP2、VTEP3上配置VXLAN业务接入点
# 分别在Switch2、Switch3上进行VLAN接入的配置。
配置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
Switch3的配置与Switch2配置一样。
# 在VTEP2、VTEP3上配置VXLAN业务接入点。
VTEP2配置如下:
[VTEP2] bridge-domain 10
[VTEP2-bd10] quit
[VTEP2] bridge-domain 20
[VTEP2-bd20] 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] 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的配置与VTEP2配置相同。
3.分别在VTEP2、VTEP3上配置EVPN实例并绑定BD域。
EVPN实例可以用来管理接收和发布EVPN路由。在通过BGP EVPN部署VXLAN网络的场景中,需要创建EVPN实例,通过BGP路由协议在EVPN实例间进行路由的传递。
配置VTEP2如下:
[VTEP2] evpn vpn-instance evpn10 bd-mode
[VTEP2-evpn-instance-evpn10] route-distinguisher 1:10
[VTEP2-evpn-instance-evpn10] vpn-target 10:1 both
[VTEP2-evpn-instance-evpn10] vpn-target 1:100 export-extcommunity
[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 1:20
[VTEP2-evpn-instance-evpn20] vpn-target 20:1 both
[VTEP2-evpn-instance-evpn20] vpn-target 1:100 export-extcommunity
[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的配置中,除RD值需改成VTEP3 EVPN实例中RD规划值外,其他配置与VTEP2配置一样。
4.在VTEP1、VTEP2、VTEP3上配置VPN实例,并在VTEP2、VTEP3配置VPN实例绑定VBDIF接口
# 配置VTEP1
[VTEP1] ip vpn-instance vpn1
[VTEP1-vpn-instance-vpn1]ipv4-family
[VTEP1-vpn-instance-vpn1-af-ipv4]route-distinguisher 1:100
[VTEP1-vpn-instance-vpn1-af-ipv4]vpn-target 1:100 both evpn
[VTEP1-vpn-instance-vpn1-af-ipv4]quit
[VTEP1-vpn-instance-vpn1]vxlan vni 100
[VTEP1-vpn-instance-vpn1]quit
# 配置VTEP2
[VTEP2] ip vpn-instance vpn1
[VTEP2-vpn-instance-vpn1]ipv4-family
[VTEP2-vpn-instance-vpn1-af-ipv4]route-distinguisher 2:100
[VTEP2-vpn-instance-vpn1-af-ipv4]vpn-target 1:100 both evpn
[VTEP2-vpn-instance-vpn1-af-ipv4]quit
[VTEP2-vpn-instance-vpn1]vxlan vni 100
[VTEP2-vpn-instance-vpn1]quit
[VTEP2] interface vbdif 10
[VTEP2-Vbdif10] ip binding vpn-instance vpn1
[VTEP2-Vbdif10] quit
[VTEP2] interface vbdif 20
[VTEP2-Vbdif20] ip binding vpn-instance vpn1
[VTEP2-Vbdif20] quit
VTEP3的配置中RD值需改成VTEP3 VPN实例中RD规划值外,其他配置与VTEP2配置一样。
5.配置VTEP1、VTEP2、VTEP3之间的BGP EVPN对等体关系。通过在VXLAN网关之间配置BGP EVPN对等体关系可以使不同网关相互发送EVPN路由。
# 配置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.1.1.1 advertise irb
[VTEP2-bgp-af-evpn]peer 10.3.3.3 enable
[VTEP2-bgp-af-evpn]peer 10.3.3.3 advertise irb
[VTEP2-bgp-af-evpn]quit
[VTEP2-bgp] ipv4-family vpn-instance vpn1
[VTEP2-bgp-vpn1] advertise l2vpn evpn //使能VPN实例向BGP-EVPN地址族发布IP路由功能,使VPN实例收集的路由可以发送给EVPN地址族,然后通过EVPN对等体关系发送给远端VTEP设备。
[VTEP2-bgp-vpn1] import-route direct
[VTEP2-bgp-vpn1] quit
[VTEP2-bgp] quit
VTEP1和VTEP3的配置与VTEP2类似。
6.在VTEP1、VTEP2、VTEP3上配置VXLAN隧道目的端地址
# 配置VTEP1。
[VTEP1] interface nve 1
[VTEP1-Nve1] source 10.1.1.1
[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 //指定动态建立VXLAN二层隧道的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
7.在VTEP2、VTEP3上配置VXLAN分布式网关
# 配置VTEP2。
[VTEP2] interface vbdif 10
[VTEP2-Vbdif10] ip address 192.168.10.1 24
[VTEP2-Vbdif10] arp distribute-gateway enable
[VTEP2-Vbdif10] arp collect host enable //为了抑制ARP广播请求报文给网络带来的广播风暴,可在VXLAN二层网关设备上使能ARP广播抑制功能。但是,ARP广播抑制功能的实现依赖于三层网关上的主机信息表(包括主机IP地址、MAC地址、VTEP地址和VNI ID)。
为了使二层网关能够获取主机信息表,需要在VBDIF接口视图下执行该命令,使能BGP EVPN进行主机信息搜集的功能。
[VTEP2-Vbdif10] mac-address 0000-5e00-0101
[VTEP2-Vbdif10] quit
[VTEP2] interface vbdif 20
[VTEP2-Vbdif20] ip address 192.168.20.1 24
[VTEP2-Vbdif20] arp distribute-gateway enable
[VTEP2-Vbdif20] arp collect host enable
[VTEP2-Vbdif20] mac-address 0000-5e00-0102
[VTEP2-Vbdif20] quit
# 配置VTEP3。
[VTEP3] interface vbdif 10
[VTEP3-Vbdif10] ip address 192.168.10.1 24
[VTEP3-Vbdif10] arp distribute-gateway enable
[VTEP3-Vbdif10] arp collect host enable
[VTEP3-Vbdif10] mac-address 0000-5e00-0101
[VTEP3-Vbdif10] quit
[VTEP3] interface vbdif 20
[VTEP3-Vbdif20] ip address 192.168.20.1 24
[VTEP3-Vbdif20] arp distribute-gateway enable
[VTEP3-Vbdif20] arp collect host enable
[VTEP3-Vbdif20] mac-address 0000-5e00-0102
[VTEP3-Vbdif20] quit
8.在VTEP1配置缺省路由,并引入BGP
# 配置VTEP1。
[VTEP1] ip route-static vpn-instance vpn1 0.0.0.0 0 NULL0
[VTEP1] bgp 100
[VTEP1-bgp] ipv4-family vpn-instance vpn1
[VTEP1-bgp-vpn1] import-route static
[VTEP1-bgp-vpn1] default-route imported
[VTEP1] quit
9.验证配置结果
#在VTEP1、VTEP2、VTEP3上执行命令display vxlan vni可查看到VNI的状态是Up;以VTEP2显示为例。
#执行命令display vxlan tunnel可查看到VXLAN隧道的信息。以VTEP2显示为例。
#相同网段用户之间可以二层互通。以Server1上的VM1 ping Server3上的VM1的显示为例。
# 不同网段用户之间可以三层互通。以Server1上的VM1 ping Server4上的VM1的显示为例。
10.验证虚拟机迁移结果
以Server1上的VM1(IP地址:192.168.10.10)迁移到Server3为例,比对迁移前后VTEP2和VTEP3的ARP表项,以及迁移前后VTEP1的路由表来验证迁移结果。
迁移前:
# 查看VTEP1上VPN实例vpn1的路由表。
# 查看VTEP2上VPN实例vpn1的ARP表。
# 查看VTEP3上VPN实例vpn1的ARP表。
迁移后:
# 查看VTEP1上VPN实例vpn1的路由表。
# 查看VTEP2上VPN实例vpn1的ARP表。
# 查看VTEP3上VPN实例vpn1的ARP表。
通过对比可以发现迁移后虚拟机在VTEP2的ARP表项被删除,并被VTEP3重新获得,VTEP1关于虚拟机的主机路由也从VTEP2切换到VTEP3,保证了迁移后网络的互通。