选择区域语言: EN CN HK

EVPN技术白皮书

目 录


1 概述

EVPN(Ethernet Virtual Private Network)是一种构建数据中心二层网络互联技术。EVPN通过扩展MP-BGP协议来传递网络节点的MAC和ARP等信息,通过生成的MAC表项和路由表项进行二/三层报文转发,以实现数据中心互联的目的。

1.1 产生背景

随着数据中心业务日益增加,用户需求不断提高,数据中心的规模和功能日趋复杂,管理难度也越来越高。出于灾备,企业分支机构的多地部署,提升资源利用率等方面的考虑,企业可能在不同的物理站点部署自己的数据中心网络。于是,如何将这些数据中心站点互联起来,并能达到降低数据中心的管理成本,灵活扩充数据中心业务等就成为企业数据中心的重要任务。

VPLS(Virtual Private LAN Service,虚拟专用局域网业务)是早期出现的一种用户数据中心互联的MPLS VPN技术。VPLS作为一种标准化程度较好、通过试验验证并广泛部署的二层以太网VPN技术,能为企业用户提供多点到多点的广域以太网服务。然而,随着数据中心内服务器数量的大量增加以及虚拟化技术的应用(VM的产生使得二层域内MAC数量成千上万),VPLS互联所带来的问题也渐渐变得越来越突出,越来越不能满足建立现代超大型数据中心的需要,现代数据中心互联在以下方面提出了更高要求:

1、 可扩展性:可扩展性主要指在互联站点数、扩展VLAN数和MAC地址容量方面能扩展到一定的规模。比如能支持数百个以上站点互联、成千上万个VLAN扩展、上百万MAC地址,以满足大规模和超大规模数据中心和海量虚拟机迁移的需要。

2、 高带宽利用率:数据中心之间的广域网带宽资源通常是租用的,需要得到高效利用。数据中心互联设备的冗余部署会导致数据中心间存在多条连接路径,需要将流量均衡地分布在所有可用链路上以提高广域网带宽资源利用率,节省带宽租用成本。

3、 运维简化:数据中心互联方案通常涉及到网络侧的协议部署,传统的部署方式需要在网络侧实现站点全连接配置,导致新增或删除互联站点时已有站点的配置也会受到影响。为简化运维,互联方案需要实现Single-Sided部署,即新增或删除站点时已有站点的配置不受影响,降低运维管理难度。

EVPN正是在以上背景下出现的一种基于Overlay技术的数据中心互连技术。在EVPN中,PE之间的MAC/IP地址学习是基于控制平面的,采用MP-BGP协议通告MAC/IP的可达性,其策略控制非常类似于IP VPN。这种基于控制平面的学习能够对MAC/IP的学习过程提供更强的控制能力,因此具有较好的扩展性,并能维护主机或虚拟机群彼此间的隔离性,解决了设备多归属或网络多归属接入时的负载分担问题,改善了网络出现故障时的收敛时间。当前EVPN有正式的RFC以及相关草案,基于MPLS架构的已经有RFC7432。EVPN定义了一套通用的控制面,但数据面可以使用不同的封装技术,他们的关系如下图:

DataPlanes

图1 EVPN协议框架

本文档描述的EVPN控制面为RFC7432协议定义的一般过程,数据面则为VXLAN封装。

1.2 EVPN特点

EVPN继承了MP-BGP和VXLAN的优势。具有如下特点:

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

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

Ø 支持多归属:当同一个站点通过多台VTEP接入VXLAN网络时,连接该站点的多条路径均可以进行流量转发,以提高网络带宽利用率。

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

2 技术实现

2.1 EVPN网络模型

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

图2 EVPN网络模型图

几个概念介绍:

EVI:站在整个网络角度,一个EVI就是一个EVPN实例。EVI实例使用VNI标识。VNI相同的实例属于同一个二层广播域。

