EVPN小实验_分布式EVPN网关配置

通过上一个实验,我们已经知道EVPN是一种二层VPN技术,控制平面采用MP-BGP通告EVPN路由信息,数据平面采用VXLAN封装方式转发报文。当租户的物理站点分散在不同位置时,EVPN可以基于已有的服务提供商或企业IP网络,为同一租户的相同子网提供二层互联;通过EVPN网关为同一租户的不同子网提供三层互联,并为其提供与外部网络的三层互联。

EVPN不仅继承了MP-BGP和VXLAN的优势,还提供了新的功能。EVPN具有如下特点:

简化配置:通过MP-BGP实现VTEP自动发现、VXLAN隧道自动建立、VXLAN隧道与VXLAN自动关联,无需用户手工配置,降低网络部署难度。

分离控制平面与数据平面:控制平面负责发布路由信息,数据平面负责转发报文,分工明确,易于管理。

支持对称IRB(Integrated Routing and Bridging,集成的路由和桥接):MP-BGP同时发布二层MAC地址和三层路由信息,VTEP既可以进行二层转发,也可以进行三层路由。这样,不仅可以保证流量采用最优路径转发,还可以减少广播流量。

在上个实验中,EVPN采用了Spine(核心)—Leaf(分支)的分层结构。Leaf层的设备作为VTEP对报文进行EVPN相关处理;Spine层为核心设备,根据报文的目的IP地址转发报文。EVPN网络中的设备属于同一个AS(Autonomous System,自治系统),为了避免在所有VTEP之间建立IBGP对等体,将核心设备配置为了RR(Route Reflector,路由反射器)。此时,RR通过发布、接收EVPN路由,实现了全网互通;同时不需要封装、解封装VXLAN报文,保证性能。

和VXLAN IP网关类似,EVPN网关也可以分为两种:

集中式EVPN网关:配置简单,但不同VXLAN之间的流量以及VXLAN访问外界网络的流量全部由集中式EVPN网关处理,网关压力较大。

分布式EVPN网关:配置比较复杂,但每台VTEP设备都可以作为EVPN网关,对本地站点的流量进行三层转发,缓解了网关的压力。

今天来看一下分布式EVPN网关配置实验。

组网需求

VSR1、VSR3为与服务器连接的VTEP设备,VSR2为与广域网连接的集中式EVPN网关设备,ISP-VFW为广域网内的三层设备,VSR-RR为RR,负责在路由器之间反射BGP路由。

虚拟机VM1和VM3同属于VXLAN10,VM2和VM4同属于VXLAN 20。相同VXLAN之间可以二层互通,确保虚拟机在站点之间进行迁移时用户的访问流量不会中断;不同VXLAN之间通过分布式EVPN网关实现三层互通;VXLAN与广域网之间通过边界网关实现三层互通。

实验环境

VMWare ESXi 6.7.0(ProLiant DL360 Gen9,48核心,128G内存)

H3C VSR1000(Version 7.1.064, Release 0621P18,4核心,8G内存)

H3C VFW1000(Version 7.1.064, ESS 1171P13,4核心,8G内存)

Windows 7旗舰版(测试用虚拟机,8核心,16G内存)

组网图

分布式EVPN网关配置组网图,和集中式EVPN网关组网图一样。

M地址指远程管理的带外管理口地址。新建一个vSwitch,所有线路均使用该vSwitch中端口组实现,建议将不同链路隔离进不同的VLAN,避免广播风暴。

配置步骤

1、配置IP地址和单播路由协议

调通底层网络,配置各接口的IP地址和子网掩码,并在IP核心网络内配置OSPF协议,和之前的实验配置基本相同。

将VM1和VM3的网关地址指定为192.168.2.1,将VM2和VM4的网关地址指定为192.168.10.1。

2、配置VSR1

开启L2VPN能力,并关闭远端MAC地址和远端ARP自动学习功能。配置BGP发布EVPN路由。配置接入服务器的接口GigabitEthernet3/0与VSI实例vpna关联,接入服务器的接口GigabitEthernet1/0/2与VSI实例vpnb关联。这几部分的配置和上个实验相同,不再占用篇幅。

跟上个实验相比,VSI实例下不再配置arp suppression enable,因为分布式网关可能需要泛洪相关ARP请求,所以不再进行抑制。

