选择区域语言: EN CN HK

16-EVPN配置指导

01-EVPN配置

本章节下载  (607.12 KB)

docurl=/cn/Service/Document_Software/Document_Center/Switches/Catalog/S12500/S12500X-AF/Configure/Operation_Manual/H3C_S12500X-AF_CG(R26xx)-6W102/16/201907/1217900_30005_0.htm

01-EVPN配置


1 EVPN概述

提示

EVPN功能受设备的工作模式限制,在使用EVPN功能前,请在系统视图下使用system-working-mode命令将设备设置为标准模式或高级模式,保存设备当前配置,然后重启设备。有关设备工作模式的详细介绍请参见“基础配置指导”中的“设备管理”。

 

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

1.1  EVPN技术优势

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

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

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

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

1.2  EVPN网络模型

图1-1 EVPN网络模型示意图

 

图1-1所示,EVPN的典型网络模型中包括如下几部分:

·              VTEP(VXLAN Tunnel End Point,VXLAN隧道端点):EVPN的边缘设备。EVPN的相关处理都在VTEP上进行。VTEP可以是一台独立的物理设备,也可以是虚拟机所在的服务器。

·              VXLAN隧道:两个VTEP之间的点到点逻辑隧道。VTEP为数据帧封装VXLAN头、UDP头和IP头后,通过VXLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。

·              核心设备:IP核心网络中的设备(如图1-1中的P设备)。核心设备不参与EVPN处理,仅需要根据封装后报文的外层目的IP地址对报文进行三层转发。

·              VXLAN网络/EVPN实例:用户网络可能包括分布在不同地理位置的多个站点内的虚拟机。在骨干网上可以利用VXLAN隧道将这些站点连接起来,为用户提供一个逻辑的二层VPN。这个二层VPN称为一个VXLAN网络,也称为EVPN实例。VXLAN网络通过VXLAN ID来标识,VXLAN ID又称VNI(VXLAN Network Identifier,VXLAN网络标识符),其长度为24比特。不同VXLAN网络中的虚拟机不能二层互通。

·              VSI(Virtual Switch Instance,虚拟交换实例):VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例。VSI可以看做是VTEP上的一台基于VXLAN进行二层转发的虚拟交换机。VSI与VXLAN一一对应。

·              ES(Ethernet Segment,以太网段):用户站点连接到VTEP的链路,通过ESI(Ethernet Segment Identifier,以太网段标识符)唯一标识。目前,一个用户站点只能通过一条链路连接一台VTEP,该ES的ESI为0。

1.3  EVPN分层结构

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

图1-2 EVPN典型组网

 

1.4  MP-BGP的EVPN扩展

为了支持EVPN,MP-BGP在L2VPN地址族下定义了新的子地址族——EVPN地址族,并新增了如下EVPN NLRI(Network Layer Reachability Information,网络层可达性信息),即EVPN路由:

·              Ethernet Auto-discovery Route:以太网自动发现路由,用来在站点多归属组网中通告ES信息。

·              MAC/IP Advertisement Route:MAC/IP发布路由,用来通告MAC地址和主机路由信息(即ARP信息)。

·              Inclusive Multicast Ethernet Tag Route:包含性组播以太网标签路由,又称为IMET路由,用来通告VTEP及其所属VXLAN信息,以实现自动发现VTEP、自动建立VXLAN隧道和自动关联VXLAN与VXLAN隧道。

·              Ethernet Segment Route:以太网段路由,用来通告ES及其连接的VTEP信息。

·              IP Prefix advertisement route:IP前缀路由,用来以IP前缀的形式通告BGP IPv4单播路由。

目前,设备不支持生成以太网自动发现路由和以太网段路由。

EVPN路由中包含RD(Route Distinguisher,路由标识符)字段,用来区分不同VXLAN的EVPN路由,以免EVPN路由冲突。

VTEP在发布EVPN路由时,会携带VPN Target扩展团体属性(也称为Route Target)。VPN target属性定义了本地发送的EVPN路由可以为哪些VTEP所接收,VTEP可以接收哪些远端VTEP发送来的EVPN路由。MP-BGP通过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路由。

1.5  自动发现邻居、建立隧道、关联隧道

VTEP可以通过以下方式自动发现邻居、建立隧道并关联隧道:

·              IMET路由方式:VTEP通过IMET路由通告自己的VXLAN信息。这样,每个VTEP设备都能获取到网络中所有的VTEP及其所属VXLAN信息。如果本地VTEP和远端VTEP属于同一个VXLAN,则自动在二者之间建立VXLAN隧道,并将该隧道与该VXLAN关联。

·              MAC/IP发布路由和IP前缀路由方式:在EVPN的三层转发组网中,当本地VTEP接收到远端VTEP通告的MAC/IP发布路由或IP前缀路由,且该路由携带的Export target属性与本地某个VPN实例的Import target属性匹配时,本地VTEP会与远端VTEP建立VXLAN隧道,并将该VXLAN隧道与VPN实例对应的L3VNI(Layer 3 VNI,三层VXLAN ID)关联。L3VNI的详细介绍,请参见“1.8.2  分布式EVPN网关”。

1.6  识别报文所属的VXLAN

EVPN的MAC地址/ARP表项学习、流量转发均基于报文所属的VXLAN进行,因此,VTEP接收到报文需要识别报文所属的VXLAN。

1.6.1  本地站点内接收到数据帧的识别

VTEP将连接本地站点的以太网服务实例(Service Instance)与VSI关联。VTEP从以太网服务实例接收到数据帧后,查找与其关联的VSI,VSI内创建的VXLAN即为该数据帧所属的VXLAN。

在VXLAN中,与VSI关联的以太网服务实例称为AC(Attachment Circuit,接入电路)。以太网服务实例在二层以太网接口上创建,它定义了一系列匹配规则,用来匹配从该二层以太网接口上接收到的数据帧。

图1-3所示,VM 1属于VLAN 2,在VTEP上配置以太网服务实例1匹配VLAN 2的报文,将以太网服务实例1与VSI A绑定,并在VSI A内创建VXLAN 10,则VTEP接收到VM 1发送的数据帧后,可以判定该数据帧属于VXLAN 10。

图1-3 数据帧所属VXLAN识别

 

1.6.2  VXLAN隧道上接收报文的识别

对于从VXLAN隧道上接收到的VXLAN报文,VTEP根据报文中携带的VXLAN ID判断该报文所属的VXLAN。

1.7  转发二层流量

1.7.1  学习MAC地址

VTEP根据学习到的MAC地址表项转发二层单播流量。VTEP上MAC地址学习分为两部分:

·              本地MAC地址学习:学习本地站点内虚拟机的MAC地址。VTEP接收到本地虚拟机发送的数据帧后,判断该数据帧所属的VSI,并将数据帧中的源MAC地址(本地虚拟机的MAC地址)添加到该VSI的MAC地址表中,该MAC地址对应的接口为接收到数据帧的接口。

·              远端MAC地址学习:学习远端站点内虚拟机的MAC地址。VTEP通过MP-BGP协议将本地学习的MAC地址及其所属的VXLAN通告给远端VTEP。远端VTEP接收到该信息后,将其添加到所属VXLAN对应VSI的MAC地址表中,该MAC地址对应的接口为两个VTEP之间的VXLAN隧道接口(Tunnel接口)。

1.7.2  转发已知单播流量

VTEP接收到二层数据帧后,判断其所属的VSI,根据目的MAC地址查找该VSI的MAC地址表,通过表项的出接口转发该数据帧。如图1-4所示,如果出接口为本地接口,则VTEP直接通过该接口转发数据帧;如图1-5所示,如果出接口为Tunnel接口,则VTEP根据Tunnel接口为数据帧添加VXLAN封装后,通过VXLAN隧道将其转发给远端VTEP。

图1-4 站点内单播流量转发

 

图1-5 站点间单播流量转发

 

1.7.3  转发泛洪流量

泛洪流量包括组播、广播和未知单播流量,该流量通过单播路由方式(头端复制)转发。VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。

图1-6 泛洪流量转发示意图

 

图1-6所示,泛洪流量转发过程为:

(1)      VTEP 1接收到本地虚拟机发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,通过该VXLAN内除接收接口外的所有本地接口和VXLAN隧道转发该数据帧。通过VXLAN隧道转发数据帧时,需要为其封装VXLAN头、UDP头和IP头,以便将泛洪流量封装在多个单播报文中,发送到VXLAN内的所有远端VTEP。

(2)      远端VTEP(VTEP 2和VTEP 3)接收到VXLAN报文后,解封装报文,将原始的数据帧在本地站点的指定VXLAN内泛洪。为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。