MAC-VRF:VTEP上一个EVI实例学习到的MAC虚拟路由转发表。类似于IP VPN里面的IP虚拟转发表。

ES:当一个站点通过多条链路接入到EVPN网络时,这些链路形成一个ES。每条链路在对应的VTEP上使用相同的ESI标识。

VETP:VTEP是一个隧道的端点。在VXLAN网络里面,通常位于网络的边缘。根据VTEP功能,VTEP可以划分为L2 VTEP和GW两种角色。L2 VTEP是指只支持二层VXLAN转发功能的设备。只能在相同VXLAN内做二层转发。如果要做跨VXLAN或者访问外部IP网络等三层转发,需要VTEP支持GW(VXLAN GW或IP GW)功能。此时VTEP也称为网关Gateway。EVPN网络根据GW的部署方式,可以分为集中式网关和分布式网关两种组网形态。如上图,如果是集中式网关,则VTEP为L2 VTEP,RR同时为GW。如果是分布式网关,则VTEP为GW,RR为反射器。

2.2 EVPN控制平面工作机制

2.2.1 BGP EVPN邻居建立

1. iBGP邻居

BGP新增evpn子地址族用于协商bgp evpn邻居。AFI=25, SAFI=70

在Spine-leaf组网里,可以分为iBGP和eBGP。

图3 EVPN iBGP邻居组网

部署iBGP时,为简化全连接配置,可以引入RR反射器。所有Leaf都只和RR建立BGP对等体关系。RR发现并接收VTEP发起的BGP连接后形成Client列表,将从某个VTEP收到的路由反射给其他所有的VTEP。RR的部署位置可以是Spine,也可以是Leaf,还可以是独立出来的设备,如下图:

图4 EVPN iBGP RR部署

2. eBGP邻居

部署eBGP时,则不需要RR。BGP会自动将从eBGP邻居收到的EVPN消息发送给其他eBGP和iBGP邻居,此时Spine相当于RR功能。

图5 EVPN eBGP邻居组网

2.2.2 BGP EVPN消息类型

为了支持EVPN,BGP EVPN地址族新增了5种EVPN NLRI(Network Layer Reachability Information,网络层可达性信息),即EVPN路由:

Ø Ethernet Auto-discovery Route(RT-1):用来在站点多归属组网中通告ES信息,以便实现水平分割、Aliasing和主备备份等特性。

Ø MAC/IP Advertisement Route(RT-2):用来通告MAC/IP地址信息。

Ø Inclusive Multicast Ethernet Tag Route(RT-3):用来通告VTEP及其所属VXLAN,以实现VTEP自动发现、自动建立VXLAN隧道、自动创建VXLAN广播表等。

Ø Ethernet Segment Route(RT-4):用来通告ES及其连接的VTEP信息,以便发现连接同一ES的VTEP冗余组其他成员,以及在冗余组之间选举指定转发器DF等。

Ø 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路由。

2.2.3 VXLAN隧道及BUM广播表建立

VXLAN是一种”MAC in UDP”技术, 是在IP网络基础之上构建的一种Overlay架构。在IP网络上传输时,RFC定义了几种组播技术,例如Ingress Replication、RSVP-TE P2MP LSP、mLDP P2MP、PIM-SSM、PIM-SM、BIDIR-PIM等。 目前EVPN使用的是Ingress Replication,即头端复制。所谓头端复制,就是在VXLAN转发实体里面存在一个需要复制到的远端PE设备隧道列表,此列表叫做BUM广播表。BUM广播表的建立是依靠EVPN的第3类路由,即集成多播路由建立的。此路由也用于VTEP站点的自动发现。通告的信息如下:

·Update Message(RT-3)

--Path attribute

--Extended_communities

+ PMSI Tunnel attribute(Ingress Replication)

-- MP_REACH_NLRI

-Network layer reachability information

Route Type(1 octet): Inclusive Multicast Route

Length (1 octet)

Route Type Specific:

RD(8 octets)