在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。同时创建VXLAN 10。

# vsi vpna vxlan 10 evpn encapsulation vxlan route-distinguisher auto vpn-target auto export-extcommunity vpn-target auto import-extcommunity

在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。同时创建VXLAN 20。

# vsi vpnb vxlan 20 evpn encapsulation vxlan route-distinguisher auto vpn-target auto export-extcommunity vpn-target auto import-extcommunity

配置L3VNI的RD和RT。

# ip vpn-instance vpna route-distinguisher 1:1 # address-family ipv4 vpn-target 2:2 import-extcommunity vpn-target 2:2 export-extcommunity # address-family evpn vpn-target 1:1 import-extcommunity vpn-target 1:1 export-extcommunity

配置VSI虚接口VSI-interface1和VSI-interface2。

# interface Vsi-interface1 ip binding vpn-instance vpna ip address 192.168.2.1 255.255.255.0 mac-address 0001-0001-0001 local-proxy-arp enable distributed-gateway local # interface Vsi-interface2 ip binding vpn-instance vpna ip address 192.168.10.1 255.255.255.0 mac-address 0002-0002-0002 local-proxy-arp enable distributed-gateway local

创建VSI虚接口VSI-interface3,在该接口上配置VPN实例vpna对应的L3VNI为1000。

# interface Vsi-interface3 ip binding vpn-instance vpna l3-vni 1000

配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。

# vsi vpna gateway vsi-interface 1 # vsi vpnb gateway vsi-interface 2

3、配置VSR2

开启L2VPN能力,并关闭远端MAC地址和远端ARP自动学习功能。删除VSI虚接口VSI-interface1和VSI-interface2,移除VSI实例vpna和vpnb相关配置。

配置L3 VNI的RD和RT。

# ip vpn-instance vpna route-distinguisher 1:1 # address-family ipv4 vpn-target 2:2 import-extcommunity vpn-target 2:2 export-extcommunity # address-family evpn vpn-target 1:1 import-extcommunity vpn-target 1:1 export-extcommunity

创建VSI虚接口VSI-interface3,在该接口上配置VPN实例vpna对应的L3VNI为1000。

# interface Vsi-interface3 ip binding vpn-instance vpna l3-vni 1000

配置连接广域网的接口GigabitEthernet3/0与VPN实例vpna关联。

# interface GigabitEthernet3/0 ip binding vpn-instance vpna ip address 22.1.1.1 255.255.255.0 nat outbound

配置缺省路由,下一跳为广域网中某台设备的IP地址22.1.1.2。

# ip route-static vpn-instance vpna 0.0.0.0 0 22.1.1.2

配置BGP发布EVPN路由,并将缺省路由引入到VPN实例vpna的BGP IPv4单播路由表中。

# bgp 1234 peer 4.4.4.4 as-number 1234 peer 4.4.4.4 connect-interface LoopBack0 # address-family l2vpn evpn peer 4.4.4.4 enable # ip vpn-instance vpna # address-family ipv4 unicast default-route imported import-route static

4、配置VSR3

VSR3和VSR1的配置大抵相同,直接上配置。

# ip vpn-instance vpna route-distinguisher 1:1 # address-family ipv4 vpn-target 2:2 import-extcommunity vpn-target 2:2 export-extcommunity # address-family evpn vpn-target 1:1 import-extcommunity vpn-target 1:1 export-extcommunity # l2vpn enable # vsi vpna gateway vsi-interface 1 vxlan 10 evpn encapsulation vxlan route-distinguisher auto vpn-target auto export-extcommunity vpn-target auto import-extcommunity # vsi vpnb gateway vsi-interface 2 vxlan 20 evpn encapsulation vxlan route-distinguisher auto vpn-target auto export-extcommunity vpn-target auto import-extcommunity # interface GigabitEthernet3/0 xconnect vsi vpna # interface GigabitEthernet4/0 xconnect vsi vpnb # interface Vsi-interface1 ip binding vpn-instance vpna ip address 192.168.2.1 255.255.255.0 mac-address 0001-0001-0001 local-proxy-arp enable distributed-gateway local # interface Vsi-interface2 ip binding vpn-instance vpna ip address 192.168.10.1 255.255.255.0 mac-address 0002-0002-0002 local-proxy-arp enable distributed-gateway local # interface Vsi-interface3 ip binding vpn-instance vpna l3-vni 1000 # bgp 1234 peer 4.4.4.4 as-number 1234 peer 4.4.4.4 connect-interface LoopBack0 # address-family l2vpn evpn peer 4.4.4.4 enable