1.8  EVPN网关转发三层流量

EVPN网关用来为用户站点内的虚拟机提供三层转发业务。EVPN网关分为:

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

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

1.8.1  集中式EVPN网关

集中式EVPN网关进行二层VXLAN业务终结的同时,还对内层封装的IP报文进行三层转发处理。

图1-7 集中式EVPN网关的三层通信过程

 

图1-7所示,集中式EVPN网关上需要配置VSI虚接口,该接口的IP地址作为VXLAN内虚拟机的网关IP地址。虚拟机访问其他子网的过程为:

(1)      虚拟机获取网关的MAC地址(网关IP对应的MAC地址),并将报文发送给集中式EVPN网关。

(2)      VTEP接收到报文后,根据目的MAC地址在VSI的MAC地址表中查找匹配的表项,将报文通过VXLAN隧道发送给集中式EVPN网关。

(3)      网关解除VXLAN封装后,对内层封装的IP报文进行三层转发,将其发送给最终的目的节点。

(4)      目的节点返回的报文到达网关后,网关根据已经学习到的虚拟机ARP表项,将报文转发给虚拟机。

1.8.2  分布式EVPN网关

1. 简介

图1-8 分布式EVPN网关示意图

 

 

图1-8所示,在分布式EVPN网关组网中,每台VTEP设备都作为EVPN网关,对本地站点的流量进行三层转发,缓解了网关的压力。

图1-9 分布式EVPN网关部署示意图

 

分布式EVPN网关采用对称IRB方式转发流量,即连接报文源和目的节点的网关(入口网关和出口网关)上都需要进行二层和三层转发。对称IRB方式引入了如下概念:

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

·              网关的Router MAC地址:每个分布式EVPN网关拥有一个唯一的Router MAC地址,用于在网关之间通过VXLAN隧道转发流量。报文在网关之间转发时,报文的内层MAC地址为出口网关的Router MAC地址。

图1-9所示,在分布式EVPN网关组网中,所有的分布式EVPN网关(GW)上都存在以下类型的VSI虚接口:

·              作为分布式网关接口的VSI虚接口。该接口需要与VSI、VPN实例关联。不同GW上相同VSI虚接口的IP地址必须相同,该IP地址作为VXLAN内虚拟机的网关地址。

·              承载L3VNI的VSI虚接口。该接口需要与VPN实例关联,并需要指定L3VNI。关联相同VPN实例的VSI虚接口共用该L3VNI。

边界网关(Border)上也需要存在承载L3VNI的VSI虚接口。

2. 三层转发表项学习

三层流量通过查找FIB表项进行转发。FIB表项通过路由信息或ARP信息生成。

在EVPN地址族下引入外部路由后,VTEP通过MP-BGP将该路由及其所属的L3VNI发布给远端VTEP,远端VTEP学习该路由,并将其添加到L3VNI对应VPN实例的FIB表项中,表项的出接口为两个VTEP之间的VXLAN隧道接口(Tunnel接口)、下一跳为路由的NEXT_HOP属性携带的地址(即对端VTEP的地址)。

VTEP上ARP信息学习分为两部分:

·              本地学习:学习本地站点内虚拟机的ARP信息。VTEP通过本地虚拟机发送的GARP、RARP和对网关的ARP请求学习本地虚拟机的ARP信息,并添加ARP表项和FIB表项。VTEP判断GARP、RARP、ARP请求所属的VSI,查找与该VSI关联的VSI虚接口。ARP表项和FIB表项的出接口为接收到报文的接口,该表项所属的VPN实例为VSI虚接口关联的VPN实例。

·              远端学习:学习远端站点内虚拟机的ARP信息。VTEP通过MP-BGP协议将本地的ARP信息及其所属的L3VNI通告给远端VTEP。远端VTEP学习该信息,但不会添加ARP表项,而是由路由管理模块添加FIB表项。该FIB表项的出接口为与L3VNI关联的VSI虚接口、下一跳为路由的NEXT_HOP属性携带的地址(即对端VTEP的地址),该表项所属的VPN实例为L3VNI对应的VPN实例。远端VTEP查找下一跳对应的ARP信息,并添加对应的ARP表项。

3. 流量转发

分布式网关对流量的转发方式分为两种:

·              区分二三层转发方式:对于二层流量,查找MAC地址表进行转发;对于三层流量,查找FIB表进行转发。在该方式下,建议在分布式网关上开启ARP泛洪抑制功能,以减少泛洪流量。

·              全三层转发方式:对于二层和三层流量,均查找FIB表进行转发。在该方式下,需要在分布式网关上开启本地代理ARP功能。

查找MAC地址表转发二层流量的过程,请参见“1.7.2  转发已知单播流量”;相同站点间三层流量的转发过程如图1-10所示;不同站点间三层流量转发过程如图1-11所示。

图1-10 相同站点间三层流量转发过程

 

图1-11 不同站点间三层流量转发过程

 

以IPv4网络为例,查找FIB表转发流量的过程为:

(1)      虚拟机访问相同子网、不同子网内的其他虚拟机时,发送ARP请求获取ARP信息。

(2)      GW接收到ARP请求后,判断ARP请求所属VSI,采用与该VSI关联的VSI虚接口MAC地址对其进行应答。

(3)      虚拟机将报文发送给GW。

(4)      GW判断报文所属VSI,并查找与该VSI关联的VSI虚接口,在与VSI虚接口关联的VPN实例内查找FIB表项,并根据匹配的FIB表项转发报文:

·              如果FIB表项的出接口为本地接口,则GW将目的MAC替换为目的虚拟机的MAC地址、源MAC替换为VSI虚接口的MAC,并通过本地接口转发给目的虚拟机。

·              如果FIB表项的出接口为VSI虚接口,则GW将目的MAC替换为目的GW的Router MAC地址、源MAC替换为自己的Router MAC,报文添加VXLAN封装后将其转发给目的GW。其中,为报文封装的VXLAN ID为与VPN实例关联的L3VNI。

(5)      目的GW接收到报文后,根据L3VNI判断报文所属的VPN实例,解除VXLAN封装后,在该VPN实例内查找ARP表项转发该报文。

1.9  ARP泛洪抑制

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

图1-12 ARP泛洪抑制示意图

 

图1-12所示,ARP泛洪抑制的处理过程如下:

(1)      虚拟机VM 1发送ARP请求,获取VM 7的MAC地址。

(2)      VTEP 1根据接收到的ARP请求,建立VM 1的ARP泛洪抑制表项,并在VXLAN内泛洪该ARP请求(图1-12以单播路由泛洪方式为例)。

(3)      远端VTEP(VTEP 2和VTEP 3)解封装VXLAN报文,获取原始的ARP请求报文后,建立VM 1的ARP泛洪抑制表项,并在本地站点的指定VXLAN内泛洪该ARP请求。

(4)      VM 7接收到ARP请求后,回复ARP应答报文。

(5)      VTEP 2接收到ARP应答后,建立VM 7的ARP泛洪抑制表项,并通过VXLAN隧道将ARP应答发送给VTEP 1。

(6)      VTEP 1解封装VXLAN报文,获取原始的ARP应答,并根据该应答建立VM 7的ARP泛洪抑制表项,之后将ARP应答报文发送给VM 1。

(7)      在VTEP 1上建立ARP泛洪抑制表项后,虚拟机VM 4发送ARP请求,获取VM 1或VM 7的MAC地址。

(8)      VTEP 1接收到ARP请求后,建立VM 4的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。

(9)      在VTEP 3上建立ARP泛洪抑制表项后,虚拟机VM 10发送ARP请求,获取VM 1的MAC地址。

(10)   VTEP 3接收到ARP请求后,建立VM 10的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。

1.10  MAC地址迁移

MAC地址迁移是指虚拟机或主机从一个ES迁移到另一个ES。原ES连接的VTEP无法感知MAC地址已经迁移到其他ES段。新迁移到的ES所在VTEP需要重新通告该MAC/IP路由。原VTEP在收到此路由后,撤销之前通告的路由。MAC地址每次迁移,迁移序列号依次递增,以便在MAC地址多次迁移时,通过序列号来标识最近一次迁移。

 


2 配置EVPN

2.1  EVPN配置限制和指导

VXLAN隧道既可以通过EVPN自动创建,也可以手工创建。隧道目的地址相同的EVPN自动创建隧道和手工创建隧道不能关联同一个VXLAN。手工创建VXLAN隧道的详细介绍,请参见“VXLAN配置指导”中的“配置VXLAN”。

2.2  EVPN配置任务简介

表2-1 EVPN配置任务简介

配置任务

说明

详细配置