Ethernet TagID(4 octets)(VNI)

IP address length(1 octets)

Originating Router’s IP Address(4 or 16 octets)

每个站点都通告自己的VNI信息,这样,每个VTEP设备都有全网的VXLAN信息以及VXLAN和下一跳的关系。VTEP设备会和那些跟自己有相同VXLAN的下一跳自动建立VXLAN隧道,并将此VXLAN隧道跟这些相同的VXLAN关联。于是,对于每个VXLAN而言,所有这些建立并关联的VXLAN隧道就形成BUM广播表。

以上说的是二层广播域隧道的建立过程。在EVPN网络中,除了二层转发,在后面的章节中,还可以看到,也存在三层转发的场景。在分布式网关里面,当一个网关接收到远端网关通告的RT-2或者RT-5路由时,并且此路由在VRF的RT策略中检查通过可以下发时,EVPN也会尝试跟对端建立VXLAN隧道。此隧道用于三层转发时进行外层加封装用。如果某个VTEP跟同一个对端既建立了二层隧道,又可以建立三层隧道,此时隧道可以共用,即两个VTEP之间最多只会建立一条VXLAN隧道。

通过上述过程,EVPN在控制面就将转发通路先打通了,类似于交通网络中的高速公路,当然,这一切过程都是自动完成的。后续的报文转发过程就如同是高速公路上跑的汽车。

2.2.4 MAC/IP路由通告与学习

EVPN在控制面学习MAC和ARP。在EVPN里面,站点的MAC和ARP信息是通过EVPN的MAC/IP路由通告的,即Route Type 2。因此,在EVPN网络里面,不需要将ARP请求泛洪到网络中。

图6 EVPN MAC/IP路由通告

本地MAC和ARP的学习仍然需要靠VTEP在数据层面完成,本地MAC的学习可以靠以太报文的源MAC学习获得。而ARP可以靠ARP或免费ARP等报文学习获得。本地学到MAC和ARP后,EVPN控制面通过BGP邻居分发到其他VTEP设备,形成EVPN 2类路由,此路由包含以下信息:

·Update Message(RT-2)

--Path attribute

--Extended_communities

-- MP_REACH_NLRI

-Network layer reachability information

Route Type(1 octet): MAC/IP Advertisement Route

Length (1 octet)

Route Type Specific:

RD(8 octets)

Ethernet Segment Identified(10 octets)

Ethernet TagID(4 octets)

MAC address length(1 octet)

MAC address(6 octets)

IP address length(1 octets)

IP address(0, 4 or 16 octets)

L2-VNI(3 octets)

L3-VNI(0 or 3 octets)

远端VTEP收到2类路由时,会将MAC下发到二层转发表里,将IP下发到三层转发表里。但VTEP可以选择是否携带IP到对端。在后面的章节可以看到,为了抑制ARP广播请求到网络中,通常是需要携带IP的。这样,可以让对端VTEP学习到本端VTEP下挂的主机ARP,从而使得远端VTEP可以直接代答回应远端主机发起的ARP请求。如果只是纯二层网络,可以只携带MAC。H3C 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上做三层转发。

2.2.5 外部路由通告与学习

EVPN网络构建的是一个私有网络,它也可以通过接入外网,实现跟外网通信的目的。通常在EVPN的Spine-Leaf架构中,会有1台或多台专门接入外网的设备,我们把它叫做Board Leaf。Board Leaf通过普通接口跟外网建立普通路由协议,学习路由,然后在Board Leaf上EVPN可以引入这些外部路由,形成EVPN 5类路由,进而通告到EVPN网络中,使其他VTEP也能学到这些外部路由。这些路由的下一跳均指向通告此路由的Board Leaf。当网络中存在多台Board Leaf时,多台Board Leaf都可以通告此路由,这样在远端还可以形成等价路由,以达到网络负载分担的目的。

图7 EVPN 外部路由学习

5类路由的信息主要有以下一些:

·Update Message(RT-5)

--Path attribute

--Extended_communities

-- MP_REACH_NLRI

-Network layer reachability information

Route Type(1 octet): IP Prefix Route

Length (1 octet)

Route Type Specific:

RD(8 octets)

Ethernet Segment Identified(10 octets)

Ethernet TagID(4 octets)

IP Prefix length(1 octets)

IP Prefix(4 or 16 octets)

GW IP address(4 or 16 octets)

L3-VNI(3 octets)

2.2.6 VM迁移

MAC地址迁移是指虚拟机或主机从其介入的VTEP或网关设备迁到数据中心网络的另一台VTEP或网关下。新迁移到的VTEP或网关会重新感知到主机/虚拟机上线,会重新通告该MAC/IP路由,此路由跟迁移前通告的MAC/IP路由的区别在于在BGP update消息中携带了一种新的扩展团体:MAC Mobility扩展团体。此扩展团体里面包含一个系列号。每次迁移,迁移序列号将递增,远端在收到一个比自己系列号更大的消息时,更新自己的MAC/IP路由消息,下一跳指向迁移后通告此路由的VTEP或GW。原VTEP在收到此路由更新后,撤销之前通告的路由。

2.2.7 ARP抑制

为了避免广播发送的ARP请求报文占用核心网络带宽,VTEP根据从BGP收到的EVPN 2类路由在本地建立ARP缓存表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据本地存储的ARP表项进行代理回应。如果没有对应的表项,则将ARP请求泛洪到核心网。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。

图8 EVPN ARP抑制

2.3 EVPN数据面工作机制

2.3.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。此方式需要网络核心设备支持三层组播路由协议。

2.3.2 集中式网关转发

在EVPN集中式网关组网里面,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的相关配置。

图9 集中式网关转发模型

2.3.3 分布式网关对称IRB转发

在EVPN网络中,VTEP既可以做二层Bridge转发功能,也可以做三层Router功能,因此称为集成桥接和路由,即IRB(Integrated Routing and Bridging)。在分布式网关里面,IRB转发可以分为对称IRB和非对称IRB两种。H3C实现的是对称IRB转发模型。对称IRB转发引入了以下2个概念:

Ø L3VNI(Layer 3 VNI): 是指在分布式网关之间通过VXLAN隧道转发流量时,属于同一租户(VRF)的流量通过L3VNI来标识。L3VNI唯一关联一个VPN实例,通过VPN实例确保不同租户之间的业务隔离。

Ø RouteMAC:网关的RouterMAC地址,是指每个分布式网关拥有的唯一一个用来标识本机的本地MAC地址,此MAC用于在网关之间通过VXLAN隧道转发三层流量。报文在网关之间转发时,报文的内层MAC地址为出口网关的RouterMAC地址。

1. 非对称IRB

所谓非对称IRB,是指在Ingress入口网关,需要同时做Layer-2 bridging和Layer-3 routing功能,而在Egress出口网关,只需要做Layer-2 bridging功能。因此是不对称的。如下图所示,非对称IRB时,在Leaf1先根据虚机所在的VNI A做三层转发,查找路由,出口为VNI B。直接将VM2目的虚机的MAC封装为内层MAC。远端Leaf2解封装后由于目的MAC不是本机MAC,查找MAC表做二层转发。此种模式下,要求每一台分布式网关需要配置所有的VNI,包括那些下面没有挂的虚机所在的VNI。且要求每一台分布式网关需要维护本租户内所有主机的ARP。

图10 分布式网关非对称IRB转发

2. 对称IRB

