当租户的物理站点分散在不同位置时,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 vpnavxlan 10evpn encapsulation vxlanroute-distinguisher autovpn-target auto export-extcommunityvpn-target auto import-extcommunity在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
同时创建VXLAN 20。
#vsi vpnbvxlan 20evpn encapsulation vxlanroute-distinguisher autovpn-target auto export-extcommunityvpn-target auto import-extcommunity配置L3VNI的RD和RT。
#ip vpn-instance vpnaroute-distinguisher 1:1#address-family ipv4vpn-target 2:2 import-extcommunityvpn-target 2:2 export-extcommunity#address-family evpnvpn-target 1:1 import-extcommunityvpn-target 1:1 export-extcommunity配置VSI虚接口VSI-interface1和VSI-interface2。
#interface Vsi-interface1ip binding vpn-instance vpnaip address 192.168.2.1 255.255.255.0mac-address 0001-0001-0001local-proxy-arp enabledistributed-gateway local#interface Vsi-interface2ip binding vpn-instance vpnaip address 192.168.10.1 255.255.255.0mac-address 0002-0002-0002local-proxy-arp enabledistributed-gateway local创建VSI虚接口VSI-interface3,在该接口上配置VPN实例vpna对应的L3VNI为1000。
#interface Vsi-interface3ip binding vpn-instance vpnal3-vni 1000配置VXLAN 10所在的VSI实例和接口VSI-interface1关联,配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
#vsi vpnagateway vsi-interface 1#vsi vpnbgateway vsi-interface 23、配置VSR2开启L2VPN能力,并关闭远端MAC地址和远端ARP自动学习功能。
删除VSI虚接口VSI-interface1和VSI-interface2,移除VSI实例vpna和vpnb相关配置。
配置L3 VNI的RD和RT。
#ip vpn-instance vpnaroute-distinguisher 1:1#address-family ipv4vpn-target 2:2 import-extcommunityvpn-target 2:2 export-extcommunity#address-family evpnvpn-target 1:1 import-extcommunityvpn-target 1:1 export-extcommunity创建VSI虚接口VSI-interface3,在该接口上配置VPN实例vpna对应的L3VNI为1000。
#interface Vsi-interface3ip binding vpn-instance vpnal3-vni 1000配置连接广域网的接口GigabitEthernet3/0与VPN实例vpna关联。
#interface GigabitEthernet3/0ip binding vpn-instance vpnaip address 22.1.1.1 255.255.255.0nat 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 1234peer 4.4.4.4 as-number 1234peer 4.4.4.4 connect-interface LoopBack0#address-family l2vpn evpnpeer 4.4.4.4 enable#ip vpn-instance vpna#address-family ipv4 unicastdefault-route importedimport-route static4、配置VSR3VSR3和VSR1的配置大抵相同,直接上配置。
#ip vpn-instance vpnaroute-distinguisher 1:1#address-family ipv4vpn-target 2:2 import-extcommunityvpn-target 2:2 export-extcommunity#address-family evpnvpn-target 1:1 import-extcommunityvpn-target 1:1 export-extcommunity#l2vpn enable#vsi vpnagateway vsi-interface 1vxlan 10evpn encapsulation vxlanroute-distinguisher autovpn-target auto export-extcommunityvpn-target auto import-extcommunity#vsi vpnbgateway vsi-interface 2vxlan 20evpn encapsulation vxlanroute-distinguisher autovpn-target auto export-extcommunityvpn-target auto import-extcommunity#interface GigabitEthernet3/0xconnect vsi vpna#interface GigabitEthernet4/0xconnect vsi vpnb#interface Vsi-interface1ip binding vpn-instance vpnaip address 192.168.2.1 255.255.255.0mac-address 0001-0001-0001local-proxy-arp enabledistributed-gateway local#interface Vsi-interface2ip binding vpn-instance vpnaip address 192.168.10.1 255.255.255.0mac-address 0002-0002-0002local-proxy-arp enabledistributed-gateway local#interface Vsi-interface3ip binding vpn-instance vpnal3-vni 1000#bgp 1234peer 4.4.4.4 as-number 1234peer 4.4.4.4 connect-interface LoopBack0#address-family l2vpn evpnpeer 4.4.4.4 enable5、配置VSR4配置VSR-RR作为RR路由反射器与其他路由器建立BGP连接, 配置发布EVPN路由,并关闭BGP EVPN路由的VPN-Target过滤功能。
无需调整配置。
验证配置1、验证分布式EVPN网关设备VSR1查看EVPN自动发现的邻居信息,包含各VSI的IMET路由和MAC/IP路由。
display evpn auto-discovery imetdis evpn auto-discovery macip-prefix查看EVPN的ARP信息和MAC地址信息。
dis evpn route arpdis 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 evpnVSR1设备上的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进行比较,只有两者相等时才接收该路由,否则丢弃该路由。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)