配置VXLAN隧道工作模式

必选

2.3 

创建VSI和VXLAN

必选

2.4 

配置EVPN实例

必选

2.5 

配置BGP发布EVPN路由

必选

2.6 

配置AC与VSI关联

必选

2.7 

配置集中式EVPN网关

转发三层流量时,二者必选其一

2.8 

配置分布式EVPN网关

2.9 

管理远端MAC地址和远端ARP自动学习

可选

2.10 

配置允许向本地站点发布BGP EVPN路由

可选

2.11 

配置VSI泛洪抑制

可选

2.12 

配置ARP泛洪抑制

可选

2.13 

 

2.3  配置VXLAN隧道工作模式

当设备作为EVPN网关时,需要配置VXLAN隧道工作在三层转发模式。当设备作为VTEP时,VXLAN隧道工作在二层转发模式、三层转发模式均可。

如果VXLAN隧道工作在三层转发模式,则设备将VXLAN封装后的报文转发给下一跳时是否携带VLAN tag,由本命令中的taggeduntagged参数决定,而不是由报文的出接口类型决定。请根据实际情况选择taggeduntagged参数:

·              设备通过Access端口、Trunk或Hybrid端口的PVID连接下一跳时,需要指定untagged参数。

·              设备通过Trunk或Hybrid端口的非PVID连接下一跳时,需要指定tagged参数。

执行本配置时,需要注意:

·              重复执行vxlan ip-forwarding命令切换二层、三层转发模式前,必须先删除设备上的所有VSI、VSI虚接口和VXLAN隧道,否则将配置失败。因此,配置VXLAN前,用户需要先做好VXLAN网络规划,确定设备使用的VXLAN隧道工作模式,完成本配置后,再进行其他配置。

·              重复执行vxlan ip-forwarding命令修改taggeduntagged参数前,必须先删除设备上所有的VXLAN隧道。

表2-2 配置VXLAN隧道工作模式

操作

命令

说明

进入系统视图

system-view

-

配置VXLAN隧道工作在二层转发模式

undo vxlan ip-forwarding

二者选其一

缺省情况下,VXLAN隧道工作在三层转发模式

执行vxlan ip-forwarding命令时如果没有指定taggeduntagged参数,则缺省为untagged,即转发VXLAN封装后的报文时,不携带VLAN tag

本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”

配置VXLAN隧道工作在三层转发模式

vxlan ip-forwarding [ tagged | untagged ]

 

2.4  创建VSI和VXLAN

本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。

表2-3 创建VSI和VXLAN

操作

命令

说明

进入系统视图

system-view

-

开启L2VPN功能

l2vpn enable

缺省情况下,L2VPN功能处于关闭状态

创建VSI,并进入VSI视图

vsi vsi-name

缺省情况下,不存在VSI

(可选)配置VSI的描述信息

description text

缺省情况下,未配置VSI的描述信息

开启VSI

undo shutdown

缺省情况下,VSI处于开启状态

创建VXLAN,并进入VXLAN视图

vxlan vxlan-id

缺省情况下,不存在VXLAN

在一个VSI下只能创建一个VXLAN

不同VSI下创建的VXLAN,其VXLAN ID不能相同

 

2.5  配置EVPN实例

用于二层交换的VXLAN网络无需关联VPN实例。VTEP在发布该VXLAN内路由时,携带VXLAN对应EVPN实例下配置的RD和RT。

表2-4 配置EVPN实例

操作

命令

说明

进入系统视图

system-view

-

进入VSI视图

vsi vsi-name

-

创建EVPN实例,并进入EVPN实例视图

evpn encapsulation vxlan

缺省情况下,不存在EVPN实例

配置EVPN实例的RD

route-distinguisher { route-distinguisher | auto }

缺省情况下,未指定EVPN实例的RD

配置EVPN实例的Route Target属性

vpn-target { vpn-target&<1-8> | auto } [ both | export-extcommunity | import-extcommunity ]

缺省情况下,未指定EVPN实例的Route Target属性

建议为EVPN实例配置的Import target不要与VPN实例的Export target匹配,反之亦然

VPN实例的配置,请参见“2.9.4  配置VSI虚接口关联L3VNI

 

2.6  配置BGP发布EVPN路由

下表中peer as-numberpeer enablepeer allow-as-looppeer reflect-clientreflect between-clientsreflector cluster-idrefresh bgpreset bgp命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。

表2-5 配置BGP发布EVPN路由

操作

命令

说明

进入系统视图

system-view

-

配置全局Router ID

router id router-id

缺省情况下,未配置全局Router ID

启动BGP实例,并进入BGP实例视图

bgp as-number [ instance instance-name ] [ multi-session-thread ]

缺省情况下,系统没有运行BGP

将远端VTEP配置为对等体

peer { group-name | ipv4-address [ mask-length ] } as-number as-number

缺省情况下,不存在BGP对等体

创建BGP EVPN地址族,并进入BGP EVPN地址族视图

address-family l2vpn evpn

缺省情况下,不存在BGP EVPN地址族

使能本地路由器与指定对等体/对等体组交换BGP EVPN路由的能力

peer { group-name | ipv4-address [ mask-length ] } enable

缺省情况下,本地路由器不能与对等体/对等体组交换BGP EVPN路由

(可选)配置对于从对等体/对等体组接收的BGP消息,允许本地AS号在该消息的AS_PATH属性中出现,并配置允许出现的次数

peer { group-name | ipv4-address [ mask-length ] } allow-as-loop [ number ]

缺省情况下,不允许本地AS号在接收消息的AS_PATH属性中出现

(可选)开启BGP EVPN路由的VPN-Target过滤功能

policy vpn-target

缺省情况下,BGP EVPN路由的VPN-Target过滤功能处于开启状态

(可选)配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机

peer { group-name | ipv4-address [ mask-length ] } reflect-client

缺省情况下,没有配置路由反射器及其客户机

(可选)允许路由反射器在客户机之间反射EVPN路由

reflect between-clients

缺省情况下,允许路由反射器在客户机之间反射EVPN路由

(可选)配置路由反射器的集群ID

reflector cluster-id { cluster-id | ipv4-address }

缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID

(可选)配置路由反射器对反射的EVPN路由进行过滤

rr-filter ext-comm-list-number

缺省情况下,路由反射器不会对反射的EVPN路由进行过滤

(可选)配置向EBGP对等体/对等体组发布路由时不改变下一跳

peer { group-name | ipv4-address [ mask-length ] } next-hop-invariable

缺省情况下,向EBGP对等体/对等体组发布路由时会将下一跳改为自己的地址

(可选)返回用户视图

return

-

(可选)手工对EVPN地址族下的BGP会话进行软复位

refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | all | external | group group-name | internal } { export | import } l2vpn evpn

-

(可选)复位EVPN地址族下的BGP会话

reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | all | external | group group-name | internal } l2vpn evpn

-

 

2.7  配置AC与VSI关联

将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。以太网服务实例提供了多种报文匹配规则(包括接口接收到的所有报文、所有携带VLAN Tag的报文和所有不携带VLAN Tag的报文等),为报文关联VSI提供了更加灵活的方式。

本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。

表2-6 配置以太网服务实例与VSI关联

操作

命令

说明

进入系统视图

system-view

-

进入二层以太网接口视图或二层聚合接口视图

进入二层以太网接口视图

interface interface-type interface-number

-

进入二层聚合接口视图

interface bridge-aggregation interface-number

创建以太网服务实例,并进入以太网服务实例视图

service-instance instance-id

缺省情况下,不存在以太网服务实例

配置以太网服务实例的报文匹配规则

encapsulation s-vid vlan-id-list [ c-vid vlan-id-list | only-tagged ]

缺省情况下,未配置报文匹配规则

vlan-id-list参数仅支持在Ethernet接入模式下使用

encapsulation { default | untagged }

将以太网服务实例与VSI关联

xconnect vsi vsi-name [ access-mode { ethernet | vlan } ] [ track track-entry-number&<1-3> ]

缺省情况下,以太网服务实例未关联VSI

 

2.8  配置集中式EVPN网关

2.8.1  配置限制和指导

设备作为集中式EVPN网关时,需要在VTEP上开启ARP泛洪抑制功能。EVPN组网中通常关闭远端ARP自动学习功能,网关从VXLAN隧道上接收到请求网关MAC地址的ARP请求后,不会对其进行应答。如果未开启ARP泛洪抑制功能,则可能会导致虚拟机获取不到网关的MAC地址。

2.8.2  配置准备

配置EVPN网关前,需要先配置VXLAN隧道工作在三层转发模式。

2.8.3  配置步骤

表2-7 配置集中式EVPN网关