相比于非对称IRB,对称IRB,是指在Ingress入口网关和Egress出口网关,都只做Layer-3 routing功能(同网段则只做briding功能)。因此是对称的。如下图所示,在Leaf1上查找路由,此路由的下一跳指向Leaf2,下一跳对应的MAC为Leaf2的RouteMAC,报文转发时,内层MAC为RouteMAC,VNI为L3VNI。报文到Leaf2后,根据L3VNI获取租户VRF信息,报文在VRF里终结,再次查找路由,通过查找本地ARP表项,将报文往虚机侧发出来。此种模式下,每一台分布式网关只需要配置下面挂的虚机所在的VNI即可,且分布式网关不需要维护本租户内的所有主机或虚机的ARP,只需要维护少量的其他分布式网关对应的ARP即可。

图11 分布式网关对称IRB转发

2.4 EVPN多归属

在EVPN网络中,为了提高链路的带宽利用率,以及增强网络可靠性,通常一个用户的主机(或者虚拟化虚机),或者是一个用户的私有网络,通过多条链路接到EVPN网络中的多台VTEP上。这成为多归属接入。EVPN多归属引入了以下概念:

Ø ES: 当一个站点(设备或者网络)通过多条以太链路多归接入EVPN网络时,这多条以太链路形成一个以太段,即ES。ES使用ESI进行标识。ESI是1个10字节的具有全局意义的ID。

Ø E-Tag: 以太Tag是指在一个EVPN实例里面,用于标识一个特定广播域的VLAN Tag,通常在VLAN非全局映射到VXLAN时使用。

Ø Single-Active模式: 此种模式下,在多归属冗余组成员的那些VTEP中,只有1台VTEP可以允许用来接收从CE侧过来的流量,也可以将流量转发到CE侧。

Ø All-Active模式: 此种模式下,在多归属冗余组成员的那些VTEP中,所有VTEP成员都允许接收CE侧的单播流量,也可以将单播流量转发到CE侧。

Ø DF: 多归属冗余组中只允许一个VTEP转发BUM流量,这个VTEP就成为DF。

在EVPN多归属应用中,新定义了2种路由消息用于发现多归属冗余成员以及下发等价路由,即Route Type 1和4。这两种路由在多归属的以下特性中用到:

1. 主备备份和Aliasing

在站点多归属组网中,冗余备份组中的VTEP都会通过MP-BGP向远端VTEP通告同一ES的信息(Route Type 1,AD per ES路由)。远端VTEP从这些VTEP接收到与该ES对应的MAC地址/ARP信息后,将这些MAC/ARP的下一跳列表中选择一条最优路由转发流量,其他下一跳作为备份路由。以自动实现流量在不同VTEP之间的主备备份。如果只有一个VTEP学习到了MAC /ARP信息并发布给远端VTEP,则远端VTEP不仅添加下一跳为该VTEP,还会添加下一跳为冗余备份组中其他VTEP。这样,流量可以在多个下一跳中实现负载分担,该功能也叫Aliasing功能。

当多归属成员down或者某条多归属链路down时,远端VTEP会收到AD per ES撤销路由,此时可以将所有原先关联此ES的MAC/ARP表项下一跳更新,将down的VTEP从下一跳列表中删除,从而不需要通过路由的一条条撤销来进行收敛,加快了收敛的时间。

2. DF选举以及环路避免

当一个用户站点连接到多台VTEP时,为了避免冗余备份组中的VTEP均发送BUM流量给该站点,需要在冗余备份组中为每个VLAN或每组VLAN选举一个VTEP作为DF(Designated Forwarder,指定转发者),负责将泛洪流量转发给该VLAN或该组VLAN。其他VTEP作为该VLAN或该组VLAN的备份DF,不会向其转发泛洪流量。多归属成员通过发送4类路由(Route Type 4,ES路由),以获得其他多归属成员的IP地址,从而根据一定的算法算出DF和BDF。

