01-EVPN配置
本章节下载: 01-EVPN配置 (573.95 KB)
EVPN(Ethernet Virtual Private Network,以太网虚拟专用网络)是一种二层VPN技术,控制平面采用MP-BGP通告EVPN路由信息,数据平面采用VXLAN封装方式转发报文。租户的物理站点分散在不同位置时,EVPN可以基于已有的服务提供商或企业IP网络,为同一租户的相同子网提供二层互联;通过EVPN网关为同一租户的不同子网提供三层互联,并为其提供与外部网络的三层互联。
EVPN不仅继承了MP-BGP和VXLAN的优势,还提供了新的功能。EVPN具有如下特点:
· 简化配置:通过MP-BGP实现VTEP自动发现、VXLAN隧道自动建立、VXLAN隧道与VXLAN自动关联,无需用户手工配置,降低网络部署难度。
· 分离控制平面与数据平面:控制平面负责发布路由信息,数据平面负责转发报文,分工明确,易于管理。
· 支持对称IRB(Integrated Bridging and Routing,集成的桥接和路由):MP-BGP同时发布二层MAC地址和三层路由信息,VTEP既可以进行二层转发,也可以进行三层路由。这样,不仅可以保证流量采用最优路径转发,还可以减少广播流量。
图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-2所示,EVPN通常采用Spine(核心)—Leaf(分支)的分层结构。Leaf层的设备作为VTEP对报文进行EVPN相关处理;Spine层为核心设备,根据报文的目的IP地址转发报文。EVPN网络中的设备属于同一个AS(Autonomous System,自治系统)时,为了避免在所有VTEP之间建立IBGP对等体,可以将核心设备配置为RR(Route Reflector,路由反射器)。此时,RR需要发布、接收EVPN路由,但不需要封装、解封装VXLAN报文。
图1-2 EVPN典型组网
为了支持EVPN,MP-BGP在L2VPN地址族下定义了新的子地址族——EVPN地址族,并新增了如下EVPN NLRI(Network Layer Reachability Information,网络层可达性信息),即EVPN路由:
· 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前缀的形式通告引入的外部路由。
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路由。
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.7.2 分布式EVPN网关”。
EVPN的MAC地址/ARP表项学习、流量转发均基于报文所属的VXLAN进行,因此,VTEP接收到报文需要识别报文所属的VXLAN。
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。
对于从VXLAN隧道上接收到的VXLAN报文,VTEP根据报文中携带的VXLAN ID判断该报文所属的VXLAN。
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接口)。
VTEP接收到二层数据帧后,判断其所属的VSI,根据目的MAC地址查找该VSI的MAC地址表,通过表项的出接口转发该数据帧。如图1-4所示,如果出接口为本地接口,则VTEP直接通过该接口转发数据帧;如图1-5所示,如果出接口为Tunnel接口,则VTEP根据Tunnel接口为数据帧添加VXLAN封装后,通过VXLAN隧道将其转发给远端VTEP。
泛洪流量包括组播、广播和未知单播流量,该流量通过单播路由方式(头端复制)转发。VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。
如图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隧道。
EVPN网关用来为用户站点内的虚拟机提供三层转发业务。EVPN网关分为:
· 集中式EVPN网关:配置简单,但不同VXLAN之间的流量以及VXLAN访问外界网络的流量全部由集中式EVPN网关处理,网关压力较大。
· 分布式EVPN网关:配置比较复杂,但每台VTEP设备都可以作为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 分布式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虚接口。
三层流量通过查找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表项。
分布式网关对流量的转发方式分为两种:
· 区分二三层转发方式:对于二层流量,查找MAC地址表进行转发;对于三层流量,查找FIB表进行转发。在该方式下,建议在分布式网关上开启ARP泛洪抑制功能,以减少泛洪流量。
· 全三层转发方式:对于二层和三层流量,均查找FIB表进行转发。在该方式下,需要在分布式网关上开启本地代理ARP功能。
查找MAC地址表转发二层流量的过程,请参见“1.6.2 转发已知单播流量”。
如图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表项转发该报文。
为了避免广播发送的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请求进行泛洪。
MAC地址迁移是指虚拟机或主机从一个ES迁移到另一个ES。原ES连接的VTEP无法感知MAC地址已经迁移到其他ES段。新迁移到的ES所在VTEP需要重新通告该MAC/IP路由。原VTEP在收到此路由后,撤销之前通告的路由。MAC地址每次迁移,迁移序列号依次递增,以便在MAC地址多次迁移时,通过序列号来标识最近一次迁移。
配置EVPN时,VXLAN公网侧端口必须位于以下接口板上:
· 下列SG系列接口板:LSQM1TGS48RSG3、LSUM2QGS12SG0、LSUM2TGS32QSSG0、LSUM2TGS48SG3
表2-1 EVPN配置任务简介
配置任务 |
说明 |
详细配置 |
创建VSI和VXLAN |
必选 |
|
配置EVPN实例 |
必选 |
|
配置BGP发布EVPN路由 |
必选 |
|
配置AC与VSI关联 |
必选 |
|
配置集中式EVPN网关 |
转发三层流量时,二者必选其一 |
|
配置分布式EVPN网关 |
||
管理远端MAC地址和远端ARP自动学习 |
可选 |
|
配置允许向本地站点发布BGP EVPN路由 |
可选 |
|
配置VSI泛洪抑制 |
可选 |
|
配置ARP泛洪抑制 |
可选 |
表2-2 创建VSI和VXLAN
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启L2VPN功能 |
l2vpn enable |
缺省情况下,L2VPN功能处于关闭状态 |
创建VSI,并进入VSI视图 |
vsi vsi-name |
缺省情况下,不存在VSI |
(可选)配置VSI的描述信息 |
description text |
缺省情况下,未配置VSI的描述信息 |
开启VSI |
undo shutdown |
缺省情况下,VSI处于开启状态 |
(可选)配置VSI的MTU值 |
mtu mtu |
缺省情况下,VSI的MTU值为1500字节 |
(可选)开启VSI的MAC地址学习功能 |
mac-learning enable |
缺省情况下,VSI的MAC地址学习功能处于开启状态 |
创建VXLAN,并进入VXLAN视图 |
vxlan vxlan-id |
缺省情况下,不存在VXLAN 在一个VSI下只能创建一个VXLAN 不同VSI下创建的VXLAN,其VXLAN ID不能相同 |
用于二层交换的VXLAN网络无需关联VPN实例。VTEP在发布该VXLAN内路由时,携带VXLAN对应EVPN实例下配置的RD和RT。
表2-3 配置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匹配,反之亦然 |
下表中peer as-number、peer enable、peer allow-as-loop、peer reflect-client、reflect between-clients、reflector cluster-id、refresh bgp和reset bgp命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
表2-4 配置BGP发布EVPN路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动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 |
缺省情况下,没有配置路由反射器及其客户机 |
(可选)允许路由反射器在客户机之间反射L2VPN信息 |
reflect between-clients |
缺省情况下,允许路由反射器在客户机之间反射L2VPN信息 |
(可选)配置路由反射器的集群ID |
reflector cluster-id { cluster-id | ipv4-address } |
缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID |
(可选)配置路由反射器对反射的EVPN路由进行过滤 |
rr-filter ext-comm-list-number |
缺省情况下,路由反射器不会对反射的L2VPN信息进行过滤 |
(可选)配置向EBGP对等体/对等体组发布路由时不改变下一跳 |
peer { group-name | ip-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 |
- |
将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。以太网服务实例提供了多种报文匹配规则(包括接口接收到的所有报文、所有携带VLAN Tag的报文和所有不携带VLAN Tag的报文等),为报文关联VSI提供了更加灵活的方式。
配置以太网服务实例与VSI关联时,需要注意:
· 为确保转发正常,端口上以太网服务实例的报文匹配规则需要与该端口上允许通过的VLAN、VLAN报文是否带Tag配置保持一致。
· 如果以太网服务实例采用缺省的报文匹配规则(encapsulation default)或匹配携带VLAN Tag的报文(encapsulation tagged),请指定接入模式为Ethernet(相关命令为xconnect vsi)。
· 当接入模式为VLAN时,如果端口接收到的报文不带Tag,需要配置报文匹配规则为encapsulation untagged。
表2-5 配置以太网服务实例与VSI关联
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网接口视图或二层聚合接口视图 |
· 进入二层以太网接口视图: · 进入二层聚合接口视图: |
- |
创建以太网服务实例,并进入以太网服务实例视图 |
service-instance instance-id |
缺省情况下,不存在以太网服务实例 |
配置以太网服务实例的报文匹配规则 |
· encapsulation s-vid vlan-id [ only-tagged ] · encapsulation s-vid vlan-id c-vid vlan-id · encapsulation { default | tagged | untagged } |
缺省情况下,未配置报文匹配规则 |
将以太网服务实例与VSI关联 |
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ] [ track track-entry-number&<1-3> ] |
缺省情况下,以太网服务实例未关联VSI 配置本功能时,如果不指定access-mode参数,将采用缺省接入模式VLAN |
在集中式EVPN网关组网中,VTEP上建议开启ARP泛洪抑制功能,以减少泛洪流量。
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 |
配置VSI虚接口的IPv4地址或IPv6地址 |
· 配置VSI虚接口的IPv4地址: · 配置VSI虚接口的IPv6地址: |
缺省情况下,未配置VSI虚接口的IPv4地址和IPv6地址 |
退回系统视图 |
quit |
- |
进入VXLAN所在VSI视图 |
vsi vsi-name |
- |
为VSI指定网关接口 |
gateway vsi-interface vsi-interface-id |
缺省情况下,未指定VSI的网关接口 |
分布式EVPN网关连接IPv4站点网络时,所有网关上都需要为相同VSI虚接口配置相同的MAC地址。如果网关同时连接IPv4站点网络和IPv6站点网络,则不同分布式EVPN网关上需要为相同VSI虚接口配置不同的链路本地地址。
在分布式EVPN网关设备上,如果开启了ARP泛洪抑制功能,并在VSI虚接口上开启了本地代理ARP功能,则只有本地代理ARP功能生效。建议不要在分布式EVPN网关设备上同时开启这两个功能。
如果虚拟机要想与外部网络进行三层通信,那么完成分布式EVPN网关的配置后,还需要在接入虚拟机的本地分布式EVPN网关上配置静态路由或策略路由:
· 配置静态路由:指定路由的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
· 配置策略路由:通过apply default-next-hop命令或apply next-hop命令设置报文的缺省下一跳或下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。策略路由的配置方法,请参见“三层技术-IP路由配置指导”中的“策略路由”。
表2-7 配置VSI虚接口作为分布式网关接口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 |
配置VSI虚接口的IPv4地址或IPv6地址 |
· 配置VSI虚接口的IPv4地址: · 配置VSI虚接口的IPv6地址: |
缺省情况下,未配置VSI虚接口的IPv4地址和IPv6地址 |
配置VSI虚接口为分布式网关接口 |
distributed-gateway local |
缺省情况下,VSI虚接口不是分布式本地网关接口 |
(可选)开启本地代理ARP功能 |
local-proxy-arp enable [ ip-range startIP to endIP ] |
缺省情况下,本地代理ARP功能处于关闭状态 本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“代理ARP” |
(可选)开启本地ND代理功能 |
local-proxy-nd enable |
缺省情况下,本地ND代理功能处于关闭状态 本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础” |
退回系统视图 |
quit |
- |
进入VXLAN所在VSI视图 |
vsi vsi-name |
- |
为VSI指定网关接口 |
gateway vsi-interface vsi-interface-id |
缺省情况下,未指定VSI的网关接口 |
配置当前VSI所属的子网网段 |
gateway subnet { ipv4-address wildcard-mask | ipv6-address prefix-length } |
缺省情况下,未指定VSI所属的子网网段 为了节省分布式VXLAN IP网关设备上的三层接口资源,在网关设备上多个VXLAN可以共用一个VSI虚接口,为VSI虚接口配置一个主IPv4地址和多个从IPv4地址、或多个IPv6地址,分别作为不同VXLAN内虚拟机的网关地址 多个VXLAN共用一个VSI虚接口时,网关设备无法判断从VSI虚接口接收到的报文属于哪个VXLAN。为了解决该问题,需要在VSI视图下通过本命令指定VSI所属的子网网段,通过子网网段判断报文所属的VSI,并在该VSI内转发报文,从而限制广播报文范围,有效地节省带宽资源 |
表2-8 配置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 |
在BGP-VPN IPv4单播地址族视图下引入IGP路由后,如果该VPN实例关联了L3VNI,则引入的路由将作为EVPN的IP前缀路由发布给远端VTEP,该路由携带VPN实例视图下配置的RD和RT。远端VTEP接收到EVPN的IP前缀路由,判断本地EVPN视图下配置的Export target是否与路由中的RT属性匹配。若匹配则接收该路由,并查找Export target与路由中RT匹配的VPN实例,将该路由添加到该VPN实例的路由表中。
配置发布IP前缀路由时,需要注意:
· 只有分布式EVPN网关组网支持本配置。
· VPN实例视图下配置的RT要与该VPN实例的EVPN视图下配置的RT相同。
表2-9 配置发布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路由表中 |
缺省情况下,设备从VXLAN隧道接收到报文后可以自动学习远端虚拟机的MAC地址和ARP信息。在EVPN组网中,为了避免自动学习的远端MAC地址/ARP信息与通过BGP通告的MAC地址/ARP信息冲突,建议关闭远端MAC地址和远端ARP自动学习功能。
表2-10 关闭远端MAC地址和远端ARP自动学习功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
关闭远端MAC地址自动学习功能 |
vxlan tunnel mac-learning disable |
缺省情况下,远端MAC地址自动学习功能处于开启状态 |
关闭远端ARP自动学习功能 |
vxlan tunnel arp-learning disable |
缺省情况下,远端ARP自动学习功能处于开启状态 |
VTEP可能会同时向远端VTEP通告MAC地址信息和ARP信息。其中,ARP信息中已经包含MAC地址信息。为了避免重复,可以执行本配置来关闭MAC地址信息通告功能。
表2-11 关闭MAC地址信息通告功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入EVPN实例视图 |
evpn encapsulation vxlan |
- |
关闭MAC地址信息通告功能 |
mac-advertising disable |
缺省情况下,MAC地址信息通告功能处于开启状态 |
VTEP可能会同时接收到远端VTEP通告的MAC地址信息和ARP信息。其中,ARP信息中包含MAC地址信息。为了避免重复,可以在VTEP上执行本配置来禁止EVPN从ARP信息中学习MAC地址表项,EVPN仅通过MAC地址信息学习远端MAC地址表项。
表2-12 配置禁止EVPN从ARP信息中学习MAC地址表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入EVPN实例视图 |
evpn encapsulation vxlan |
- |
配置禁止EVPN从ARP信息中学习MAC地址表项 |
arp mac-learning disable |
缺省情况下,EVPN可以从ARP信息中学习MAC地址表项 |
配置允许对外发布 BGP EVPN路由后,设备接收到BGP EVPN路由,并将其添加到某个VPN实例路由表后,会将该路由(私网路由)发布到本地站点。
表2-13 配置允许向本地站点发布BGP EVPN路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
启动BGP实例,并进入BGP实例视图 |
bgp as-number [ instance instance-name ] [ multi-session-thread ] |
缺省情况下,没有运行BGP,不存在BGP实例 |
创建BGP-VPN实例,并进入BGP-VPN实例视图 |
ip vpn-instance vpn-instance-name |
缺省情况下,不存在BGP-VPN实例 |
创建BGP-VPN IPv4单播地址族,并进入BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
缺省情况下,不存在BGP-VPN IPv4单播地址族 |
配置允许向本地站点发布BGP EVPN路由 |
advertise l2vpn evpn |
缺省情况下,允许向本地站点发布BGP EVPN路由 |
缺省情况下,VTEP从本地站点内接收到目的MAC地址未知的单播数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点。如果用户希望把该类数据帧限制在本地站点内,不通过VXLAN隧道将其转发到远端站点,则可以通过本命令手工禁止VXLAN对应VSI的泛洪功能。
禁止泛洪功能后,为了将某些MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。
表2-14 配置VSI泛洪抑制
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入VSI视图 |
vsi vsi-name |
- |
|
关闭VSI的泛洪功能 |
flooding disable { all | { broadcast | unknown-multicast | unknown-unicast } * } |
缺省情况下,VSI泛洪功能处于开启状态 |
|
(可选)配置VSI选择性泛洪的MAC地址 |
selective-flooding mac-address mac-address |
缺省情况下,不存在VSI选择性泛洪MAC地址 如果用户只希望某些目的MAC地址的报文可以泛洪到其它站点,可以先通过flooding disable命令关闭泛洪功能,再通过本命令配置选择性泛洪的MAC地址 |
|
开启ARP泛洪抑制时需要注意:如果同时执行flooding disable命令关闭了VSI的泛洪功能,则建议通过mac-address timer命令配置动态MAC地址的老化时间大于25分钟(ARP泛洪抑制表项的老化时间),以免MAC地址在ARP泛洪抑制表项老化之前老化,产生黑洞MAC地址。
表2-15 配置ARP泛洪抑制
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入VSI视图 |
vsi vsi-name |
- |
|
开启ARP泛洪抑制功能 |
arp suppression enable |
缺省情况下,ARP泛洪抑制功能处于关闭状态 |
|
在完成上述配置后,在任意视图下执行display命令可以显示配置后EVPN的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,用户可以执行reset命令来清除EVPN的相关信息。
display bgp group、display bgp peer、display bgp update-group命令的详细介绍请参见“三层技术-IP路由命令参考”中的“BGP”。
操作 |
命令 |
显示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 ] |
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-1 集中式EVPN网关配置组网图
(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
# 关闭远端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
# 配置接入服务器的接口Ten-GigabitEthernet1/0/1为Trunk端口,允许VLAN 2和VLAN 3通过。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2 3
# 在接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
# 在接口Ten-GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 2000
[SwitchA-Ten-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv2000] xconnect vsi vpnb
[SwitchA-Ten-GigabitEthernet1/0/1-srv2000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端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
# 配置接口Ten-GigabitEthernet1/0/1为Trunk端口,允许VLAN 2通过,并创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 配置接口Ten-GigabitEthernet1/0/2为Trunk端口,允许VLAN 3通过,并创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/2
[SwitchB-Ten-GigabitEthernet1/0/2] port link-type trunk
[SwitchB-Ten-GigabitEthernet1/0/2] port trunk permit vlan 3
[SwitchB-Ten-GigabitEthernet1/0/2] service-instance 2000
[SwitchB-Ten-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchB-Ten-GigabitEthernet1/0/2-srv2000] xconnect vsi vpnb
[SwitchB-Ten-GigabitEthernet1/0/2-srv2000] quit
[SwitchB-Ten-GigabitEthernet1/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
(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
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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: 1500
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 : -
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 : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 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
Interface: Vsi-interface2 VPN instance name: -
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
Interface: Vsi-interface1 VPN instance name: -
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之间可以互访。
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 分布式EVPN网关配置组网图
(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
# 配置接入服务器的接口Ten-GigabitEthernet1/0/1为Trunk端口,允许VLAN 2和VLAN 3通过。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2 3
# 在接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
# 在接口Ten-GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 2000
[SwitchA-Ten-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv2000] xconnect vsi vpnb
[SwitchA-Ten-GigabitEthernet1/0/1-srv2000] quit
[SwitchA-Ten-GigabitEthernet1/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
# 配置接口Ten-GigabitEthernet1/0/1为Trunk端口,允许VLAN 2通过,并创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-Ten-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 配置接口Ten-GigabitEthernet1/0/2为Trunk端口,允许VLAN 3通过,并创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/2
[SwitchB-Ten-GigabitEthernet1/0/2] port link-type trunk
[SwitchB-Ten-GigabitEthernet1/0/2] port trunk permit vlan 3
[SwitchB-Ten-GigabitEthernet1/0/2] service-instance 2000
[SwitchB-Ten-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchB-Ten-GigabitEthernet1/0/2-srv2000] xconnect vsi vpnb
[SwitchB-Ten-GigabitEthernet1/0/2-srv2000] quit
[SwitchB-Ten-GigabitEthernet1/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
(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状态。(以Tunnel1接口为例)
[SwitchA] display interface tunnel 1
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Output queue - Urgent queuing: Size/Length/Discards 0/100/0
Output queue - Protocol queuing: Size/Length/Discards 0/500/0
Output queue - FIFO queuing: Size/Length/Discards 0/75/0
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: 1500
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 : -
Drop Unknown : -
Flooding : Disabled
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 : -
Drop Unknown : -
Flooding : Disabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
ACs:
AC Link ID State
XGE1/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 : -
Drop Unknown : -
Flooding : Disabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
ACs:
AC Link ID State
XGE1/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 Tunnel1 N/A R
# 查看Switch A上VSI的EVPN ARP表项信息,可以看到已学习到了本地虚拟机的ARP信息。
[SwitchA] display evpn route arp
Flags: D - Dynamic B - BGP G - Gateway L - Local Active
Interface:Vsi-interface1 VPN instance name:vpna
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 0001-0001-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保留在没有任何通知或提示的情况下对资料内容进行修改的权利!