操作

命令

说明

进入系统视图

system-view

-

创建VSI虚接口,并进入VSI虚接口视图

interface vsi-interface vsi-interface-id

缺省情况下,不存在VSI虚接口

如果VSI虚接口已经存在,则直接进入该VSI虚接口视图

本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”

配置VSI虚接口的IPv4地址

ip address ip-address { mask | mask-length } [ sub ]

缺省情况下,未配置VSI虚接口的IPv4地址

退回系统视图

quit

-

进入VXLAN所在VSI视图

vsi vsi-name

-

为VSI指定网关接口

gateway vsi-interface vsi-interface-id

缺省情况下,未指定VSI的网关接口

本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”

 

2.9  配置分布式EVPN网关

2.9.1  配置限制和指导

如果虚拟机要想与外部网络进行三层通信,那么完成分布式EVPN网关的配置后,还需要在接入虚拟机的本地分布式EVPN网关上配置静态路由或策略路由:

·              配置静态路由:指定路由的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。

·              配置策略路由:通过apply default-next-hop命令或apply next-hop命令设置报文的缺省下一跳或下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。策略路由的配置方法,请参见“三层技术-IP路由配置指导”中的“策略路由”。

在分布式EVPN网关设备上,如果开启了ARP泛洪抑制功能,并在VSI虚接口上开启了本地代理ARP功能,则只有本地代理ARP功能生效。建议不要在分布式EVPN网关设备上同时开启这两个功能。

2.9.2  配置准备

配置EVPN网关前,需要先配置VXLAN隧道工作在三层转发模式。

2.9.3  配置VSI虚接口作为分布式网关接口

表2-8 配置VSI虚接口作为分布式网关接口

操作

命令

说明

进入系统视图

system-view

-

创建VSI虚接口,并进入VSI虚接口视图

interface vsi-interface vsi-interface-id

缺省情况下,不存在VSI虚接口

如果VSI虚接口已经存在,则直接进入该VSI虚接口视图

本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”

配置VSI虚接口的IPv4地址

ip address ip-address { mask | mask-length } [ sub ]

缺省情况下,未配置VSI虚接口的IPv4地址

配置VSI虚接口为分布式网关接口

distributed-gateway local

缺省情况下,VSI虚接口不是分布式本地网关接口

本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”

(可选)开启本地代理ARP功能

local-proxy-arp enable [ ip-range startIP to endIP ]

缺省情况下,本地代理ARP功能处于关闭状态

本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“代理ARP”

退回系统视图

quit

-

进入VXLAN所在VSI视图

vsi vsi-name

-

为VSI指定网关接口

gateway vsi-interface vsi-interface-id

缺省情况下,未指定VSI的网关接口

本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”

配置当前VSI所属的子网网段

gateway subnet ipv4-address wildcard-mask

缺省情况下,未指定VSI所属的子网网段

为了节省分布式VXLAN IP网关设备上的三层接口资源,在网关设备上多个VXLAN可以共用一个VSI虚接口,为VSI虚接口配置一个主IPv4地址和多个从IPv4地址,分别作为不同VXLAN内虚拟机的网关地址

多个VXLAN共用一个VSI虚接口时,网关设备无法判断从VSI虚接口接收到的报文属于哪个VXLAN。为了解决该问题,需要在VSI视图下通过本命令指定VSI所属的子网网段,通过子网网段判断报文所属的VSI,并在该VSI内转发报文,从而限制广播报文范围,有效地节省带宽资源

本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”

 

2.9.4  配置VSI虚接口关联L3VNI

表2-9 配置VSI虚接口关联L3VNI

操作

命令

说明

进入系统视图

system-view

-

创建VPN实例,并进入VPN实例视图

ip vpn-instance vpn-instance-name

缺省情况下,不存在VPN实例

配置VPN实例的RD

route-distinguisher route-distinguisher

缺省情况下,未配置VPN实例的RD

(可选)配置VPN实例的RT

vpn-target { vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ] | auto }

缺省情况下,未配置VPN实例的Route Target

(可选)对VPN实例应用出方向路由策略

export route-policy route-policy

缺省情况下,不对发布的路由进行过滤

进入EVPN视图

address-family evpn

-

在VPN实例下配置EVPN的Route Target

vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]

缺省情况下,VPN实例下的EVPN未配置Route Target

建议为EVPN实例配置的Import target不要与VPN实例的Export target匹配,反之亦然

(可选)在VPN实例下配置EVPN的出方向路由策略

export route-policy route-policy

缺省情况下,不对发布的路由进行过滤

退回VPN实例视图

quit

-

退回系统视图

quit

-

创建VSI虚接口,并进入VSI虚接口视图

interface vsi-interface vsi-interface-id

缺省情况下,不存在VSI虚接口

如果VSI虚接口已经存在,则直接进入该VSI虚接口视图

配置接口与指定的VPN实例关联

ip binding vpn-instance vpn-instance-name

缺省情况下,接口未关联VPN实例,接口属于公网

配置L3VPN的VXLAN ID

l3-vni vxlan-id

缺省情况下,未配置L3VPN的VXLAN ID

一个VPN实例只能关联一个L3VNI。若为VPN实例配置了多个L3VNI,则该VPN实例与数值最小的L3VNI关联。通过display evpn routing-table命令可以查看与VPN实例关联的L3VNI

 

2.9.5  配置发布IP前缀路由

在BGP-VPN IPv4单播地址族视图下引入IGP路由后,如果该VPN实例关联了L3VNI,则引入的路由将作为EVPN的IP前缀路由发布给远端VTEP,该路由携带VPN实例视图或VPN实例IPv4 VPN视图下配置的RD和RT。

远端VTEP接收到EVPN的IP前缀路由,将路由中的Route Target属性与本地VPN实例视图或VPN实例IPv4 VPN视图下配置的Import Target进行比较。若匹配,则接收该路由,并将该路由添加到VPN实例的路由表中。

只有分布式EVPN网关组网支持本配置。

本配置中各命令的详细介绍,请参见“三层业务-IP路由命令参考”中的“BGP”。

表2-10 配置发布IP前缀路由

操作

命令

说明

进入系统视图

system-view

-

启动BGP实例,并进入BGP实例视图

bgp as-number [ instance instance-name ] [ multi-session-thread ]

缺省情况下,没有运行BGP,不存在BGP实例

进入BGP-VPN实例视图

ip vpn-instance vpn-instance-name

-

进入BGP-VPN IPv4单播地址族视图

address-family ipv4 [ unicast ]

-

将IGP路由协议的路由信息引入到BGP路由表中

import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]

缺省情况下,BGP不会引入IGP路由协议的路由信息

(可选)允许将缺省路由引入到BGP路由表中

default-route imported

缺省情况下,BGP不允许将缺省路由引入到BGP路由表中

 

2.10  管理远端MAC地址和远端ARP信息学习

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

缺省情况下,设备从VXLAN隧道接收到报文后可以自动学习远端虚拟机的MAC地址和ARP信息。在EVPN组网中,为了避免自动学习的远端MAC地址/ARP信息与通过BGP通告的MAC地址/ARP信息冲突,建议关闭远端MAC地址和远端ARP自动学习功能。

本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。

表2-11 关闭远端MAC地址和远端ARP自动学习功能

操作

命令

说明

进入系统视图

system-view

-

关闭远端MAC地址自动学习功能

vxlan tunnel mac-learning disable

缺省情况下,远端MAC地址自动学习功能处于开启状态

关闭远端ARP自动学习功能

vxlan tunnel arp-learning disable

缺省情况下,远端ARP自动学习功能处于开启状态

 

2.10.2  配置禁止通告MAC地址信息

VTEP可能会同时向远端VTEP通告MAC地址信息和ARP信息。其中,ARP信息中已经包含MAC地址信息。为了避免重复,可以执行本配置来禁止本端VTEP向远端VTEP通告MAC地址信息。执行本配置后,本端VTEP还会撤销已经发布的MAC地址信息。

表2-12 配置禁止通告MAC地址信息

操作

命令

说明

进入系统视图

system-view

-

进入VSI视图

vsi vsi-name

-

进入EVPN实例视图

evpn encapsulation vxlan

-

配置禁止通告MAC地址信息,并撤销已经通告的MAC地址信息

mac-advertising disable

缺省情况下,允许通告MAC地址信息

 

2.10.3  配置禁止EVPN从ARP信息中学习MAC地址表项

VTEP可能会同时接收到远端VTEP通告的MAC地址信息和ARP信息。其中,ARP信息中包含MAC地址信息。为了避免重复,可以在VTEP上执行本配置来禁止EVPN从ARP信息中学习MAC地址表项,EVPN仅通过MAC地址信息学习远端MAC地址表项。