多归属单活时环路避免如下:(PE1,PE2)和(PE3,PE4)为两组冗余组。PE1选举为DF,PE2为BDF。PE3为DF,PE4为BDF。单活时需要阻断BDF的ES侧链路。从CE1发出的广播流量,只有PE1会接收。PE2由于为BDF,ES1侧链路被阻塞。PE1将广播流量广播给PE2/PE3/PE4。PE2由于ES1出方向也被阻塞,因此不会将流量发送给ES1。也由于Tunnel的水平分割,PE2不会发送给PE3。PE4由于为BDF,ES2被阻塞不会发送给CE2。因此流量沿着CE1-PE1-PE3-CE2路径发送给CE2。由于BDF链路不能接收流量,因此单活模式下CE1上行口不能为聚合口,如下图:

图12 EVPN多归属单活

多归属多活时环路避免如下:(PE1,PE2)和(PE3,PE4)为两组冗余组。PE1选举为DF,PE2为BDF。PE3为DF,PE4为BDF。多活时需要阻断DF和BDF之间链路,并且阻塞BDF的ES出方向,但入方向不阻塞。从CE1发出的广播流量,PE1和PE2都会接收。PE1接收后会发送给PE3和PE4,PE4流量被阻塞。PE2接收后会发给PE3和PE4,PE4被阻塞。因此流量沿着CE1-PE1-PE3-CE2和CE1-PE2-PE3-CE2两条路径发送给CE2。由于BDF链路不阻塞入方向,这样流量可以在PE1和PE2之间负载分担, 因此单活模式下CE1上行口需要为聚合口,如下图:

图13 EVPN多归属多活

3 典型组网应用

EVPN的分布式网关被运用的越来越广泛,它对网关设备的转发能力没有集中式网关那么要求高,且在核心设备只需要支持普通的IP转发即可。EVPN分布式网关典型组网见下图:Switch A、Switch B为分布式EVPN网关设备;Switch C为与广域网连接的边界网关设备;Switch D为RR,负责在交换机之间反射BGP路由。虚拟机VM 1和VM 3属于VXLAN 10;VM 2和VM 4属于VXLAN 20。相同VXLAN之间可以二层互通;不同VXLAN之间通过分布式EVPN网关实现三层互通;VXLAN与广域网之间通过边界网关实现三层互通。

图14 EVPN分布式网关典型组网

配置Switch A

# 开启L2VPN能力。

<SwitchA> system-view

[SwitchA] l2vpn enable

# 关闭远端MAC地址和远端ARP自动学习功能。

[SwitchA] vxlan tunnel mac-learning disable

[SwitchA] vxlan tunnel arp-learning disable

# 在VSI实例aaa下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。

[SwitchA] vsi aaa

[SwitchA-vsi-aaa] evpn encapsulation vxlan

[SwitchA-vsi-aaa-evpn-vxlan] route-distinguisher auto

[SwitchA-vsi-aaa-evpn-vxlan] vpn-target auto

[SwitchA-vsi-aaa-evpn-vxlan] quit

# 创建VXLAN 10。

[SwitchA-vsi-aaa] vxlan 10

[SwitchA-vsi-aaa-vxlan-10] quit

[SwitchA-vsi-aaa] quit

# 在VSI实例bbb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。

[SwitchA] vsi bbb

[SwitchA-vsi-bbb] evpn encapsulation vxlan

[SwitchA-vsi-bbb-evpn-vxlan] route-distinguisher auto

[SwitchA-vsi-bbb-evpn-vxlan] vpn-target auto

[SwitchA-vsi-bbb-evpn-vxlan] quit

# 创建VXLAN 20。

[SwitchA-vsi-bbb] vxlan 20

[SwitchA-vsi-bbb-vxlan-20] quit

[SwitchA-vsi-bbb] quit

# 配置BGP发布EVPN路由。

[SwitchA] bgp 200

[SwitchA-bgp-default] peer 4.4.4.4 as-number 200

