01-EVPN配置
本章节下载: 01-EVPN配置 (575.03 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 Routing and Bridging,集成的路由和桥接):MP-BGP同时发布二层MAC地址和三层路由信息,VTEP既可以进行二层转发,也可以进行三层路由。这样,不仅可以保证流量采用最优路径转发,还可以减少广播流量。
图1-1 EVPN网络模型示意图
如图1-1所示,EVPN的典型网络模型中包括如下几部分:
· VTEP(VXLAN Tunnel End Point,VXLAN隧道端点):EVPN的边缘设备。EVPN的相关处理都在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路由:
· 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路由。
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 EVPN网关转发三层流量”。
EVPN的MAC地址/ARP表项学习、流量转发均基于报文所属的VXLAN进行,因此,VTEP接收到报文需要识别报文所属的VXLAN。
VTEP将连接本地站点的以太网服务实例(Service Instance)与VSI关联。VTEP从以太网服务实例接收到数据帧后,查找与其关联的VSI,VSI内创建的VXLAN即为该数据帧所属的VXLAN。
在VXLAN中,与VSI关联的以太网服务实例称为AC(Attachment Circuit,接入电路)。以太网服务实例在二层以太网接口上创建,它定义了一系列匹配规则(匹配接口接收到的所有报文、匹配所有携带VLAN Tag的报文、匹配所有不携带VLAN Tag的报文等),用来灵活地匹配从该二层以太网接口上接收到的数据帧。
如图1-3所示,Terminal 1属于VLAN 2,在VTEP上配置以太网服务实例1匹配VLAN 2的报文,将以太网服务实例1与VSI A绑定,并在VSI A内创建VXLAN 10,则VTEP接收到Terminal 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隧道。
如图1-7所示,在分布式EVPN网关组网中,每台VTEP设备都作为EVPN网关,对本地站点的流量进行三层转发,缓解了网关的压力。
图1-7 分布式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-8所示,在分布式EVPN网关组网中,所有的分布式EVPN网关(GW)上都存在以下类型的VSI虚接口:
· 作为分布式网关接口的VSI虚接口。该接口需要与VSI、VPN实例关联。不同GW上相同VSI虚接口的IP地址必须相同,该IP地址作为VXLAN内用户终端的网关地址。
· 承载L3VNI的VSI虚接口。该接口需要与VPN实例关联,并需要指定L3VNI。关联相同VPN实例的VSI虚接口共用该L3VNI。
边界网关(Border)上也需要存在承载L3VNI的VSI虚接口。
图1-8 分布式EVPN网关部署示意图
三层流量通过查找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.7.2 转发已知单播流量”;相同站点间三层流量的转发过程如图1-9所示;不同站点间三层流量转发过程如图1-10所示。
以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表项转发该报文。
分布式EVPN网关基于VPN实例转发三层流量,不能转发公网的三层流量。将传统网络升级为EVPN网络时,用户可能希望在保持原有公私网部署不变的前提下,实现公私网流量通过分布式EVPN网关转发,并实现公私网的互通。此时,需要在分布式EVPN网关上配置公网实例。
公网实例可以看作是特殊的VPN实例,分布式EVPN网关对公网实例的处理与VPN实例完全相同:
· 公网实例也包括RD、Route Target属性和L3VNI。
· 如果VSI虚接口没有绑定任何VPN实例,则该VSI虚接口属于公网实例。
合理地规划公网实例、VPN实例的VPN target属性,可以实现公私网的互通。
如表1-1所示,BGP EVPN路由的RD和Route Target可以在多个视图下配置。
表1-1 RD和Route Target的配置视图
对象 |
配置视图 |
RD |
· VSI实例下的EVPN实例视图 · VPN实例视图 · 公网实例视图 |
Route Target |
· VSI实例下的EVPN实例视图 · VPN实例视图 · VPN实例IPv4 VPN视图 · VPN实例EVPN视图 · 公网实例IPv4 VPN视图 · 公网实例EVPN视图 其中,VPN实例视图下的配置可以用于IPv4 VPN和EVPN;VPN实例IPv4 VPN视图下的配置仅用于IPv4 VPN;VPN实例EVPN视图下的配置仅用于EVPN。VPN实例IPv4 VPN视图和VPN实例EVPN视图下配置的优先级高于VPN实例视图下的配置 |
设备在发布和接收BGP EVPN路由时,按照如下规则选择RD和Route Target:
· 发布IMET路由和仅包含MAC地址信息的MAC/IP发布路由时,携带EVPN实例视图下配置的RD和Export Target;接收该类路由时,将路由中的Route Target属性与本地EVPN实例视图下配置的Import Target进行比较。
· 发布包含ARP信息的MAC/IP发布路由时,携带EVPN实例视图下配置的RD,并同时携带EVPN实例视图下配置的Export Target和VPN实例/公网实例下为EVPN配置(VPN实例视图、VPN实例EVPN视图、公网实例EVPN视图下配置)的Export Target;接收该类路由时,将路由中的Route Target属性与本地VPN实例/公网实例下为EVPN配置的Import Target进行比较。
· 发布IP前缀路由时,携带VPN实例/公网实例下为IPv4 VPN配置(VPN实例视图、VPN实例IPv4 VPN视图、公网实例IPv4 VPN视图下配置)的Export Target;接收该类路由时,将路由中的Route Target属性与本地VPN实例/公网实例下为IPv4 VPN配置的Import Target进行比较。
为了避免广播发送的ARP请求报文占用核心网络带宽,VTEP会根据接收到的ARP请求和ARP应答报文、BGP EVPN路由在本地建立ARP泛洪抑制表项。后续当VTEP收到本站点内用户终端请求其它用户终端MAC地址的ARP请求时,优先根据ARP泛洪抑制表项进行代答。如果没有对应的表项,则通过VXLAN隧道将ARP请求泛洪到其他站点。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。
图1-11 ARP泛洪抑制示意图
如图1-11所示,ARP泛洪抑制的处理过程如下:
(1) 用户终端Terminal 1发送ARP请求,获取Terminal 7的MAC地址。
(2) VTEP 1根据接收到的ARP请求,建立Terminal 1的ARP泛洪抑制表项,并在VXLAN内泛洪该ARP请求(图1-11以单播路由泛洪方式为例)。
(3) 远端VTEP(VTEP 2和VTEP 3)解封装VXLAN报文,获取原始的ARP请求报文后,建立Terminal 1的ARP泛洪抑制表项,并在本地站点的指定VXLAN内泛洪该ARP请求。
(4) Terminal 7接收到ARP请求后,回复ARP应答报文。
(5) VTEP 2接收到ARP应答后,建立Terminal 7的ARP泛洪抑制表项,并通过VXLAN隧道将ARP应答发送给VTEP 1。
(6) VTEP 1解封装VXLAN报文,获取原始的ARP应答,并根据该应答建立Terminal 7的ARP泛洪抑制表项,之后将ARP应答报文发送给Terminal 1。
(7) 在VTEP 1上建立ARP泛洪抑制表项后,用户终端Terminal 4发送ARP请求,获取Terminal 1或Terminal 7的MAC地址。
(8) VTEP 1接收到ARP请求后,建立Terminal 4的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
(9) 在VTEP 3上建立ARP泛洪抑制表项后,用户终端Terminal 10发送ARP请求,获取Terminal 1的MAC地址。
(10) VTEP 3接收到ARP请求后,建立Terminal 10的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
MAC地址迁移是指用户终端或主机从一个ES迁移到另一个ES。原ES连接的VTEP无法感知MAC地址已经迁移到其他ES段。新迁移到的ES所在VTEP需要重新通告该MAC/IP路由。原VTEP在收到此路由后,撤销之前通告的路由。MAC地址每次迁移,迁移序列号依次递增,以便在MAC地址多次迁移时,通过序列号来标识最近一次迁移。
EVPN功能受设备的工作模式限制,在使用EVPN功能前,请在系统视图下使用switch-mode 1命令配置设备工作在VXLAN模式,保存设备当前配置,然后重启设备。有关设备工作模式的详细介绍请参见“基础配置指导”中的“设备管理”。
VXLAN隧道既可以通过EVPN自动创建,也可以手工创建。隧道目的地址相同的EVPN自动创建隧道和手工创建隧道不能关联同一个VXLAN。手工创建VXLAN隧道的详细介绍,请参见“VXLAN配置指导”中的“配置VXLAN”。
表2-1 EVPN配置任务简介
配置任务 |
说明 |
详细配置 |
配置VXLAN隧道工作模式 |
必选 |
|
创建VSI和VXLAN |
必选 |
|
配置EVPN实例 |
必选 |
|
配置BGP发布EVPN路由 |
必选 |
|
配置AC与VSI关联 |
必选 |
|
配置分布式EVPN网关 |
转发三层流量时,必选 |
|
管理远端MAC地址和远端ARP自动学习 |
可选 |
|
配置VSI泛洪抑制 |
可选 |
|
配置ARP泛洪抑制 |
可选 |
VXLAN隧道支持如下工作模式:
· 三层转发模式:VTEP设备通过查找FIB表项对流量进行转发。
· 二层转发模式:VTEP通过查找MAC地址表项对流量进行转发。
当设备作为VTEP时,需要配置VXLAN隧道工作在二层转发模式;当设备作为EVPN网关时,需要配置VXLAN隧道工作在三层转发模式。
表2-2 配置VXLAN隧道工作模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置VXLAN隧道工作在二层转发模式 |
undo vxlan ip-forwarding |
二者选其一 缺省情况下,VXLAN隧道工作在三层转发模式 修改本配置前必须先删除设备上的所有VSI、VSI虚接口和VXLAN隧道,否则将配置失败 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
配置VXLAN隧道工作在三层转发模式 |
vxlan ip-forwarding |
本配置中各命令的详细介绍,请参见“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不能相同 |
用于二层交换的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.8.4 配置VSI虚接口关联L3VNI” |
下表中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-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对等体/对等体组发布路由时会将下一跳改为自己的地址 |
(可选)对来自对等体/对等体组的路由或发布给对等体/对等体组的路由应用路由策略 |
peer { group-name | ipv4-address [ mask-length ] } route-policy route-policy-name { export | import } |
缺省情况下,没有为对等体/对等体组指定路由策略 |
(可选)配置向对等体/对等体组发布团体属性 |
peer { group-name | ipv4-address [ mask-length ] } advertise-community |
缺省情况下,不向对等体/对等体组发布团体属性 |
(可选)返回用户视图 |
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 |
- |
AC为以太网服务实例时,需要配置服务实例与VSI关联。其中,以太网服务实例既可以手工创建,也可以动态创建。
手工创建以太网服务实例,并将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。
为确保转发正常,端口上以太网服务实例的报文匹配规则需要与该端口上允许通过的VLAN、VLAN报文是否带Tag配置保持一致。当端口上以太网服务实例的报文匹配规则为encapsulation { default | tagged | untagged }时,该端口需要允许缺省VLAN通过。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
表2-6 配置手工创建的以太网服务实例与VSI关联
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网接口视图 |
interface interface-type interface-number |
- |
手工创建以太网服务实例,并进入以太网服务实例视图 |
service-instance instance-id |
缺省情况下,不存在以太网服务实例 |
配置以太网服务实例的报文匹配规则 |
encapsulation { default | tagged | untagged } |
缺省情况下,未配置报文匹配规则 |
encapsulation s-vid vlan-id [ c-vid vlan-id-list | only-tagged ] |
||
将以太网服务实例与VSI关联 |
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ] |
缺省情况下,以太网服务实例未关联VSI |
802.1X或MAC地址认证为用户下发授权VSI、Guest VSI、Auth-Fail VSI或Critical VSI后,将用户信息(接入端口、所属VLAN、MAC地址等)及VSI信息通知给VXLAN。VXLAN根据用户信息动态创建以太网服务实例,并将其与VSI关联。802.1X和MAC地址认证的详细介绍,请参见“安全配置指导”中的“802.1X”和“MAC地址认证”。
动态创建的以太网服务实例可以通过以下匹配方式判断接口接收到的报文是否属于该AC:
· VLAN方式:检查报文携带的VLAN ID是否与以太网服务实例匹配的VLAN ID相同。只有二者相同,报文才属于该AC。
· MAC地址方式:检查报文携带的VLAN ID、源MAC地址是否分别与太网服务实例匹配的VLAN ID、MAC地址相同。只有VLAN ID、源MAC地址均相同时,报文才属于该AC。
缺省情况下,动态创建的以太网服务实例采用VLAN匹配方式。如果需要采用MAC地址方式,那么必须采用MAC地址认证或基于MAC接入控制的802.1X认证,并开启动态创建的以太网服务实例匹配MAC地址功能。
802.1X或MAC地址认证中,接入认证设备上配置了Guest VSI、Auth-Fail VSI、Critical VSI,或远程AAA服务器为认证成功用户下发了授权VSI,则接入认证设备上会自动地创建以太网服务实例,并将其与Guest VSI、Auth-Fail VSI、Critical VSI或授权VSI关联。
如需采用MAC地址匹配方式,则还需要在接入认证设备上开启动态创建的以太网服务实例匹配MAC地址功能。
表2-7 开启动态创建的以太网服务实例匹配MAC地址功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入二层以太网接口视图 |
interface interface-type interface-number |
- |
开启动态创建的以太网服务实例匹配MAC地址功能 |
mac-based ac |
缺省情况下,动态创建的以太网服务实例匹配MAC地址功能处于关闭状态,即动态创建的以太网服务实例只匹配VLAN 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
分布式EVPN网关连接IPv4站点网络时,所有网关上都需要为相同VSI虚接口配置相同的MAC地址。如果网关同时连接IPv4站点网络和IPv6站点网络,则不同分布式EVPN网关上需要为相同VSI虚接口配置不同的链路本地地址。
在分布式EVPN网关设备上,如果开启了ARP泛洪抑制功能,并在VSI虚接口上开启了本地代理ARP功能,则只有本地代理ARP功能生效。建议不要在分布式EVPN网关设备上同时开启这两个功能。
配置EVPN网关前,需要配置VXLAN隧道工作在三层转发模式。
如果用户终端要想与外部网络进行三层通信,那么完成分布式EVPN网关的配置后,还需要在接入用户终端的本地分布式EVPN网关上配置静态路由,对此静态路由需要指定路由的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
表2-8 配置VSI虚接口作为分布式网关接口
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
|
配置VSI虚接口的IPv4地址或IPv6地址 |
配置VSI虚接口的IPv4地址 |
ip address ip-address { mask | mask-length } [ sub ] |
缺省情况下,未配置VSI虚接口的IPv4地址和IPv6地址 |
配置VSI虚接口的IPv6地址 |
IPv6地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础” |
||
配置VSI虚接口为分布式网关接口 |
distributed-gateway local |
缺省情况下,VSI虚接口不是分布式本地网关接口 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
|
(可选)开启本地代理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的网关接口 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
表2-9 配置VSI虚接口关联L3VNI(VPN实例)
操作 |
命令 |
说明 |
进入系统视图 |
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 ] |
缺省情况下,未配置VPN实例的Route Target |
(可选)对VPN实例应用出方向路由策略 |
export route-policy route-policy |
缺省情况下,不对发布的路由进行过滤 |
(可选)对VPN实例应用入方向路由策略 |
import route-policy route-policy |
缺省情况下,VPN实例未应用入方向路由策略。如果接收到的路由携带的Route Target属性中存在与本地配置的Import Target相同的值,则接收该路由 |
进入VPN实例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实例下配置EVPN的入方向路由策略 |
import route-policy route-policy |
缺省情况下,在VPN实例下未配置EVPN的入方向路由策略,即如果接收到的路由携带的Route Target属性中存在与本地配置的Import Target相同的值,则接收该路由 |
退回VPN实例视图 |
quit |
- |
退回系统视图 |
quit |
- |
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 |
配置接口与指定的VPN实例关联 |
ip binding vpn-instance vpn-instance-name |
缺省情况下,接口未关联VPN实例,接口属于公网 |
配置VPN实例的L3VNI |
l3-vni vxlan-id |
缺省情况下,未配置VPN实例的L3VNI 一个VPN实例只能关联一个L3VNI。若为VPN实例配置了多个L3VNI,则该VPN实例与数值最小的L3VNI关联。通过display evpn routing-table命令可以查看与VPN实例关联的L3VNI |
表2-10 配置VSI虚接口关联L3VNI(公网实例)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建公网实例,并进入公网实例视图 |
ip public-instance |
缺省情况下,不存在公网实例 |
配置公网实例的RD |
route-distinguisher route-distinguisher |
缺省情况下,未配置公网实例的RD |
配置公网实例的L3VNI |
l3-vni vxlan-id |
缺省情况下,未配置公网实例的L3VNI 一个公网实例只能关联一个L3VNI。不能通过重复执行本命令修改公网实例的L3VNI。如需修改,请先删除已有的L3VNI后再配置 |
进入公网实例IPv4 VPN视图 |
address-family ipv4 |
二者选其一 |
进入公网实例EVPN视图 |
address-family evpn |
|
在公网实例下配置IPv4 VPN或EVPN的Route Target |
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ] |
缺省情况下,公网实例下的IPv4 VPN、EVPN未配置Route Target 建议为EVPN实例配置的Import target不要与公网实例的Export target匹配,反之亦然 |
退回公网实例视图 |
quit |
- |
退回系统视图 |
quit |
- |
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 |
在属于公网实例的VSI虚接口上配置L3VNI |
l3-vni vxlan-id |
缺省情况下,在属于公网实例的VSI虚接口上未配置L3VNI 在所有属于公网实例的VSI虚接口中,必须至少有一个接口上配置的L3VNI与公网实例视图下指定的L3VNI相同 |
在BGP IPv4单播地址族视图下引入IGP路由后,如果公网实例关联了L3VNI,则引入的路由将作为EVPN的IP前缀路由发布给远端VTEP。
远端VTEP接收到EVPN的IP前缀路由后,将路由中的Route Target属性与本地VPN实例/公网实例下为IPv4 VPN配置的Import Target进行比较。若匹配则接收该路由,并将该路由添加到VPN实例或公网的路由表中。
只有分布式EVPN网关组网支持本配置。
本配置中各命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
表2-11 配置发布IP前缀路由
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
启动BGP实例,并进入BGP实例视图 |
bgp as-number [ instance instance-name ] [ multi-session-thread ] |
缺省情况下,没有运行BGP,不存在BGP实例 |
|
进入BGP 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自动学习功能。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
表2-12 关闭远端MAC地址和远端ARP自动学习功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
关闭远端MAC地址自动学习功能 |
vxlan tunnel mac-learning disable |
缺省情况下,远端MAC地址自动学习功能处于开启状态 |
关闭远端ARP自动学习功能 |
vxlan tunnel arp-learning disable |
缺省情况下,远端ARP自动学习功能处于开启状态 |
VTEP可能会同时向远端VTEP通告MAC地址信息和ARP信息。其中,ARP信息中已经包含MAC地址信息。为了避免重复,可以执行本配置来禁止本端VTEP向远端VTEP通告MAC地址信息。执行本配置后,本端VTEP还会撤销已经发布的MAC地址信息。
表2-13 配置禁止通告MAC地址信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入EVPN实例视图 |
evpn encapsulation vxlan |
- |
配置禁止通告MAC地址信息,并撤销已经通告的MAC地址信息 |
mac-advertising disable |
缺省情况下,允许通告MAC地址信息 |
VTEP可能会同时接收到远端VTEP通告的MAC地址信息和ARP信息。其中,ARP信息中包含MAC地址信息。为了避免重复,可以在VTEP上执行本配置来禁止EVPN从ARP信息中学习MAC地址表项,EVPN仅通过MAC地址信息学习远端MAC地址表项。
表2-14 配置禁止EVPN从ARP信息中学习MAC地址表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入EVPN实例视图 |
evpn encapsulation vxlan |
- |
配置禁止EVPN从ARP信息中学习MAC地址表项 |
arp mac-learning disable |
缺省情况下,EVPN可以从ARP信息中学习MAC地址表项 |
缺省情况下,VTEP从本地站点内接收到目的MAC地址未知的单播数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点。如果用户希望把该类数据帧限制在本地站点内,不通过VXLAN隧道将其转发到远端站点,则可以通过本命令手工禁止VXLAN对应VSI的泛洪功能。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
表2-15 配置VSI泛洪抑制
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入VSI视图 |
vsi vsi-name |
- |
|
关闭VSI的泛洪功能 |
flooding disable { all | { broadcast | unknown-multicast | unknown-unicast } * } |
缺省情况下,VSI泛洪功能处于开启状态 |
|
开启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” |
|
在完成上述配置后,在任意视图下执行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 ] [ public-instance | vpn-instance vpn-instance-name ] [ count ] |
显示EVPN的ARP泛洪抑制信息 |
display evpn route arp suppression [ local | remote ] [ vsi vsi-name ] [ count ] |
显示EVPN的路由表信息 |
display evpn routing-table { public-instance | vpn-instance vpn-instance-name } [ count ] |
Switch A、Switch B为分布式EVPN网关设备;Switch C为与广域网连接的边界网关设备;Switch D为RR,负责在交换机之间反射BGP路由。
用户终端Terminal 1和Terminal 3属于VXLAN 10;Terminal 2和Terminal 4属于VXLAN 20。相同VXLAN之间可以二层互通;不同VXLAN之间通过分布式EVPN网关实现三层互通;VXLAN与广域网之间通过边界网关实现三层互通。
图2-1 分布式EVPN网关配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在Terminal 1和Terminal 3上指定网关地址为10.1.1.1;在Terminal 2和Terminal 4上指定网关地址为10.1.2.1。(具体配置过程略)
# 请按照图2-1配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置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
# 在接入用户终端的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 2 3
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 在接口GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchA-GigabitEthernet1/0/1] service-instance 2000
[SwitchA-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchA-GigabitEthernet1/0/1-srv2000] xconnect vsi vpnb
[SwitchA-GigabitEthernet1/0/1-srv2000] quit
[SwitchA-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
(4) 配置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
# 在接入用户终端的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-GigabitEthernet1/0/1] quit
# 在接口GigabitEthernet1/0/2上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-type trunk
[SwitchB-GigabitEthernet1/0/2] port trunk permit vlan 3
[SwitchB-GigabitEthernet1/0/2] service-instance 2000
[SwitchB-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchB-GigabitEthernet1/0/2-srv2000] xconnect vsi vpnb
[SwitchB-GigabitEthernet1/0/2-srv2000] quit
[SwitchB-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
(5) 配置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
(6) 配置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状态。(以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: 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 : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
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 : -
Flooding : Enabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
GE1/0/1 srv1000 0 Up Manual
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
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
GE1/0/1 srv2000 0 Up Manual
# 查看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 L - Local active
G - Gateway S - Static M - Mapping
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 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) 验证主机之间可以互访
用户终端Terminal 1、Terminal 2、Terminal 3、Terminal 4之间可以互访。
Switch A、Switch B、Switch C为分布式EVPN网关设备;Switch D为RR,负责在交换机之间反射BGP路由。
用户终端Terminal 1属于VXLAN 10、位于VPN实例vpna;Terminal 2属于VXLAN 20、位于VPN实例vpnb;Terminal 3属于VXLAN 30、位于公网。通过EVPN分布式网关和公私网互通配置,保证Terminal 1和Terminal 2之间互通(私网之间互通),Terminal 2不能访问Terminal 3,Terminal 1和Terminal 3之间互通(公私网互通)。
图2-2 EVPN公私网互通配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在Terminal 1上指定网关地址为10.1.1.1;在Terminal 2上指定网关地址为10.1.2.1;在Terminal 3上指定网关地址10.1.3.1。(具体配置过程略)
# 请按照图2-2配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置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
# 配置BGP发布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入用户终端的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 1的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 1
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 1
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 配置L3 VNI的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 1:1
[SwitchA-vpn-ipv4-vpna] vpn-target 2:2 import-extcommunity
[SwitchA-vpn-ipv4-vpna] vpn-target 3:3 import-extcommunity
[SwitchA-vpn-ipv4-vpna] quit
[SwitchA-vpn-instance-vpna] address-family evpn
[SwitchA-vpn-evpn-vpna] vpn-target 1:1
[SwitchA-vpn-evpn-vpna] vpn-target 2:2 import-extcommunity
[SwitchA-vpn-evpn-vpna] vpn-target 3:3 import-extcommunity
[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] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-arp enable
[SwitchA-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpna对应的L3VNI为1000。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance vpna
[SwitchA-Vsi-interface2] l3-vni 1000
[SwitchA-Vsi-interface2] quit
# 创建VSI虚接口VSI-interface3,在该接口上配置L3VNI为2000,用来匹配从Switch B接收的路由。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] l3-vni 2000
[SwitchA-Vsi-interface3] quit
# 创建VSI虚接口VSI-interface4,在该接口上配置L3VNI为3000,用来匹配从Switch C接收的路由。
[SwitchA] interface vsi-interface 4
[SwitchA-Vsi-interface4] l3-vni 3000
[SwitchA-Vsi-interface4] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在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
# 在接入用户终端的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv1000] xconnect vsi vpnb
[SwitchB-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-GigabitEthernet1/0/1] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance vpnb
[SwitchB-vpn-instance-vpnb] route-distinguisher 2:2
[SwitchB-vpn-instance-vpnb] address-family ipv4
[SwitchB-vpn-ipv4-vpnb] vpn-target 2:2
[SwitchB-vpn-ipv4-vpnb] vpn-target 1:1 import-extcommunity
[SwitchB-vpn-ipv4-vpnb] quit
[SwitchB-vpn-instance-vpnb] address-family evpn
[SwitchB-vpn-evpn-vpnb] vpn-target 2:2
[SwitchB-vpn-evpn-vpnb] vpn-target 1:1 import-extcommunity
[SwitchB-vpn-evpn-vpnb] quit
[SwitchB-vpn-instance-vpnb] quit
# 配置VSI虚接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance vpnb
[SwitchB-Vsi-interface1] ip address 10.1.2.1 255.255.255.0
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] local-proxy-arp enable
[SwitchB-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置L3VNI为1000,用来匹配从Switch A接收的路由。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] l3-vni 1000
[SwitchB-Vsi-interface2] qui
# 创建VSI虚接口VSI-interface3,在该接口上配置VPN实例vpnb对应的L3VNI为2000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance vpnb
[SwitchB-Vsi-interface3] l3-vni 2000
[SwitchB-Vsi-interface3] quit
# 创建VSI虚接口VSI-interface4,在该接口上配置L3VNI为3000,用来匹配从Switch C接收的路由。
[SwitchA] interface vsi-interface 4
[SwitchA-Vsi-interface4] l3-vni 3000
[SwitchA-Vsi-interface4] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 1
[SwitchB-vsi-vpnb] quit
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在VSI实例vpnc下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] evpn encapsulation vxlan
[SwitchC-vsi-vpnc-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpnc-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpnc-evpn-vxlan] quit
# 创建VXLAN 30。
[SwitchC-vsi-vpnc] vxlan 30
[SwitchC-vsi-vpnc-vxlan-30] quit
[SwitchC-vsi-vpnc] 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 ipv4 unicast
[SwitchC-bgp-default-ipv4]quit
[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
# 配置公网实例的RD和RT,配置公网实例对应的L3VNI为3000。
[SwitchC] ip public-instance
[SwitchC-public-instance] route-distinguisher 3:3
[SwitchC-public-instance] l3-vni 3000
[SwitchC-public-instance] address-family ipv4
[SwitchC-public-instance-ipv4] vpn-target 3:3
[SwitchC-public-instance-ipv4] vpn-target 1:1 import-extcommunity
[SwitchC-public-instance-ipv4] quit
[SwitchC-public-instance] address-family evpn
[SwitchC-public-instance-evpn]vpn-target 3:3
[SwitchC-public-instance-evpn] vpn-target 1:1 import-extcommunity
[SwitchC-public-instance-evpn] quit
[SwitchC-public-instance] quit
# 在接入用户终端的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchC] interface gigabitethernet 1/0/1
[SwitchC-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-GigabitEthernet1/0/1] port trunk permit vlan 3
[SwitchC-GigabitEthernet1/0/1] service-instance 1000
[SwitchC-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-GigabitEthernet1/0/1-srv1000] xconnect vsi vpnc
[SwitchC-GigabitEthernet1/0/1-srv1000] quit
[SwitchC-GigabitEthernet1/0/1] quit
# 配置VSI虚接口VSI-interface1。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 10.1.3.1 255.255.255.0
[SwitchC-Vsi-interface1] distributed-gateway local
[SwitchC-Vsi-interface1] local-proxy-arp enable
[SwitchC-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置L3VNI为1000,用来匹配从Switch A接收的路由。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] l3-vni 1000
[SwitchC-Vsi-interface2] quit
# 创建VSI虚接口VSI-interface3,在该接口上配置L3VNI为2000,用来匹配从Switch B接收的路由。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] l3-vni 2000
[SwitchC-Vsi-interface3] quit
# 创建VSI虚接口VSI-interface4,在该接口上配置公网实例对应的L3VNI为3000。
[SwitchC] interface vsi-interface 4
[SwitchC-Vsi-interface4] l3-vni 3000
[SwitchC-Vsi-interface4] quit
# 配置VXLAN 30所在的VSI实例和接口VSI-interface1关联。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] gateway vsi-interface 1
[SwitchC-vsi-vpnc] quit
(6) 配置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的MAC路由和带主机ARP的MAC/IP发布路由,并接收到SwitchB, SwitchC发出的网关的IP前缀路由和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: 9
Route distinguisher: 1:1(vpna)
Total number of routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [2][0][48][582e-d6b2-0906][32][10.1.2.10]/136
2.2.2.2 0 100 0 i
* >i [2][0][48][9a50-488c-1106][32][10.1.3.10]/136
3.3.3.3 0 100 0 i
* > [5][0][24][10.1.1.0]/80
0.0.0.0 0 100 32768 i
Route distinguisher: 1:10
Total number of routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][582e-aaec-0806][32][10.1.1.10]/136
0.0.0.0 0 100 32768 i
* > [3][0][32][1.1.1.1]/80
0.0.0.0 0 100 32768 i
Route distinguisher: 1:20
Total number of routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [2][0][48][582e-d6b2-0906][32][10.1.2.10]/136
2.2.2.2 0 100 0 i
Route distinguisher: 1:30
Total number of routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [2][0][48][9a50-488c-1106][32][10.1.3.10]/136
3.3.3.3 0 100 0 i
Route distinguisher: 2:2
Total number of routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [5][0][24][10.1.2.0]/80
2.2.2.2 0 100 0 i
Route distinguisher: 3:3
Total number of routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [5][0][24][10.1.3.0]/80
3.3.3.3 0 100 0 i
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] 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 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: 15 packets, 1470 bytes, 0 drops
Output: 15 packets, 1470 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 1.1.1.1, destination 3.3.3.3
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: 22 packets, 2156 bytes, 0 drops
Output: 23 packets, 2254 bytes, 0 drops
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchA] 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: 582e-81f2-0600
IPv6 packet frame type: Ethernet II, hardware address: 582e-81f2-0600
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: 4 bytes/sec, 32 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 2656 packets, 138432 bytes, 0 drops
Vsi-interface2
Current state: UP
Line protocol state: UP
Description: Vsi-interface2 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet protocol processing: Disabled
IP packet frame type: Ethernet II, hardware address: 582e-81f2-0600
IPv6 packet frame type: Ethernet II, hardware address: 582e-81f2-0600
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: 0 packets, 0 bytes, 0 drops
Vsi-interface3
Current state: UP
Line protocol state: UP
Description: Vsi-interface3 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet protocol processing: Disabled
IP packet frame type: Ethernet II, hardware address: 582e-81f2-0600
IPv6 packet frame type: Ethernet II, hardware address: 582e-81f2-0600
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: 0 packets, 0 bytes, 0 drops
Vsi-interface4
Current state: UP
Line protocol state: UP
Description: Vsi-interface4 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet protocol processing: Disabled
IP packet frame type: Ethernet II, hardware address: 582e-81f2-0600
IPv6 packet frame type: Ethernet II, hardware address: 582e-81f2-0600
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: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_2
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
Gateway Interface : VSI-interface 2
VXLAN ID : 1000
VSI Name: Auto_L3VNI2000_3
VSI Index : 2
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
Gateway Interface : VSI-interface 3
VXLAN ID : 2000
VSI Name: Auto_L3VNI3000_4
VSI Index : 3
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
Gateway Interface : VSI-interface 4
VXLAN ID : 3000
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
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
GE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的ARP表项信息,可以看到已学习到了本地用户终端的ARP信息和BGP EVPN路由下一跳地址的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 582e-aaec-0806 0 0x0 10 D
11.1.1.4 582c-1385-0517 N/A Vlan11 14 D
2.2.2.2 582e-8ba6-0700 2 Tunnel0 N/A R
3.3.3.3 9a51-95ba-1000 3 Tunnel1 N/A R
(2) 验证主机之间互访
Terminal 1和Terminal 2、Terminal 1和Terminal 3之间可以互访,Terminal 2和Terminal 3不能互访。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!