表2-13 配置禁止EVPN从ARP信息中学习MAC地址表项

操作

命令

说明

进入系统视图

system-view

-

进入VSI视图

vsi vsi-name

-

进入EVPN实例视图

evpn encapsulation vxlan

-

配置禁止EVPN从ARP信息中学习MAC地址表项

arp mac-learning disable

缺省情况下,EVPN可以从ARP信息中学习MAC地址表项

 

2.11  配置允许向本地站点发布BGP EVPN路由

配置允许对外发布 BGP EVPN路由后,设备接收到BGP EVPN路由,并将其添加到某个VPN实例路由表后,会将该路由(私网路由)发布到本地站点。

表2-14 配置允许向本地站点发布BGP EVPN路由

操作

命令

说明

进入系统视图

system-view

-

进入BGP实例视图

bgp as-number [ instance instance-name ] [ multi-session-thread ]

-

进入BGP-VPN实例视图

ip vpn-instance vpn-instance-name

-

进入BGP-VPN IPv4单播地址族视图

address-family ipv4 [ unicast ]

-

配置允许向本地站点发布BGP EVPN路由

advertise l2vpn evpn

缺省情况下,允许向本地站点发布BGP EVPN路由

 

2.12  配置VSI泛洪抑制

缺省情况下,VTEP从本地站点内接收到目的MAC地址未知的单播数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点。如果用户希望把该类数据帧限制在本地站点内,不通过VXLAN隧道将其转发到远端站点,则可以通过本命令手工禁止VXLAN对应VSI的泛洪功能。

禁止泛洪功能后,为了将某些MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。

本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。

表2-15 配置VSI泛洪抑制

操作

命令

说明

 

进入系统视图

system-view

-

 

进入VSI视图

vsi vsi-name

-

关闭VSI的泛洪功能

flooding disable { all | { broadcast | unknown-multicast | unknown-unicast } * }

缺省情况下,VSI泛洪功能处于开启状态

unknown-multicastunknown-unicast参数必须同时指定

 

(可选)配置VSI选择性泛洪的MAC地址

selective-flooding mac-address mac-address

缺省情况下,不存在VSI选择性泛洪MAC地址

如果用户只希望某些目的MAC地址的报文可以泛洪到其它站点,可以先通过flooding disable命令关闭泛洪功能,再通过本命令配置选择性泛洪的MAC地址

 

 

2.13  配置ARP泛洪抑制

开启ARP泛洪抑制时需要注意:如果同时执行flooding disable命令关闭了VSI的泛洪功能,则建议通过mac-address timer命令配置动态MAC地址的老化时间大于25分钟(ARP泛洪抑制表项的老化时间),以免MAC地址在ARP泛洪抑制表项老化之前老化,产生黑洞MAC地址。

如果配置了vxlan tunnel arp-learning disable命令,则设备从VXLAN隧道上接收到ARP请求报文后,不会采用匹配的ARP泛洪抑制表项对其进行应答。

表2-16 配置ARP泛洪抑制

操作

命令

说明

 

进入系统视图

system-view

-

 

进入VSI视图

vsi vsi-name

-

开启ARP泛洪抑制功能

arp suppression enable

缺省情况下,ARP泛洪抑制功能处于关闭状态

本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”

 

 

2.14  EVPN显示和维护

在完成上述配置后,在任意视图下执行display命令可以显示配置后EVPN的运行情况,通过查看显示信息验证配置的效果。

在用户视图下,用户可以执行reset命令来清除EVPN的相关信息。

display bgp groupdisplay bgp peerdisplay bgp update-group命令的详细介绍请参见“三层技术-IP路由命令参考”中的“BGP”。

表2-17 EVPN显示和维护

操作

命令

显示BGP对等体组的信息

display bgp [ instance instance-name ] group l2vpn evpn [ group-name group-name ]

显示BGP EVPN路由信息

display bgp [ instance instance-name ] l2vpn evpn [ peer ipv4-address { advertised-routes | received-routes } [ statistics ] | route-distinguisher route-distinguisher [ route-type { auto-discovery | es | imet | ip-prefix | mac-ip } ] [ evpn-route route-length [ advertise-info ] ] | route-type { auto-discovery | es | imet | ip-prefix | mac-ip } | statistics ]

显示BGP对等体或对等体组的状态和统计信息

display bgp [ instance instance-name ] peer l2vpn evpn [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ]

显示BGP打包组的相关信息

display bgp [ instance instance-name ] update-group l2vpn evpn [ ipv4-address ]

显示EVPN通过BGP自动发现的邻居信息

display evpn auto-discovery { imet  [ peer ip-address] [ vsi vsi-name ] | macip-prefix [ nexthop next-hop ] [ count ] }

显示EVPN的MAC地址信息

display evpn route mac [ local | remote ] [ vsi vsi-name ] [ count ]

显示EVPN的ARP信息

display evpn route arp [ local | remote ] [ vpn-instance vpn-instance-name ] [ count ]

显示EVPN的ARP泛洪抑制信息

display evpn route arp suppression [ local | remote ] [ vsi vsi-name ] [ count ]

显示EVPN的路由表信息

display evpn routing-table vpn-instance vpn-instance-name [ count ]

 

2.15  EVPN典型配置举例(交换应用)

2.15.1  集中式EVPN网关配置举例

1. 组网需求

Switch A、Switch B为与服务器连接的VTEP设备;Switch C为与广域网连接的集中式EVPN网关设备;Switch D为RR,负责在交换机之间反射BGP路由。

虚拟机VM 1和VM 3属于VXLAN 10;VM 2和VM 4属于VXLAN 20。相同VXLAN之间可以二层互通,不同VXLAN之间、VXLAN与广域网之间可以通过集中式EVPN网关互通。

2. 组网图

图2-1 集中式EVPN网关配置组网图

3. 配置步骤

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

# 在VM 1和VM 3上指定网关地址为10.1.1.1;在VM 2和VM 4上指定网关地址为10.1.2.1。(具体配置过程略)

# 请按照图2-1配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)

(2)      配置Switch A

# 开启L2VPN能力。

<SwitchA> system-view

[SwitchA] l2vpn enable

# 配置VXLAN隧道工作在二层转发模式。

[SwitchA] undo vxlan ip-forwarding

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

[SwitchA] vxlan tunnel mac-learning disable

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

[SwitchA] vsi vpna

[SwitchA-vsi-vpna] arp suppression enable

[SwitchA-vsi-vpna] evpn encapsulation vxlan

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

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

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

# 创建VXLAN 10。

[SwitchA-vsi-vpna] vxlan 10

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

[SwitchA-vsi-vpna] quit

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

[SwitchA] vsi vpnb

[SwitchA-vsi-vpnb] arp suppression enable

[SwitchA-vsi-vpnb] evpn encapsulation vxlan

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

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

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

# 创建VXLAN 20。

[SwitchA-vsi-vpnb] vxlan 20

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

[SwitchA-vsi-vpnb] 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

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

[SwitchA] interface hundredgige 1/0/1

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

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

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

[SwitchA-HundredGigE1/0/1-srv1000] xconnect vsi vpna

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

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

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

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

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

[SwitchA-HundredGigE1/0/1-srv2000] xconnect vsi vpnb

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

[SwitchA-HundredGigE1/0/1] quit

(3)      配置Switch B

# 开启L2VPN能力。

<SwitchB> system-view

[SwitchB] l2vpn enable

# 配置VXLAN隧道工作在二层转发模式。

[SwitchB] undo vxlan ip-forwarding

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

[SwitchB] vxlan tunnel mac-learning disable

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

[SwitchB] vsi vpna

[SwitchB-vsi-vpna] arp suppression enable

[SwitchB-vsi-vpna] evpn encapsulation vxlan