5、配置VSR4

配置VSR-RR作为RR路由反射器与其他路由器建立BGP连接, 配置发布EVPN路由,并关闭BGP EVPN路由的VPN-Target过滤功能。无需调整配置。

验证配置

1、验证分布式EVPN网关设备VSR1

查看EVPN自动发现的邻居信息,包含各VSI的IMET路由和MAC/IP路由。

display evpn auto-discovery imet dis evpn auto-discovery macip-prefix

查看EVPN的ARP信息和MAC地址信息。

dis evpn route arp dis evpn route mac

这个地方我有点慌,因为和官网介绍的结果不一样,不过我感觉应该是官网整理的时候出问题了,VSI1接口下面怎么会有VSI2接口的ARP信息呢?应该分开写才对啊!

查看EVPN路由表信息,因为绑定了VPN实例,所以记得带实例查看。

display evpn routing-table vpn-instance vpna

查看Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于UP状态。

display interface tunnel

查看VSI虚接口信息,可以看到VSI虚接口处于UP状态。

display interface vsi-interface

查看VSI的详细信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。多了一个自动创建的VSI接口。

display l2vpn vsi verbose

查看VSI的MAC地址表项信息,可以看到已学习到的MAC地址信息。

对比组网拓扑可知:000c-29cb-2b41和000c-2949-0032为VSR1连接的虚拟机,Link ID为0,表示是本地直连的;对应的VSI name表示从哪个VSI上来的,此处分别对应vpna和vpnb。000c-2999-235a和000c-290b-6ea7为VSR3连接的虚拟机,Link ID为Tunnel1,结合tunnel接口信息,可以知道是从VSR3学习到的;对应的VSI name表示从哪个VSI上来的,此处分别对应vpna和vpnb。

对比看一下ARP表项信息,可以看到关键信息大抵相同。很遗憾,看不到另外的主机,也ping不通。

查看BGP l2vpn对等体信息。

display bgp l2vpn evpn

VSR1设备上的VPN实例vpna的路由信息如下:

查看FIB表项信息,可以看到已学习到了虚拟机的转发表项信息,都要加VPN实例了。

2、验证主机

对比组网拓扑,在VM4这台主机(192.168.10.188)上ping测VM1(192.168.2.160)和VM2(192.168.10.110),结果如下:

对比上个集中式EVPN网关实验,看一下tracert路径效果,是不是很神奇,10网段互访,中间出现了另一个网关的IP地址。

ping网关和ISP-VFW公网设备测试。

可以看到,四台虚拟机之间可以互访,并且都可以访问到网关;但是,网关之外的ISP-VFW设备访问异常。

debug测试,VFW-ISP收发报文正常。

而VSR2上就不正常了,他竟然把我的报文给丢了。这是不是BUG,我就说不清楚了,报文出去的时候好好的,回不去了。

总结

1、为了避免广播发送的ARP请求报文过多占用核心网络带宽,VTEP从本地站点、VXLAN隧道接收到ARP请求和ARP应答报文后,根据该报文在本地建立ARP泛洪抑制表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据ARP泛洪抑制表项进行代答。如果没有对应的表项,则将ARP请求泛洪到核心网。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。

2、同网段的两台主机进行tracert,路径中间出现了另一个网关的IP地址,不过应该不是问题,只是显示一个IP,设备确实是经过了。

3、RT是一种BGP扩展团体属性,用于控制EVPN路由的发布与接收。也就是说, RT决定了本端的EVPN路由可以被哪些对端所接收,以及本端是否接收对端发来的EVPN路由。RT分为ERT(Export RT,本端发送EVPN路由时,携带的RT属性设置为ERT)和IRT(Import RT,本端设置接收的对端的EVPN路由属性)。本端在收到对端的EVPN路由时,将路由中携带的ERT与本端的IRT进行比较,只有两者相等时才接收该路由,否则丢弃该路由。