EVPN技术学习
1. 前言
EVPN全称是Ethernet Virtual Private Network,由RFC7432(BGP MPLS-Based Ethernet VPN)定义。从名字上看,这是一个基于BGP和MPLS的L2 VPN。虽然这是一个2015年才有编号的RFC,但当它还是草案时,很多厂商已经开始实现并使用EVPN。
近些年,数据中心数量和规模呈现爆炸式增长态势。数据中心业务日益增加,用户需求不断提高,随之而来的问题则是数据中心的功能日趋复杂,运维管理难度越来越高。出于数据灾备、企业分支建立和资源利用率提升等方面的综合考虑,一个大型企业的信息化系统可能部署于多个物理地域。于是,如何将这些数据中心站点互联起来,并能达到降低数据中心的管理成本,灵活扩充数据中心业务等就成为企业数据中心的重要任务。
在EVPN出现之前, 用于数据中心互联的L2 VPN标准在很早前就提出过,这包括:
RFC4447提出基于LDP的VPWS(Virtual Private Wire Service)
RFC4762提出基于LDP的VPLS(Virtual Private LAN Service)
RFC4761提出基于BGP的VPLS
VPLS技术主要的局限性在于要求站点间必须是MPLS网络。它的配置较为复杂,维护工作量较大。尤其是当采用扩展的LDP作为信令协议时,存在配置上N平方问题,每次扩容新站点都要同时在已有的所有站点PE上新增配置LDP邻居。 此外,VPLS的控制平面是通过泛洪建立的,效率较低,浪费广域网带宽。
现代数据中心建设在以下方面提出了更高要求:
1. 可扩展性:可扩展性主要指在互联站点数、扩展VLAN数和MAC地址容量方面能扩展到一定的规模。比如能支持数百个以上站点互联、上万个VLAN扩展、上百万MAC地址,以满足大规模和超大规模数据中心和海量虚拟机迁移的需要。
2. 高带宽利用率:数据中心之间的广域网带宽资源通常是租用的,需要得到高效利用。数据中心互联设备的冗余部署会导致数据中心间存在多条连接路径,需要将流量均衡地分布在所有可用链路上以提高广域网带宽资源利用率,节省带宽租用成本。
3. 运维简化:数据中心互联方案通常涉及到网络侧的协议部署,传统的部署方式需要在网络侧实现站点全连接配置,导致新增或删除互联站点时已有站点的配置也会受到影响。为简化运维,互联方案需要实现Single-Sided部署,即新增或删除站点时已有站点的配置不受影响,降低运维管理难度。
EVPN是在现有的BGP VPLS(RFC4761)方案基础上,参考了BGP/MPLS L3 VPN(RFC4364)的架构提出的。在SDN架构中,控制和数据时分离的,应用在控制层之上构建。对于EVPN来说,控制层是MP-BGP,而EVPN可以看成是构建在MP-BGP上的应用。所以EVPN不仅仅是一种技术和架构,它也有应用场景的含义。在EVPN架构中,PE之间的MAC/IP地址学习是基于控制平面的,采用MP-BGP协议通告MAC/IP的可达性,其策略控制非常类似于IP VPN。这种基于控制平面的学习能够对MAC/IP的学习过程提供更强的控制能力,因此具有较好的扩展性,并能维护主机或虚拟机群彼此间的隔离性,解决了设备多归属或网络多归属接入时的负载分担问题,改善了网络出现故障时的收敛时间。EVPN定义了一套通用的控制层面,随着EVPN技术的扩展,EVPN也被用来传递IP路由信息、作为VXLAN等Overlay网络技术的控制层、作为数据中心互联的控制层等作用。但数据层面可以使用不同的封装技术,他们的关系如图1所示
图1 EVPN控制层面与转发层面关系
目前业界使用最广泛的EPVN方案为,控制层面为RFC7432协议定义的MP-BGP协议扩展,数据层面则为VXLAN封装转发,本文也基于此种方式所写。
3. EVPN技术实现
3.1 EVPN技术特点
EVPN继承了MP-BGP和VXLAN的优势。具有如下特点:
Ø 简化配置:通过MP-BGP实现VTEP自动发现、VXLAN隧道自动建立、VXLAN隧道与VXLAN自动关联,无需用户手工配置,降低网络部署难度。
Ø 分离控制平面与数据平面:控制平面负责发布路由信息,数据平面负责转发报文,分工明确,易于管理。
Ø 支持多归属:当同一个站点通过多台VTEP接入VXLAN网络时,连接该站点的多条路径均可以进行流量转发,以提高网络带宽利用率。
Ø 支持对称IRB(Integrated Bridging and Routing,集成的桥接和路由):MP-BGP同时发布二层MAC地址和三层路由信息,VTEP既可以进行二层转发,也可以进行三层路由。这样,不仅可以保证流量采用最优路径转发,还可以减少广播流量。
3.2 EVPN网络模型
EVPN通常采用Spine(核心)—Leaf(分支)的分层结构,(见图2)。Leaf层的设备作为VTEP对报文进行EVPN相关处理,Spine层为核心设备,根据报文的目的IP地址转发报文。EVPN网络中的设备属于同一个AS(Autonomous System,自治系统)时,为了避免在所有VTEP之间建立IBGP对等体的复杂配置,可以将核心设备配置为RR(Route Reflector,路由反射器)。此时,RR需要发布、接收EVPN路由,但不需要封装、解封装VXLAN报文。RR的部署可以大大减轻网络的部署难度。
图2 EVPN网络模型
3.3 EVPN概念介绍
EVI:站在整个网络角度,一个EVI就是一个EVPN实例。EVI实例使用VNI标识。VNI相同的实例属于同一个二层广播域。
MAC-VRF:VTEP上一个EVI实例学习到的MAC虚拟路由转发表。类似于IP VPN里面的IP虚拟转发表。
ES:当一个站点通过多条链路接入到EVPN网络时,这些链路形成一个ES。每条链路在对应的VTEP上使用相同的ESI标识。
VTEP:VTEP是一个隧道的端点。在VXLAN网络里面,通常位于网络的边缘。根据VTEP功能,VTEP可以划分为L2 VTEP和GW(网关,下同)两种角色。L2 VTEP是指只支持二层VXLAN转发功能的设备,只能在相同VXLAN内做二层转发。如果要做跨VXLAN或者访问外部IP网络等三层转发,需要VTEP支持GW(VXLAN GW或IP GW)功能,此时VTEP也称为网关Gateway。EVPN网络根据GW的部署方式,可以分为集中式网关和分布式网关两种组网形态。如图2,如果是集中式网关,则VTEP为L2 VTEP,RR同时为GW。如果是分布式网关,则VTEP为GW,RR为反射器。
3.4 EVPN控制层面工作机制
3.4.1 BGP EVPN邻居建立
BGP新增EVPN子地址族用于协商BGP EVPN邻居。在Spine-leaf组网中可以分IBGP和EBGP。
1. IBGP组网,如图3所示
图3 IBGP组网
部署IBGP时,为简化全连接配置,可以引入RR反射器。所有Leaf都只和RR建立BGP对等体关系。RR发现并接收VTEP发起的BGP连接后形成Client列表,将从某个VTEP收到的路由反射给其他所有的VTEP。RR的部署位置可以是Spine,也可以是Leaf,还可以是独立出来的设备,如图4所示
图4 RR组网
2. EBGP组网,如图5所示
图5 EBGP组网
部署EBGP时,则不需要RR。BGP会自动将从EBGP邻居收到的EVPN消息发送给其他EBGP和IBGP邻居,此时Spine相当于RR功能。
3.4.2 BGP EVPN消息类型
为了支持EVPN,BGP EVPN地址族新增了5种EVPN NLRI(Network Layer Reachability Information,网络层可达性信息),即EVPN路由:
l Ethernet Auto-discovery Route(RT-1):用来在站点多归属组网中通告ES信息,以便实现水平分割、Aliasing和主备备份等特性。
l MAC/IP Advertisement Route(RT-2):用来通告MAC/IP地址信息。
l Inclusive Multicast Ethernet Tag Route(RT-3):用来通告VTEP及其所属VXLAN,以实现VTEP自动发现、自动建立VXLAN隧道、自动创建VXLAN广播表等。
l Ethernet Segment Route(RT-4):用来通告ES及其连接的VTEP信息,以便发现连接同一ES的VTEP冗余组其他成员,以及在冗余组之间选举指定转发器DF等。
l IP Prefix Advertisement Route(RT-5):IP前缀路由,用来以IP前缀的形式通告引入的外部路由。
EVPN路由中包含RD(Route Distinguisher,路由标识符)字段,用来区分不同VXLAN的EVPN路由,以免EVPN路由冲突。在发布EVPN路由时,需要携带VPN Target扩展团体属性(也称为Route Target),通过VPN Target属性来控制EVPN路由信息的发布与接收。VPN target属性分为以下两种,每一种都可以包括多个属性值:
Export target属性:本地VTEP在通过BGP的Update消息将EVPN路由发送给远端VTEP时,将Update消息中携带的VPN target属性设置为Export target。
Import target属性:VTEP收到其它VTEP发布的Update消息时,将消息中携带的VPN target属性与本地配置的Import target属性进行比较,只有二者中存在相同的属性值时,才会接收该消息中的EVPN路由。
3.4.3 VXLAN隧道建立
VXLAN是一种“MAC in UDP”技术, 是在IP网络基础之上构建的一种Overlay架构。
EVPN通过RT-3路由,完成VTEP站点的自动发现。每个站点都通告自己的VNI信息,这样,每个VTEP设备都有全网的VXLAN信息以及VXLAN和下一跳的关系。VTEP设备会和那些跟自己有相同VXLAN的下一跳自动建立VXLAN隧道,并将此VXLAN隧道跟这些相同的VXLAN关联。
以上说的是二层广播域隧道的建立过程。在EVPN网络中,除了二层转发,也会出现三层转发的场景。在分布式网关里面,当一个网关接收到远端网关通告的RT-2或者RT-5路由时,并且此路由在VRF的RT策略中检查通过可以下发时,EVPN也会尝试跟对端建立VXLAN隧道。此隧道用于三层转发时进行外层加封装用。如果某个VTEP跟同一个对端VTEP既建立了二层隧道,又建立了三层隧道,此时隧道可以共用,即两个VTEP之间最多只会建立一条VXLAN隧道。
通过上述过程,EVPN在控制层面就将转发通路先打通了,类似于交通网络中高速公路的建立,后续的报文转发过程就如同是高速公路上跑的汽车。
3.4.4 MAC/IP路由通告与学习
EVPN在控制层面学习MAC和ARP。在EVPN里面,站点的MAC和ARP信息是通过EVPN的MAC/IP路由通告的,即Route Type 2。因此,在EVPN网络里面,不需要将ARP请求泛洪到网络中。本地MAC和ARP的学习仍然需要靠VTEP在数据层面完成,本地MAC的学习可以靠以太报文的源MAC学习获得,而ARP可以靠ARP或免费ARP等报文学习获得。本地学到MAC和ARP后,EVPN控制面通过BGP邻居分发到其他VTEP设备,形成EVPN 2类路由。
远端VTEP收到2类路由时,会将MAC下发到二层转发表里,将IP下发到三层转发表里。但VTEP可以选择是否携带IP到对端。实际使用中,为了抑制ARP广播请求泛洪,通常是需要携带IP的。这样,可以让对端VTEP学习到本端VTEP下挂的主机ARP,从而使得远端VTEP可以直接代答回应远端主机发起的ARP请求。如果只是纯二层网络,可以只携带MAC。EVPN软件可以控制不通告只包含MAC的消息,因为远端可以从ARP消息里面学习MAC。
在集中式网关里面,二层VTEP需要将学习到的ARP通告给网关,在GW上需要下发ARP,并产生32位直连路由。此路由的下一跳就是路由本身。ARP里的MAC为主机或虚机的真实MAC。从GW往VTEP的报文转发时,在VTEP上做二层MAC转发。
而在分布式网关里,每一个分布式网关都会将学习到的ARP通告给其他网关。在远端VTEP上,2类路由里面的IP会下发到VRF表形成32位主机路由,此路由的下一跳为通告此路由的VTEP设备。报文转发时,从网关发出的报文内层MAC为对端VTEP设备的MAC,因此报文在对端VTEP上做三层转发。
3.4.5 外部路由通告与学习
EVPN网络构建的是一个私有网络,它也可以通过接入外网,实现跟外网通信的目的。通常在EVPN的Spine-Leaf架构中,会有1台或多台专门接入外网的设备,我们把它叫做Border Leaf。Border Leaf通过普通接口从外网学习路由,并将这些路由引入EVPN地址族,形成EVPN 5类路由,进而通告到EVPN网络中,使其他VTEP也能学到这些外部路由。这些路由的下一跳均指向通告此路由的Border Leaf。当网络中存在多台Border Leaf时,多台Border Leaf都可以通告此路由,这样在远端还可以形成等价路由,以达到网络负载分担的目的。
3.4.6 虚机迁移
MAC地址迁移是指虚拟机或主机从其接入的VTEP或网关设备迁到数据中心网络的另一台VTEP或网关下。迁移后的VTEP或网关会重新感知到主机/虚拟机上线,继而重新通告该MAC/IP路由,此路由跟迁移前通告的MAC/IP路由的区别在于BGP update消息中携带了一种新的扩展团体——MAC Mobility扩展团体。此扩展团体里面包含一个系列号。每次迁移,迁移序列号将递增,远端在收到一个比自己系列号更大的消息时,更新自己的MAC/IP路由消息,下一跳指向迁移后通告此路由的VTEP或GW。原VTEP在收到此路由更新后,撤销之前通告的路由。
3.4.7 ARP代答
为了避免广播发送的ARP请求报文占用核心网络带宽,VTEP根据从BGP收到的EVPN RT-2类路由在本地建立ARP缓存表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据本地存储的ARP表项进行代答回应,虚机本身记录远端虚机真实ARP。如果VTEP设备没有对应的表项,则将该ARP请求泛洪到该网段对应的VXLAN隧道。具体过程如图6所示:
图6 ARP代答流程
3.4.8 ARP代理
ARP代理方式下,当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,直接由网关进行回复,然后由网关查询远端虚机路由进行转发。此时虚机本身纪录的远端虚机ARP表项为网关ARP。如果网关设备没有远端虚机主机路由,则会将此ARP请求转发到该网段对应的VXLAN隧道。具体过程如图7所示:
图7 ARP代理流程
3.5 EVPN数据层面工作机制
3.5.1 转发二层流量
EVPN通过BGP协议通告本地学到的MAC,远端根据BGP收到的MAC路由消息,将MAC下到远端Tunnel上,形成单播MAC表项。VTEP接收到二层数据帧后,判断其所属的VSI,根据目的MAC地址查找该VSI的MAC地址表,通过表项的出接口转发该数据帧。如果出接口为本地接口,则VTEP直接通过该接口转发数据帧;如果出接口为Tunnel接口,则VTEP根据Tunnel接口为数据帧添加VXLAN封装后,通过VXLAN隧道将其转发给远端VTEP。
除了单播流量转发,EVPN网络中还需要转发BUM流量。目前EVPN转发BUM可以使用头端复制和核心复制两种方式。
1. 头端复制
VTEP接收到本地虚拟机发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,通过该VXLAN内除接收接口外的所有本地接口和VXLAN隧道转发该数据帧。通过VXLAN隧道转发数据帧时,需要为其封装VXLAN头、UDP头和IP头,将泛洪流量封装在多个单播报文中,发送到VXLAN内的所有远端VTEP。当然,VXLAN的头端复制列表是EVPN自动发现并创建的,不需要手工干预。
2. 核心复制
数据中心网络中需要通过IP核心网络进行二层互联的站点较多时,采用核心复制方式可以节省泛洪流量对核心网络带宽资源的占用,在核心复制方式下,同一个VXLAN内的所有VTEP都加入同一个组播组,利用组播路由协议(如PIM)在IP核心网上为该组播组建立组播转发表项。VTEP接收到泛洪流量后,不仅在本地站点内泛洪,还会为其封装组播目的IP地址,封装后的报文根据已建立的组播转发表项转发到远端VTEP。此方式需要网络核心设备支持三层组播路由协议。
3.5.2 集中式网关转发
在EVPN集中式网关组网里面(如图8所示),Leaf所在的VTEP将本地学到的ARP通过EVPN通告给Spine所在的Gateway。GW根据ARP产生32位直连路由。转发北向南流量时,GW查找ARP,将报文内层MAC封装为虚机真实MAC,再加上VXLAN封装发送给VTEP。VTEP端解封装后,根据VXLAN-ID查找MAC转发发送给VM。南向北流量,VM发给VTEP的报文的目的MAC为GW网关MAC。VTEP查找网关MAC表项,封装VXLAN将报文发送给GW。GW解封装后再根据内层报文IP做普通IP转发。此时GW充当的是IP网关角色。
对于东西向流量,如果是同VXLAN转发,在VTEP上仍然是二层MAC转发。如果是跨VXLAN转发,此时需要经过GW一次路由才能转给目的VXLAN。此时GW充当的是VXLAN网关角色。GW所在的Spine此时不仅仅是BGP的RR,还需要是BGP的路由接收者,上面需要有VXLAN的相关配置。
图8 集中式网关转发
3.5.3 分布式网关转发
在EVPN网络中,VTEP既可以做二层Bridge,也可以做三层Router,因此称为集成桥接和路由,即IRB(Integrated Routing and Bridging)。在分布式网关里面,IRB转发可以分为对称IRB和非对称IRB两种。对称IRB转发引入了以下2个概念:
l L3VNI(Layer 3 VNI): 是指在分布式网关之间通过VXLAN隧道转发流量时,属于同一租户(VRF)的流量通过L3VNI来标识。L3VNI唯一关联一个VPN实例,通过VPN实例确保不同租户之间的业务隔离。
l RouteMAC:网关的RouteMAC地址,是指每个分布式网关拥有的唯一一个用来标识本机的本地MAC地址,此MAC用于在网关之间通过VXLAN隧道转发三层流量。报文在网关之间转发时,报文的内层MAC地址为出口网关的RouteMAC地址。
1. 非对称IRB
所谓非对称IRB(见图9),是指在Ingress入口网关,需要同时做Layer-2 bridging和Layer-3 routing功能,而在Egress出口网关,只需要做Layer-2 bridging功能。因此是不对称的。如下图所示,非对称IRB时,在Leaf1先根据虚机所在的VNI A做三层转发,查找路由,出口为VNI B。直接将VM2目的虚机的MAC封装为内层MAC。远端Leaf2解封装后由于目的MAC不是本机MAC,查找MAC表做二层转发。此种模式下,要求每一台分布式网关需要配置EVPN网络内所有VNI的VSI信息,且要求每一台分布式网关维护本租户内所有主机的ARP。
图9 非对称IRB
2. 对称IRB
相比于非对称IRB,对称IRB(见图10),是指在Ingress入口网关和Egress出口网关,都只做Layer-3 routing功能(同网段则只做briding功能)。因此是对称的。如下图所示,在Leaf1上查找路由,此路由的下一跳指向Leaf2,下一跳对应的MAC为Leaf2的RouteMAC,报文转发时,内层MAC为RouteMAC,VNI为L3VNI。报文到Leaf2后,根据L3VNI获取租户VRF信息,报文在VRF里再次查找路由,通过查找本地ARP表项,将报文往虚机侧发出来。此种模式下,每一台分布式网关只需要配置其下主机所在VNI的VSI信息和所在VRF的L3 VNI信息,且不需要维护本租户内的所有主机的ARP,只需要维护少量的其他分布式网关对应的MAC即可。
图10 对称IRB
4. 总结
EVPN技术的出现和发展给数据中心网络带来了很多惊喜,已经成为新一代数据中心网络建设的必选内容。同时,由于EVPN技术与SDN架构的无缝整合,也再次掀起了SDN网络建设的新高潮,使得大型数据中心网络逐步由传统架构迈向SDN架构。目前,EVPN协议已经标准化,各家设备厂商基于EVPN协议的对接与互通已经实现,相信在未来的数据中心网络建设中,EVPN必将起到更大的作用。