[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto

[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto

[SwitchB-vsi-vpna-evpn-vxlan] quit

# 创建VXLAN 10。

[SwitchB-vsi-vpna] vxlan 10

[SwitchB-vsi-vpna-vxlan-10] quit

[SwitchB-vsi-vpna] quit

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

[SwitchB] vsi vpnb

[SwitchB-vsi-vpnb] arp suppression enable

[SwitchB-vsi-vpnb] evpn encapsulation vxlan

[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto

[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto

[SwitchB-vsi-vpnb-evpn-vxlan] quit

# 创建VXLAN 20。

[SwitchB-vsi-vpnb] vxlan 20

[SwitchB-vsi-vpnb-vxlan-20] quit

[SwitchB-vsi-vpnb] quit

# 配置BGP发布EVPN路由。

[SwitchB] bgp 200

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

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

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

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

[SwitchB-bgp-default-evpn] quit

[SwitchB-bgp-default] quit

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

[SwitchB] interface hundredgige 1/0/1

[SwitchB-HundredGigE1/0/1] service-instance 1000

[SwitchB-HundredGigE1/0/1-srv1000] encapsulation s-vid 2

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

[SwitchB-HundredGigE1/0/1-srv1000] xconnect vsi vpna

[SwitchB-HundredGigE1/0/1-srv1000] quit

[SwitchB-HundredGigE1/0/1] quit

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

[SwitchB] interface hundredgige 1/0/2

[SwitchB-HundredGigE1/0/2] service-instance 2000

[SwitchB-HundredGigE1/0/2-srv2000] encapsulation s-vid 3

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

[SwitchB-HundredGigE1/0/2-srv2000] xconnect vsi vpnb

[SwitchB-HundredGigE1/0/2-srv2000] quit

[SwitchB-HundredGigE1/0/2] quit

(4)      配置Switch C

# 开启L2VPN能力。

<SwitchC> system-view

[SwitchC] l2vpn enable

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

[SwitchC] vxlan tunnel mac-learning disable

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

[SwitchC] vsi vpna

[SwitchC-vsi-vpna] evpn encapsulation vxlan

[SwitchC-vsi-vpna-evpn-vxlan] route-distinguisher auto

[SwitchC-vsi-vpna-evpn-vxlan] vpn-target auto

[SwitchC-vsi-vpna-evpn-vxlan] quit

# 创建VXLAN 10。

[SwitchC-vsi-vpna] vxlan 10

[SwitchC-vsi-vpna-vxlan-10] quit

[SwitchC-vsi-vpna] quit

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

[SwitchC] vsi vpnb

[SwitchC-vsi-vpnb] evpn encapsulation vxlan

[SwitchC-vsi-vpnb-evpn-vxlan] route-distinguisher auto

[SwitchC-vsi-vpnb-evpn-vxlan] vpn-target auto

[SwitchC-vsi-vpnb-evpn-vxlan] quit

# 创建VXLAN 20。

[SwitchC-vsi-vpnb] vxlan 20

[SwitchC-vsi-vpnb-vxlan-20] quit

[SwitchC-vsi-vpnb] quit

# 配置BGP发布EVPN路由。

[SwitchC] bgp 200

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

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

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

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

[SwitchC-bgp-default-evpn] quit

[SwitchC-bgp-default] quit

# 创建VSI虚接口VSI-interface1,并为其配置IP地址,该IP地址作为VXLAN 10内虚拟机的网关地址。

[SwitchC] interface vsi-interface 1

[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0

[SwitchC-Vsi-interface1] quit

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

[SwitchC] vsi vpna

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

[SwitchC-vsi-vpna] quit

# 创建VSI虚接口VSI-interface2,并为其配置IP地址,该IP地址作为VXLAN 20内虚拟机的网关地址。

[SwitchC] interface vsi-interface 2

[SwitchC-Vsi-interface2] ip address 10.1.2.1 255.255.255.0

[SwitchC-Vsi-interface2] quit

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

[SwitchC] vsi vpnb

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

[SwitchC-vsi-vpnb] quit

(5)      配置Switch D

# 配置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)      验证EVPN网关设备Switch C

# 查看Switch C上的EVPN路由信息,可以看到Switch C发送了网关的MAC/IP路由和IMET路由,并接收到Switch A和Switch B发送的MAC/IP路由和IMET路由。

[SwitchC] display bgp l2vpn evpn

 BGP local router ID is 3.3.3.3

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               Origin: i - IGP, e - EGP, ? - incomplete

 

 Total number of routes from all PEs: 8

 

 Route distinguisher: 1:10

 Total number of routes: 4

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >i [2][0][48][0000-1234-0001][0][0.0.0.0]/104

                        1.1.1.1         0          100        0       i

* >i [2][0][48][0000-1234-0002][0][0.0.0.0]/104

                        1.1.1.1         0          100        0       i

* >  [2][0][48][0003-0003-0003][32][10.1.1.1]/136

                        0.0.0.0         0          100        32768   i

* >i [3][10][32][1.1.1.1]/80

                        1.1.1.1         0          100        0       i

* >  [3][10][32][3.3.3.3]/80

                        0.0.0.0         0          100        32768   i

 

 Route distinguisher: 1:20

 Total number of routes: 4

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >i [2][0][48][0000-1234-0003][0][0.0.0.0]/104

                        3.3.3.3         0          100        0       i

* >i [2][0][48][0000-1234-0004][0][0.0.0.0]/104

                        3.3.3.3         0          100        0       i

* >  [2][0][48][0005-0005-0005][32][10.1.2.1]/136

                        0.0.0.0         0          100        32768   i

* >  [3][20][32][3.3.3.3]/80

                        0.0.0.0         0          100        32768   i

* >i [3][20][32][2.2.2.2]/80

                        3.3.3.3         0          100        0       i

# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。

[SwitchC] display interface tunnel

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64 kbps

Maximum transmission unit: 1464

Internet protocol processing: Disabled

Last clearing of counters: Never

Tunnel source 3.3.3.3, destination 2.2.2.2

Tunnel protocol/transport UDP_VXLAN/IP

Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 7 bytes/sec, 56 bits/sec, 0 packets/sec

Input: 10 packets, 980 bytes, 0 drops

Output: 85 packets, 6758 bytes, 0 drops

 

Tunnel1

Current state: UP

Line protocol state: UP

Description: Tunnel1 Interface

Bandwidth: 64 kbps

Maximum transmission unit: 1464

Internet protocol processing: Disabled

Last clearing of counters: Never

Tunnel source 3.3.3.3, destination 1.1.1.1

Tunnel protocol/transport UDP_VXLAN/IP

Last 300 seconds input rate: 1 bytes/sec, 8 bits/sec, 0 packets/sec

Last 300 seconds output rate: 9 bytes/sec, 72 bits/sec, 0 packets/sec

Input: 277 packets, 20306 bytes, 0 drops

Output: 1099 packets, 85962 bytes, 0 drops

# 查看Switch C上的VSI虚接口信息,可以看到VSI虚接口处于up状态。

[SwitchC] display interface vsi-interface

Vsi-interface1

Current state: UP

Line protocol state: UP

Description: Vsi-interface1 Interface

Bandwidth: 1000000 kbps

Maximum transmission unit: 1444

Internet address: 10.1.1.1/24 (primary)

IP packet frame type: Ethernet II, hardware address: 0003-0003-0003

IPv6 packet frame type: Ethernet II, hardware address: 0003-0003-0003

Physical: Unknown, baudrate: 1000000 kbps

Last clearing of counters: Never

Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 64 packets, 6272 bytes, 0 drops

 

Vsi-interface2

Current state: UP

Line protocol state: UP

Description: Vsi-interface2 Interface

Bandwidth: 1000000 kbps

Maximum transmission unit: 1500

Internet address: 10.1.1.2/24 (primary)

IP packet frame type: Ethernet II, hardware address: 0005-0005-0005

IPv6 packet frame type: Ethernet II, hardware address: 0005-0005-0005

Physical: Unknown, baudrate: 1000000 kbps

Last clearing of counters: Never

Last 300 seconds input rate: 41 bytes/sec, 328 bits/sec, 0 packets/sec

Last 300 seconds output rate: 52 bytes/sec, 416 bits/sec, 0 packets/sec

Input: 2016 packets, 190272 bytes, 0 drops

Output: 2144 packets, 197568 bytes, 0 drops

# 查看Switch C上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。

[SwitchC] display l2vpn vsi verbose

VSI Name: vpna

  VSI Index               : 0

  VSI State               : Up

  MTU                     : 1500

  Bandwidth               : -

  Broadcast Restrain      : -

  Multicast Restrain      : -

  Unknown Unicast Restrain: -

  MAC Learning            : Enabled

  MAC Table Limit         : -

  MAC Learning rate       : -

  Drop Unknown            : -

  Flooding                : Enabled

  Statistics              : Disabled

  Gateway Interface       : VSI-interface 1

  VXLAN ID                : 10

  Tunnels:

    Tunnel Name          Link ID    State    Type        Flood proxy

    Tunnel1              0x5000001  UP       Auto        Disabled

 

VSI Name: vpnb

  VSI Index               : 1

  VSI State               : Up

  MTU                     : 1500

  Bandwidth               : -

  Broadcast Restrain      : -

  Multicast Restrain      : -

  Unknown Unicast Restrain: -

  MAC Learning            : Enabled

  MAC Table Limit         : -

  MAC Learning rate       : -

  Drop Unknown            : -

  Flooding                : Enabled

  Statistics              : Disabled

  Gateway Interface       : VSI-interface 2

  VXLAN ID                : 20

  Tunnels:

    Tunnel Name          Link ID    State    Type        Flood proxy

    Tunnel0              0x5000000  UP       Auto        Disabled

# 查看Switch C上VSI的EVPN ARP表项信息,可以看到已学习到了虚拟机的ARP信息。

[SwitchC] display evpn route arp

Flags: D - Dynamic   B - BGP   G - Gateway   L - Local Active

 

VPN instance:-                               Interface:Vsi-interface2

IP address      MAC address     Router MAC      VSI Index   Flags

10.1.2.1        0005-0005-0005  -               1           GL

10.1.2.10       0000-1234-0002  -               1           B

10.1.2.20       0000-1234-0004  -               1           B

 

VPN instance:-                               Interface:Vsi-interface1

IP address      MAC address     Router MAC      VSI Index   Flags

10.1.1.1        0003-0003-0003  -               0           GL

10.1.1.10       0000-1234-0001  -               0           B

10.1.1.20       0000-1234-0003  -               0           B

# 查看Switch C上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。

[SwitchC] display fib 10.1.1.10

Destination count: 1 FIB entry count: 1

Flag:

  U:Useable   G:Gateway   H:Host   B:Blackhole   D:Dynamic   S:Static

  R:Relay     F:FRR

Destination/Mask   Nexthop         Flag     OutInterface/Token       Label

10.1.1.10/32       10.1.1.10       UH       Vsi1                     Null

(2)      验证主机之间可以互访

虚拟机VM 1、VM 2、VM 3、VM 4之间可以互访。

2.15.2  分布式EVPN网关配置举例

1. 组网需求

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与广域网之间通过边界网关实现三层互通。

2. 组网图

图2-2 分布式EVPN网关配置组网图

3. 配置步骤

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

# 在VM 1和VM 3上指定网关地址为10.1.1.1;在VM 2和VM 4上指定网关地址为10.1.2.1。(具体配置过程略)

# 请按照图2-2配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)

(2)      配置Switch A

# 开启L2VPN能力。

<SwitchA> system-view

[SwitchA] l2vpn enable

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

[SwitchA] vxlan tunnel mac-learning disable

[SwitchA] vxlan tunnel arp-learning disable

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

[SwitchA] vsi vpna

[SwitchA-vsi-vpna] evpn encapsulation vxlan

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

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

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

# 创建VXLAN 10。

[SwitchA-vsi-vpna] vxlan 10

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

[SwitchA-vsi-vpna] quit

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

[SwitchA] vsi vpnb

[SwitchA-vsi-vpnb] evpn encapsulation vxlan

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

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

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

# 创建VXLAN 20。

[SwitchA-vsi-vpnb] vxlan 20

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

[SwitchA-vsi-vpnb] 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

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

[SwitchA] interface hundredgige 1/0/1

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

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

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

[SwitchA-HundredGigE1/0/1-srv1000] xconnect vsi vpna

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

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

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

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

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

[SwitchA-HundredGigE1/0/1-srv2000] xconnect vsi vpnb

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

[SwitchA-HundredGigE1/0/1] quit

# 配置L3VNI的RD和RT。

[SwitchA] ip vpn-instance vpna

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

[SwitchA-vpn-instance-vpna] address-family ipv4

[SwitchA-vpn-ipv4-vpna] vpn-target 2:2

[SwitchA-vpn-ipv4-vpna] quit

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

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

[SwitchA-vpn-evpn-vpna] quit

[SwitchA-vpn-instance-vpna] quit

# 配置VSI虚接口VSI-interface1。

[SwitchA] interface vsi-interface 1

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

[SwitchA-Vsi-interface1] ip address 10.1.1.1 255.255.255.0

[SwitchA-Vsi-interface1] mac-address 1-1-1

[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 vpna

[SwitchA-Vsi-interface2] ip address 10.1.2.1 255.255.255.0

[SwitchA-Vsi-interface2] mac-address 2-2-2

[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 vpna

[SwitchA-Vsi-interface3] l3-vni 1000

[SwitchA-Vsi-interface3] quit

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

[SwitchA] vsi vpna

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

[SwitchA-vsi-vpna] quit

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

[SwitchA] vsi vpnb

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

[SwitchA-vsi-vpnb] quit

(3)      配置Switch B

# 开启L2VPN能力。

<SwitchB> system-view

[SwitchB] l2vpn enable

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

[SwitchB] vxlan tunnel mac-learning disable

[SwitchB] vxlan tunnel arp-learning disable

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

[SwitchB] vsi vpna

[SwitchB-vsi-vpna] evpn encapsulation vxlan

[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto

[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto

[SwitchB-vsi-vpna-evpn-vxlan] quit

# 创建VXLAN 10。

[SwitchB-vsi-vpna] vxlan 10

[SwitchB-vsi-vpna-vxlan-10] quit

[SwitchB-vsi-vpna] quit

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

[SwitchB] vsi vpnb

[SwitchB-vsi-vpnb] evpn encapsulation vxlan

[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto

[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto

[SwitchB-vsi-vpnb-evpn-vxlan] quit

# 创建VXLAN 20。

[SwitchB-vsi-vpnb] vxlan 20

[SwitchB-vsi-vpnb-vxlan-20] quit

[SwitchB-vsi-vpnb] quit

# 配置BGP发布EVPN路由。

[SwitchB] bgp 200

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

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

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

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

[SwitchB-bgp-default-evpn] quit

[SwitchB-bgp-default] quit

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

[SwitchB] interface hundredgige 1/0/1

[SwitchB-HundredGigE1/0/1] service-instance 1000

[SwitchB-HundredGigE1/0/1-srv1000] encapsulation s-vid 2

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

[SwitchB-HundredGigE1/0/1-srv1000] xconnect vsi vpna

[SwitchB-HundredGigE1/0/1-srv1000] quit

[SwitchB-HundredGigE1/0/1] quit

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

[SwitchB] interface hundredgige 1/0/2

[SwitchB-HundredGigE1/0/2] service-instance 2000

[SwitchB-HundredGigE1/0/2-srv2000] encapsulation s-vid 3

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

[SwitchB-HundredGigE1/0/2-srv2000] xconnect vsi vpnb

[SwitchB-HundredGigE1/0/2-srv2000] quit

[SwitchB-HundredGigE1/0/2] quit

# 配置L3 VNI的RD和RT。

[SwitchB] ip vpn-instance vpna

[SwitchB-vpn-instance-vpna] route-distinguisher 1:1

[SwitchB-vpn-instance-vpna] address-family ipv4

[SwitchB-vpn-ipv4-vpna] vpn-target 2:2

[SwitchB-vpn-ipv4-vpna] quit

[SwitchB-vpn-instance-vpna] address-family evpn

[SwitchB-vpn-evpn-vpna] vpn-target 1:1

[SwitchB-vpn-evpn-vpna] quit

[SwitchB-vpn-instance-vpna] quit

# 配置VSI虚接口VSI-interface1。

[SwitchB] interface vsi-interface 1

[SwitchB-Vsi-interface1] ip binding vpn-instance vpna

[SwitchB-Vsi-interface1] ip address 10.1.1.1 255.255.255.0

[SwitchB-Vsi-interface1] mac-address 1-1-1

[SwitchB-Vsi-interface1] distributed-gateway local

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

[SwitchB-Vsi-interface1] quit

# 创建VSI虚接口VSI-interface2。

[SwitchB] interface vsi-interface 2

[SwitchB-Vsi-interface2] ip binding vpn-instance vpna

[SwitchB-Vsi-interface2] ip address 10.1.2.1 255.255.255.0

[SwitchB-Vsi-interface2] mac-address 2-2-2

[SwitchB-Vsi-interface2] distributed-gateway local

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

[SwitchB-Vsi-interface2] quit

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

[SwitchB] interface vsi-interface 3

[SwitchB-Vsi-interface3] ip binding vpn-instance vpna

[SwitchB-Vsi-interface3] l3-vni 1000

[SwitchB-Vsi-interface3] quit

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

[SwitchB] vsi vpna

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

[SwitchB-vsi-vpna] quit

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

[SwitchB] vsi vpnb

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

[SwitchB-vsi-vpnb] quit

(4)      配置Switch C

# 开启L2VPN能力。

<SwitchC> system-view

[SwitchC] l2vpn enable

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

[SwitchC] vxlan tunnel mac-learning disable

[SwitchC] vxlan tunnel arp-learning disable

# 配置BGP发布EVPN路由。

[SwitchC] bgp 200

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

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

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

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

[SwitchC-bgp-default-evpn] quit

[SwitchC-bgp-default] quit

# 配置L3 VNI的RD和RT。

[SwitchC] ip vpn-instance vpna

[SwitchC-vpn-instance-vpna] route-distinguisher 1:1

[SwitchC-vpn-instance-vpna] address-family ipv4

[SwitchC-vpn-ipv4-vpna] vpn-target 2:2

[SwitchC-vpn-ipv4-vpna] quit

[SwitchC-vpn-instance-vpna] address-family evpn

[SwitchC-vpn-evpn-vpna] vpn-target 1:1

[SwitchC-vpn-evpn-vpna] quit

[SwitchC-vpn-instance-vpna] quit

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

[SwitchC] interface vsi-interface 3

[SwitchC-Vsi-interface3] ip binding vpn-instance vpna

[SwitchC-Vsi-interface3] l3-vni 1000

[SwitchC-Vsi-interface3] quit

# 配置缺省路由。

[SwitchC] ip route-static vpn-instance vpna 0.0.0.0 0 null0

# 将缺省路由引入到VPN实例vpna的BGP IPv4单播路由表中。

[SwitchC] bgp 200

[SwitchC-bgp-default] ip vpn-instance vpna

[SwitchC-bgp-default-vpna] address-family ipv4 unicast

[SwitchC-bgp-default-ipv4-vpna] default-route imported

[SwitchC-bgp-default-ipv4-vpna] import-route static

[SwitchC-bgp-default-ipv4-vpna] quit

[SwitchC-bgp-default-vpna] quit

[SwitchC-bgp-default] quit

(5)      配置Switch D

# 配置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)      验证分布式EVPN网关设备Switch A

# 查看Switch A上的EVPN路由信息,可以看到Switch A发送了网关的IP前缀路由、各VSI的IMET路由和MAC/IP路由,并接收到Switch B发送的网关IP前缀路由、各VSI的IMET路由和MAC/IP路由。

[SwitchA] display bgp l2vpn evpn

 BGP local router ID is 1.1.1.1

 Status codes: * - valid, > - best, d - dampened, h - history,

               s - suppressed, S - stale, i - internal, e - external

               Origin: i - IGP, e - EGP, ? - incomplete

 

 Total number of routes from all PEs: 14

 

 Route distinguisher: 1:1

 Total number of routes: 4

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >  [5][0][24][10.1.1.0]/80

                        0.0.0.0         0          100        32768   i

* >  [5][0][24][10.1.2.0]/80

                        0.0.0.0         0          100        32768   i

* >i [5][0][24][10.1.1.0]/80

                        2.2.2.2         0          100        0       i

* >i [5][0][24][10.1.2.0]/80

                        2.2.2.2         0          100        0       i

 

 Route distinguisher: 1:10

 Total number of routes: 5

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >  [2][0][48][0000-1234-0001][0][0.0.0.0]/104

                        0.0.0.0         0          100        32768   i

* >  [2][0][48][0000-1234-0001][32][10.1.1.10]/136

                        0.0.0.0         0          100        32768   i

* >i [2][0][48][0000-1234-0003][32][10.1.1.20]/136

                        2.2.2.2         0          100        0       i

* >  [3][10][32][1.1.1.1]/80

                        0.0.0.0         0          100        32768   i

* >i [3][10][32][2.2.2.2]/80

                        2.2.2.2         0          100        32768   i

 

 Route distinguisher: 1:20

 Total number of routes: 5

 

     Network            NextHop         MED        LocPrf     PrefVal Path/Ogn

 

* >  [2][0][48][0000-1234-0002][0][0.0.0.0]/104

                        0.0.0.0         0          100        32768   i

* >  [2][0][48][0000-1234-0002][32][10.1.2.10]/136

                        0.0.0.0         0          100        32768   i

* >i [2][0][48][0000-1234-0004][32][10.1.2.20]/136

                        2.2.2.2         0          100        0       i

* >  [3][10][32][1.1.1.1]/80

                        0.0.0.0         0          100        32768   i

* >i [3][10][32][2.2.2.2]/80

                        2.2.2.2         0          100        32768   i

# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。(以Tunnel0接口为例)

[SwitchA] display interface tunnel 0

Tunnel0

Current state: UP

Line protocol state: UP

Description: Tunnel0 Interface

Bandwidth: 64 kbps

Maximum transmission unit: 1464

Internet protocol processing: Disabled

Last clearing of counters: Never

Tunnel source 1.1.1.1, destination 2.2.2.2

Tunnel protocol/transport UDP_VXLAN/IP

Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 9 packets, 882 bytes, 0 drops

Output: 9 packets, 882 bytes, 0 drops

# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。(以VSI虚接口1为例)

[SwitchA] display interface vsi-interface 1

Vsi-interface1

Current state: UP

Line protocol state: UP

Description: Vsi-interface1 Interface

Bandwidth: 1000000 kbps

Maximum transmission unit: 1444

Internet address: 10.1.1.1/24 (primary)

IP packet frame type: Ethernet II, hardware address: 0001-0001-0001

IPv6 packet frame type: Ethernet II, hardware address: 0001-0001-0001

Physical: Unknown, baudrate: 1000000 kbps

Last clearing of counters: Never

Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec

Input: 0 packets, 0 bytes, 0 drops

Output: 192 packets, 18816 bytes, 0 drops

# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。

[SwitchA] display l2vpn vsi verbose

VSI Name: Auto_L3VNI200_3

  VSI Index               : 1

  VSI State               : Down

  MTU                     : 1500

  Bandwidth               : -

  Broadcast Restrain      : -

  Multicast Restrain      : -

  Unknown Unicast Restrain: -

  MAC Learning            : Enabled

  MAC Table Limit         : -

  MAC Learning rate       : -

  Drop Unknown            : -

  Flooding                : Enabled

  Statistics              : Disabled

  Gateway Interface       : VSI-interface 3

  VXLAN ID                : 1000

 

VSI Name: vpna

  VSI Index               : 0

  VSI State               : Up

  MTU                     : 1500

  Bandwidth               : -

  Broadcast Restrain      : -

  Multicast Restrain      : -

  Unknown Unicast Restrain: -

  MAC Learning            : Enabled

  MAC Table Limit         : -

  MAC Learning rate       : -

  Drop Unknown            : Disabled

  Flooding                : Enabled

  Statistics              : Disabled

  Gateway Interface       : VSI-interface 1

  VXLAN ID                : 10

  ACs:

    AC                               Link ID    State

    HGE1/0/1 srv1000                 0          Up

 

VSI Name: vpnb

  VSI Index               : 0

  VSI State               : Up

  MTU                     : 1500

  Bandwidth               : -

  Broadcast Restrain      : -

  Multicast Restrain      : -

  Unknown Unicast Restrain: -

  MAC Learning            : Enabled

  MAC Table Limit         : -

  MAC Learning rate       : -

  Drop Unknown            : -

  Flooding                : Enabled

  Statistics              : Disabled

  Gateway Interface       : VSI-interface 2

  VXLAN ID                : 20

  ACs:

    AC                               Link ID    State

    HGE1/0/1 srv2000                 0          Up

# 查看Switch A上VSI的ARP表项信息,可以看到已学习到了本地和远端虚拟机的ARP信息。

[SwitchA] display arp

  Type: S-Static   D-Dynamic   O-Openflow   R-Rule   M-Multiport  I-Invalid

IP address      MAC address    VID        Interface/Link ID        Aging Type

10.1.1.10       0000-1234-0001 0          0x0                      20    D

10.1.2.10       0000-1234-0002 0          0x0                      19    D

2.2.2.2         a0ce-5e24-0100 1          Tunnel0                  N/A   R

# 查看Switch A上VSI的EVPN ARP表项信息,可以看到已学习到了本地虚拟机的ARP信息。

[SwitchA] display evpn route arp

Flags: D - Dynamic   B - BGP   G - Gateway   L - Local Active

 

VPN instance:vpna                            Interface:Vsi-interface1

IP address      MAC address     Router MAC      VSI Index   Flags

10.1.1.1        0003-0003-0003  a0ce-7e40-0400  0           GL

10.1.1.10       0000-1234-0001  a0ce-7e40-0400  0           DL

10.1.2.10       0000-1234-0002  a0ce-7e40-0400  0           DL

10.1.1.20       0000-1234-0003  a0ce-7e40-0400  0           B

10.1.2.20       0000-1234-0004  a0ce-7e40-0400  0           B

(2)      验证主机之间可以互访

虚拟机VM 1、VM 2、VM 3、VM 4之间可以互访。

 

不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!