01-EVPN配置
本章节下载: 01-EVPN配置 (1.56 MB)
目 录
1.9 BGP EVPN路由的RD和Route Target选择
2.11.3 配置禁止EVPN从ARP/ND信息中学习MAC地址表项
2.19.4 IPv4 EVPN分布式聚合配置举例(以太网聚合链路作为IPL)
2.19.5 IPv4 EVPN分布式聚合配置举例(VXLAN隧道作为IPL,Keepalive检测邻居状态)
2.19.6 IPv4 EVPN分布式聚合配置举例(VXLAN隧道作为IPL,Monitor Link实现上下联动)
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上进行。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信息和ND信息)。
· 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单播路由或BGP IPv6单播路由。
· Selective Multicast Ethernet Tag Route:选择性组播以太网标签路由,用来通告租户的IGMP组播组信息。
· IGMP Join Synch Route:IGMP加入同步路由,用来在多归属成员间同步租户的IGMP加入组播组信息。
· IGMP Leave Synch Route:IGMP离开同步路由,用来在多归属成员间通告租户的IGMP离开组播组信息,以撤销相应的IGMP加入同步路由。
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.2 分布式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所示,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网关仅支持连接IPv4站点网络;分布式EVPN网关可以连接IPv4和IPv6站点网络。本节仅以IPv4网络为例说明分布式EVPN网关转发三层流量的过程,IPv6网络中的三层流量转发过程与此类似。
集中式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网关组网中,每台VTEP设备都作为EVPN网关,对本地站点的流量进行三层转发,缓解了网关的压力。
图1-8 分布式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虚接口。
图1-9 分布式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-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表项转发该报文。
分布式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实例IPv6 VPN视图 · VPN实例EVPN视图 · 公网实例 · 公网实例IPv4 VPN视图 · 公网实例IPv6 VPN视图 · 公网实例EVPN视图 其中,VPN实例视图下的配置可以用于IPv4 VPN、IPv6 VPN和EVPN;VPN实例IPv4 VPN视图下的配置仅用于IPv4 VPN;VPN实例IPv6 VPN视图下的配置仅用于IPv6 VPN;VPN实例EVPN视图下的配置仅用于EVPN。VPN实例IPv4 VPN视图、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/ND信息的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配置或IPv6 VPN配置的Export Target;接收该类路由时,将路由中的Route Target属性与本地VPN实例/公网实例下为IPv4 VPN或IPv6 VPN配置的Import Target进行比较。
仅R2612及以上版本支持本功能。
S6800系列交换机中,产品代码为LS-6800-32Q、LS-6800-2C、LS-6800-4C、LS-6800-54QF或LS-6800-54QT的机型不支持本功能。
当一个站点通过不同的以太网链路连接到多台VTEP时,这些链路就构成了一个ES(Ethernet Segment,以太网段),并以一个相同的ESI(ES Identifier)标识其属于同一个ES。连接的多台VTEP组成冗余备份组,可以避免VTEP单点故障对网络造成影响,从而提高EVPN网络的可靠性。
图1-12 多归属站点示意图
当一个站点连接到多台VTEP时,为了避免冗余备份组中的VTEP均发送泛洪流量给该站点,需要在冗余备份组中为每个AC选举一个VTEP作为DF(Designated Forwarder,指定转发者),负责将泛洪流量转发给该AC。其他VTEP作为该AC的BDF(Backup DF,备份DF),不会向本地站点转发泛洪流量。多归属成员通过发送以太网段路由,向远端VTEP通告ES及其连接的VTEP信息,远端VTEP根据ES、VTEP信息选举出DF。
图1-13 DF选举方式
目前RFC和草案中规定的DF选举有多种实现方式,下面以当前设备支持的DF选举方式为例介绍。
如图1-13所示,以AC 1的DF为例,DF选举方法为:
(1) 选取AC内允许通过的最小VLAN Tag代表该AC。在本例中,代表AC 1的VLAN Tag为4。
(2) VTEP根据接收到的以太网段路由,对携带相同ESI的路由中的源IP地址按升序排列,编号从0开始。在本例中,源IP 1.1.1.1、2.2.2.2对应的编号依次为0、1。
(3) 根据VLAN Tag除以N的余数M来选举DF,N代表冗余备份组中成员的数量,M对应的编号为该AC的DF。在本例中,4除以2的余数为0,即AC 1的DF为编号为0的VTEP 1。
在多归属站点组网中,VTEP接收到站点发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,通过该VXLAN内除接收接口外的所有本地接口和VXLAN隧道转发该数据帧。同一冗余备份组中的VTEP接收到该数据帧后会在本地所属的VXLAN内泛洪,这样数据帧会通过AC泛洪到本地站点,造成环路和站点的重复接收。EVPN通过水平分割解决该问题。水平分割的机制为:VTEP接收到同一冗余备份组中成员转发的广播、组播、未知单播数据帧后,不向具有相同ESI标识的ES转发该数据帧。
当前设备支持的冗余备份模式为多活模式。
在该模式下,冗余备份组中的任何一台成员VTEP设备接收到本地站点发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,通过该VXLAN内除接收接口外的所有本地接口和VXLAN隧道转发该数据帧。通过VXLAN隧道转发数据帧时,需要为其封装VXLAN头、UDP头和IP头,将泛洪流量封装在多个单播报文中,发送到VXLAN内的所有远端VTEP。
冗余备份组中的成员VTEP接收到远端VTEP发送的组播、广播和未知单播数据帧时,只有DF可以将数据帧泛洪到本地站点,BDF接收到后会将泛洪的数据帧丢弃。
在多活模式下,冗余备份组中的VTEP都会通过MP-BGP向远端VTEP通告同一ES的信息。即使只有一个VTEP学习到了MAC/ARP信息并发布给远端VTEP,远端VTEP除了会添加下一跳为该VTEP的IP地址,还会添加下一跳为冗余备份组中其他VTEP的IP地址,以实现自动在不同VTEP之间形成等价路径。该功能称为Aliasing。
仅R2612及以上版本支持本功能。
S6800系列交换机中,产品代码为LS-6800-32Q、LS-6800-2C、LS-6800-4C、LS-6800-54QF或LS-6800-54QT的机型不支持本功能。
为了避免组播发送的IGMP报文占用核心网络带宽,VTEP会根据接收到的报告报文和离开报文在本地建立或删除组播转发表项。通过SMET(Selective Multicast Ethernet Tag Route,选择性组播以太网标签路由)路由将组播组信息通告给其他VTEP,远端VTEP收到SMET路由后在本地建立组播转发表项。当VTEP再次收到属于同一IGMP版本加入同一组播组的报告报文时,将不再发送SMET路由。EVPN支持组播功能可以大大减少IGMP报文泛洪的次数。
如图1-15所示,在单归属站点组网中,Server 1发出IGMP成员关系报告报文至VTEP 1。VTEP 1上生成相应的组播表项,并发送SMET路由将组播信息通告给VTEP 2和VTEP 3。VTEP 2和VTEP 3收到SMET路由后形成下一跳为VTEP 1的组播表项。
站点多归属组网中,站点侧发送的加入组播组报文和离开组播组报文,会被不同的VTEP接收。为了在多归属站点间管理站点的组播表项,收到加入和离开组播组报文的VTEP会发送IGMP-JS路由和IGMP-LS路由来告诉其他成员,保证同ESI成员VTEP间组播信息的同步。
如图1-16所示,多归属站点组播处理过程如下:
· 当接收报告报文的设备为DF(VTEP 1)时,DF通告SMET路由给VTEP 2和VTEP 3,并通告IGMP-JS路由给VTEP 2。当组播接收者离开组播组时:
¡ 若接收离开报文的设备为DF,则DF通告IGMP-LS路由并撤销IGMP-JS路由和SMET路由。
¡ 若接收离开报文的设备为BDF(VTEP 2),则BDF通告IGMP-LS路由给同一冗余备份中的其他成员。DF收到BDF同步的IGMP-LS路由后,撤销IGMP-JS路由和SMET路由。
· 当接收报告报文的设备为BDF时,BDF通告IGMP-JS路由给同一冗余备份中的其他成员,DF收到IGMP-JS路由后生成SMET路同步给VTEP 2和VTEP 3。当组播接收者离开组播组时:
¡ 若接收离开报文的设备为DF,则DF通告IGMP-LS路由给同一冗余备份中的其他成员。BDF收到IGMP-LS路由后撤销IGMP-JS路由。DF收到撤销IGMP-JS路由后,撤销由IGMP-JS路由生成的SMET路由。
¡ 若接收离开报文的设备为BDF,则BDF通告IGMP-LS路由并撤销IGMP-JS路由。DF收到撤销IGMP-JS路由后,会撤销由该IGMP-JS路由生成的SMET路由。
为了避免广播发送的ARP请求报文占用核心网络带宽,VTEP会根据接收到的ARP请求和ARP应答报文、BGP EVPN路由在本地建立ARP泛洪抑制表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据ARP泛洪抑制表项进行代答。如果没有对应的表项,则通过VXLAN隧道将ARP请求泛洪到其他站点。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。
图1-17 ARP泛洪抑制示意图
如图1-17所示,ARP泛洪抑制的处理过程如下:
(1) 虚拟机VM 1发送ARP请求,获取VM 7的MAC地址。
(2) VTEP 1根据接收到的ARP请求,建立VM 1的ARP泛洪抑制表项,在VXLAN内泛洪该ARP请求(图1-17以单播路由泛洪方式为例)。VTEP 1还会通过BGP EVPN将该表项同步给VTEP 2和VTEP 3。
(3) 远端VTEP(VTEP 2和VTEP 3)解封装VXLAN报文,获取原始的ARP请求报文后,在本地站点的指定VXLAN内泛洪该ARP请求。
(4) VM 7接收到ARP请求后,回复ARP应答报文。
(5) VTEP 2接收到ARP应答后,建立VM 7的ARP泛洪抑制表项,通过VXLAN隧道将ARP应答发送给VTEP 1。VTEP 2通过BGP EVPN将该表项同步给VTEP 1和VTEP 3。
(6) VTEP 1解封装VXLAN报文,获取原始的ARP应答,将ARP应答报文发送给VM 1。
(7) 在VTEP 1上建立ARP泛洪抑制表项后,虚拟机VM 4发送ARP请求,获取VM 1的MAC地址。
(8) VTEP 1接收到ARP请求后,建立VM 4的ARP泛洪抑制表项,并查找本地ARP泛洪抑制表项,根据已有的表项回复ARP应答报文,不会对ARP请求进行泛洪。
(9) 虚拟机VM 10发送ARP请求,获取VM 1的MAC地址。
(10) VTEP 3接收到ARP请求后,建立VM 10的ARP泛洪抑制表项,并查找ARP泛洪抑制表项,根据已有的表项(VTEP 1通过BGP EVPN同步回复ARP应答报文,不会对ARP请求进行泛洪。
MAC地址迁移是指虚拟机或主机从一个ES迁移到另一个ES。原ES连接的VTEP无法感知MAC地址已经迁移到其他ES段。新迁移到的ES所在VTEP需要重新通告该MAC/IP路由。原VTEP在收到此路由后,撤销之前通告的路由。MAC地址每次迁移,迁移序列号依次递增,以便在MAC地址多次迁移时,通过序列号来标识最近一次迁移。
目前,本功能仅支持IPv4站点网络,不支持IPv6站点网络。
EVPN利用分布式聚合功能DRNI(Distributed Resilient Network Interconnect,分布式弹性网络互连)将两台物理设备连接起来虚拟成一台设备,使用该虚拟设备作为VTEP(既可以是仅用于二层转发的VTEP,也可以是EVPN网关),可以避免VTEP单点故障对网络造成影响,从而提高EVPN网络的可靠性。DRNI的详细介绍,请参见“二层技术-以太网交换配置指导”中的“DRNI”。
如图1-18所示,EVPN支持分布式聚合功能的工作机制包括:
· 同步MAC地址和ARP信息
作为DR device(Distributed Relay device,分布式聚合成员设备)的两台VTEP通过IPL(Intra-Portal Link,内部控制链路)连接,在IPL上同步MAC地址信息和ARP报文,以确保两台VTEP上的MAC地址和ARP信息保持一致。IPL连接既可以是以太网聚合链路,也可以是VXLAN隧道。
作为IPL的VXLAN隧道自动与设备上的所有VXLAN关联。
· 共用虚拟VTEP地址
分布式聚合的两台VTEP具有相同的虚拟VTEP地址,对外表现为一台虚拟VTEP设备。其他VTEP使用该地址与这台虚拟设备自动建立VXLAN隧道。
· 使用不同的BGP对等体地址
两台VTEP使用不同的地址作为BGP对等体地址,分别与其他VTEP建立BGP EVPN邻居。
利用Underlay网络的等价路由机制,其他VTEP可以将发往虚拟VTEP地址的流量同时发送到两台VTEP,从而实现负载分担和冗余备份。
· 备份用户侧链路
在用户侧,两台VTEP均通过以太网链路接入同一台虚拟机,跨设备在两条链路间建立二层聚合接口,将该聚合接口配置为AC(在聚合接口上创建以太网服务实例、配置报文匹配规则并关联以太网服务实例与VSI),从而避免单条以太网链路故障导致虚拟机无法访问网络。
¡ IPL为以太网聚合链路时,用户侧链路备份机制为:将二层聚合接口配置为AC后,VTEP会在IPL上自动创建具有相同报文匹配规则、关联相同VSI的AC。当一台VTEP上的AC故障后,该VTEP接收到的、发送给故障AC的报文将通过IPL转发到另一台VTEP,该VTEP根据IPL上配置的AC判断报文所属VSI,并转发该报文,从而保证转发不中断。
¡ IPL为VXLAN隧道时,用户侧链路备份机制为:如果一台VTEP上的AC故障,则该VTEP接收到的、发送给故障AC的报文后,为报文添加VXLAN封装,封装的VXLAN ID为故障AC所属VSI对应的VXLAN ID,并通过作为IPL的VXLAN隧道将其转发到另一台VTEP。该VTEP根据VXLAN ID判断报文所属的VSI,并转发该报文。
· 单挂AC互通
在EVPN分布式聚合组网中,组成DR系统的两台VTEP上AC配置可能不一致,若某个AC仅连接到其中一台VTEP,则该AC称为单挂AC。通过IPL实现组成DR系统的两台VTEP下不同单挂AC的互通。
¡ IPL为以太网聚合链路时,单挂AC互通机制为:将接口配置为单挂AC后,VTEP会在IPL上自动创建具有相同报文匹配规则、关联相同VSI的AC。当从单挂AC上收到报文后,将通过IPL转发到另一台VTEP,该VTEP根据IPL上配置的AC判断报文所属VSI,并转发该报文。
¡ IPL为VXLAN隧道时,单挂AC互通机制为:当从单挂AC上收到报文后,为报文添加VXLAN封装,封装的VXLAN ID为单挂AC所属VSI对应的VXLAN ID,并通过作为IPL的VXLAN隧道将其转发到另一台VTEP。该VTEP根据VXLAN ID判断报文所属的VSI,并转发该报文。
图1-18 EVPN支持分布式聚合组网图
VXLAN隧道既可以通过EVPN自动创建,也可以手工创建。隧道目的地址相同的EVPN自动创建隧道和手工创建隧道不能关联同一个VXLAN。手工创建VXLAN隧道的详细介绍,请参见“VXLAN配置指导”中的“配置VXLAN”。
S6800系列交换机中,产品代码为LS-6800-32Q、LS-6800-2C、LS-6800-4C、LS-6800-54QF或LS-6800-54QT的机型不支持作为EVPN网关。
EVPN网关在对报文进行三层转发时,以太网服务实例的报文匹配规则和接入模式只能配置为:
· 匹配不带VLAN Tag的报文(encapsulation untagged),且必须使用Ethernet接入模式。
· 仅匹配外层VLAN Tag(encapsulation s-vid { vlan-id [ only-tagged ] | vlan-id-list }),且必须使用VLAN接入模式。
EVPN网关从AC接收到报文后,如果EVPN网关对报文进行三层转发,则不管报文接收接口上是否配置qos trust dscp命令,设备都信任IP报文自带的DSCP优先级,以此优先级进行优先级映射;如果对报文进行二层转发,则只有在报文接收接口上配置了qos trust dscp命令,设备才会信任IP报文自带的DSCP优先级。
EVPN网关组网中,在VTEP和EVPN网关的三层接口(除VSI虚接口外)上无法通过策略路由匹配VXLAN报文的外层源和目的IP地址。如需匹配VXLAN报文的外层源和目的IP地址,请在VSI虚接口上应用策略路由。
同一个EVPN网关上建议配置相同的VSI虚接口的MAC地址,避免流量转发不通。
配置Border设备时,需要注意:
· Border设备上不能通过mac-address命令配置三层以太网接口、三层以太网子接口、三层聚合接口和三层聚合子接口的MAC地址。
· 如果在三层以太网接口、三层聚合接口上配置通过ACL匹配报文,则该ACL会同时匹配该接口及其子接口上的报文。ACL的详细介绍请参见“ACL和QoS配置指导”中的“ACL”。
· 如果在三层以太网接口上应用了QoS策略,且该策略的流分类中未定义匹配内外层VLAN Tag VLAN ID的规则,则该策略会同时应用于该接口及其子接口。QoS策略的详细介绍请参见“ACL和QoS配置指导”中的“QoS策略配置方式”。
· 如果在三层以太网接口、三层聚合接口上应用了策略路由,则该策略会同时应用于该接口及其子接口。策略路由的详细介绍请参见“三层技术-IP路由配置指导”中的“策略路由”。
· 如果在三层以太网接口上配置了广播风暴抑制、组播风暴抑制或未知单播风暴抑制,则该配置会同时应用于该接口及其子接口。风暴抑制的详细介绍请参见“二层技术-以太网接入配置指导”中的“以太网接口”。
· 在三层以太网接口之外的其它接口上应用QoS策略时,如果流分类中包含了匹配内外层VLAN tag VLAN ID的规则时,则该规则无法匹配需要进行三层转发且不携带该VLAN tag的报文。
· Border设备上不能通过arp mode uni命令配置接口为用户侧接口。关于arp mode uni命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“ARP”。
表2-1 EVPN配置任务简介
配置任务 |
说明 |
详细配置 |
配置VXLAN的硬件资源模式 |
必选 |
|
创建VSI和VXLAN |
必选 |
|
配置EVPN实例 |
必选 |
|
配置多归属站点 |
可选 |
|
配置BGP发布EVPN路由 |
必选 |
|
配置AC与VSI关联 |
必选 |
|
配置集中式EVPN网关 |
转发三层流量时,二者必选其一 |
|
配置分布式EVPN网关 |
||
管理远端MAC地址和远端ARP/ND自动学习 |
可选 |
|
配置按需下发转发表项 |
可选 |
|
配置允许向本地站点发布BGP EVPN路由 |
可选 |
|
配置VSI泛洪抑制 |
可选 |
|
配置ARP泛洪抑制 |
可选 |
|
开启自动VXLAN隧道的报文统计功能 |
可选 |
|
开启EVPN的分布式聚合模式 |
EVPN分布式聚合组网中,必须执行本配置 |
S6800系列交换机中,产品代码为LS-6800-32Q、LS-6800-2C、LS-6800-4C、LS-6800-54QF或LS-6800-54QT的机型不支持本功能。
不同类型的设备上配置的硬件资源模式不同:
· 仅对报文进行二层转发的VTEP设备上,需要配置VXLAN的硬件资源模式为l2gw模式。
· 对报文进行三层转发的VXLAN IP网关设备上,需要配置VXLAN的硬件资源模式为l3gw8k、l3gw16k、l3gw24k、l3gw32k、l3gw40k模式。
· 对报文进行三层转发的Border设备上,需要配置VXLAN的硬件资源模式为border8k、border16k、border24k、border32k、border40k模式。
修改VXLAN的硬件资源模式后,只有重启设备,修改后的硬件资源模式才会生效。
表2-2 配置VXLAN的硬件资源模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置VXLAN的硬件资源模式 |
hardware-resource vxlan { l2gw | l3gw8k | l3gw16k | l3gw24k | l3gw32k | l3gw40k | border8k | border16k | border24k | border32k | border40k } |
缺省情况下,VXLAN的硬件资源模式为二层网关模式 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
表2-3 创建VSI和VXLAN
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启L2VPN功能 |
l2vpn enable |
缺省情况下,L2VPN功能处于关闭状态 |
创建VSI,并进入VSI视图 |
vsi vsi-name |
缺省情况下,不存在VSI |
(可选)配置VSI的描述信息 |
description text |
缺省情况下,未配置VSI的描述信息 |
开启VSI |
undo shutdown |
缺省情况下,VSI处于开启状态 |
(可选)配置VSI的广播、组播或未知单播抑制带宽 |
restrain { broadcast | multicast | unknown-unicast } bandwidth |
缺省情况下,未配置VSI内广播、组播、未知单播的抑制带宽,即不限制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 [ router-id ] } |
缺省情况下,未指定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.10.4 配置VSI虚接口关联L3VNI” |
仅R2612及以上版本支持本功能。
S6800系列交换机中,产品代码为LS-6800-32Q、LS-6800-2C、LS-6800-4C、LS-6800-54QF或LS-6800-54QT的机型不支持本功能。
多归属的站点,在冗余备份组的每个成员设备上的AC和VXLAN ID的配置应该保持一致,VXLAN ID相同的VSI应该配置不同的EVPN实例的RD,相同VXLAN网关关联的VPN实例或公网实例应该配置不同的RD。
ESI是ES的唯一标识,ESI相同的接口对应的链路属于同一个ES,报文可以在这些链路之间进行负载分担。
表2-5 配置接口ESI
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入二层以太网接口视图或二层聚合接口视图 |
进入二层以太网接口视图 |
interface interface-type interface-number |
- |
进入二层聚合接口视图 |
interface bridge-aggregation interface-number |
||
配置接口ESI |
esi esi-id |
缺省情况下,未配置接口的ESI |
AC所在接口的状态、多归属成员设备数量或者接口下ESI值的频繁变化都会导致DF频繁选举,极大影响了网络的性能。通过本命令可以指定DF选举的时间间隔,避免频繁选举DF,保证网络的稳定性。
表2-6 配置DF选举延迟时间
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置DF选举延迟时间 |
evpn multihoming timer df-delay delay-value |
缺省情况下,DF选举的延迟时间为3秒 |
在站点多归属组网中,用户需要重启其中一台VTEP时,重启该VTEP前,可以通过在该VTEP上执行本命令,来禁止通告以太网自动发现路由和以太网段路由,并撤销已经通告的该类路由,以便其他VTEP及时更新本地的EVPN路由表,确保VTEP的重启不会影响报文转发。
表2-7 配置禁止通告以太网自动发现路由和以太网段路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置禁止通告以太网自动发现路由和以太网段路由,并撤销已经通告的该类路由 |
evpn multihoming advertise disable |
缺省情况下,允许通告EVPN以太网自动发现路由和以太网段路由 |
下表中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-8 配置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 |
- |
手工创建以太网服务实例,并将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
二层聚合接口及其成员端口上均可以手工创建以太网服务实例,并将以太网服务实例与VSI关联。成员端口上的以太网服务实例处于Down状态。只有成员端口退出二层聚合组后,该端口上的以太网服务实例才能Up。
二层以太网接口/二层聚合接口上某个以太网服务实例的匹配规则为encapsulation untagged时,则该二层以太网接口上不能通过QoS策略配置Nest功能。有关Nest功能的详细介绍请参见“ACL和QoS配置指导”中的“QoS”。
当二层聚合端口作为AC时,不满足以太网服务实例报文匹配规则的泛洪报文,会出现报文源端口进源端口出的现象,用户需要根据实际情况,在端口下配置端口隔离组来解决此问题。需要注意,配置端口隔离组后,经过该聚合端口进入设备的报文将不再从源端口转发出去。
配置以太网服务实例时需要注意的事项请参见“VXLAN配置指导”中的“配置VXLAN”。
表2-9 配置手工创建的以太网服务实例与VSI关联
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入二层以太网接口视图或二层聚合接口视图 |
进入二层以太网接口视图 |
interface interface-type interface-number |
- |
进入二层聚合接口视图 |
interface bridge-aggregation interface-number |
||
手工创建以太网服务实例,并进入以太网服务实例视图 |
service-instance instance-id |
缺省情况下,不存在以太网服务实例 |
|
配置以太网服务实例的报文匹配规则 |
encapsulation s-vid vlan-id [ c-vid { vlan-id-list | all } | only-tagged ] |
缺省情况下,未配置报文匹配规则 二层以太网接口/二层聚合接口上某个以太网服务实例的匹配规则为encapsulation default且以太网服务实例的接入模式为Ethernet模式时,该二层以太网接口/二层聚合接口上还可以创建其他的以太网服务实例,且接口上接收到的报文优先匹配其他的以太网服务实例,最后匹配encapsulation default所在的以太网服务实例 |
|
encapsulation s-vid vlan-id-list [ c-vid vlan-id-list ] |
|||
encapsulation { default | tagged | untagged } |
|||
(可选)配置入方向上的报文处理规则 |
rewrite inbound tag { remark 1-to-1 s-vid vlan-id | strip s-vid } |
缺省情况下,不对入方向报文进行处理 |
|
(可选)配置出方向上的报文处理规则 |
rewrite outbound tag nest s-vid vlan-id |
缺省情况下,不对出方向报文进行处理 |
|
将以太网服务实例与VSI关联 |
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ] [ track track-entry-number&<1-3> ] |
缺省情况下,以太网服务实例未关联VSI |
802.1X或MAC地址认证为用户下发授权VSI、Guest VSI、Auth-Fail VSI或Critical VSI后,将用户信息(接入端口、所属VLAN、MAC地址等)及VSI信息通知给VXLAN。VXLAN根据用户信息动态创建以太网服务实例,并将其与VSI关联。802.1X和MAC地址认证的详细介绍,请参见“安全配置指导”中的“802.1X”和“MAC地址认证”。
动态创建的以太网服务实例可以通过匹配MAC地址方式判断接口接收到的报文是否属于该AC,只有报文携带的VLAN ID、源MAC地址分别与太网服务实例匹配的VLAN ID、MAC地址相同,报文才属于该AC。
二层聚合接口的成员端口上无法动态创建以太网服务实例。
表2-10 配置动态创建的以太网服务实例并关联VSI
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入用户侧二层以太网接口视图或二层聚合接口视图 |
进入二层以太网接口视图 |
interface interface-type interface-number |
- |
进入二层聚合接口视图 |
interface bridge-aggregation interface-number |
||
开启动态创建的以太网服务实例匹配MAC地址功能 |
mac-based ac |
缺省情况下,动态创建的以太网服务实例匹配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关联 802.1X或MAC地址认证的配置方法,请参见“安全配置指导”中的“802.1X”和“MAC地址认证” |
在集中式EVPN网关组网中,VTEP上需要开启ARP泛洪抑制功能。EVPN组网中通常关闭远端ARP自动学习功能,网关从VXLAN隧道上接收到请求网关MAC地址的ARP请求后,不会对其进行应答。如果未开启ARP泛洪抑制功能,则可能会导致虚拟机获取不到网关的MAC地址。
表2-11 配置集中式EVPN网关
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建VSI虚接口,并进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
缺省情况下,不存在VSI虚接口 如果VSI虚接口已经存在,则直接进入该VSI虚接口视图 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
配置VSI虚接口的IPv4地址 |
ip address ip-address { mask | mask-length } [ sub ] |
缺省情况下,未配置VSI虚接口的IPv4地址 |
退回系统视图 |
quit |
- |
进入VXLAN所在VSI视图 |
vsi vsi-name |
- |
为VSI指定网关接口 |
gateway vsi-interface vsi-interface-id |
缺省情况下,未指定VSI的网关接口 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
分布式EVPN网关上VSI虚接口存在如下配置要求:
· VSI接口的MAC地址不能配置为设备的保留MAC。
· 同一分布式网关上承载L3VNI的VSI虚接口的MAC地址必须配置一致,设备选择此类VSI接口中接口ID最小的VSI虚接口的MAC地址作为网关唯一的Router MAC地址。Router MAC地址不能与设备的预留MAC地址相同。预留MAC地址的范围为桥MAC地址~桥MAC地址+179范围的MAC地址。
· 不同分布式网关上作为同一个VXLAN网络网关接口的VSI虚接口需要配置相同的IP地址和MAC地址。
在分布式EVPN网关设备上,如果开启了ARP泛洪抑制功能,并在VSI虚接口上开启了本地代理ARP功能,则只有本地代理ARP功能生效。建议不要在分布式EVPN网关设备上同时开启这两个功能。
如果虚拟机要想与外部网络进行三层通信,那么完成分布式EVPN网关的配置后,还需要在接入虚拟机的本地分布式EVPN网关上配置静态路由或策略路由:
· 配置静态路由:指定路由的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。
· 配置策略路由:通过apply next-hop命令设置报文的下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。策略路由的配置方法,请参见“三层技术-IP路由配置指导”中的“策略路由”。
表2-12 配置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的网关接口 不同的VSI不能指定相同的网关接口 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
|
配置当前VSI所属的子网网段 |
gateway subnet { ipv4-address wildcard-mask | ipv6-address prefix-length } |
缺省情况下,未指定VSI所属的子网网段 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
表2-13 配置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 ] | auto } |
缺省情况下,未配置VPN实例的Route Target |
(可选)对VPN实例应用出方向路由策略 |
export route-policy route-policy |
缺省情况下,不对发布的路由进行过滤 |
进入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-14 配置VSI虚接口关联L3VNI(公网实例)
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
创建公网实例,并进入公网实例视图 |
ip public-instance |
缺省情况下,不存在公网实例 |
配置公网实例的RD |
route-distinguisher route-distinguisher |
缺省情况下,未配置公网实例的RD |
配置公网实例的L3VNI |
l3-vni vxlan-id |
缺省情况下,未配置公网实例的L3VNI 一个公网实例只能关联一个L3VNI。不能重复执行本命令修改公网实例的L3VNI |
(可选)配置公网实例的RT |
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ] |
缺省情况下,未配置公网实例的RT |
进入公网实例IPv4 VPN视图 |
address-family ipv4 |
三者选其一 |
进入公网实例IPv6 VPN视图 |
address-family ipv6 |
|
进入公网实例EVPN视图 |
address-family evpn |
|
在公网实例下配置IPv4 VPN、IPv6 VPN或EVPN的Route Target |
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ] |
缺省情况下,公网实例下的IPv4 VPN、IPv6 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-VPN IPv4单播地址族视图/在BGP-VPN IPv6单播地址族视图下引入IGP路由后,如果该VPN实例关联了L3VNI,则引入的路由将作为EVPN的IP前缀路由发布给远端VTEP。
在BGP IPv4单播地址族视图/BGP IPv6单播地址族视图下引入IGP路由后,如果公网实例关联了L3VNI,则引入的路由将作为EVPN的IP前缀路由发布给远端VTEP。
远端VTEP接收到EVPN的IP前缀路由后,将路由中的Route Target属性与本地VPN实例/公网实例下为IPv4 VPN/IPv6 VPN配置的Import Target进行比较。若匹配则接收该路由,并将该路由添加到VPN实例或公网的路由表中。
只有分布式EVPN网关组网支持本配置。
本配置中各命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
表2-15 配置发布IP前缀路由
操作 |
命令 |
说明 |
|
|
进入系统视图 |
system-view |
- |
|
|
启动BGP实例,并进入BGP实例视图 |
bgp as-number [ instance instance-name ] [ multi-session-thread ] |
缺省情况下,没有运行BGP,不存在BGP实例 |
|
|
进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图、BGP IPv6单播地址族视图或BGP-VPN IPv6单播地址族视图 |
进入BGP IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
|
进入BGP-VPN IPv4单播地址族视图 |
ip vpn-instance vpn-instance-name |
|||
address-family ipv4 [ unicast ] |
||||
进入BGP IPv6单播地址族视图 |
address-family ipv6 [ unicast ] |
|||
进入BGP-VPN IPv6单播地址族视图 |
ip vpn-instance vpn-instance-name |
|||
address-family ipv6 [ 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路由表中 |
|
|
(可选)退回BGP实例视图 |
quit |
- |
|
|
(可选)进入BGP EVPN地址族视图 |
address-family l2vpn evpn |
- |
|
|
(可选)开启VPN引入等价路由功能 |
vpn-route cross multipath |
缺省情况下,VPN引入等价路由功能处于关闭状态,对于前缀和RD均相同的多条路由,只会将最优路由引入到BGP EVPN路由表中 开启本功能后,BGP将前缀和RD均相同的多条路由全部引入到BGP EVPN路由表中 |
|
仅R2612及以上版本支持本功能。
分布式VXLAN IP网关上,缺省情况下,VSI虚接口IP地址所在网段会产生IP前缀路由,并将该路由发布给远端VTEP。远端VTEP可以将该路由发布到本地站点。如果用户不希望将该路由发布到租户网络,则可以执行本配置禁止VSI虚接口IP地址所在网段产生IP前缀路由。
本命令仅对分布式VXLAN IP网关(在VSI虚接口上执行distributed-gateway local命令)生效。在集中式VXLAN IP网关上,只产生VSI虚接口IP地址和MAC对应关系的MAC/IP发布路由,不会产生IP前缀路由,不受本命令的控制。
表2-16 配置不产生VSI虚接口所在网段的五类路由
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI虚接口视图 |
interface vsi-interface vsi-interface-id |
- |
配置分布式VXLAN IP网关中VSI虚接口IP地址所在网段不产生IP前缀路由 |
ip-prefix-route generate disable |
缺省情况下,对于分布式VXLAN IP网关,VSI虚接口IP地址所在网段会产生IP前缀路由 |
缺省情况下,设备从VXLAN隧道接收到报文后可以自动学习远端虚拟机的MAC地址和ARP/ND信息。在EVPN组网中,为了避免自动学习的远端MAC地址/ARP信息/ND信息与通过BGP通告的MAC地址/ARP信息/ND信息冲突,建议关闭远端MAC地址和远端ARP/ND自动学习功能。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
表2-17 关闭远端MAC地址和远端ARP/ND自动学习功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
关闭远端MAC地址自动学习功能 |
vxlan tunnel mac-learning disable |
缺省情况下,远端MAC地址自动学习功能处于开启状态 |
关闭远端ARP自动学习功能 |
vxlan tunnel arp-learning disable |
缺省情况下,远端ARP自动学习功能处于开启状态 |
关闭远端ND自动学习功能 |
vxlan tunnel nd-learning disable |
缺省情况下,远端ND自动学习功能处于开启状态 |
VTEP可能会同时向远端VTEP通告MAC地址信息和ARP/ND信息。其中,ARP/ND信息中已经包含MAC地址信息。为了避免重复,可以执行本配置来禁止本端VTEP向远端VTEP通告MAC地址信息。执行本配置后,本端VTEP还会撤销已经发布的MAC地址信息。
表2-18 配置禁止通告MAC地址信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入EVPN实例视图 |
evpn encapsulation vxlan |
- |
配置禁止通告MAC地址信息,并撤销已经通告的MAC地址信息 |
mac-advertising disable |
缺省情况下,允许通告MAC地址信息 |
VTEP可能会同时接收到远端VTEP通告的MAC地址信息和ARP/ND信息。其中,ARP/ND信息中包含MAC地址信息。为了避免重复,可以在VTEP上执行本配置来禁止EVPN从ARP/ND信息中学习MAC地址表项,EVPN仅通过MAC地址信息学习远端MAC地址表项。
表2-19 配置禁止EVPN从ARP/ND信息中学习MAC地址表项
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入EVPN实例视图 |
evpn encapsulation vxlan |
- |
配置禁止EVPN从ARP信息中学习MAC地址表项 |
arp mac-learning disable |
缺省情况下,EVPN可以从ARP信息中学习MAC地址表项 |
配置禁止EVPN从ND信息中学习MAC地址表项 |
nd mac-learning disable |
缺省情况下,EVPN可以从ND信息中学习MAC地址表项 |
在EVPN分布式网关组网中,如果同一个VXLAN内的所有用户终端都部署在同一台EVPN网关下,则EVPN不需要通告该VXLAN的ARP信息(同时携带MAC和IP地址的MAC/IP发布路由),只需通告IP前缀路由,其他VXLAN内的用户终端通过IP前缀路由即可访问该VXLAN。此时,可以配置本命令禁止EVPN通告ARP信息,以减少占用的设备和网络资源。执行本命令后,设备还会撤销已经发布的ARP信息。
表2-20 配置禁止通告ARP信息
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入EVPN实例视图 |
evpn encapsulation vxlan |
- |
配置禁止通告ARP信息,并撤销已经通告的ARP信息 |
arp-advertising disable |
缺省情况下,允许通告ARP信息 |
执行本配置后,只有存在报文转发需求时,设备上才会将远端MAC地址表项或主机路由FIB表项发到硬件,以节省设备的硬件资源。
本功能仅用于EVPN组网。非EVPN组网中,不要配置本功能。
缺省情况下,通过BGP EVPN路由同步过来的远端MAC地址表项会直接下发到硬件。开启本功能后,同步过来的远端MAC地址表项不会直接下发到硬件,当报文转发过程中需要使用远端MAC地址表项时,才会将其下发到硬件。该功能可以有效节省设备的硬件资源。
开启本功能后,当设备在一个MAC地址表项老化时间内收到50次目的MAC地址相同的报文,且设备的MAC地址表中不存在该MAC地址,设备会将此报文的目的MAC地址加入到黑洞MAC地址表项中。MAC地址表项老化时间和黑洞MAC地址的详细介绍,请参见“二层技术-以太网交换配置指导”中的“MAC地址表”。
表2-21 开启报文转发时下发远端MAC地址表项功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启报文转发时下发远端MAC地址表项功能 |
mac-address forwarding-conversational-learning |
缺省情况下,报文转发时下发远端MAC地址表项功能处于关闭状态 |
缺省情况下,设备会直接生成主机路由FIB表项,并下发到硬件。开启本功能后,设备不会直接将主机路由FIB表项下发到硬件,只有在报文转发过程中需要使用主机路由FIB表项时,才会将其下发到硬件,以节省设备的硬件资源。
用户配置的老化时间过长或者过短,都可能影响设备的运行性能:
· 如果用户配置的老化时间过长,设备可能会保存许多过时的主机路由FIB表项,从而耗尽主机路由FIB表项资源,导致设备无法根据网络的变化及时更新主机路由FIB表项。
· 如果用户配置的老化时间太短,设备可能会删除有效的主机路由FIB表项,导致表项震荡,影响设备的运行性能。
所以用户需要根据实际情况,配置合适的老化时间来有效地实现主机路由FIB表项老化功能。
表2-22 开启报文转发时下发主机路由FIB表项功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启报文转发时下发主机路由FIB表项功能 |
ip forwarding-conversational-learning [ aging aging-time ] |
缺省情况下,报文转发时下发主机路由FIB表项功能处于关闭状态 |
配置允许对外发布 BGP EVPN路由后,设备接收到BGP EVPN路由,并将其添加到某个VPN实例路由表后,会将该路由(私网路由)发布到本地站点。
表2-23 配置允许向本地站点发布BGP EVPN路由
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入BGP实例视图 |
bgp as-number [ instance instance-name ] [ multi-session-thread ] |
- |
|
进入BGP-VPN实例视图 |
ip vpn-instance vpn-instance-name |
- |
|
进入BGP-VPN IPv4单播地址族视图或进入BGP-VPN IPv6单播地址族视图 |
进入BGP-VPN IPv4单播地址族视图 |
address-family ipv4 [ unicast ] |
- |
进入BGP-VPN IPv6单播地址族视图 |
address-family ipv6 [ unicast ] |
|
|
配置允许向本地站点发布BGP EVPN路由 |
advertise l2vpn evpn |
缺省情况下,允许向本地站点发布BGP EVPN路由 |
缺省情况下,VTEP从本地站点内接收到目的MAC地址未知的单播数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点。如果用户希望把该类数据帧限制在本地站点内,不通过VXLAN隧道将其转发到远端站点,则可以通过本命令手工禁止VXLAN对应VSI的泛洪功能。
禁止泛洪功能后,为了将某些MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
表2-24 配置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地址。
如果配置了vxlan tunnel arp-learning disable命令,则设备从VXLAN隧道上接收到ARP请求报文后,不会采用匹配的ARP泛洪抑制表项对其进行应答。
表2-25 配置ARP泛洪抑制
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入VSI视图 |
vsi vsi-name |
- |
|
开启ARP泛洪抑制功能 |
arp suppression enable |
缺省情况下,ARP泛洪抑制功能处于关闭状态 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
|
仅R2612及以上版本支持本功能。
开启本功能后,设备会统计已经创建的自动VXLAN隧道上转发的流量,也会对之后创建的自动VXLAN隧道进行流量统计,直到删除VXLAN隧道或关闭本功能。
开启自动VXLAN隧道的报文统计功能后,可以通过display interface tunnel命令查看统计信息,通过reset counters interface tunnel命令清除VXLAN隧道的统计信息。
表2-26 开启自动VXLAN隧道的报文统计功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启自动VXLAN隧道的报文统计功能 |
tunnel statistics vxlan auto |
缺省情况下,自动VXLAN隧道的报文统计功能处于关闭状态 本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN” |
在两台VTEP上均开启EVPN的分布式聚合模式,并为其配置相同的虚拟VTEP地址后,这两台VTEP将虚拟成为一台VTEP设备,从而避免VTEP单点故障对网络造成影响。
在EVPN的分布式聚合模式下,设备采用虚拟VTEP地址作为源端地址与远端VTEP自动建立VXLAN隧道。
在EVPN分布式聚合组网中:
· 分布式聚合的两台VTEP上EVPN配置必须一致。
· 匹配相同外层VLAN Tag(S-VID)的不同以太网服务实例必须关联相同的VSI。
· 开启、关闭EVPN的分布式聚合模式或修改虚拟VTEP地址后,需要在BGP实例视图下执行address-family l2vpn evpn命令,以便设备采用新的源端地址与远端VTEP建立隧道。
· 配置为IPP口的二层聚合接口或二层以太网接口、网络侧的物理接口都需要配置undo mac-address static source-check enable命令关闭报文入接口与静态MAC地址表项匹配检查功能。
· 分布式聚合的虚拟VTEP地址不能指定为接口的从IP地址。
· 在DR设备之间配置备份路由,可以确保DR设备的上行链路故障时,上行流量通过备份路由切换到另一台DR设备转发,保证流量不中断。
· 当VXLAN隧道的出接口是DR口时,请不要将DR口允许通过的VLAN与IPL上以太网服务实例的报文匹配规则匹配的VLAN配置为相同值。
· 在AC或者IPL链路上存在转发overlay和underlay两种流量的场景中,会出现报文源端口进源端口出的现象,用户需要根据实际情况,在AC口或者IPP口下配置端口隔离组来解决此问题。需要注意,配置端口隔离组后,经过该聚合端口进入设备的报文将不再从源端口转发出去。产品代码为LS-6800-32Q、LS-6800-2C、LS-6800-4C、LS-6800-54QF或LS-6800-54QT的S6800系列交换机上不存在此限制。
采用以太网聚合链路作为IPL时:
· 以太网服务实例配置的报文匹配规则只能为匹配报文的外层VLAN tag(encapsulation s-vid { vlan-id | vlan-id-list })、匹配不携带VLAN tag的所有报文(encapsulation untagged)。
· 配置相同报文匹配规则的以太网服务实例必须关联相同的VSI。
· 建议不要在分布式聚合的两台VTEP上引入外部路由。
在EVPN分布式聚合组网中,除本配置外,还需执行以下配置:
· 配置DRNI,并根据实际情况进行其他EVPN配置。DRNI的配置方法请参见“二层技术-以太网交换配置指导”中的“DRNI”。
· 为了避免DRNI协议将接口置为DRNI MAD DOWN状态,所有参与EVPN业务的接口(VSI虚接口、BGP对等体地址所在的接口、Keepalive链路的接口、VXLAN隧道的公网出接口)需要通过drni mad exclude interface命令配置为保留接口。
· 在VXLAN隧道作为IPL的组网环境中,IPP口也需要通过drni mad exclude interface命令配置为保留接口。
· 执行drni restore-delay命令配置延迟恢复时间大于等于180秒。
· 在DR device上,需要关闭VXLAN隧道对应的二层以太网接口上的STP功能,以免上行设备错误地阻塞连接DR device的接口。
采用VXLAN隧道作为IPL时,还需执行以下配置:
· 手工创建作为IPL的VXLAN隧道,并将其配置为IPP口,隧道的源端地址必须与建立BGP对等体时使用的地址相同。自动创建的VXLAN隧道不能作为IPL。
· 建议为VXLAN隧道和作为IPL的VXLAN隧道配置不同的物理接口作为隧道出接口。
· 分布式聚合的虚拟VTEP地址和作为IPL的VXLAN隧道的源端地址分别指定为不同LoopBack接口的地址,并通过路由协议发布这两个地址。
· 执行reserved vxlan命令配置保留VXLAN,以便通过该VXLAN转发DRNI协议报文等。作为DR device的两台VTEP上必须配置相同的保留VXLAN。
表2-27 开启EVPN的分布式聚合模式
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
开启EVPN的分布式聚合模式,并配置虚拟VTEP地址 |
evpn drni group virtual-vtep-ip |
缺省情况下,EVPN的分布式聚合模式处于关闭状态 |
在完成上述配置后,在任意视图下执行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 | igmp-ls | igmp-js | imet | ip-prefix | mac-ip | smet } ] [ evpn-route route-length [ advertise-info ] ] | route-type { auto-discovery | es | igmp-ls | igmp-js | imet | ip-prefix | mac-ip | smet } | 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 ] } |
显示从分布式聚合远端设备同步过来的MAC地址信息 |
display evpn drni synchronized-mac [ vsi vsi-name ] [ count ] |
显示EVPN的ES信息 |
display evpn es { local [ vsi vsi-name ] [ esi esi-id ] [ verbose ] | remote [ vsi vsi-name ] [ esi esi-id ] [ nexthop next-hop ] } |
显示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 route { igmp-js | igmp-ls | smet } [ local | remote ] [ vsi vsi-name ] [ count ] |
显示EVPN的MAC地址信息 |
display evpn route mac [ local | remote ] [ vsi vsi-name ] [ count ] |
显示EVPN的ND信息 |
display evpn route nd [ local | remote ] [ public-instance | vpn-instance vpn-instance-name ] [ count ] |
显示EVPN的路由表信息 |
display evpn routing-table [ ipv6 ] { public-instance | vpn-instance vpn-instance-name } [ count ] |
显示EVPN多归属组网中满足水平分割原则的接口信息 |
display l2vpn forwarding evpn split-horizon [ tunnel tunnel-number ] slot slot-number |
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上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[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上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/1
[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上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/2
[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
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan l3gw8k
# 关闭远端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
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 8
Route distinguisher: 1:10
Total number of routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [2][0][48][0000-1234-0001][0][0.0.0.0]/104
1.1.1.1 0 100 0 i
* >i [2][0][48][0000-1234-0002][0][0.0.0.0]/104
1.1.1.1 0 100 0 i
* > [2][0][48][0003-0003-0003][32][10.1.1.1]/136
0.0.0.0 0 100 32768 i
* >i [3][10][32][1.1.1.1]/80
1.1.1.1 0 100 0 i
* > [3][10][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
Route distinguisher: 1:20
Total number of routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [2][0][48][0000-1234-0003][0][0.0.0.0]/104
3.3.3.3 0 100 0 i
* >i [2][0][48][0000-1234-0004][0][0.0.0.0]/104
3.3.3.3 0 100 0 i
* > [2][0][48][0005-0005-0005][32][10.1.2.1]/136
0.0.0.0 0 100 32768 i
* > [3][20][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
* >i [3][20][32][2.2.2.2]/80
3.3.3.3 0 100 0 i
# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchC] display interface tunnel
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 7 bytes/sec, 56 bits/sec, 0 packets/sec
Input: 10 packets, 980 bytes, 0 drops
Output: 85 packets, 6758 bytes, 0 drops
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 1 bytes/sec, 8 bits/sec, 0 packets/sec
Last 300 seconds output rate: 9 bytes/sec, 72 bits/sec, 0 packets/sec
Input: 277 packets, 20306 bytes, 0 drops
Output: 1099 packets, 85962 bytes, 0 drops
# 查看Switch C上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchC] display interface vsi-interface
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1444
Internet address: 10.1.1.1/24 (primary)
IP packet frame type: Ethernet II, hardware address: 0003-0003-0003
IPv6 packet frame type: Ethernet II, hardware address: 0003-0003-0003
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Input (total): 0 packets, 0 bytes
Output (total): 0 packets, 0 bytes
Vsi-interface2
Current state: UP
Line protocol state: UP
Description: Vsi-interface2 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1444
Internet address: 10.1.2.1/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
Input (total): 0 packets, 0 bytes
Output (total): 0 packets, 0 bytes
# 查看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 : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
# 查看Switch C上VSI的EVPN ARP表项信息,可以看到已学习到了虚拟机的ARP信息。
[SwitchC] display evpn route arp
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
VPN instance: - Interface: Vsi-interface2
IP address MAC address Router MAC VSI Index Flags
10.1.2.1 0005-0005-0005 - 1 GL
10.1.2.10 0000-1234-0002 - 1 B
10.1.2.20 0000-1234-0004 - 1 B
VPN instance: - Interface: Vsi-interface1
IP address MAC address Router MAC VSI Index Flags
10.1.1.1 0003-0003-0003 - 0 GL
10.1.1.10 0000-1234-0001 - 0 B
10.1.1.20 0000-1234-0003 - 0 B
# 查看Switch C上FIB表项信息,可以看到已学习到了虚拟机的转发表项信息。
[SwitchC] display fib 10.1.1.10
Destination count: 1 FIB entry count: 1
Flag:
U:Useable G:Gateway H:Host B:Blackhole D:Dynamic S:Static
R:Relay F:FRR
Destination/Mask Nexthop Flag OutInterface/Token Label
10.1.1.10/32 10.1.1.10 UH Vsi1 Null
(2) 验证主机之间可以互访
虚拟机VM 1、VM 2、VM 3、VM 4之间可以互访。
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
# 配置VXLAN的硬件资源模式。
[SwitchA] hardware-resource vxlan l3gw8k
# 关闭远端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上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[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
# 配置VXLAN的硬件资源模式。
[SwitchB] hardware-resource vxlan l3gw8k
# 关闭远端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上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/1
[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上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/2
[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
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan border8k
# 关闭远端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
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 14
Route distinguisher: 1:1
Total number of routes: 4
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [5][0][24][10.1.1.0]/80
0.0.0.0 0 100 32768 i
* > [5][0][24][10.1.2.0]/80
0.0.0.0 0 100 32768 i
* >i [5][0][24][10.1.1.0]/80
2.2.2.2 0 100 0 i
* >i [5][0][24][10.1.2.0]/80
2.2.2.2 0 100 0 i
Route distinguisher: 1:10
Total number of routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][0000-1234-0001][0][0.0.0.0]/104
0.0.0.0 0 100 32768 i
* > [2][0][48][0000-1234-0001][32][10.1.1.10]/136
0.0.0.0 0 100 32768 i
* >i [2][0][48][0000-1234-0003][32][10.1.1.20]/136
2.2.2.2 0 100 0 i
* > [3][10][32][1.1.1.1]/80
0.0.0.0 0 100 32768 i
* >i [3][10][32][2.2.2.2]/80
2.2.2.2 0 100 32768 i
Route distinguisher: 1:20
Total number of routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][0000-1234-0002][0][0.0.0.0]/104
0.0.0.0 0 100 32768 i
* > [2][0][48][0000-1234-0002][32][10.1.2.10]/136
0.0.0.0 0 100 32768 i
* >i [2][0][48][0000-1234-0004][32][10.1.2.20]/136
2.2.2.2 0 100 0 i
* > [3][10][32][1.1.1.1]/80
0.0.0.0 0 100 32768 i
* >i [3][10][32][2.2.2.2]/80
2.2.2.2 0 100 32768 i
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。(以Tunnel0接口为例)
[SwitchA] display interface tunnel 0
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 9 packets, 882 bytes, 0 drops
Output: 9 packets, 882 bytes, 0 drops
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。(以VSI虚接口1为例)
[SwitchA] display interface vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1444
Internet address: 10.1.1.1/24 (primary)
IP packet frame type: Ethernet II, hardware address: 0001-0001-0001
IPv6 packet frame type: Ethernet II, hardware address: 0001-0001-0001
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Input (total): 0 packets, 0 bytes
Output (total): 0 packets, 0 bytes
# 查看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 : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 1000
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
VSI Name: vpnb
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
ACs:
AC Link ID State Type
XGE1/0/1 srv2000 0 Up Manual
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
# 查看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 VLAN/VSI 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 -- 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 I - Invalid
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) 验证主机之间可以互访
虚拟机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-3 分布式IPv6 EVPN网关配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1和VM 3上指定网关地址为11::1;在VM 2和VM 4上指定网关地址为12::1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchA] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ND自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel nd-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上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[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 ipv6
[SwitchA-vpn-ipv6-vpna] vpn-target 2:2
[SwitchA-vpn-ipv6-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] ipv6 address 11::1 64
[SwitchA-Vsi-interface1] mac-address 1-1-1
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-nd enable
[SwitchA-Vsi-interface1] quit
# 配置VSI虚接口VSI-interface2。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance vpna
[SwitchA-Vsi-interface2] ipv6 address 12::1 64
[SwitchA-Vsi-interface2] mac-address 2-2-2
[SwitchA-Vsi-interface2] distributed-gateway local
[SwitchA-Vsi-interface2] local-proxy-nd 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] ipv6 address auto link-local
[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
# 配置VXLAN的硬件资源模式。
[SwitchB] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ND自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel nd-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上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/1
[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上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface ten-gigabitethernet 1/0/2
[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 ipv6
[SwitchB-vpn-ipv6-vpna] vpn-target 2:2
[SwitchB-vpn-ipv6-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] ipv6 address 11::1 64
[SwitchB-Vsi-interface1] mac-address 1-1-1
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] local-proxy-nd enable
[SwitchB-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip binding vpn-instance vpna
[SwitchB-Vsi-interface2] ipv6 address 12::1 64
[SwitchB-Vsi-interface2] mac-address 2-2-2
[SwitchB-Vsi-interface2] distributed-gateway local
[SwitchB-Vsi-interface2] local-proxy-nd 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] ipv6 address auto link-local
[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
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan border8k
# 关闭远端MAC地址和远端ND自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel nd-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 ipv6
[SwitchC-vpn-ipv6-vpna] vpn-target 2:2
[SwitchC-vpn-ipv6-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] ipv6 address auto link-local
[SwitchC-Vsi-interface3] l3-vni 1000
[SwitchC-Vsi-interface3] quit
# 配置缺省路由,下一跳为广域网中某台设备的IP地址20::100。
[SwitchC] ipv6 route-static vpn-instance vpna :: 0 20::100
# 将缺省路由引入到VPN实例vpna的BGP IPv6单播路由表中。
[SwitchC] bgp 200
[SwitchC-bgp-default] ip vpn-instance vpna
[SwitchC-bgp-default-vpna] address-family ipv6 unicast
[SwitchC-bgp-default-ipv6-vpna] default-route imported
[SwitchC-bgp-default-ipv6-vpna] import-route static
[SwitchC-bgp-default-ipv6-vpna] quit
[SwitchC-bgp-default-vpna] quit
[SwitchC-bgp-default] quit
# 配置连接广域网的接口Vlan-interface20与VPN实例vpna关联。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip binding vpn-instance vpna
[SwitchC-Vlan-interface20] ipv6 address 20::1 64
[SwitchC-Vlan-interface20] 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
a - additional-path
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][64][11::0]/176
0.0.0.0 0 100 32768 i
* > [5][0][64][12::0]/176
0.0.0.0 0 100 32768 i
* >i [5][0][64][11::0]/176
2.2.2.2 0 100 0 i
* >i [5][0][64][12::0]/176
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][8291-87ab-0206][0][0.0.0.0]/104
0.0.0.0 0 100 32768 i
* > [2][0][48][8291-87ab-0206][128][11::7]/232
0.0.0.0 0 100 32768 i
* >i [2][0][48][8291-920d-0306][128][11::8]/232
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][8291-87ab-0206][0][0.0.0.0]/104
0.0.0.0 0 100 32768 i
* > [2][0][48][8291-87ab-0206][128][12::7]/232
0.0.0.0 0 100 32768 i
* >i [2][0][48][8291-920d-0306][128][12::8]/232
2.2.2.2 0 100 0 i
* > [3][10][32][1.1.1.1]/80
0.0.0.0 0 100 32768 i
* >i [3][10][32][2.2.2.2]/80
2.2.2.2 0 100 32768 i
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。(以Tunnel0接口为例)
[SwitchA] display interface tunnel 0
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 9 packets, 882 bytes, 0 drops
Output: 9 packets, 882 bytes, 0 drops
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。(以VSI虚接口1为例)
[SwitchA] display interface vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1444
Internet address: 10.1.1.1/24 (primary)
IP packet frame type: Ethernet II, hardware address: 0001-0001-0001
IPv6 packet frame type: Ethernet II, hardware address: 0001-0001-0001
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Input (total): 0 packets, 0 bytes
Output (total): 0 packets, 0 bytes
# 查看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 : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 1000
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv1000 0 Up Manual
VSI Name: vpnb
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
XGE1/0/1 srv2000 0 Up Manual
# 查看Switch A上VSI的EVPN ND表项信息,可以看到已学习到了本地虚拟机的ND信息。
[SwitchA] display evpn route nd
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping
VPN instance: vpn1 Interface: Vsi-interface1
IPv6 address : 11::7
MAC address : 0001-0001-0001 Router MAC : 8291-a344-0400
VSI index : 0 Flags : GL
IPv6 address : 12::7
MAC address : 0001-0002-0001 Router MAC : 8291-7342-0200
VSI index : 0 Flags : GL
IPv6 address : 11::8
MAC address : 0001-0002-0002 Router MAC : 8291-a342-0100
VSI index : 0 Flags : GL
IPv6 address : 12::8
MAC address : 0002-0002-0002 Router MAC : 8291-a741-0420
VSI index : 0 Flags : GL
IPv6 address : 11::11
MAC address : 0003-0003-0003 Router MAC : a0ce-7e80-0460
VSI index : 0 Flags : GL
(2) 验证主机之间可以互访
虚拟机VM 1、VM 2、VM 3、VM 4之间可以互访。
Switch A、Switch B、Switch D为与服务器连接的VTEP设备,Switch A和Switch B分布式聚合为一台虚拟VTEP设备,采用以太网聚合链路作为IPL;Switch C为与广域网连接的集中式EVPN网关设备,Switch C同时作为路由反射器在Switch A、Switch B、Switch D之间反射路由。
虚拟机VM 1和VM 2属于VXLAN 10,VM 3属于VXLAN 20,通过集中式EVPN网关实现VM 1、VM 2和VM 3互通。
图2-4 EVPN分布式聚合配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1和VM 2上指定网关地址为10.1.1.1;在VM 3上指定网关地址为10.1.2.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码。(具体配置过程略)
# 在IP核心网络内配置OSPF协议,发布各接口IP地址(包括Loopback接口的主IP地址和从IP地址)对应网段的路由,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 开启EVPN的分布式聚合模式,并配置虚拟VTEP地址为1.2.3.4。
[SwitchA] evpn drni group 1.2.3.4
# 配置DR系统。
[SwitchA] drni system-mac 0001-0001-0001
[SwitchA] drni system-number 1
[SwitchA] drni system-priority 10
[SwitchA] drni keepalive ip destination 60.1.1.2 source 60.1.1.1
# 创建二层聚合接口3,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 3
[SwitchA-Bridge-Aggregation3] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation3] quit
# 将接口Ten-GigabitEthernet1/0/3加入到聚合组3中。
[SwitchA] interface ten-gigabitethernet 1/0/3
[SwitchA-Ten-GigabitEthernet1/0/3] port link-aggregation group 3
[SwitchA-Ten-GigabitEthernet1/0/3] quit
# 将二层聚合接口3配置为IPP口并关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchA] interface bridge-aggregation 3
[SwitchA-Bridge-Aggregation3] port drni intra-portal-port 1
[SwitchA-Bridge-Aggregation3] undo mac-address static source-check enable
[SwitchA-Bridge-Aggregation3] quit
# 配置DR设备Switch A与Switch B之间路由可达。
[SwitchA] vlan 100
[SwitchA-vlan100] quit
[SwitchA] interface Vlan-interface 100
[SwitchA-Vlan-interface100] ip address 100.1.1.1 255.255.255.0
[SwitchA-Vlan-interface100] ospf 1 area 0.0.0.0
[SwitchA-Vlan-interface100] quit
# 在接口Ten-GigabitEthernet1/0/5上关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchA] interface ten-gigabitethernet 1/0/5
[SwitchA-Ten-GigabitEthernet1/0/5] undo mac-address static source-check enable
[SwitchA-Ten-GigabitEthernet1/0/5] undo stp enable
[SwitchA-Ten-GigabitEthernet1/0/5] quit
# 创建二层聚合接口4,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation4] quit
# 将接口Ten-GigabitEthernet1/0/1加入到聚合组4中。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-aggregation group 4
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 将二层聚合接口4加入分布式聚合组4中。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] port drni group 4
[SwitchA-Bridge-Aggregation4] quit
# 创建二层聚合接口5,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation5] quit
# 将接口Ten-GigabitEthernet1/0/2加入到聚合组5中。
[SwitchA] interface ten-gigabitethernet 1/0/2
[SwitchA-Ten-GigabitEthernet1/0/2] port link-aggregation group 5
[SwitchA-Ten-GigabitEthernet1/0/2] quit
# 将二层聚合接口5加入分布式聚合组5中。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] port drni group 5
[SwitchA-Bridge-Aggregation5] quit
# 在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
# 配置BGP发布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 3.3.3.3 as-number 200
[SwitchA-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 接入服务器的接口Bridge-Aggregation4上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] service-instance 1000
[SwitchA-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation10-srv1000] quit
# 接入服务器的接口Bridge-Aggregation5上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] service-instance 1000
[SwitchA-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation5-srv1000] quit
# 将所有参与EVPN业务的接口配置为DRNI保留接口。
[SwitchA] drni mad exclude interface loopback 0
[SwitchA] drni mad exclude interface loopback 1
[SwitchA] drni mad exclude interface ten-gigabitethernet 1/0/4
[SwitchA] drni mad exclude interface ten-gigabitethernet 1/0/5
[SwitchA] drni mad exclude interface vlan-interface 11
[SwitchA] drni mad exclude interface vlan-interface 100
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 开启EVPN的分布式聚合模式,并配置虚拟VTEP地址为1.2.3.4。
[SwitchB] evpn drni group 1.2.3.4
# 配置DR系统。
[SwitchB] drni system-mac 0001-0001-0001
[SwitchB] drni system-number 2
[SwitchB] drni system-priority 10
[SwitchB] drni keepalive ip destination 60.1.1.1 source 60.1.1.2
# 创建二层聚合接口3,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 3
[SwitchB-Bridge-Aggregation3] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation3] quit
# 将接口Ten-GigabitEthernet1/0/3加入到聚合组3中。
[SwitchB] interface ten-gigabitethernet 1/0/3
[SwitchB-Ten-GigabitEthernet1/0/3] port link-aggregation group 3
[SwitchB-Ten-GigabitEthernet1/0/3] quit
# 将二层聚合接口3配置为IPP口并关闭报文入接口与静态MAC地址表项匹配检查功能。
[SwitchB] interface bridge-aggregation 3
[SwitchB-Bridge-Aggregation3] port drni intra-portal-port 1
[SwitchB-Bridge-Aggregation3] undo mac-address static source-check enable
[SwitchB-Bridge-Aggregation3] quit
# 在接口Ten-GigabitEthernet1/0/5上关闭报文入接口与静态MAC地址表项匹配检查功能和生成树协议。
[SwitchB] interface ten-gigabitethernet 1/0/5
[SwitchB-Ten-GigabitEthernet1/0/5] undo mac-address static source-check enable
[SwitchB-Ten-GigabitEthernet1/0/5] undo stp enable
[SwitchB-Ten-GigabitEthernet1/0/5] quit
# 创建二层聚合接口4,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation4] quit
# 将接口Ten-GigabitEthernet1/0/1加入到聚合组4中。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] port link-aggregation group 4
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 将二层聚合接口4加入分布式聚合组4中。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] port drni group 4
[SwitchB-Bridge-Aggregation4] quit
# 创建二层聚合接口5,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation5] quit
# 将接口Ten-GigabitEthernet1/0/2加入到聚合组5中。
[SwitchB] interface ten-gigabitethernet 1/0/2
[SwitchB-Ten-GigabitEthernet1/0/2] port link-aggregation group 5
[SwitchB-Ten-GigabitEthernet1/0/2] quit
# 将二层聚合接口5加入分布式聚合组5中。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] port drni group 5
[SwitchB-Bridge-Aggregation5] quit
# 在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
# 配置BGP发布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 接入服务器的接口Bridge-Aggregation4上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] service-instance 1000
[SwitchB-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation10-srv1000] quit
# 接入服务器的接口Bridge-Aggregation5上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] service-instance 1000
[SwitchB-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation5-srv1000] quit
# 将所有参与EVPN业务的接口配置为DRNI保留接口。
[SwitchB] drni mad exclude interface loopback 0
[SwitchB] drni mad exclude interface loopback 1
[SwitchB] drni mad exclude interface ten-gigabitethernet 1/0/4
[SwitchB] drni mad exclude interface ten-gigabitethernet 1/0/5
[SwitchB] drni mad exclude interface vlan-interface 11
[SwitchB] drni mad exclude interface vlan-interface 100
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan l3gw8k
# 关闭远端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] group evpn
[SwitchC-bgp-default] peer 1.1.1.1 group evpn
[SwitchC-bgp-default] peer 2.2.2.2 group evpn
[SwitchC-bgp-default] peer 4.4.4.4 group evpn
[SwitchC-bgp-default] peer evpn as-number 200
[SwitchC-bgp-default] peer evpn connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer evpn enable
[SwitchC-bgp-default-evpn] undo policy vpn-target
[SwitchC-bgp-default-evpn] peer evpn reflect-client
[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
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] arp suppression enable
[SwitchD-vsi-vpnb] evpn encapsulation vxlan
[SwitchD-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchD-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 4的数据帧。
[SwitchD] interface ten-gigabitethernet 1/0/1
[SwitchD-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchD-Ten-GigabitEthernet1/0/1] encapsulation s-vid 4
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchD-Ten-GigabitEthernet1/0/1] xconnect vsi vpnb
[SwitchD-Ten-GigabitEthernet1/0/1] quit
(1) 验证EVPN网关设备Switch C
# 查看Switch C上的EVPN路由信息,可以看到Switch C发送了网关的MAC/IP路由和IMET路由,并接收到Switch A、Switch B和Switch D发送的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
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 5
Route distinguisher: 1:100
Total number of routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][0800-2700-400e][0][0.0.0.0]/104
0.0.0.0 0 100 32768 i
* i 1.2.3.4 0 100 0 i
* >i [3][0][32][1.2.3.4]/80
1.2.3.4 0 100 0 i
* >i [3][0][32][2.2.2.2]/80
1.2.3.4 0 100 0 i
* > [3][0][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态,并且隧道目的地址是虚拟VTEP地址。
[SwitchC] display interface tunnel
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.2.3.4
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: 4 bytes/sec, 32 bits/sec, 0 packets/sec
Input: 2 packets, 340 bytes, 0 drops
Output: 16 packets, 2793 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 : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 100
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Disabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 UP Auto Disabled
(2) 以Switch A为例,验证分布式聚合设备
# 查看Switch A上的EVPN路由信息。
[SwitchA] display bgp l2vpn evpn
BGP local router ID is 1.2.3.4
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 5
Route distinguisher: 1:100
Total number of routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][0800-2700-400e][0][0.0.0.0]/104
1.2.3.4 0 100 32768 i
* >i [2][0][48][46b2-aea0-0101][0][0.0.0.0]/104
3.3.3.3 0 100 0 i
* >i [2][0][48][ac1e-24e3-0201][0][0.0.0.0]/104
3.3.3.3 0 100 0 i
* > [3][0][32][1.2.3.4]/80
1.2.3.4 0 100 32768 i
* >i [3][0][32][3.3.3.3]/80
3.3.3.3 0 100 0 i
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态,并且隧道源地址是虚拟VTEP地址。
[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.2.3.4, 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: 1 bytes/sec, 8 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 33 packets, 6121 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到设备自动在IPL上创建了AC,并将其与VSI关联。
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
BAGG4 srv1000 0 Up Manual
BAGG3 srv1 1 Up Dynamic (MLAG)
VSI Name: vpnb
VSI Index : 2
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
BAGG5 srv1000 0 Up Manual
BAGG3 srv2 1 Up Dynamic (MLAG)
(3) 验证主机之间可以互访
虚拟机VM 1、VM 2和VM 3之间可以互访。虚拟机与Switch A或Switch B相连的链路断开后,VM 1、VM 2和VM 3仍然可以通过另一台设备互访。
Switch A、Switch B、Switch D为与服务器连接的VTEP设备,Switch A和Switch B分布式聚合为一台虚拟VTEP设备,采用VXLAN隧道作为IPL。Switch A和Switch B通过DRNI的Keepalive机制检测邻居状态。Switch C为与广域网连接的集中式EVPN网关设备,Switch C同时作为路由反射器在Switch A、Switch B、Switch D之间反射路由。
虚拟机VM 1和VM 2属于VXLAN 10,VM 3属于VXLAN 20,通过集中式EVPN网关实现VM 1、VM 2和VM 3互通。
图2-5 IPv4 EVPN分布式聚合配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1和VM 2上指定网关地址为10.1.1.1;在VM 3上指定网关地址为10.1.2.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码。(具体配置过程略)
# 在IP核心网络内配置OSPF协议,发布各接口IP地址(包括Loopback接口的IP地址)对应网段的路由,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 开启EVPN的分布式聚合模式,并配置虚拟VTEP地址为1.2.3.4。
[SwitchA] evpn drni group 1.2.3.4
# 配置预留VXLAN ID为1234。
[SwitchA] reserved vxlan 1234
# 配置DR系统。
[SwitchA] drni system-mac 0001-0001-0001
[SwitchA] drni system-number 1
[SwitchA] drni system-priority 10
[SwitchA] drni keepalive ip destination 12.1.1.2 source 11.1.1.1
[SwitchA] drni restore-delay 180
# 在Switch A和Switch B之间手工创建VXLAN隧道Tunnel1,并将其配置为IPP口。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 将VXLAN隧道接口配置DRNI保留接口。
[SwitchA] drni mad exclude interface tunnel 2
# 配置VXLAN隧道接口为IPP口。
[SwitchA] interface tunnel 2
[SwitchA-Tunnel2] port drni intra-portal-port 1
[SwitchA-Tunnel2] quit
# 在接口Ten-GigabitEthernet1/0/4上关闭报文入接口与静态MAC地址表项匹配检查功能和生成树协议。
[SwitchA] interface ten-gigabitethernet 1/0/4
[SwitchA-Ten-GigabitEthernet1/0/4] undo mac-address static source-check enable
[SwitchA-Ten-GigabitEthernet1/0/4] undo stp enable
[SwitchA-Ten-GigabitEthernet1/0/4] quit
# 创建二层聚合接口4,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation4] quit
# 将接口Ten-GigabitEthernet1/0/1加入到聚合组4中。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-aggregation group 4
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 将二层聚合接口4加入分布式聚合组4中。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] port drni group 4
[SwitchA-Bridge-Aggregation4] quit
# 创建二层聚合接口5,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation5] quit
# 将接口Ten-GigabitEthernet1/0/2加入到聚合组5中。
[SwitchA] interface Ten-GigabitEthernet 1/0/2
[SwitchA-Ten-GigabitEthernet1/0/2] port link-aggregation group 5
[SwitchA-Ten-GigabitEthernet1/0/2] quit
# 将二层聚合接口5加入分布式聚合组5中。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] port drni group 5
[SwitchA-Bridge-Aggregation5] quit
# 在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
# 配置BGP发布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 3.3.3.3 as-number 200
[SwitchA-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 接入服务器的接口Bridge-Aggregation4上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] service-instance 1000
[SwitchA-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation10-srv1000] quit
# 接入服务器的接口Bridge-Aggregation5上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] service-instance 1000
[SwitchA-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation5-srv1000] quit
# 将所有参与EVPN业务的接口配置为DRNI保留接口。
[SwitchA] drni mad exclude interface loopback 0
[SwitchA] drni mad exclude interface loopback 1
[SwitchA] drni mad exclude interface ten-gigabitethernet 1/0/4
[SwitchA] drni mad exclude interface vlan-interface 11
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 开启EVPN的分布式聚合模式,并配置虚拟VTEP地址为1.2.3.4。
[SwitchB] evpn drni group 1.2.3.4
# 配置预留VXLAN ID为1234。
[SwitchB] reserved vxlan 1234
# 配置DR系统。
[SwitchB] drni system-mac 0001-0001-0001
[SwitchB] drni system-number 2
[SwitchB] drni system-priority 10
[SwitchB] drni keepalive ip destination 11.1.1.1 source 12.1.1.2
[SwitchB] drni restore-delay 180
# 在Switch A和Switch B之间手工创建VXLAN隧道Tunnel1,并将其配置为IPP口。
[SwitchB] interface tunnel 1 mode vxlan
[SwitchB-Tunnel1] source 2.2.2.2
[SwitchB-Tunnel1] destination 1.1.1.1
[SwitchB-Tunnel1] quit
# 将VXLAN隧道接口配置DRNI保留接口。
[SwitchB] drni mad exclude interface tunnel 2
# 配置VXLAN隧道接口为IPP口。
[SwitchB] interface tunnel 2
[SwitchB-Tunnel2] port drni intra-portal-port 1
[SwitchB-Tunnel2] quit
# 在接口Ten-GigabitEthernet1/0/4上关闭报文入接口与静态MAC地址表项匹配检查功能和生成树协议。
[SwitchB] interface ten-gigabitethernet 1/0/4
[SwitchB-Ten-GigabitEthernet1/0/4] undo mac-address static source-check enable
[SwitchB-Ten-GigabitEthernet1/0/4] undo stp enable
[SwitchB-Ten-GigabitEthernet1/0/4] quit
# 创建二层聚合接口4,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation4] quit
# 将接口Ten-GigabitEthernet1/0/1加入到聚合组4中。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] port link-aggregation group 4
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 将二层聚合接口4加入分布式聚合组4中。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] port drni group 4
[SwitchB-Bridge-Aggregation4] quit
# 创建二层聚合接口5,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation5] quit
# 将接口Ten-GigabitEthernet1/0/2加入到聚合组5中。
[SwitchB] interface ten-gigabitethernet 1/0/2
[SwitchB-Ten-GigabitEthernet1/0/2] port link-aggregation group 5
[SwitchB-Ten-GigabitEthernet1/0/2] quit
# 将二层聚合接口5加入分布式聚合组5中。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] port drni group 5
[SwitchB-Bridge-Aggregation5] quit
# 在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
# 配置BGP发布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 接入服务器的接口Bridge-Aggregation4上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] service-instance 1000
[SwitchB-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation10-srv1000] quit
# 接入服务器的接口Bridge-Aggregation5上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] service-instance 1000
[SwitchB-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation5-srv1000] quit
# 将所有参与EVPN业务的接口配置为DRNI保留接口。
[SwitchB] drni mad exclude interface loopback 0
[SwitchB] drni mad exclude interface loopback 1
[SwitchB] drni mad exclude interface ten-gigabitethernet 1/0/4
[SwitchB] drni mad exclude interface vlan-interface 11
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan l3gw8k
# 关闭远端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] group evpn
[SwitchC-bgp-default] peer 1.1.1.1 group evpn
[SwitchC-bgp-default] peer 2.2.2.2 group evpn
[SwitchC-bgp-default] peer 4.4.4.4 group evpn
[SwitchC-bgp-default] peer evpn as-number 200
[SwitchC-bgp-default] peer evpn connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer evpn enable
[SwitchC-bgp-default-evpn] undo policy vpn-target
[SwitchC-bgp-default-evpn] peer evpn reflect-client
[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
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] arp suppression enable
[SwitchD-vsi-vpnb] evpn encapsulation vxlan
[SwitchD-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchD-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 4的数据帧。
[SwitchD] interface ten-gigabitethernet 1/0/1
[SwitchD-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchD-Ten-GigabitEthernet1/0/1] encapsulation s-vid 4
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchD-Ten-GigabitEthernet1/0/1] xconnect vsi vpnb
[SwitchD-Ten-GigabitEthernet1/0/1] quit
(1) 验证EVPN网关设备Switch C
# 查看Switch C上的EVPN路由信息,可以看到Switch C发送了网关的MAC/IP路由和IMET路由,并接收到Switch A、Switch B和Switch D发送的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
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 5
Route distinguisher: 1:10
Total number of routes: 6
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][7e9a-48e9-0100][32][10.1.1.1]/136
0.0.0.0 0 100 32768 i
* >i [3][0][32][1.1.1.1]/80
1.1.1.1 0 100 0 i
* >i [3][0][32][1.2.3.4]/80
1.2.3.4 0 100 0 i
* i 1.2.3.4 0 100 0 i
* >i [3][0][32][2.2.2.2]/80
2.2.2.2 0 100 0 i
* > [3][0][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
Route distinguisher: 1:20
Total number of routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][7e9a-48e9-0100][32][10.1.2.1]/136
0.0.0.0 0 100 32768 i
* > [3][0][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
* >i [3][0][32][4.4.4.4]/80
4.4.4.4 0 100 0 i
# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态,并与虚拟VTEP地址建立了VXLAN隧道。
[SwitchC] display interface tunnel
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 4.4.4.4
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: 0 packets, 0 bytes, 0 drops
Output: 2 packets, 84 bytes, 0 drops
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 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: 2 packets, 84 bytes, 0 drops
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.2.3.4
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: 0 packets, 0 bytes, 0 drops
Output: 1 packets, 42 bytes, 0 drops
Tunnel3
Current state: UP
Line protocol state: UP
Description: Tunnel3 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 1 packets, 42 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 : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 UP Auto Disabled
Tunnel2 0x5000002 UP Auto Disabled
Tunnel3 0x5000003 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
(2) 以Switch A为例,验证分布式聚合设备
# 查看Switch A上的EVPN路由信息。
[SwitchA] display bgp l2vpn evpn
BGP local router ID is 1.2.3.4
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 3
Route distinguisher: 1:10
Total number of routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [2][0][48][7e9a-48e9-0100][32][10.1.1.1]/136
3.3.3.3 0 100 0 i
* > [3][0][32][1.1.1.1]/80
1.1.1.1 0 100 32768 i
* > [3][0][32][1.2.3.4]/80
1.2.3.4 0 100 32768 i
* >i [3][0][32][2.2.2.2]/80
2.2.2.2 0 100 0 i
* >i [3][0][32][3.3.3.3]/80
3.3.3.3 0 100 0 i
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态,并且隧道源地址是虚拟VTEP地址。
[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.2.3.4, 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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 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 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 12 bytes/sec, 96 bits/sec, 0 packets/sec
Last 300 seconds output rate: 12 bytes/sec, 96 bits/sec, 0 packets/sec
Input: 239 packets, 25558 bytes, 0 drops
Output: 1241 packets, 109811 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Down
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
Tunnel1 0x5000001 UP Manual Disabled
ACs:
AC Link ID State Type
BAGG4 srv1000 0 Down Manual
BAGG5 srv1000 1 Down Manual
(3) 验证主机之间可以互访
虚拟机VM 1、VM 2和VM 3之间可以互访。虚拟机与Switch A或Switch B相连的链路断开后,VM 1、VM 2和VM 3仍然可以通过另一台设备互访。
Switch A、Switch B、Switch D为与服务器连接的VTEP设备,Switch A和Switch B分布式聚合为一台虚拟VTEP设备,采用VXLAN隧道作为IPL。在Switch A和Switch B上配置Monitor Link组。把所有上行口配置为Up-Link,所有下行DR成员口配置为Down-Link,通过Monitor Link实现上下行接口联动,以便及时发现上行接口故障,并在DR成员设备之间进行主从切换。
Switch C为与广域网连接的集中式EVPN网关设备,Switch C同时作为路由反射器在Switch A、Switch B、Switch D之间反射路由。
虚拟机VM 1和VM 2属于VXLAN 10,VM 3属于VXLAN 20,通过集中式EVPN网关实现VM 1、VM 2和VM 3互通。
图2-6 IPv4 EVPN分布式聚合配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1和VM 2上指定网关地址为10.1.1.1;在VM 3上指定网关地址为10.1.2.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码。(具体配置过程略)
# 在IP核心网络内配置OSPF协议,发布各接口IP地址(包括Loopback接口的IP地址)对应网段的路由,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 开启EVPN的分布式聚合模式,并配置虚拟VTEP地址为1.2.3.4。
[SwitchA] evpn drni group 1.2.3.4
# 配置预留VXLAN ID为1234。
[SwitchA] reserved vxlan 1234
# 配置DR系统。
[SwitchA] drni system-mac 0001-0001-0001
[SwitchA] drni system-number 1
[SwitchA] drni system-priority 10
[SwitchA] drni keepalive ip destination 12.1.1.2 source 11.1.1.1
[SwitchA] drni restore-delay 180
# 在Switch A和Switch B之间手工创建VXLAN隧道Tunnel1,并将其配置为IPP口。
[SwitchA] interface tunnel 1 mode vxlan
[SwitchA-Tunnel1] source 1.1.1.1
[SwitchA-Tunnel1] destination 2.2.2.2
[SwitchA-Tunnel1] quit
# 将VXLAN隧道接口配置DRNI保留接口。
[SwitchA] drni mad exclude interface tunnel 2
# 配置VXLAN隧道接口为IPP口。
[SwitchA] interface tunnel 2
[SwitchA-Tunnel2] port drni intra-portal-port 1
[SwitchA-Tunnel2] quit
# 在接口Ten-GigabitEthernet1/0/4上关闭报文入接口与静态MAC地址表项匹配检查功能和生成树协议。
[SwitchA] interface ten-gigabitethernet 1/0/4
[SwitchA-Ten-GigabitEthernet1/0/4] undo mac-address static source-check enable
[SwitchA-Ten-GigabitEthernet1/0/4] undo stp enable
[SwitchA-Ten-GigabitEthernet1/0/4] quit
# 创建二层聚合接口4,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation4] quit
# 将接口Ten-GigabitEthernet1/0/1加入到聚合组4中。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] port link-aggregation group 4
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 将二层聚合接口4加入分布式聚合组4中。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] port drni group 4
[SwitchA-Bridge-Aggregation4] quit
# 创建二层聚合接口5,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation5] quit
# 将接口Ten-GigabitEthernet1/0/2加入到聚合组5中。
[SwitchA] interface Ten-GigabitEthernet 1/0/2
[SwitchA-Ten-GigabitEthernet1/0/2] port link-aggregation group 5
[SwitchA-Ten-GigabitEthernet1/0/2] quit
# 将二层聚合接口5加入分布式聚合组5中。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] port drni group 5
[SwitchA-Bridge-Aggregation5] quit
# 在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
# 配置BGP发布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 3.3.3.3 as-number 200
[SwitchA-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 接入服务器的接口Bridge-Aggregation4上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] service-instance 1000
[SwitchA-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation10-srv1000] quit
# 接入服务器的接口Bridge-Aggregation5上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] service-instance 1000
[SwitchA-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchA-Bridge-Aggregation5-srv1000] quit
# 创建Monitor Link组1,添加上行和下行接口,以便在上下行接口之间形成联动。
[SwitchA] monitor-link group 1
[SwitchA-mtlk-group1] port ten-gigabitethernet 1/0/1 downlink
[SwitchA-mtlk-group1] port ten-gigabitethernet 1/0/2 downlink
[SwitchA-mtlk-group1] port ten-gigabitethernet 1/0/4 uplink
[SwitchA-mtlk-group1] quit
# 将所有参与EVPN业务的接口配置为DRNI保留接口。
[SwitchA] drni mad exclude interface loopback 0
[SwitchA] drni mad exclude interface loopback 1
[SwitchA] drni mad exclude interface ten-gigabitethernet 1/0/4
[SwitchA] drni mad exclude interface vlan-interface 11
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 开启EVPN的分布式聚合模式,并配置虚拟VTEP地址为1.2.3.4。
[SwitchB] evpn drni group 1.2.3.4
# 配置预留VXLAN ID为1234。
[SwitchB] reserved vxlan 1234
# 配置DR系统。
[SwitchB] drni system-mac 0001-0001-0001
[SwitchB] drni system-number 2
[SwitchB] drni system-priority 10
[SwitchB] drni keepalive ip destination 11.1.1.1 source 12.1.1.2
[SwitchB] drni restore-delay 180
# 在Switch A和Switch B之间手工创建VXLAN隧道Tunnel1,并将其配置为IPP口。
[SwitchB] interface tunnel 1 mode vxlan
[SwitchB-Tunnel1] source 2.2.2.2
[SwitchB-Tunnel1] destination 1.1.1.1
[SwitchB-Tunnel1] quit
# 将VXLAN隧道接口配置DRNI保留接口。
[SwitchB] drni mad exclude interface tunnel 2
# 配置VXLAN隧道接口为IPP口。
[SwitchB] interface tunnel 2
[SwitchB-Tunnel2] port drni intra-portal-port 1
[SwitchB-Tunnel2] quit
# 在接口Ten-GigabitEthernet1/0/4上关闭报文入接口与静态MAC地址表项匹配检查功能和生成树协议。
[SwitchB] interface ten-gigabitethernet 1/0/4
[SwitchB-Ten-GigabitEthernet1/0/4] undo mac-address static source-check enable
[SwitchB-Ten-GigabitEthernet1/0/4] undo stp enable
[SwitchB-Ten-GigabitEthernet1/0/4] quit
# 创建二层聚合接口4,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation4] quit
# 将接口Ten-GigabitEthernet1/0/1加入到聚合组4中。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] port link-aggregation group 4
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 将二层聚合接口4加入分布式聚合组4中。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] port drni group 4
[SwitchB-Bridge-Aggregation4] quit
# 创建二层聚合接口5,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation5] quit
# 将接口Ten-GigabitEthernet1/0/2加入到聚合组5中。
[SwitchB] interface ten-gigabitethernet 1/0/2
[SwitchB-Ten-GigabitEthernet1/0/2] port link-aggregation group 5
[SwitchB-Ten-GigabitEthernet1/0/2] quit
# 将二层聚合接口5加入分布式聚合组5中。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] port drni group 5
[SwitchB-Bridge-Aggregation5] quit
# 在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
# 配置BGP发布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 接入服务器的接口Bridge-Aggregation4上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] service-instance 1000
[SwitchB-Bridge-Aggregation4-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Bridge-Aggregation10-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation10-srv1000] quit
# 接入服务器的接口Bridge-Aggregation5上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] service-instance 1000
[SwitchB-Bridge-Aggregation5-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-Bridge-Aggregation5-srv1000] xconnect vsi vpna
[SwitchB-Bridge-Aggregation5-srv1000] quit
# 创建Monitor Link组1,添加上行和下行接口,以便在上下行接口之间形成联动。
[SwitchB] monitor-link group 1
[SwitchB-mtlk-group1] port ten-gigabitethernet 1/0/1 downlink
[SwitchB-mtlk-group1] port ten-gigabitethernet 1/0/2 downlink
[SwitchB-mtlk-group1] port ten-gigabitethernet 1/0/4 uplink
[SwitchB-mtlk-group1] quit
# 将所有参与EVPN业务的接口配置为DRNI保留接口。
[SwitchB] drni mad exclude interface loopback 0
[SwitchB] drni mad exclude interface loopback 1
[SwitchB] drni mad exclude interface ten-gigabitethernet 1/0/4
[SwitchB] drni mad exclude interface vlan-interface 11
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan l3gw8k
# 关闭远端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] group evpn
[SwitchC-bgp-default] peer 1.1.1.1 group evpn
[SwitchC-bgp-default] peer 2.2.2.2 group evpn
[SwitchC-bgp-default] peer 4.4.4.4 group evpn
[SwitchC-bgp-default] peer evpn as-number 200
[SwitchC-bgp-default] peer evpn connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer evpn enable
[SwitchC-bgp-default-evpn] undo policy vpn-target
[SwitchC-bgp-default-evpn] peer evpn reflect-client
[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
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] arp suppression enable
[SwitchD-vsi-vpnb] evpn encapsulation vxlan
[SwitchD-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchD-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 4的数据帧。
[SwitchD] interface ten-gigabitethernet 1/0/1
[SwitchD-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchD-Ten-GigabitEthernet1/0/1] encapsulation s-vid 4
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchD-Ten-GigabitEthernet1/0/1] xconnect vsi vpnb
[SwitchD-Ten-GigabitEthernet1/0/1] quit
(1) 验证EVPN网关设备Switch C
# 查看Switch C上的EVPN路由信息,可以看到Switch C发送了网关的MAC/IP路由和IMET路由,并接收到Switch A、Switch B和Switch D发送的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
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 5
Route distinguisher: 1:10
Total number of routes: 6
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][7e9a-48e9-0100][32][10.1.1.1]/136
0.0.0.0 0 100 32768 i
* >i [3][0][32][1.1.1.1]/80
1.1.1.1 0 100 0 i
* >i [3][0][32][1.2.3.4]/80
1.2.3.4 0 100 0 i
* i 1.2.3.4 0 100 0 i
* >i [3][0][32][2.2.2.2]/80
2.2.2.2 0 100 0 i
* > [3][0][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
Route distinguisher: 1:20
Total number of routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][0][48][7e9a-48e9-0100][32][10.1.2.1]/136
0.0.0.0 0 100 32768 i
* > [3][0][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
* >i [3][0][32][4.4.4.4]/80
4.4.4.4 0 100 0 i
# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态,并与虚拟VTEP地址建立了VXLAN隧道。
[SwitchC] display interface tunnel
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 4.4.4.4
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: 0 packets, 0 bytes, 0 drops
Output: 2 packets, 84 bytes, 0 drops
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel1 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.1.1.1
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 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: 2 packets, 84 bytes, 0 drops
Tunnel2
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 1.2.3.4
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: 0 packets, 0 bytes, 0 drops
Output: 1 packets, 42 bytes, 0 drops
Tunnel3
Current state: UP
Line protocol state: UP
Description: Tunnel3 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 3.3.3.3, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 1 packets, 42 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 : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 UP Auto Disabled
Tunnel2 0x5000002 UP Auto Disabled
Tunnel3 0x5000003 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
(2) 以Switch A为例,验证分布式聚合设备
# 查看Switch A上的EVPN路由信息。
[SwitchA] display bgp l2vpn evpn
BGP local router ID is 1.2.3.4
Status codes: * - valid, > - best, d - dampened, h - history,
s - suppressed, S - stale, i - internal, e - external
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 3
Route distinguisher: 1:10
Total number of routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [2][0][48][7e9a-48e9-0100][32][10.1.1.1]/136
3.3.3.3 0 100 0 i
* > [3][0][32][1.1.1.1]/80
1.1.1.1 0 100 32768 i
* > [3][0][32][1.2.3.4]/80
1.2.3.4 0 100 32768 i
* >i [3][0][32][2.2.2.2]/80
2.2.2.2 0 100 0 i
* >i [3][0][32][3.3.3.3]/80
3.3.3.3 0 100 0 i
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态,并且隧道源地址是虚拟VTEP地址。
[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.2.3.4, 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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 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 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 12 bytes/sec, 96 bits/sec, 0 packets/sec
Last 300 seconds output rate: 12 bytes/sec, 96 bits/sec, 0 packets/sec
Input: 239 packets, 25558 bytes, 0 drops
Output: 1241 packets, 109811 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Down
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
Tunnel1 0x5000001 UP Manual Disabled
ACs:
AC Link ID State Type
BAGG4 srv1000 0 Down Manual
BAGG5 srv1000 1 Down Manual
(3) 验证主机之间可以互访
虚拟机VM 1、VM 2和VM 3之间可以互访。虚拟机与Switch A或Switch B相连的链路断开后,VM 1、VM 2和VM 3仍然可以通过另一台设备互访。
仅R2612及以上版本支持本配置举例。
Switch A、Switch B、Switch C为分布式EVPN网关设备;Switch D为RR,负责在交换机之间反射BGP路由。
虚拟机VM 1、VM 2和VM 3属于VXLAN 10;VM 4属于VXLAN 20。Server 2通过聚合链路多归属于Switch A、Switch B, Server 3通过聚合链路多归属于Switch B、Switch C。Server 1、Server 4分别为Switch A和Switch C下的单归属设备。相同VXLAN之间可以二层互通;不同VXLAN之间通过分布式EVPN网关实现三层互通。
图2-7 EVPN支持IPv4站点多归属配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1、VM 2和VM 3上指定网关地址为10.1.1.1;在VM 4上指定网关地址为20.1.1.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA ] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchA] hardware-resource vxlan l3gw8k
# 关闭远端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 router-id
[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
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[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
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/2上配置ESI值。
[SwitchA] interface ten-gigabitethernet 1/0/2
[SwitchA-Ten-GigabitEthernet1/0/2] esi 0.0.0.0.1
# 在该接口上创建以太网服务实例2000,用来匹配VLAN 2的数据帧。
[SwitchA-Ten-GigabitEthernet1/0/2] service-instance 2000
[SwitchA-Ten-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 2
# 配置以太网服务实例2000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/2-srv2000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/2-srv2000] quit
[SwitchA-Ten-GigabitEthernet1/0/2] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance l3vpna
[SwitchA-vpn-instance-l3vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-l3vpna] address-family ipv4
[SwitchA-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchA-vpn-ipv4-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] address-family evpn
[SwitchA-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchA-vpn-evpn-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] quit
# 配置VSI虚接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance l3vpna
[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-interface3,在该接口上配置VPN实例l3vpna对应的L3VNI为1000。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] ip binding vpn-instance l3vpna
[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
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchB] hardware-resource vxlan l3gw8k
# 关闭远端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 router-id
[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
# 配置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上配置ESI值。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] esi 0.0.0.0.1
# 在该接口上创建以太网服务实例2000,用来匹配VLAN 2的数据帧。
[SwitchB-Ten-GigabitEthernet1/0/1] service-instance 2000
[SwitchB-Ten-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 2
# 配置以太网服务实例2000与VSI实例vpna关联。
[SwitchB-Ten-GigabitEthernet1/0/1-srv2000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet1/0/1-srv2000] quit
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/2上配置ESI值。
[SwitchB] interface ten-gigabitethernet 1/0/2
[SwitchB-Ten-GigabitEthernet1/0/2] esi 0.0.0.0.2
# 在该接口上创建以太网服务实例3000,用来匹配VLAN 2的数据帧。
[SwitchB-Ten-GigabitEthernet1/0/2] service-instance 3000
[SwitchB-Ten-GigabitEthernet1/0/2-srv3000] encapsulation s-vid 2
# 配置以太网服务实例3000与VSI实例vpna关联。
[SwitchB-Ten-GigabitEthernet1/0/2-srv3000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet1/0/2-srv3000] quit
[SwitchB-Ten-GigabitEthernet1/0/2] quit
# 配置L3VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpna
[SwitchB-vpn-instance-l3vpna] route-distinguisher 2:2
[SwitchB-vpn-instance-l3vpna] address-family ipv4
[SwitchB-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchB-vpn-ipv4-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] address-family evpn
[SwitchB-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchB-vpn-evpn-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] quit
# 配置VSI虚接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance l3vpna
[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-interface3,在该接口上配置VPN实例l3vpna对应的L3VNI为1000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance l3vpna
[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
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-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 router-id
[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 router-id
[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
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上配置ESI值。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] esi 0.0.0.0.2
# 在该接口上创建以太网服务实例3000,用来匹配VLAN 2的数据帧。
[SwitchC-Ten-GigabitEthernet1/0/1] service-instance 3000
[SwitchC-Ten-GigabitEthernet1/0/1-srv3000] encapsulation s-vid 2
# 配置以太网服务实例3000与VSI实例vpna关联。
[SwitchC-Ten-GigabitEthernet1/0/1-srv3000] xconnect vsi vpna
[SwitchC-Ten-GigabitEthernet1/0/1-srv3000] quit
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 在接口Ten-GigabitEthernet1/0/2上创建以太网服务实例4000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface ten-gigabitethernet 1/0/2
[SwitchC-Ten-GigabitEthernet1/0/2] service-instance 4000
[SwitchC-Ten-GigabitEthernet1/0/2-srv4000] encapsulation s-vid 2
# 配置以太网服务实例4000与VSI实例vpnb关联。
[SwitchC-Ten-GigabitEthernet1/0/2-srv4000] xconnect vsi vpnb
[SwitchC-Ten-GigabitEthernet1/0/2-srv4000] quit
[SwitchC-Ten-GigabitEthernet1/0/2] quit
# 配置L3VNI的RD和RT。
[SwitchC] ip vpn-instance l3vpna
[SwitchC-vpn-instance-l3vpna] route-distinguisher 3:3
[SwitchC-vpn-instance-l3vpna] address-family ipv4
[SwitchC-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchC-vpn-ipv4-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] address-family evpn
[SwitchC-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchC-vpn-evpn-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] quit
# 配置VSI虚接口VSI-interface1。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchC-Vsi-interface1] mac-address 1-1-1
[SwitchC-Vsi-interface1] distributed-gateway local
[SwitchC-Vsi-interface1] local-proxy-arp enable
[SwitchC-Vsi-interface1] quit
# 配置VSI虚接口VSI-interface2。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchC-Vsi-interface2] ip address 20.1.1.1 255.255.255.0
[SwitchC-Vsi-interface2] mac-address 2-2-2
[SwitchC-Vsi-interface2] distributed-gateway local
[SwitchC-Vsi-interface2] local-proxy-arp enable
[SwitchC-Vsi-interface2] quit
# 创建VSI虚接口VSI-interface3,在该接口上配置VPN实例l3vpna对应的L3VNI为1000。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchC-Vsi-interface3] l3-vni 1000
[SwitchC-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] gateway vsi-interface 2
[SwitchC-vsi-vpnb] quit
(5) 配置Switch D
# 配置SwitchD与其他路由器建立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发送了网关的IP前缀路由、各VSI的IMET路由、MAC/IP路由、Auto-Discovery路由、Ethernet segment路由,并接收到其他网关发送的网关IP前缀路由、各VSI的IMET路由、MAC/IP路由、Auto-Discovery路由以及Ethernet segment路由。
[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
a - additional-path
Origin: i - IGP, e - EGP, ? - incomplete
Total number of routes from all PEs: 17
Route distinguisher: 1:1
Total number of routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [5][0][24][10.1.1.0]/80
1.1.1.1 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.1.0]/80
2.2.2.2 0 100 0 i
Route distinguisher: 3:3(l3vpna)
Total number of routes: 10
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [1][0000.0000.0000.0000.0001][2]/120
1.1.1.1 0 100 0 i
* i 2.2.2.2 0 100 0 i
* >i [1][0000.0000.0000.0000.0001][4294967295]/120
1.1.1.1 0 100 0 i
* i 2.2.2.2 0 100 0 i
* >i [1][0000.0000.0000.0000.0002][2]/120
2.2.2.2 0 100 0 i
* >i [1][0000.0000.0000.0000.0002][4294967295]/120
2.2.2.2 0 100 0 i
* >i [2][2][48][0001-0001-0010][32][10.1.1.10]/136
1.1.1.1 0 100 0 i
* >i [2][2][48][0001-0001-0020][32][10.1.1.20]/136
2.2.2.2 0 100 0 i
* > [5][0][24][10.1.1.0]/80
0.0.0.0 0 100 32768 i
* > [5][0][24][20.1.1.0]/80
0.0.0.0 0 100 32768 i
Route distinguisher: 1.1.1.1:0
Total number of routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [4][0000.0000.0000.0000.0001][32][1.1.1.1]/128
1.1.1.1 0 100 0 i
Route distinguisher: 1.1.1.1:1
Total number of routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [1][0000.0000.0000.0000.0001][2]/120
1.1.1.1 0 100 0 i
* >i [1][0000.0000.0000.0000.0001][4294967295]/120
1.1.1.1 0 100 0 i
* >i [2][2][48][0001-0001-0010][0][0.0.0.0]/104
1.1.1.1 0 100 0 i
* >i [2][2][48][0001-0001-0010][32][10.1.1.10]/136
1.1.1.1 0 100 0 i
* >i [3][0][32][1.1.1.1]/80
1.1.1.1 0 100 0 i
Route distinguisher: 2.2.2.2:0
Total number of routes: 2
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [4][0000.0000.0000.0000.0001][32][2.2.2.2]/128
2.2.2.2 0 100 0 i
* >i [4][0000.0000.0000.0000.0002][32][2.2.2.2]/128
2.2.2.2 0 100 0 i
Route distinguisher: 2.2.2.2:1
Total number of routes: 7
Network NextHop MED LocPrf PrefVal Path/Ogn
* >i [1][0000.0000.0000.0000.0001][2]/120
2.2.2.2 0 100 0 i
* >i [1][0000.0000.0000.0000.0001][4294967295]/120
2.2.2.2 0 100 0 i
* >i [1][0000.0000.0000.0000.0002][2]/120
2.2.2.2 0 100 0 i
* >i [1][0000.0000.0000.0000.0002][4294967295]/120
2.2.2.2 0 100 0 i
* >i [2][2][48][0001-0001-0020][0][0.0.0.0]/104
2.2.2.2 0 100 0 i
* >i [2][2][48][0001-0001-0020][32][10.1.1.20]/136
2.2.2.2 0 100 0 i
* >i [3][0][32][2.2.2.2]/80
2.2.2.2 0 100 0 i
Route distinguisher: 3.3.3.3:0
Total number of routes: 1
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [4][0000.0000.0000.0000.0002][32][3.3.3.3]/128
0.0.0.0 0 100 32768 i
Route distinguisher: 3.3.3.3:1
Total number of routes: 5
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [1][0000.0000.0000.0000.0002][2]/120
0.0.0.0 0 100 32768 i
* > [1][0000.0000.0000.0000.0002][4294967295]/120
0.0.0.0 0 100 32768 i
* > [2][2][48][0001-0001-0030][0][0.0.0.0]/104
0.0.0.0 0 100 32768 i
* > [2][2][48][0001-0001-0030][32][10.1.1.30]/136
0.0.0.0 0 100 32768 i
* > [3][0][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
Route distinguisher: 3.3.3.3:2
Total number of routes: 3
Network NextHop MED LocPrf PrefVal Path/Ogn
* > [2][2][48][0002-0001-0010][0][0.0.0.0]/104
0.0.0.0 0 100 32768 i
* > [2][2][48][0002-0001-0010][32][20.1.1.10]/136
0.0.0.0 0 100 32768 i
* > [3][0][32][3.3.3.3]/80
0.0.0.0 0 100 32768 i
# 查看SwitchC上的EVPN Routing信息。可以看到存在关于VM 2的三层等价信息。
[SwitchC] display evpn routing-table vpn-instance l3vpna
Flags: E - with valid ESI A - AD ready L - Local ES exists
VPN instance:l3vpna Local L3VNI:1000
IP address Next hop Outgoing interface NibID Flags
10.1.1.10 1.1.1.1 Vsi-interface3 0x18000001 -
10.1.1.20 2.2.2.2 Vsi-interface3 0x18000000 EA
1.1.1.1 Vsi-interface3 0x18000001 EA
# 查看Switch C上的L2VPN MAC及EVPN Route MAC信息。可以看到VM 1、VM 2、VM 3和VM 4的MAC信息。其中VM 2的表项存在二层等价信息。
[SwitchC] display l2vpn mac-address
MAC Address State VSI Name Link ID/Name Aging
0001-0001-0010 EVPN vpna Tunnel0 NotAging
0001-0001-0020 EVPN vpna Tunnel0 NotAging
Tunnel1 NotAging
0001-0001-0030 Dynamic vpna 0 NotAging
0002-0001-0010 Dynamic vpnb 0 NotAging
[SwitchC] display evpn route mac
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
VSI name: vpna
MAC address Link ID/Name Flags Next hop
0001-0001-0030 0 DL -
0001-0001-0010 Tunnel0 B 1.1.1.1
0001-0001-0020 Tunnel0 B 1.1.1.1
Tunnel1 B 2.2.2.2
VSI name: vpnb
MAC address Link ID/Name Flags Next hop
0002-0001-0010 0 DL -
# 查看Switch C上的本地和远端ES信息。
[SwitchC] display evpn es local
Redundancy mode: A - All active S - Single active
VSI name : vpna
ESI Tag ID DF address Mode State
0000.0000.0000.0000.0002 2 2.2.2.2 A Up
[SwitchC]display evpn es remote
VSI name : vpna
ESI : 0000.0000.0000.0000.0001
Redundancy mode : All active
A-D per ES routes :
1.1.1.1
2.2.2.2
A-D per EVI routes :
Tag ID Peer IP
2 1.1.1.1
2 2.2.2.2
ESI : 0000.0000.0000.0000.0002
Redundancy mode : All active
Ethernet segment routes :
2.2.2.2
A-D per ES routes :
2.2.2.2
A-D per EVI routes :
Tag ID Peer IP
2 2.2.2.2
(2) 验证主机之间可以互访
仅R2612及以上版本支持本配置举例。
如所示,Switch A、Switch B、Switch C为分布式EVPN网关设备; Router D为RR,负责在交换机之间反射BGP路由。
虚拟机VM 1、VM 2和VM 3属于VXLAN 10。Server 2通过聚合链路多归属于Switch A、Switch B, Server 3通过聚合链路多归属于Switch B、Switch C。Server 1为Switch A下的单归属设备。相同VXLAN之间可以二层互通。
图2-8 EVPN支持组播配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1、VM 2和VM 3上指定网关地址为10.1.1.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchA] hardware-resource vxlan l3gw8k
# 关闭远端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 router-id
[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
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[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
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/2上配置ESI值。
[SwitchA] interface ten-gigabitethernet 1/0/2
[SwitchA-Ten-GigabitEthernet1/0/2] esi 0.0.0.0.1
# 在该接口上创建以太网服务实例2000,用来匹配VLAN 2的数据帧。
[SwitchA-Ten-GigabitEthernet1/0/2] service-instance 2000
[SwitchA-Ten-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 2
# 配置以太网服务实例2000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/2-srv2000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/2-srv2000] quit
[SwitchA-Ten-GigabitEthernet1/0/2] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance l3vpna
[SwitchA-vpn-instance-l3vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-l3vpna] address-family ipv4
[SwitchA-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchA-vpn-ipv4-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] address-family evpn
[SwitchA-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchA-vpn-evpn-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] quit
# 配置VSI虚接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance l3vpna
[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-interface3,在该接口上配置VPN实例l3vpna对应的L3VNI为1000。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] ip binding vpn-instance l3vpna
[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
# 开启设备的IGMP Snooping特性。
[SwitchA] igmp-snooping
[SwitchA-igmp-snooping] quit
# 在VSI vpna内使能IGMP Snooping proxy,并开启丢弃未知组播数据报文功能。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] igmp-snooping enable
[SwitchA-vsi-vpna] igmp-snooping proxy enable
[SwitchA-vsi-vpna] igmp-snooping drop-unknown
#开启IGMP Snooping版本和查询器
[SwitchA-vsi-vpna] igmp-snooping version 3
[SwitchA-vsi-vpna] igmp-snooping querier
[SwitchA-vsi-vpna] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchB] hardware-resource vxlan l3gw8k
# 关闭远端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 router-id
[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
# 配置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上配置ESI值。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] esi 0.0.0.0.1
# 在该接口上创建以太网服务实例2000,用来匹配VLAN 2的数据帧。
[SwitchB-Ten-GigabitEthernet1/0/1] service-instance 2000
[SwitchB-Ten-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 2
# 配置以太网服务实例2000与VSI实例vpna关联。
[SwitchB-Ten-GigabitEthernet1/0/1-srv2000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet1/0/1-srv2000] quit
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/2上配置ESI值。
[SwitchB] interface ten-gigabitethernet 1/0/2
[SwitchB-Ten-GigabitEthernet1/0/2] esi 0.0.0.0.2
# 在该接口上创建以太网服务实例3000,用来匹配VLAN 2的数据帧。
[SwitchB-Ten-GigabitEthernet1/0/2] service-instance 3000
[SwitchB-Ten-GigabitEthernet1/0/2-srv3000] encapsulation s-vid 2
# 配置以太网服务实例3000与VSI实例vpna关联。
[SwitchB-Ten-GigabitEthernet1/0/2-srv3000] xconnect vsi vpna
[SwitchB-Ten-GigabitEthernet1/0/2-srv3000] quit
[SwitchB-Ten-GigabitEthernet1/0/2] quit
# 配置L3VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpna
[SwitchB-vpn-instance-l3vpna] route-distinguisher 2:2
[SwitchB-vpn-instance-l3vpna] address-family ipv4
[SwitchB-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchB-vpn-ipv4-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] address-family evpn
[SwitchB-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchB-vpn-evpn-l3vpna] quit
[SwitchB-vpn-instance-l3vpna] quit
# 配置VSI虚接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance l3vpna
[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-interface3,在该接口上配置VPN实例l3vpna对应的L3VNI为1000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance l3vpna
[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
# 开启设备的IGMP Snooping特性。
[SwitchB] igmp-snooping
[SwitchB-igmp-snooping] quit
# 在VSI vpna内使能IGMP Snooping proxy,并开启丢弃未知组播数据报文功能。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] igmp-snooping enable
[SwitchB-vsi-vpna] igmp-snooping proxy enable
[SwitchB-vsi-vpna] igmp-snooping drop-unknown
#开启IGMP Snooping版本和查询器
[SwitchB-vsi-vpna] igmp-snooping version 3
[SwitchB-vsi-vpna] igmp-snooping querier
[SwitchB-vsi-vpna] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-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 router-id
[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
# 配置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
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上配置ESI值。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] esi 0.0.0.0.2
# 在该接口上创建以太网服务实例3000,用来匹配VLAN 2的数据帧。
[SwitchC-Ten-GigabitEthernet1/0/1] service-instance 3000
[SwitchC-Ten-GigabitEthernet1/0/1-srv3000] encapsulation s-vid 2
# 配置以太网服务实例3000与VSI实例vpna关联。
[SwitchC-Ten-GigabitEthernet1/0/1-srv3000] xconnect vsi vpna
[SwitchC-Ten-GigabitEthernet1/0/1-srv3000] quit
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchC] ip vpn-instance l3vpna
[SwitchC-vpn-instance-l3vpna] route-distinguisher 3:3
[SwitchC-vpn-instance-l3vpna] address-family ipv4
[SwitchC-vpn-ipv4-l3vpna] vpn-target 2:2
[SwitchC-vpn-ipv4-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] address-family evpn
[SwitchC-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchC-vpn-evpn-l3vpna] quit
[SwitchC-vpn-instance-l3vpna] quit
# 配置VSI虚接口VSI-interface1。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip binding vpn-instance l3vpna
[SwitchC-Vsi-interface1] ip address 10.1.1.1 255.255.255.0
[SwitchC-Vsi-interface1] mac-address 1-1-1
[SwitchC-Vsi-interface1] distributed-gateway local
[SwitchC-Vsi-interface1] local-proxy-arp enable
[SwitchC-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface3,在该接口上配置VPN实例l3vpna对应的L3VNI为1000。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] ip binding vpn-instance l3vpna
[SwitchC-Vsi-interface3] l3-vni 1000
[SwitchC-Vsi-interface3] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] gateway vsi-interface 1
[SwitchC-vsi-vpna] quit
# 开启设备的IGMP Snooping特性。
[SwitchC] igmp-snooping
[SwitchC-igmp-snooping] quit
# 在VSI vpna内使能IGMP Snooping proxy,并开启丢弃未知组播数据报文功能。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] igmp-snooping enable
[SwitchC-vsi-vpna] igmp-snooping proxy enable
[SwitchC-vsi-vpna] igmp-snooping drop-unknown
#开启IGMP Snooping版本和查询器
[SwitchC-vsi-vpna] igmp-snooping version 3
[SwitchC-vsi-vpna] igmp-snooping querier
[SwitchC-vsi-vpna] quit
(5) 配置Switch D
# 配置SwitchD与其他路由器建立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) 当配置完成后,从Server 1发送组地址为225.0.0.1的IGMP加入报文,Switch B和Switch C会收到Switch A同步的路由信息。在Switch B和Switch C上通过使用display igmp-snooping evpn-group和display evpn route smet命令可以分别查看EVPN表项和路由信息。
# 查看Switch B上EVPN路由信息。
<SwitchB> display evpn route smet
VSI name: vpna
Source address : 0.0.0.0
Group address : 225.0.0.1
Local version : -
Peers :
Nexthop Tunnel name Link ID Remote version
1.1.1.1 Tunnel0 0x5000000 v3(E)
#通过display igmp-snooping evpn-group查看EVPN表项
<SwitchB>display igmp-snooping evpn-group
Total 1 entries.
VSI vpna: Total 1 entries.
(0.0.0.0, 225.0.0.1)
Host ports (1 in total):
Tun0 (VXLAN ID 10)
(2) 多归属的Server 1向Switch A发送加入报文时,冗余备份组中的Switch B会收到EVPN 多归属的路由信息,可通过命令display evpn route igmp-js查看路由信息。通过display igmp-snooping evpn-group查看表项信息。
# 查看SwitchB上EVPN多归属的路由信息。
<SwitchB> display evpn route igmp-js
VSI name: vpna
Source address : 0.0.0.0
Group address : 225.0.0.1
Local version : v3(E)
Remote version : -
ESI : 0000.0000.0000.0000.0001
Ethernet tag ID : 2
AC : XGE1/0/1 srv2000
Peers : 2.2.2.2
EVPN数据中心互联技术通过在数据中心之间建立VXLAN-DCI(VXLAN Data Center Interconnect,VXLAN数据中心互联)隧道,实现不同数据中心之间虚拟机的互通。
如图3-1所示,数据中心的边缘设备为ED(Edge Device,边缘设备)。ED之间建立VXLAN-DCI隧道,该隧道采用VXLAN封装格式。ED与数据中心内部的VTEP建立VXLAN隧道。ED从VXLAN隧道或VXLAN-DCI隧道上接收到报文后,解除VXLAN封装,根据目的IP地址重新对报文进行VXLAN封装,并将其转发到VXLAN-DCI隧道或VXLAN隧道,从而实现跨数据中心之间的互通。
图3-1 VXLAN数据中心互联典型组网图
EVPN数据中心互联组网中,ED之间、ED与VTEP之间建立BGP EVPN邻居。ED从本数据中心的VTEP或其他ED接收到BGP EVPN路由后,将路由的下一跳、Router MAC分别修改为自身的IP地址、Router MAC地址,并将该路由发布给其他ED或本数据中心的VTEP。
ED、VTEP均学习到BGP EVPN路由后,根据路由信息转发报文的过程为:
(1) VTEP接收到VM发送的报文后,通过VXLAN隧道将报文转发给ED。
(2) ED解除VXLAN封装后,重新对报文进行VXLAN封装,通过VXLAN-DCI隧道将报文发送给远端ED。
(3) 远端ED解除VXLAN封装后,重新封装报文,通过VXLAN隧道将报文转发给VTEP。
(4) VTEP解除VXLAN封装后,将报文发送给目的VM。
仅R2612及以上版本支持本功能。
如图3-2所示,在EVPN数据中心互联场景中,为了提高ED的可靠性,避免单点故障,在数据中心的边缘可以部署两台ED设备与其他数据中心互联。这两台ED设备使用相同的虚拟IP地址,虚拟成一台ED设备,采用虚拟IP地址与VTEP、远端ED建立隧道,以实现冗余保护和负载分担。
图3-2 EVPN数据中心互联支持双ED组网图
两台ED使用不同的地址作为BGP对等体地址,分别与VTEP、远端ED建立BGP EVPN邻居。利用Underlay网络的等价路由机制,VTEP、远端ED可以将发往ED虚拟IP地址的流量同时发送到两台ED,从而实现冗余备份和负载分担。
在连接不同数据中心ED的DCI网络侧,两台ED均通过Underlay网络与对端数据中心ED建立连接。当一台ED的DCI侧Underlay网络出现故障时,数据中心内部网络无法感知该故障,仍通过该ED转发数据中心间的流量。通过配置Monitor Link组,将DCI侧的物理接口与ED设备的LoopBack接口(用于建立BGP EVPN邻居的接口)关联,可以确保其中一台ED设备的DCI侧Underlay网络断开时,将该ED的LoopBack接口链路状态置为down,使流量通过另外一台ED设备转发。Monitor Link的详细介绍,请参见“可靠性配置指导”中的“Monitor Link”。
为了实现链路备份,数据中心网络内部中,建议在Spine层部署多台RR;在DCI网络侧,建议ED通过双链路接入Underlay网络。
S6800系列交换机中,产品代码为LS-6800-32Q、LS-6800-2C、LS-6800-4C、LS-6800-54QF或LS-6800-54QT的机型不支持本功能。
EVPN数据中心互联配置均在ED设备上执行。
表3-1 EVPN数据中心互联配置任务简介
配置任务 |
说明 |
详细配置 |
开启DCI功能 |
必选 |
|
配置ED修改路由的下一跳和Router MAC |
必选 |
|
配置VXLAN映射 |
可选 |
|
配置EVPN数据中心互联支持双ED |
可选 |
配置EVPN数据中心互联前,需要先完成各个数据中心的EVPN部署,详细配置方法请参见“2 配置EVPN”。
EVPN数据中心互联组网中,ED间互连的三层以太网接口或三层聚合接口上必须开启DCI功能,以便在ED之间建立VXLAN-DCI隧道。
ED根据EVPN路由自动建立隧道时,如果路由下一跳对应的出接口上开启了DCI功能,则建立VXLAN-DCI隧道;否则,建立VXLAN隧道。
表3-2 开启DCI功能
操作 |
命令 |
说明 |
|
进入系统视图 |
system-view |
- |
|
进入接口视图 |
interface interface-type interface-number |
只能在主接口上开启DCI功能,子接口继承主接口上的配置 |
|
开启DCI功能 |
dci enable |
缺省情况下,DCI功能处于关闭状态 |
|
表3-3 配置ED修改路由的下一跳和Router MAC
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置全局Router ID |
router id router-id |
缺省情况下,未配置全局Router ID |
启动BGP实例,并进入BGP实例视图 |
bgp as-number [ instance instance-name ] [ multi-session-thread ] |
缺省情况下,系统没有运行BGP |
将远端VTEP和ED配置为对等体 |
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路由 |
配置向对等体/对等体组发布路由时,将下一跳属性修改为自身的地址 |
peer { group-name | ipv4-address [ mask-length ] } next-hop-local |
缺省情况下,向EBGP对等体/对等体组发布的所有路由,都将下一跳属性修改为自身的地址;向IBGP对等体/对等体组发布的EBGP路由,不修改下一跳属性 本配置中指定的对等体应为本数据中心的VTEP |
配置向对等体/对等体组发布路由、将从对等体/对等体组接收到的路由发布给其他对等体时,将路由的Router MAC修改为自身的Router MAC地址 |
peer { group-name | ipv4-address [ mask-length ] } router-mac-local |
缺省情况下,不会修改路由的Router MAC 本配置中指定的对等体应为远端ED |
在不同的数据中心中,同一租户的相同子网可能使用不同的VXLAN。这些数据中心互联时,若要保证同一租户相同子网之间的流量进行二层转发,则ED设备上需要执行本命令,在不同的VXLAN之间建立映射关系。
指定映射的远端VXLAN后,ED接收到本数据中心内VTEP发送的MAC/IP发布路由时,将其学习到本地VXLAN中,并在向其他ED通告该MAC/IP发布路由前,将路由中携带的VXLAN替换为映射的远端VXLAN。从其他ED接收到映射的远端VXLAN内的MAC/IP发布路由时,本地ED将该路由学习到本地VXLAN中。
可以通过以下方式建立映射关系:
· 将本地VXLAN直接映射为另一个数据中心中使用的VXLAN。采用此方式时,只需在一个数据中心的ED上指定映射的远端VXLAN。例如,数据中心1内使用VXLAN 10、数据中心2内使用VXLAN 20时,只需在数据中心1的ED上配置VXLAN 10映射为远端VXLAN 20。
· 将不同数据中心ED上的本地VXLAN映射为相同的VXLAN(称为中间VXLAN)。采用此方式时,需要在所有数据中心的ED上都指定映射的远端VXLAN为中间VXLAN。例如,数据中心1内使用VXLAN 10、数据中心2内使用VXLAN 20、数据中心3内使用VXLAN 30时,需要在三个数据中心的ED上均配置映射的远端VXLAN为中间VXLAN(如VXLAN 500)。当多个数据中心互联,且不同数据中心使用的VXLAN各不相同时,需要使用此方式。
本地设备上需要创建映射的远端VXLAN,为其配置EVPN实例,并为该EVPN实例配置RD和Route Target属性。
在使用VXLAN映射功能时,不要为EVPN实例和VPN实例、EVPN实例和公网实例配置相同的Export target,否则可能导致三层转发不通。
表3-4 配置VXLAN映射
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VSI视图 |
vsi vsi-name |
- |
进入EVPN实例视图 |
evpn encapsulation vxlan |
- |
指定本地VXLAN映射的远端VXLAN |
mapping vni vxlan-id |
缺省情况下,未指定本地VXLAN映射的远端VXLAN |
仅R2612及以上版本支持本功能。
在数据中心网络的边缘部署两台ED,并为其配置相同的虚拟IP地址后,这两台ED将虚拟成为一台ED设备,从而避免ED单点故障对网络造成影响。
当数据中心网络边缘仅有一台ED设备时,请不要配置ED的虚拟IP地址。
两台ED设备上配置的虚拟IP地址必须相同,该虚拟IP地址应为ED设备上某个LoopBack接口的IP地址,且该地址不能与BGP对等体的地址相同。
两台ED设备被虚拟成一台设备以后,ED设备不能在本地接入虚拟机,只能作为数据中心互联的边缘设备使用,且不能在单台ED设备上引入外部路由。
本特性与EVPN支持分布式聚合特性互斥,即不能同时配置evpn edge group和evpn drni group命令。
表3-5 配置EVPN数据中心互联支持双ED
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
配置ED设备的虚拟IP地址 |
evpn edge group group-ip |
缺省情况下,未指定ED设备的虚拟IP地址 |
Switch A和Switch B为数据中心1的VTEP,Switch C和Switch D为数据中心2的VTEP,Switch B和Switch C为两个数据中心的ED。数据中心1和数据中心2都使用VXLAN 10处理同一业务的流量。通过EVPN数据中心互连实现数据中心1和数据中心2的二层互通。
(1) 配置IP地址和单播路由协议
# 请按照图3-3配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
# 在VSI实例vpna下创建VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置EVPN实例的RD和RT。RT需要手工配置。
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target 123:456
[SwitchA-vsi-vpna-evpn-vxlan] quit
[SwitchA-vsi-vpna] quit
# 配置BGP发布EVPN路由。
[SwitchA] bgp 100
[SwitchA-bgp-default] peer 2.2.2.2 as-number 100
[SwitchA-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 2.2.2.2 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 100的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 100
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
# 在与Switch C相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] dci enable
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 在VSI实例vpna下创建VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置EVPN实例的RD和RT。RT需要手工配置。
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target 123:456
[SwitchB-vsi-vpna-evpn-vxlan] quit
[SwitchB-vsi-vpna] quit
# 配置BGP发布EVPN路由,指定向Switch A发布路由时将路由下一跳修改为自身的地址,向Switch C发布路由、从Switch C接收路由并发布时修改Router MAC。
[SwitchB] bgp 100
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] peer 3.3.3.3 ebgp-max-hop 64
[SwitchB-bgp-default] peer 1.1.1.1 as-number 100
[SwitchB-bgp-default] peer 1.1.1.1 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] peer 3.3.3.3 router-mac-local
[SwitchB-bgp-default-evpn] peer 1.1.1.1 enable
[SwitchB-bgp-default-evpn] peer 1.1.1.1 next-hop-local
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
# 在与Switch B相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] dci enable
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 在VSI实例vpna下创建VXLAN 10。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置EVPN实例的RD和RT。RT需要手工配置。
[SwitchC-vsi-vpna] evpn encapsulation vxlan
[SwitchC-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpna-evpn-vxlan] vpn-target 123:456
[SwitchC-vsi-vpna-evpn-vxlan] quit
[SwitchC-vsi-vpna] quit
# 配置BGP发布EVPN路由,指定向Switch D发布路由时将路由下一跳修改为自身的地址,向Switch B发布路由、从Switch B接收路由并发布时时修改Router MAC。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 2.2.2.2 as-number 100
[SwitchC-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchC-bgp-default] peer 2.2.2.2 ebgp-max-hop 64
[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 2.2.2.2 enable
[SwitchC-bgp-default-evpn] peer 2.2.2.2 router-mac-local
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] peer 4.4.4.4 next-hop-local
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
(5) 配置Switch D
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchD] vxlan tunnel mac-learning disable
# 在VSI实例vpna下创建VXLAN 10。
[SwitchD] vsi vpna
[SwitchD-vsi-vpna] vxlan 10
[SwitchD-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置EVPN实例的RD和RT。RT需要手工配置。
[SwitchD-vsi-vpna] evpn encapsulation vxlan
[SwitchD-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpna-evpn-vxlan] vpn-target 123:456
[SwitchD-vsi-vpna-evpn-vxlan] quit
[SwitchD-vsi-vpna] quit
# 配置BGP发布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface Loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 200的数据帧。
[SwitchD] interface ten-gigabitethernet 1/0/1
[SwitchD-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchD-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 200
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchD-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchD-Ten-GigabitEthernet1/0/1-srv1000] quit
(1) 验证ED(下文以Switch B为例,Switch C验证方法与此类似)
# 查看EVPN通过BGP自动发现的邻居信息,可以看到EVPN通过Inclusive Multicast Ethernet Tag Route发现邻居Switch A和Switch C,并分别与其建立VXLAN隧道、VXLAN-DCI隧道。
[SwitchB] display evpn auto-discovery imet
Total number of automatically discovered peers: 2
VSI name: vpna
RD PE_address Tunnel_address Tunnel mode VXLAN ID
1:10 1.1.1.1 1.1.1.1 VXLAN 10
1:10 3.3.3.3 3.3.3.3 VXLAN-DCI 10
# 查看Switch B上的Tunnel接口信息,可以看到VXLAN模式和VXLAN-DCI模式的Tunnel接口处于up状态。
[SwitchB] display interface tunnel
Tunnel0
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 2.2.2.2, destination 1.1.1.1
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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN-DCI/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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI信息,可以看到VSI内创建的VXLAN,以及关联的VXLAN隧道、VXLAN-DCI隧道等信息。
[SwitchB] display l2vpn vsi name vpna verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
Tunnel1 0x5000001 UP Auto Disabled
# 查看EVPN的MAC地址表项,可以看到已经学习到虚拟机的MAC地址信息。
[SwitchB] display evpn route mac
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
VSI name: vpna
MAC address Link ID/Name Flags Next hop
0001-0001-0011 Tunnel0 B 1.1.1.1
0001-0001-0033 Tunnel1 B 3.3.3.3
(2) 验证主机
虚拟机VM 1、VM 2之间可以互访。
Switch A和Switch B为数据中心1的VTEP,Switch C和Switch D为数据中心2的VTEP,Switch B和Switch C为两个数据中心的ED。数据中心1和数据中心2分别使用VXLAN 10、VXLAN 30处理同一业务的流量。通过EVPN数据中心互连实现数据中心1和数据中心2的二层互通。
(1) 配置IP地址和单播路由协议
# 请按照图3-4配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
# 在VSI实例vpna下创建VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[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
[SwitchA-vsi-vpna] quit
# 配置BGP发布EVPN路由。
[SwitchA] bgp 100
[SwitchA-bgp-default] peer 2.2.2.2 as-number 100
[SwitchA-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 2.2.2.2 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 100的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 100
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
# 在与Switch C相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] dci enable
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 在VSI实例vpna下创建VXLAN 10。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
# 配置本端VXLAN 10映射为远端VXLAN 500。在对端ED上需要将VXLAN 500映射为对端ED上的VXLAN 30。
[SwitchB-vsi-vpna-evpn-vxlan] mapping vni 500
[SwitchB-vsi-vpna-evpn-vxlan] quit
[SwitchB-vsi-vpna] quit
# 在VSI实例vpnb下创建VXLAN 500,该VXLAN ID用于二层转发时替换本地的VXLAN。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] vxlan 500
[SwitchB-vsi-vpnb-vxlan-500] quit
# 在VSI实例vpnb下创建EVPN实例,并配置EVPN实例的RD和RT。RT需要手工配置。
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target 123:456
[SwitchB-vsi-vpnb-evpn-vxlan] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP发布EVPN路由,指定向Switch A发布路由时将路由下一跳修改为自身的地址,向Switch C发布路由、从Switch C接收路由并发布时修改Router MAC。
[SwitchB] bgp 100
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] peer 3.3.3.3 ebgp-max-hop 64
[SwitchB-bgp-default] peer 1.1.1.1 as-number 100
[SwitchB-bgp-default] peer 1.1.1.1 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] peer 3.3.3.3 router-mac-local
[SwitchB-bgp-default-evpn] peer 1.1.1.1 enable
[SwitchB-bgp-default-evpn] peer 1.1.1.1 next-hop-local
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
# 在与Switch B相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] dci enable
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 在VSI实例vpna下创建VXLAN 30。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] vxlan 30
[SwitchC-vsi-vpna-vxlan-30] quit
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchC-vsi-vpna] evpn encapsulation vxlan
[SwitchC-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpna-evpn-vxlan] vpn-target auto
# 配置本端VXLAN 30映射为远端VXLAN 500。在对端ED上需要将VXLAN 500映射为对端ED上的VXLAN 10。
[SwitchC-vsi-vpna-evpn-vxlan] mapping vni 500
[SwitchC-vsi-vpna-evpn-vxlan] quit
[SwitchC-vsi-vpna] quit
# 在VSI实例vpnb下创建VXLAN 500,该VXLAN ID用于二层转发时替换本地的VXLAN。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] vxlan 500
[SwitchC-vsi-vpnb-vxlan-500] quit
# 在VSI实例vpnb下创建EVPN实例,并配置EVPN实例的RD和RT。RT需要手工配置。
[SwitchC-vsi-vpnb] evpn encapsulation vxlan
[SwitchC-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpnb-evpn-vxlan] vpn-target 123:456
[SwitchC-vsi-vpnb-evpn-vxlan] quit
[SwitchC-vsi-vpnb] quit
# 配置BGP发布EVPN路由,指定向Switch D发布路由时将路由下一跳修改为自身的地址,向Switch B发布路由、从Switch B接收路由并发布时修改Router MAC。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 2.2.2.2 as-number 100
[SwitchC-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchC-bgp-default] peer 2.2.2.2 ebgp-max-hop 64
[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 2.2.2.2 enable
[SwitchC-bgp-default-evpn] peer 2.2.2.2 router-mac-local
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] peer 4.4.4.4 next-hop-local
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
(5) 配置Switch D
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchD] vxlan tunnel mac-learning disable
# 在VSI实例vpna下创建VXLAN 30。
[SwitchD] vsi vpna
[SwitchD-vsi-vpna] vxlan 30
[SwitchD-vsi-vpna-vxlan-30] quit
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchD-vsi-vpna] evpn encapsulation vxlan
[SwitchD-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchD-vsi-vpna-evpn-vxlan] quit
[SwitchD-vsi-vpna] quit
# 配置BGP发布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface Loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 200的数据帧。
[SwitchD] interface ten-gigabitethernet 1/0/1
[SwitchD-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchD-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 200
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchD-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchD-Ten-GigabitEthernet1/0/1-srv1000] quit
(1) 验证ED(下文以Switch B为例,Switch C验证方法与此类似)
# 查看EVPN通过BGP自动发现的邻居信息,可以看到EVPN通过Inclusive Multicast Ethernet Tag Route发现邻居Switch A和Switch C,并分别与其建立VXLAN隧道、VXLAN-DCI隧道。
[SwitchB] display evpn auto-discovery imet
Total number of automatically discovered peers: 2
VSI name: vpna
RD PE_address Tunnel_address Tunnel mode VXLAN ID
1:10 1.1.1.1 1.1.1.1 VXLAN 10
1:500 3.3.3.3 3.3.3.3 VXLAN-DCI 500
# 查看Switch B上的Tunnel接口信息,可以看到VXLAN模式和VXLAN-DCI模式的Tunnel接口处于up状态。
[SwitchB] display interface tunnel
Tunnel0
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 2.2.2.2, destination 1.1.1.1
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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN-DCI/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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch B上的VSI信息,可以看到VSI内创建的VXLAN,以及关联的VXLAN隧道、VXLAN-DCI隧道等信息。vpnb下没有关联隧道。
[SwitchB] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : Unlimited
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
Tunnel1 0x5000001 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : Unlimited
Multicast Restrain : Unlimited
Unknown Unicast Restrain: Unlimited
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 500
# 查看EVPN的MAC地址表项,可以看到已经学习到虚拟机的MAC地址信息,且从对端数据中心学到的MAC地址表项带有M标志。
[SwitchB] display evpn route mac
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
VSI name: vpna
MAC address Link ID/Name Flags Next hop
0001-0001-0011 Tunnel0 B 1.1.1.1
0001-0001-0033 Tunnel1 BM 3.3.3.3
(2) 验证主机
虚拟机VM 1、VM 2之间可以互访。
Switch A为数据中心1的分布式网关,Switch D为数据中心2的分布式网关,Switch B和Switch C为两个数据中心的ED。通过EVPN数据中心互连实现数据中心1和数据中心2的三层互通。
(1) 配置IP地址和单播路由协议
# 在VM 1上指定网关地址为10.1.1.1;在VM 2上指定网关地址为10.1.2.1。(具体配置过程略)
# 请按照图3-5配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchA] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[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
[SwitchA-vsi-vpna] quit
# 配置BGP发布EVPN路由。
[SwitchA] bgp 100
[SwitchA-bgp-default] peer 2.2.2.2 as-number 100
[SwitchA-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 2.2.2.2 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 100的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 100
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance vpn1
[SwitchA-vpn-instance-vpn1] route-distinguisher 1:1
[SwitchA-vpn-instance-vpn1] address-family ipv4
[SwitchA-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchA-vpn-ipv4-vpn1] quit
[SwitchA-vpn-instance-vpn1] address-family evpn
[SwitchA-vpn-evpn-vpn1] vpn-target 1:1
[SwitchA-vpn-evpn-vpn1] quit
[SwitchA-vpn-instance-vpn1] quit
# 配置VSI虚接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance vpn1
[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] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchA-Vsi-interface2] l3-vni 1000
[SwitchA-Vsi-interface2] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchB] hardware-resource vxlan border24k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在与Switch C相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] dci enable
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 配置BGP发布EVPN路由,指定向Switch A发布路由时将路由下一跳修改为自身的地址,向Switch C发布路由、从Switch C接收路由并发布时修改Router MAC。
[SwitchB] bgp 100
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] peer 3.3.3.3 ebgp-max-hop 64
[SwitchB-bgp-default] peer 1.1.1.1 as-number 100
[SwitchB-bgp-default] peer 1.1.1.1 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] peer 3.3.3.3 router-mac-local
[SwitchB-bgp-default-evpn] peer 1.1.1.1 enable
[SwitchB-bgp-default-evpn] peer 1.1.1.1 next-hop-local
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 配置L3VNI的RD和RT。
[SwitchB] ip vpn-instance vpn1
[SwitchB-vpn-instance-vpn1] route-distinguisher 1:2
[SwitchB-vpn-instance-vpn1] address-family ipv4
[SwitchB-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchB-vpn-ipv4-vpn1] quit
[SwitchB-vpn-instance-vpn1] address-family evpn
[SwitchB-vpn-evpn-vpn1] vpn-target 1:1
[SwitchB-vpn-evpn-vpn1] quit
[SwitchB-vpn-instance-vpn1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchB-Vsi-interface2] l3-vni 1000
[SwitchB-Vsi-interface2] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan border24k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在与Switch B相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] dci enable
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 配置BGP发布EVPN路由,指定向Switch D发布路由时将路由下一跳修改为自身的地址,向Switch B发布路由、从Switch B接收路由并发布时修改Router MAC。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 2.2.2.2 as-number 100
[SwitchC-bgp-default] peer 2.2.2.2 connect-interface Loopback 0
[SwitchC-bgp-default] peer 2.2.2.2 ebgp-max-hop 64
[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 2.2.2.2 enable
[SwitchC-bgp-default-evpn] peer 2.2.2.2 router-mac-local
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] peer 4.4.4.4 next-hop-local
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3VNI的RD和RT。
[SwitchC] ip vpn-instance vpn1
[SwitchC-vpn-instance-vpn1] route-distinguisher 1:3
[SwitchC-vpn-instance-vpn1] address-family ipv4
[SwitchC-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchC-vpn-ipv4-vpn1] quit
[SwitchC-vpn-instance-vpn1] address-family evpn
[SwitchC-vpn-evpn-vpn1] vpn-target 1:1
[SwitchC-vpn-evpn-vpn1] quit
[SwitchC-vpn-instance-vpn1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchC-Vsi-interface2] l3-vni 1000
[SwitchC-Vsi-interface2] quit
(5) 配置Switch D
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchD] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchD] vxlan tunnel mac-learning disable
[SwitchD] vxlan tunnel arp-learning disable
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] evpn encapsulation vxlan
[SwitchD-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchD-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface Loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/2上创建以太网服务实例3000,该实例用来匹配VLAN 3的数据帧。
[SwitchD] interface ten-gigabitethernet 1/0/2
[SwitchD-Ten-GigabitEthernet1/0/2] service-instance 3000
[SwitchD-Ten-GigabitEthernet1/0/2-srv3000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchD-Ten-GigabitEthernet1/0/2-srv3000] xconnect vsi vpnb
[SwitchD-Ten-GigabitEthernet1/0/2-srv3000] quit
# 配置L3VNI的RD和RT。
[SwitchD] ip vpn-instance vpn1
[SwitchD-vpn-instance-vpn1] route-distinguisher 1:4
[SwitchD-vpn-instance-vpn1] address-family ipv4
[SwitchD-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchD-vpn-ipv4-vpn1] quit
[SwitchD-vpn-instance-vpn1] address-family evpn
[SwitchD-vpn-evpn-vpn1] vpn-target 1:1
[SwitchD-vpn-evpn-vpn1] quit
[SwitchD-vpn-instance-vpn1] quit
# 配置VSI虚接口VSI-interface1。
[SwitchD] interface vsi-interface 1
[SwitchD-Vsi-interface1] ip binding vpn-instance vpn1
[SwitchD-Vsi-interface1] ip address 10.1.2.1 255.255.255.0
[SwitchD-Vsi-interface1] mac-address 1-2-1
[SwitchD-Vsi-interface1] distributed-gateway local
[SwitchD-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchD] interface vsi-interface 2
[SwitchD-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchD-Vsi-interface2] l3-vni 1000
[SwitchD-Vsi-interface2] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] gateway vsi-interface 1
[SwitchD-vsi-vpnb] quit
(1) 验证ED(下文以Switch B为例,Switch C验证方法与此类似)
# 查看EVPN通过BGP自动发现的邻居信息,可以看到EVPN通过MAC/IP发布路由或IP前缀路由发现邻居Switch A和Switch C,并分别与其建立VXLAN隧道、VXLAN-DCI隧道。
[SwitchB] display evpn auto-discovery macip-prefix
Destination IP Source IP L3VNI Tunnel mode OutInterface
1.1.1.1 2.2.2.2 1000 VXLAN Vsi-interface2
3.3.3.3 2.2.2.2 1000 VXLAN-DCI Vsi-interface2
# 查看Switch B上的Tunnel接口信息,可以看到VXLAN模式和VXLAN-DCI模式的Tunnel接口处于up状态。
[SwitchB] display interface tunnel
Tunnel0
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 2.2.2.2, destination 1.1.1.1
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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN-DCI/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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看VPN实例vpn1的ARP表项和IP路由表项,可以看到已经学习到虚拟机的ARP和IP路由信息。
[SwitchB] display arp vpn-instance vpn1
Type: S Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address VLAN/VSI Interface/Link ID Aging Type
1.1.1.1 0031-1900-0000 0 Tunnel0 -- R
3.3.3.3 0031-3900-0000 0 Tunnel1 -- R
[SwitchB] display ip routing-table vpn-instance vpn1
Destinations : 4 Routes : 4
Destination/Mask Proto Pre Cost NextHop Interface
10.1.1.0/24 BGP 255 0 1.1.1.1 Vsi2
10.1.1.11/32 BGP 255 0 1.1.1.1 Vsi2
10.1.2.0/24 BGP 255 0 3.3.3.3 Vsi2
10.1.2.22/32 BGP 255 0 3.3.3.3 Vsi2
(2) 验证主机
虚拟机VM 1、VM 2之间可以互访。
Switch A为数据中心1的分布式网关,Switch D为数据中心2的分布式网关,Switch B和Switch C为两个数据中心的ED。通过EVPN数据中心互连实现数据中心1和数据中心2的三层互通。
图3-6 数据中心三层互联IPv6配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1上指定网关地址为11::1;在VM 2上指定网关地址为12::1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchA] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ND自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel nd-learning disable
# 在VSI实例vpna下创建VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[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
[SwitchA-vsi-vpna] quit
# 配置BGP发布EVPN路由。
[SwitchA] bgp 100
[SwitchA-bgp-default] peer 2.2.2.2 as-number 100
[SwitchA-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 2.2.2.2 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 100的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 100
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance vpn1
[SwitchA-vpn-instance-vpn1] route-distinguisher 1:1
[SwitchA-vpn-instance-vpn1] address-family ipv6
[SwitchA-vpn-ipv6-vpn1] vpn-target 2:2
[SwitchA-vpn-ipv6-vpn1] quit
[SwitchA-vpn-instance-vpn1] address-family evpn
[SwitchA-vpn-evpn-vpn1] vpn-target 1:1
[SwitchA-vpn-evpn-vpn1] quit
[SwitchA-vpn-instance-vpn1] quit
# 配置VSI虚接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance vpn1
[SwitchA-Vsi-interface1] ipv6 address 11::1 64
[SwitchA-Vsi-interface1] mac-address 1-1-1
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchA-Vsi-interface2] ipv6 address auto link-local
[SwitchA-Vsi-interface2] l3-vni 1000
[SwitchA-Vsi-interface2] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
(3) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchB] hardware-resource vxlan border8k
# 关闭远端MAC地址和远端ND自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel nd-learning disable
# 在与Switch C相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道。
[SwitchB] interface ten-gigabitethernet 1/0/1
[SwitchB-Ten-GigabitEthernet1/0/1] dci enable
[SwitchB-Ten-GigabitEthernet1/0/1] quit
# 配置BGP发布EVPN路由,指定向Switch A发布路由时将路由下一跳修改为自身的地址,向Switch C发布路由、从Switch C接收路由并发布时修改Router MAC。
[SwitchB] bgp 100
[SwitchB-bgp-default] peer 3.3.3.3 as-number 200
[SwitchB-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchB-bgp-default] peer 3.3.3.3 ebgp-max-hop 64
[SwitchB-bgp-default] peer 1.1.1.1 as-number 100
[SwitchB-bgp-default] peer 1.1.1.1 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchB-bgp-default-evpn] peer 3.3.3.3 router-mac-local
[SwitchB-bgp-default-evpn] peer 1.1.1.1 enable
[SwitchB-bgp-default-evpn] peer 1.1.1.1 next-hop-local
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 配置L3VNI的RD和RT。
[SwitchB] ip vpn-instance vpn1
[SwitchB-vpn-instance-vpn1] route-distinguisher 1:2
[SwitchB-vpn-instance-vpn1] address-family ipv6
[SwitchB-vpn-ipv6-vpn1] vpn-target 2:2
[SwitchB-vpn-ipv6-vpn1] quit
[SwitchB-vpn-instance-vpn1] address-family evpn
[SwitchB-vpn-evpn-vpn1] vpn-target 1:1
[SwitchB-vpn-evpn-vpn1] quit
[SwitchB-vpn-instance-vpn1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchB-Vsi-interface2] ipv6 address auto link-local
[SwitchB-Vsi-interface2] l3-vni 1000
[SwitchB-Vsi-interface2] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan border8k
# 关闭远端MAC地址和远端ND自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel nd-learning disable
# 在与Switch B相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] dci enable
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 配置BGP发布EVPN路由,指定向Switch D发布路由时将路由下一跳修改为自身的地址,向Switch B发布路由、从Switch B接收路由并发布时修改Router MAC。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 2.2.2.2 as-number 100
[SwitchC-bgp-default] peer 2.2.2.2 connect-interface Loopback 0
[SwitchC-bgp-default] peer 2.2.2.2 ebgp-max-hop 64
[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 2.2.2.2 enable
[SwitchC-bgp-default-evpn] peer 2.2.2.2 router-mac-local
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] peer 4.4.4.4 next-hop-local
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3VNI的RD和RT。
[SwitchC] ip vpn-instance vpn1
[SwitchC-vpn-instance-vpn1] route-distinguisher 1:3
[SwitchC-vpn-instance-vpn1] address-family ipv6
[SwitchC-vpn-ipv6-vpn1] vpn-target 2:2
[SwitchC-vpn-ipv6-vpn1] quit
[SwitchC-vpn-instance-vpn1] address-family evpn
[SwitchC-vpn-evpn-vpn1] vpn-target 1:1
[SwitchC-vpn-evpn-vpn1] quit
[SwitchC-vpn-instance-vpn1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchC-Vsi-interface2] ipv6 address auto link-local
[SwitchC-Vsi-interface2] l3-vni 1000
[SwitchC-Vsi-interface2] quit
(5) 配置Switch D
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchD] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ND自动学习功能。
[SwitchD] vxlan tunnel mac-learning disable
[SwitchD] vxlan tunnel nd-learning disable
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] evpn encapsulation vxlan
[SwitchD-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchD-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchD-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchD-vsi-vpnb] vxlan 20
[SwitchD-vsi-vpnb-vxlan-20] quit
[SwitchD-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchD] bgp 200
[SwitchD-bgp-default] peer 3.3.3.3 as-number 200
[SwitchD-bgp-default] peer 3.3.3.3 connect-interface Loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例3000,该实例用来匹配VLAN 3的数据帧。
[SwitchD] interface ten-gigabitethernet 1/0/1
[SwitchD-Ten-GigabitEthernet1/0/1] service-instance 3000
[SwitchD-Ten-GigabitEthernet1/0/1-srv3000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchD-Ten-GigabitEthernet1/0/1-srv3000] xconnect vsi vpnb
[SwitchD-Ten-GigabitEthernet1/0/1-srv3000] quit
# 配置L3VNI的RD和RT。
[SwitchD] ip vpn-instance vpn1
[SwitchD-vpn-instance-vpn1] route-distinguisher 1:4
[SwitchD-vpn-instance-vpn1] address-family ipv6
[SwitchD-vpn-ipv6-vpn1] vpn-target 2:2
[SwitchD-vpn-ipv6-vpn1] quit
[SwitchD-vpn-instance-vpn1] address-family evpn
[SwitchD-vpn-evpn-vpn1] vpn-target 1:1
[SwitchD-vpn-evpn-vpn1] quit
[SwitchD-vpn-instance-vpn1] quit
# 配置VSI虚接口VSI-interface1。
[SwitchD] interface vsi-interface 1
[SwitchD-Vsi-interface1] ip binding vpn-instance vpn1
[SwitchD-Vsi-interface1] ipv6 address 12::1 64
[SwitchD-Vsi-interface1] mac-address 1-2-1
[SwitchD-Vsi-interface1] distributed-gateway local
[SwitchD-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchD] interface vsi-interface 2
[SwitchD-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchD-Vsi-interface2] ipv6 address auto link-local,
[SwitchD-Vsi-interface2] l3-vni 1000
[SwitchD-Vsi-interface2] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联。
[SwitchD] vsi vpnb
[SwitchD-vsi-vpnb] gateway vsi-interface 1
[SwitchD-vsi-vpnb] quit
(1) 验证ED(下文以Switch B为例,Switch C验证方法与此类似)
# 查看EVPN通过BGP自动发现的邻居信息,可以看到EVPN通过MAC/IP发布路由或IP前缀路由发现邻居Switch A和Switch C,并分别与其建立VXLAN隧道、VXLAN-DCI隧道。
[SwitchB] display evpn auto-discovery macip-prefix
Destination IP Source IP L3VNI Tunnel mode OutInterface
1.1.1.1 2.2.2.2 1000 VXLAN Vsi-interface2
3.3.3.3 2.2.2.2 1000 VXLAN-DCI Vsi-interface2
# 查看Switch B上的Tunnel接口信息,可以看到VXLAN模式和VXLAN-DCI模式的Tunnel接口处于up状态。
[SwitchB] display interface tunnel
Tunnel0
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 2.2.2.2, destination 1.1.1.1
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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
Tunnel1
Current state: UP
Line protocol state: UP
Description: Tunnel2 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 2.2.2.2, destination 3.3.3.3
Tunnel protocol/transport UDP_VXLAN-DCI/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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看VPN实例vpn1的IPv6路由表项,可以看到已经学习到虚拟机的IP路由信息。
[SwitchB] display ipv6 routing-table vpn-instance vpn1
Destinations : 4 Routes : 4
Destination: ::1/128 Protocol : Direct
NextHop : ::1 Preference: 0
Interface : InLoop0 Cost : 0
Destination: 12::1/128 Protocol : BGP4+
NextHop : ::FFFF:3.3.3.3 Preference: 255
Interface : Vsi2 Cost : 0
Destination: 11::1/128 Protocol : BGP4+
NextHop : ::FFFF:1.1.1.1 Preference: 255
Interface : Vsi2 Cost : 0
Destination: FE80::/10 Protocol : Direct
NextHop : :: Preference: 0
Interface : InLoop0 Cost : 0
(2) 验证主机
虚拟机VM 1、VM 2之间可以互访。
仅R2612及以上版本支持本配置举例。
Switch A为数据中心1的分布式网关,Switch G为数据中心2的分布式网关,Switch B作为路由反射器,Switch C和Switch D为数据中心1的双ED设备,Switch F为数据中心2的ED设备,Switch E为连接两个数据中心ED设备的DCI网络设备。通过EVPN数据中心互连实现数据中心1和数据中心2的三层互通。
图3-7 数据中心三层互联支持双ED配置组网图
(1) 配置IP地址和单播路由协议
# 在VM 1上指定网关地址为100.1.1.1;在VM 2上指定网关地址为100.1.2.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;配置OSPF协议,确保各交换机之间路由可达。(具体配置过程略)
(2) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchA] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建VXLAN 10。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[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
[SwitchA-vsi-vpna] quit
# 配置BGP发布EVPN路由。
[SwitchA] bgp 100
[SwitchA-bgp-default] peer 2.2.2.2 as-number 100
[SwitchA-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 2.2.2.2 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 100的数据帧。
[SwitchA] interface ten-gigabitethernet 1/0/1
[SwitchA-Ten-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 100
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-Ten-GigabitEthernet1/0/1-srv1000] quit
[SwitchA-Ten-GigabitEthernet1/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance vpn1
[SwitchA-vpn-instance-vpn1] route-distinguisher 1:1
[SwitchA-vpn-instance-vpn1] address-family ipv4
[SwitchA-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchA-vpn-ipv4-vpn1] quit
[SwitchA-vpn-instance-vpn1] address-family evpn
[SwitchA-vpn-evpn-vpn1] vpn-target 1:1
[SwitchA-vpn-evpn-vpn1] quit
[SwitchA-vpn-instance-vpn1] quit
# 配置VSI虚接口VSI-interface1。
[SwitchA] interface vsi-interface 1
[SwitchA-Vsi-interface1] ip binding vpn-instance vpn1
[SwitchA-Vsi-interface1] ip address 100.1.1.1 255.255.255.0
[SwitchA-Vsi-interface1] mac-address 1-1-1
[SwitchA-Vsi-interface1] distributed-gateway local
[SwitchA-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchA-Vsi-interface2] l3-vni 1000
[SwitchA-Vsi-interface2] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
(3) 配置Switch B
# 配置BGP路由反射。
<SwitchB> system-view
[SwitchB] bgp 100
[SwitchB-bgp-default] group evpn internal
[SwitchB-bgp-default] peer evpn connect-interface loopback 0
[SwitchB-bgp-default] peer 1.1.1.1 group evpn
[SwitchB-bgp-default] peer 3.3.3.3 group evpn
[SwitchB-bgp-default] peer 4.4.4.4 group evpn
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] undo policy vpn-target
[SwitchB-bgp-default-evpn] peer evpn enable
[SwitchB-bgp-default-evpn] peer evpn reflect-client
[SwitchB-bgp-default-evpn] quit
(4) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchC] hardware-resource vxlan border24k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在与Switch E相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道。
[SwitchC] interface ten-gigabitethernet 1/0/1
[SwitchC-Ten-GigabitEthernet1/0/1] dci enable
[SwitchC-Ten-GigabitEthernet1/0/1] quit
# 配置BGP发布EVPN路由,指定向Switch B发布路由时将路由下一跳修改为自身的地址,向Switch F发布路由、从Switch F接收路由并发布时修改Router MAC。
[SwitchC] bgp 100
[SwitchC-bgp-default] peer 6.6.6.6 as-number 200
[SwitchC-bgp-default] peer 6.6.6.6 connect-interface loopback 0
[SwitchC-bgp-default] peer 6.6.6.6 ebgp-max-hop 64
[SwitchC-bgp-default] peer 2.2.2.2 as-number 100
[SwitchC-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 6.6.6.6 enable
[SwitchC-bgp-default-evpn] peer 6.6.6.6 router-mac-local
[SwitchC-bgp-default-evpn] peer 2.2.2.2 enable
[SwitchC-bgp-default-evpn] peer 2.2.2.2 next-hop-local
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3VNI的RD和RT。
[SwitchC] ip vpn-instance vpn1
[SwitchC-vpn-instance-vpn1] route-distinguisher 1:2
[SwitchC-vpn-instance-vpn1] address-family ipv4
[SwitchC-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchC-vpn-ipv4-vpn1] quit
[SwitchC-vpn-instance-vpn1] address-family evpn
[SwitchC-vpn-evpn-vpn1] vpn-target 1:1
[SwitchC-vpn-evpn-vpn1] quit
[SwitchC-vpn-instance-vpn1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchC-Vsi-interface2] l3-vni 1000
[SwitchC-Vsi-interface2] mac-address 1-2-3
[SwitchC-Vsi-interface2] quit
# 配置ED的虚拟IP地址为接口LoopBack2的IP地址1.2.3.4,并配置通过OSPF发布该地址。
[SwitchC] evpn edge group 1.2.3.4
[SwitchC] interface loopback 2
[SwitchC-LoopBack2] ip address 1.2.3.4 32
[SwitchC-LoopBack2] quit
[SwitchC] ospf
[SwitchC-ospf-1] area 0
[SwitchC-ospf-1-area-0.0.0.0] network 1.2.3.4 0.0.0.0
[SwitchC-ospf-1-area-0.0.0.0] quit
[SwitchC-ospf-1] quit
# 创建Monitor Link组,将与Switch E相连的物理接口和LoopBack0接口加入到Monitor Link组,设置Monitor Link组下行接口的回切延时为90秒。
[SwitchC] undo monitor-link disable
[SwitchC] monitor-link group 1
[SwitchC-mtlk-group1] port ten-gigabitethernet 1/0/1 uplink
[SwitchC-mtlk-group1] port loopback 0 downlink
[SwitchC-mtlk-group1] downlink up-delay 90
[SwitchC-mtlk-group1] quit
(5) 配置Switch D
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchD] hardware-resource vxlan border24k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchD] vxlan tunnel mac-learning disable
[SwitchD] vxlan tunnel arp-learning disable
# 在与Switch E相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道。
[SwitchD] interface ten-gigabitethernet 1/0/1
[SwitchD-Ten-GigabitEthernet1/0/1] dci enable
[SwitchD-Ten-GigabitEthernet1/0/1] quit
# 配置BGP发布EVPN路由,指定向Switch B发布路由时将路由下一跳修改为自身的地址,向Switch F发布路由、从Switch F接收路由并发布时修改Router MAC。
[SwitchD] bgp 100
[SwitchD-bgp-default] peer 6.6.6.6 as-number 200
[SwitchD-bgp-default] peer 6.6.6.6 connect-interface loopback 0
[SwitchD-bgp-default] peer 6.6.6.6 ebgp-max-hop 64
[SwitchD-bgp-default] peer 2.2.2.2 as-number 100
[SwitchD-bgp-default] peer 2.2.2.2 connect-interface loopback 0
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer 6.6.6.6 enable
[SwitchD-bgp-default-evpn] peer 6.6.6.6 router-mac-local
[SwitchD-bgp-default-evpn] peer 2.2.2.2 enable
[SwitchD-bgp-default-evpn] peer 2.2.2.2 next-hop-local
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
# 配置L3VNI的RD和RT。
[SwitchD] ip vpn-instance vpn1
[SwitchD-vpn-instance-vpn1] route-distinguisher 1:2
[SwitchD-vpn-instance-vpn1] address-family ipv4
[SwitchD-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchD-vpn-ipv4-vpn1] quit
[SwitchD-vpn-instance-vpn1] address-family evpn
[SwitchD-vpn-evpn-vpn1] vpn-target 1:1
[SwitchD-vpn-evpn-vpn1] quit
[SwitchD-vpn-instance-vpn1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchD] interface vsi-interface 2
[SwitchD-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchD-Vsi-interface2] l3-vni 1000
[SwitchD-Vsi-interface2] mac-address 1-2-3
[SwitchD-Vsi-interface2] quit
# 配置ED的虚拟IP地址为接口LoopBack2的IP地址1.2.3.4,并配置通过OSPF发布该地址。
[SwitchD] evpn edge group 1.2.3.4
[SwitchD] interface loopback 2
[SwitchD-LoopBack2] ip address 1.2.3.4 32
[SwitchD-LoopBack2] quit
[SwitchD] ospf
[SwitchD-ospf-1] area 0
[SwitchD-ospf-1-area-0.0.0.0] network 1.2.3.4 0.0.0.0
[SwitchD-ospf-1-area-0.0.0.0] quit
[SwitchD-ospf-1] quit
# 创建Monitor Link组,将与Switch E相连的物理接口和LoopBack0接口加入到Monitor Link组,设置Monitor Link组下行接口的回切延时为90秒。
[SwitchD] undo monitor-link disable
[SwitchD] monitor-link group 1
[SwitchD-mtlk-group1] port ten-gigabitethernet 1/0/1 uplink
[SwitchD-mtlk-group1] port loopback 0 downlink
[SwitchD-mtlk-group1] downlink up-delay 90
[SwitchD-mtlk-group1] quit
(6) 配置Switch F
# 开启L2VPN能力。
<SwitchF> system-view
[SwitchF] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchF] hardware-resource vxlan border24k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchF] vxlan tunnel mac-learning disable
[SwitchF] vxlan tunnel arp-learning disable
# 在与Switch E相连的三层接口上使能DCI功能,以便EVPN自动建立VXLAN-DCI隧道
[SwitchF] interface ten-gigabitethernet 1/0/1
[SwitchF-Ten-GigabitEthernet1/0/1] dci enable
[SwitchF-Ten-GigabitEthernet1/0/1] quit
# 配置BGP发布EVPN路由,指定向Switch G发布路由时将路由下一跳修改为自身的地址,向Switch C和Switch D发布路由、从Switch C和Switch D接收路由并发布时修改Router MAC。
[SwitchF] bgp 200
[SwitchF-bgp-default] peer 3.3.3.3 as-number 100
[SwitchF-bgp-default] peer 3.3.3.3 connect-interface loopback 0
[SwitchF-bgp-default] peer 3.3.3.3 ebgp-max-hop 64
[SwitchF-bgp-default] peer 4.4.4.4 as-number 100
[SwitchF-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchF-bgp-default] peer 4.4.4.4 ebgp-max-hop 64
[SwitchF-bgp-default] peer 7.7.7.7 as-number 200
[SwitchF-bgp-default] peer 7.7.7.7 connect-interface loopback 0
[SwitchF-bgp-default] address-family l2vpn evpn
[SwitchF-bgp-default-evpn] peer 3.3.3.3 enable
[SwitchF-bgp-default-evpn] peer 3.3.3.3 router-mac-local
[SwitchF-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchF-bgp-default-evpn] peer 4.4.4.4 router-mac-local
[SwitchF-bgp-default-evpn] peer 7.7.7.7 enable
[SwitchF-bgp-default-evpn] peer 7.7.7.7 next-hop-local
[SwitchF-bgp-default-evpn] quit
[SwitchF-bgp-default] quit
# 配置L3VNI的RD和RT。
[SwitchF] ip vpn-instance vpn1
[SwitchF-vpn-instance-vpn1] route-distinguisher 1:4
[SwitchF-vpn-instance-vpn1] address-family ipv4
[SwitchF-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchF-vpn-ipv4-vpn1] quit
[SwitchF-vpn-instance-vpn1] address-family evpn
[SwitchF-vpn-evpn-vpn1] vpn-target 1:1
[SwitchF-vpn-evpn-vpn1] quit
[SwitchF-vpn-instance-vpn1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchF] interface vsi-interface 2
[SwitchF-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchF-Vsi-interface2] l3-vni 1000
[SwitchF-Vsi-interface2] quit
(7) 配置Switch G
# 开启L2VPN能力。
<SwitchG> system-view
[SwitchG] l2vpn enable
# 配置VXLAN的硬件资源模式。
[SwitchG] hardware-resource vxlan l3gw8k
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchG] vxlan tunnel mac-learning disable
[SwitchG] vxlan tunnel arp-learning disable
# 在VSI实例vpnb下创建VXLAN 20。
[SwitchG] vsi vpnb
[SwitchG-vsi-vpnb] vxlan 20
[SwitchG-vsi-vpnb-vxlan-20] quit
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchG-vsi-vpnb] evpn encapsulation vxlan
[SwitchG-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchG-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchG-vsi-vpnb-evpn-vxlan] quit
[SwitchG-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchG] bgp 200
[SwitchG-bgp-default] peer 6.6.6.6 as-number 200
[SwitchG-bgp-default] peer 6.6.6.6 connect-interface loopback 0
[SwitchG-bgp-default] address-family l2vpn evpn
[SwitchG-bgp-default-evpn] peer 6.6.6.6 enable
[SwitchG-bgp-default-evpn] quit
[SwitchG-bgp-default] quit
# 在接入服务器的接口Ten-GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 200的数据帧。
[SwitchG] interface ten-gigabitethernet 1/0/1
[SwitchG-Ten-GigabitEthernet1/0/1] service-instance 2000
[SwitchG-Ten-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 200
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchG-Ten-GigabitEthernet1/0/1-srv2000] xconnect vsi vpnb
[SwitchG-Ten-GigabitEthernet1/0/1-srv2000] quit
[SwitchG-Ten-GigabitEthernet1/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchG] ip vpn-instance vpn1
[SwitchG-vpn-instance-vpn1] route-distinguisher 1:4
[SwitchG-vpn-instance-vpn1] address-family ipv4
[SwitchG-vpn-ipv4-vpn1] vpn-target 2:2
[SwitchG-vpn-ipv4-vpn1] quit
[SwitchG-vpn-instance-vpn1] address-family evpn
[SwitchG-vpn-evpn-vpn1] vpn-target 1:1
[SwitchG-vpn-evpn-vpn1] quit
[SwitchG-vpn-instance-vpn1] quit
# 配置VSI虚接口VSI-interface1。
[SwitchG] interface vsi-interface 1
[SwitchG-Vsi-interface1] ip binding vpn-instance vpn1
[SwitchG-Vsi-interface1] ip address 100.1.2.1 255.255.255.0
[SwitchG-Vsi-interface1] mac-address 2-2-2
[SwitchG-Vsi-interface1] distributed-gateway local
[SwitchG-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例vpn1对应的L3VNI为1000。
[SwitchG] interface vsi-interface 2
[SwitchG-Vsi-interface2] ip binding vpn-instance vpn1
[SwitchG-Vsi-interface2] l3-vni 1000
[SwitchG-Vsi-interface2] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchG] vsi vpnb
[SwitchG-vsi-vpnb] gateway vsi-interface 1
[SwitchG-vsi-vpnb] quit
(1) 验证ED(下文以Switch C为例,Switch D验证方法与此类似)
# 查看EVPN通过BGP自动发现的邻居信息,可以看到EVPN通过MAC/IP发布路由或IP前缀路由发现邻居Switch A和Switch F,并分别与其建立VXLAN隧道、VXLAN-DCI隧道。
[SwitchC] display evpn auto-discovery macip-prefix
Destination IP Source IP L3VNI Tunnel mode OutInterface
1.1.1.1 1.2.3.4 1000 VXLAN Vsi-interface2
6.6.6.6 1.2.3.4 1000 VXLAN-DCI Vsi-interface2
# 查看Switch C上的Tunnel接口信息,可以看到VXLAN模式和VXLAN-DCI模式的Tunnel接口处于up状态。
[SwitchC] display interface tunnel
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.2.3.4, destination 1.1.1.1
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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 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.2.3.4, destination 6.6.6.6
Tunnel protocol/transport UDP_VXLAN-DCI/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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看VPN实例vpn1的ARP表项和IP路由表项,可以看到已经学习到虚拟机的ARP和IP路由信息。
[SwitchC] display arp vpn-instance vpn1
Type: S Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address VLAN/VSI Interface/Link ID Aging Type
1.1.1.1 0031-1900-0000 0 Tunnel0 -- R
6.6.6.6 0031-3900-0000 0 Tunnel1 -- R
[SwitchC] display ip routing-table vpn-instance vpn1
Destinations : 4 Routes : 4
Destination/Mask Proto Pre Cost NextHop Interface
100.1.1.0/24 BGP 255 0 1.1.1.1 Vsi2
100.1.1.10/32 BGP 255 0 1.1.1.1 Vsi2
100.1.2.0/24 BGP 255 0 6.6.6.6 Vsi2
100.1.2.20/32 BGP 255 0 6.6.6.6 Vsi2
(2) 验证Switch A
# 查看EVPN通过BGP自动发现的邻居信息,可以看到EVPN通过MAC/IP发布路由或IP前缀路由发现邻居ED(Switch C和Switch D组成的虚拟ED),并与其建立VXLAN隧道。
[SwitchA] display evpn auto-discovery macip-prefix
Destination IP Source IP L3VNI Tunnel mode OutInterface
1.2.3.4 1.1.1.1 1000 VXLAN Vsi-interface2
# 查看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 1.2.3.4
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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看VPN实例vpn1的ARP表项和IP路由表项,可以看到已经学习到虚拟机的ARP和IP路由信息。
[SwitchA] display arp vpn-instance vpn1
Type: S Type: S-Static D-Dynamic O-Openflow R-Rule M-Multiport I-Invalid
IP address MAC address VLAN/VSI Interface/Link ID Aging Type
100.1.1.10 0001-0001-0010 0 0 790 D
1.2.3.4 0031-1900-0001 0 Tunnel0 -- R
[SwitchA] display ip routing-table vpn-instance vpn1
Destinations : 4 Routes : 4
Destination/Mask Proto Pre Cost NextHop Interface
100.1.2.0/24 BGP 255 0 1.2.3.4 Vsi2
100.1.2.20/32 BGP 255 0 1.2.3.4 Vsi2
(3) 验证主机
虚拟机VM 1、VM 2之间可以互访。当Switch C或Switch D出现故障后,VM 1、VM 2之间仍然可以互访。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!