[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0

[SwitchA-bgp-default] address-family l2vpn evpn

[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable

[SwitchA-bgp-default-evpn] quit

[SwitchA-bgp-default] quit

# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。

[SwitchA] interface gigabitethernet 1/0/1

[SwitchA-GigabitEthernet1/0/1] service-instance 1000

[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2

# 配置以太网服务实例1000与VSI实例aaa关联。

[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi aaa

[SwitchA-GigabitEthernet1/0/1-srv1000] quit

# 在接口GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。

[SwitchA-GigabitEthernet1/0/1] service-instance 2000

[SwitchA-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 3

# 配置以太网服务实例2000与VSI实例bbb关联。

[SwitchA-GigabitEthernet1/0/1-srv2000] xconnect vsi bbb

[SwitchA-GigabitEthernet1/0/1-srv2000] quit

[SwitchA-GigabitEthernet1/0/1] quit

# 配置L3 VNI的RD和RT。

[SwitchA] ip vpn-instance tenant1

[SwitchA-vpn-instance-tenant1] route-distinguisher 1:1

[SwitchA-vpn-instance-tenant1] address-family evpn

[SwitchA-vpn-evpn-tenant1] vpn-target 1:1

[SwitchA-vpn-evpn-tenant1] quit

[SwitchA-vpn-instance-tenant1] quit

# 配置VSI虚接口VSI-interface1。

[SwitchA] interface vsi-interface 1

[SwitchA-Vsi-interface1] ip binding vpn-instance tenant1

[SwitchA-Vsi-interface1] ip address 10.1.1.1 255.255.255.0

[SwitchA-Vsi-interface1] distributed-gateway local

[SwitchA-Vsi-interface1] local-proxy-arp enable

[SwitchA-Vsi-interface1] quit

# 配置VSI虚接口VSI-interface2。

[SwitchA] interface vsi-interface 2

[SwitchA-Vsi-interface2] ip binding vpn-instance tenant1

[SwitchA-Vsi-interface2] ip address 10.1.2.1 255.255.255.0

[SwitchA-Vsi-interface2] distributed-gateway local

[SwitchA-Vsi-interface2] local-proxy-arp enable

[SwitchA-Vsi-interface2] quit

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

[SwitchA] interface vsi-interface 3

[SwitchA-Vsi-interface3] ip binding vpn-instance tenant1

[SwitchA-Vsi-interface3] l3-vni 1000

[SwitchA-Vsi-interface3] quit

# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联

[SwitchA] vsi aaa

[SwitchA-vsi-vpna] gateway vsi-interface 1

# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联

[SwitchA] vsi vpnb

[SwitchA-vsi-vpnb] gateway vsi-interface 2

Switch B和C上的配置跟A类似。Switch D需要配置为RR反射器:

# 配置Switch D与其他交换机建立BGP连接。

<SwitchD> system-view

[SwitchD] bgp 200

[SwitchD-bgp-default] group evpn

[SwitchD-bgp-default] peer 1.1.1.1 group evpn

[SwitchD-bgp-default] peer 2.2.2.2 group evpn

[SwitchD-bgp-default] peer 3.3.3.3 group evpn

[SwitchD-bgp-default] peer evpn as-number 200

[SwitchD-bgp-default] peer evpn connect-interface loopback 0

# 配置BGP发布EVPN路由,并关闭BGP EVPN路由的VPN-Target过滤功能。

[SwitchD-bgp-default] address-family l2vpn evpn

[SwitchD-bgp-default-evpn] peer evpn enable

[SwitchD-bgp-default-evpn] undo policy vpn-target

# 配置Switch D为路由反射器。

[SwitchD-bgp-default-evpn] peer evpn reflect-client

[SwitchD-bgp-default-evpn] quit

[SwitchD-bgp-default] quit

4 参考文献

【1】 RFC7432: BGP MPLS-Based Ethernet VPN

【2】 draft-ietf-bess-evpn-overlay-02 : A Network Virtualization Overlay Solution using EVPN

【3】 draft-ietf-bess-evpn-prefix-advertisement-02: BGP MPLS-Based Ethernet VPN

Copyright ©2011-2016 杭州华三通信技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

本文档中的信息可能变动,恕不另行通知。