VXLAN配置示例

时间:2024-10-13 08:40:11

组网需求

如下图所示,企业的服务器位于不同的位置,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,保证了迁移后网络的互通。