02-EVPN VXLAN配置
本章节下载: 02-EVPN VXLAN配置 (1.72 MB)
目 录
2.8.4 配置BGP EVPN路由进行下一跳路由迭代时不能迭代到缺省路由
2.11.12 开启通过MAC/IP发布路由通告分布式网关ARP信息的功能
2.12.1 关闭远端MAC地址和远端ARP/ND自动学习功能
2.12.4 配置禁止EVPN从ARP/ND信息中学习MAC地址表项
2.12.7 配置禁止集中式EVPN网关跨网段学习ARP/ND信息
2.13.4 开启报文转发时下发主机路由IPv6 FIB表项功能
2.14.1 配置将包含ARP/ND信息的MAC/IP发布路由引入BGP单播路由表
2.14.2 配置BGP EVPN路由添加到VPN实例路由表时的Metric值
2.20.2 对称IRB方式分布式EVPN网关配置举例(IPv4网络)
2.20.3 对称IRB方式分布式EVPN网关配置举例(IPv6网络)
2.20.4 非对称IRB方式分布式IPv4 EVPN网关配置举例
2.20.6 IPv4 EVPN支持M-LAG配置举例(直连模式peer-link链路)
EVPN路由可以用来在VXLAN网络中搭建VXLAN隧道、同步MAC地址信息等,以实现VXLAN组网,该网络称为EVPN VXLAN。与传统VXLAN网络相比,EVPN VXLAN网络可以实现隧道的自动建立与关联,简化配置。
S5500V2-EI系列交换机不支持VXLAN、EVPN功能。有关VXLAN的详细介绍,请参见“VXLAN配置指导”中的“VXLAN”。
图1-1 EVPN网络模型示意图
在EVPN组网中,站点网络和IP核心网络既可以是IPv4网络也可以是IPv6网络。如图1-1所示,EVPN的典型网络模型中包括如下几部分:
· 用户终端(Terminal):可以是PC机、无线终端设备、服务器上创建的VM(Virtual Machine,虚拟机)等。不同的用户终端可以属于不同的VXLAN。属于相同VXLAN的用户终端处于同一个逻辑二层网络,彼此之间二层互通;属于不同VXLAN的用户终端之间二层隔离。
本文档中如无特殊说明,均以VM为例介绍EVPN工作机制。采用其他类型用户终端时,EVPN工作机制与VM相同,不再赘述。
· VTEP(VXLAN Tunnel End Point,VXLAN隧道端点):EVPN的边缘设备。EVPN的相关处理都在VTEP上进行。
· VXLAN隧道:两个VTEP之间的点到点逻辑隧道。VTEP为数据帧封装VXLAN头、UDP头和IP头后,通过VXLAN隧道将封装后的报文转发给远端VTEP,远端VTEP对其进行解封装。
· 核心设备:IP核心网络中的设备(如图1-1中的P设备)。核心设备不参与EVPN处理,仅需要根据封装后报文的外层目的IP地址对报文进行三层转发。
· VXLAN网络/EVPN实例:用户网络可能包括分布在不同地理位置的多个站点内的用户终端。在骨干网上可以利用VXLAN隧道将这些站点连接起来,为用户提供一个逻辑的二层VPN。这个二层VPN称为一个VXLAN网络,也称为EVPN实例。VXLAN网络通过VXLAN ID来标识,VXLAN ID又称VNI(VXLAN Network Identifier,VXLAN网络标识符),其长度为24比特。不同VXLAN网络中的用户终端不能二层互通。
· VSI(Virtual Switch Instance,虚拟交换实例):VTEP上为一个VXLAN提供二层交换服务的虚拟交换实例。VSI可以看作是VTEP上的一台基于VXLAN进行二层转发的虚拟交换机。VSI与VXLAN一一对应。
· ES(Ethernet Segment,以太网段):用户站点连接到VTEP的链路,通过ESI(Ethernet Segment Identifier,以太网段标识符)唯一标识。目前,一个用户站点只能通过一条链路连接一台VTEP,该ES的ESI为0。
在EVPN的二层转发组网中,VTEP可以通过以下方式自动发现邻居、建立隧道并关联隧道:
· IMET路由方式:VTEP通过IMET路由通告自己的VXLAN信息。这样,每个VTEP设备都能获取到网络中所有的VTEP及其所属VXLAN信息。如果本地VTEP和远端VTEP属于同一个VXLAN,则自动在二者之间建立VXLAN隧道,并将该隧道与该VXLAN关联。
· MAC/IP发布路由方式:VTEP通过MAC/IP发布路由通告本地MAC地址和VXLAN信息。这样,每个VTEP设备都能通过接收到的MAC/IP发布路由获取到网络中的VTEP及其所属VXLAN信息。如果本地VTEP和远端VTEP属于同一个VXLAN,则自动在二者之间建立VXLAN隧道,并将该隧道与该VXLAN关联。
在EVPN的三层转发组网中,VTEP可以通过以下方式自动发现邻居、建立隧道并关联隧道:
· IMET路由方式:VTEP通过IMET路由通告自己的VXLAN信息。这样,每个VTEP设备都能获取到网络中所有的VTEP及其所属VXLAN信息。如果本地VTEP和远端VTEP属于同一个VXLAN,则自动在二者之间建立VXLAN隧道,并将该隧道与该VXLAN关联。
· MAC/IP发布路由和IP前缀路由方式:在EVPN的三层转发组网中,当本地VTEP接收到远端VTEP通告的MAC/IP发布路由或IP前缀路由,且该路由携带的Export target属性与本地某个VPN实例的Import target属性匹配时,本地VTEP会与远端VTEP建立VXLAN隧道,并将该VXLAN隧道与VPN实例对应的L3VNI(Layer 3 VNI,三层VXLAN ID)关联。L3VNI的详细介绍,请参见“1.7 分布式EVPN网关”。
EVPN的MAC地址/ARP表项/ND表项学习、流量转发均基于报文所属的VXLAN进行,因此,VTEP接收到报文需要识别报文所属的VXLAN。
VTEP将连接本地站点的以太网服务实例(Service Instance)与VSI关联。VTEP从以太网服务实例接收到数据帧后,查找与其关联的VSI,VSI内创建的VXLAN即为该数据帧所属的VXLAN。
在VXLAN中,与VSI关联的以太网服务实例称为AC(Attachment Circuit,接入电路)。以太网服务实例在二层以太网接口上创建,它定义了一系列匹配规则(匹配接口接收到的所有报文、匹配所有携带VLAN Tag的报文、匹配所有不携带VLAN Tag的报文等),用来灵活地匹配从该二层以太网接口上接收到的数据帧。
如图1-2所示,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-3所示,如果出接口为本地接口,则VTEP直接通过该接口转发数据帧;如图1-4所示,如果出接口为Tunnel接口,则VTEP根据Tunnel接口为数据帧添加VXLAN封装后,通过VXLAN隧道将其转发给远端VTEP。
泛洪流量包括组播、广播和未知单播流量,该流量通过单播路由方式(头端复制)转发。VTEP负责复制报文,采用单播方式将复制后的报文通过本地接口发送给本地站点,并通过VXLAN隧道发送给VXLAN内的所有远端VTEP。
如图1-5所示,泛洪流量转发过程为:
(1) VTEP 1接收到本地虚拟机发送的组播、广播和未知单播数据帧后,判断数据帧所属的VXLAN,通过该VXLAN内除接收接口外的所有本地接口和VXLAN隧道转发该数据帧。通过VXLAN隧道转发数据帧时,需要为其封装VXLAN头、UDP头和IP头,以便将泛洪流量封装在多个单播报文中,发送到VXLAN内的所有远端VTEP。
(2) 远端VTEP(VTEP 2和VTEP 3)接收到VXLAN报文后,解封装报文,将原始的数据帧在本地站点的指定VXLAN内泛洪。为了避免环路,远端VTEP从VXLAN隧道上接收到报文后,不会再将其泛洪到其他的VXLAN隧道。
本节仅以IPv4网络为例说明集中式EVPN网关转发三层流量的过程,IPv6网络中的三层流量转发过程与此类似。
集中式EVPN网关进行二层VXLAN业务终结的同时,还对内层封装的IP报文进行三层转发处理。
集中式EVPN网关配置简单,但不同VXLAN之间的流量以及VXLAN访问外界网络的流量全部由集中式EVPN网关处理,网关压力较大。
图1-6 集中式EVPN网关的三层通信过程
如图1-6所示,集中式EVPN网关上需要配置VSI虚接口,该接口的IP地址作为VXLAN内虚拟机的网关IP地址,虚拟机访问其他子网的过程为:
(1) 虚拟机获取网关的MAC地址(网关IP对应的MAC地址),并将报文发送给集中式EVPN网关。
(2) VTEP接收到报文后,根据目的MAC地址在VSI的MAC地址表中查找匹配的表项,将报文通过VXLAN隧道发送给集中式EVPN网关。
(3) 网关解除VXLAN封装后,对内层封装的IP报文进行三层转发,将其发送给最终的目的节点。
(4) 目的节点返回的报文到达网关后,网关根据已经学习到的虚拟机ARP表项,将报文转发给虚拟机。
本节仅以IPv4网络为例说明分布式EVPN网关转发三层流量的过程,IPv6网络中的三层流量转发过程与此类似。
如图1-7所示,在分布式EVPN网关组网中,每台VTEP设备都作为EVPN网关,对本地站点的流量进行三层转发,缓解了网关的压力。
图1-7 分布式EVPN网关示意图
分布式EVPN网关支持非对称IRB和对称IRB两种流量转发方式:
· 非对称IRB转发方式:连接报文源节点的网关(入口网关)上需要进行二层和三层转发,连接目的节点的网关(出口网关)上仅需要进行二层转发。
· 对称IRB转发方式:入口网关和出口网关上的报文转发方式相同,都需要同时进行二层和三层转发。
对称IRB方式引入了如下概念:
· L3VNI(Layer 3 VNI,三层VXLAN ID):在网关之间通过VXLAN隧道转发流量时,属于同一路由域、能够进行三层互通的流量通过L3VNI来标识。L3VNI唯一关联一个VPN实例,通过VPN实例确保不同业务之间的隔离。
· 网关的Router MAC地址:每个分布式EVPN网关拥有一个唯一的Router MAC地址,用于在网关之间通过VXLAN隧道转发流量。报文在网关之间转发时,报文的内层MAC地址为出口网关的Router MAC地址。
如图1-8所示,在分布式EVPN网关组网中,所有的分布式EVPN网关(GW)上都存在以下类型的VSI虚接口:
· 作为分布式网关接口的VSI虚接口。该接口需要与VSI、VPN实例关联。不同GW上相同VSI虚接口的IP地址必须相同,该IP地址作为VXLAN内虚拟机的网关地址。
· 承载L3VNI的VSI虚接口。该接口需要与VPN实例关联,并需要指定L3VNI。关联相同VPN实例的VSI虚接口共用该L3VNI。
边界网关(Border)上也需要存在承载L3VNI的VSI虚接口。
图1-8 分布式EVPN网关部署示意图
三层流量通过查找FIB表项进行转发。FIB表项通过路由信息或ARP信息生成。
在EVPN地址族下引入外部路由后,VTEP通过MP-BGP将该路由及其所属的L3VNI发布给远端VTEP,远端VTEP学习该路由,并将其添加到L3VNI对应VPN实例的FIB表项中,表项的出接口为两个VTEP之间的VXLAN隧道接口(Tunnel接口)、下一跳为路由的NEXT_HOP属性携带的地址(即对端VTEP的地址)。
VTEP上ARP信息学习分为两部分:
· 本地学习:学习本地站点内虚拟机的ARP信息。VTEP通过本地虚拟机发送的GARP、RARP和对网关的ARP请求学习本地虚拟机的ARP信息,并添加ARP表项和FIB表项。VTEP判断GARP、RARP、ARP请求所属的VSI,查找与该VSI关联的VSI虚接口。ARP表项和FIB表项的出接口为接收到报文的接口,该表项所属的VPN实例为VSI虚接口关联的VPN实例。
· 远端学习:学习远端站点内虚拟机的ARP信息。VTEP通过MP-BGP协议将本地的ARP信息及其所属的L3VNI通告给远端VTEP。远端VTEP学习该信息,但不会添加ARP表项,而是由路由管理模块添加FIB表项。该FIB表项的出接口为与L3VNI关联的VSI虚接口、下一跳为路由的NEXT_HOP属性携带的地址(即对端VTEP的地址),该表项所属的VPN实例为L3VNI对应的VPN实例。远端VTEP查找下一跳对应的ARP信息,并添加对应的ARP表项。
分布式网关对流量的转发方式分为两种:
· 区分二三层转发方式:对于二层流量,查找MAC地址表进行转发;对于三层流量,查找FIB表进行转发。在该方式下,建议在分布式网关上开启ARP泛洪抑制功能,以减少泛洪流量。
· 全三层转发方式:对于二层和三层流量,均查找FIB表进行转发。在该方式下,需要在分布式网关上开启本地代理ARP功能。
查找MAC地址表转发二层流量的过程,请参见“1.5.2 转发已知单播流量”;相同站点间三层流量的转发过程如图1-9所示;不同站点间三层流量转发过程如图1-10所示。
以IPv4网络为例,查找FIB表转发流量的过程为:
(1) 虚拟机访问相同子网、不同子网内的其他虚拟机时,发送ARP请求获取ARP信息。
(2) GW接收到ARP请求后,判断ARP请求所属VSI,采用与该VSI关联的VSI虚接口MAC地址对其进行应答。
(3) 虚拟机将报文发送给GW。
(4) GW判断报文所属VSI,并查找与该VSI关联的VSI虚接口,在与VSI虚接口关联的VPN实例内查找FIB表项,并根据匹配的FIB表项转发报文:
¡ 如果FIB表项的出接口为本地接口,则GW将目的MAC替换为目的虚拟机的MAC地址、源MAC替换为VSI虚接口的MAC,并通过本地接口转发给目的虚拟机。
¡ 如果FIB表项的出接口为VSI虚接口,则GW将目的MAC替换为目的GW的Router MAC地址、源MAC替换为自己的Router MAC,报文添加VXLAN封装后将其转发给目的GW。其中,为报文封装的VXLAN ID为与VPN实例关联的L3VNI。
(5) 目的GW接收到报文后,根据L3VNI判断报文所属的VPN实例,解除VXLAN封装后,在该VPN实例内查找ARP表项转发该报文。
分布式EVPN网关基于VPN实例转发三层流量,不能转发公网的三层流量。将传统网络升级为EVPN网络时,用户可能希望在保持原有公私网部署不变的前提下,实现公私网流量通过分布式EVPN网关转发,并实现公私网的互通。此时,需要在分布式EVPN网关上配置公网实例。
公网实例可以看作是特殊的VPN实例,分布式EVPN网关对公网实例的处理与VPN实例完全相同:
· 公网实例也包括RD、Route Target属性和L3VNI。
· 如果VSI虚接口没有绑定任何VPN实例,则该VSI虚接口属于公网实例。
合理地规划公网实例、VPN实例的VPN target属性,可以实现公私网的互通。
非对称IRB与对称IRB方式中,分布式EVPN网关的部署方式基本相同。
如图1-8所示,所有的分布式EVPN网关(GW)上都存在以下类型的VSI虚接口:
· 作为分布式网关接口的VSI虚接口。该接口需要与VSI、VPN实例关联。不同GW上相同VSI虚接口的IP地址不能相同。
· 承载L3VNI的VSI虚接口。在非对称IRB转发方式中,L3VNI用来实现VXLAN网络与外界网络的互通。当VXLAN内的虚拟机需要通过边界网关(Border)与外界通信时,GW上必须部署该类VSI虚接口。该接口需要与VPN实例关联,并需要指定L3VNI。关联相同VPN实例的VSI虚接口共用该L3VNI。
边界网关上也需要存在承载L3VNI的VSI虚接口。
目前,非对称IRB转发方式仅支持通过分布式EVPN网关转发相同VXLAN的三层流量。
在非对称IRB转发方式中,GW学习到本地虚拟机的ARP信息后,通过MAC/IP发布路由将其通告给其他GW。其他GW学习ARP信息,并生成对应的FIB表项。
如图1-11所示,VM 1和VM 2属于VXLAN 10,通过分布式EVPN网关实现三层互通。分布式EVPN网关采用非对称IRB方式转发三层流量的过程为:
(1) GW 1接收到VM 1发送的报文后,由于目的MAC地址为自己,GW 1剥离二层帧头,根据目的IP地址查找FIB表。
(2) GW 1在FIB表中匹配到VM 2的ARP信息生成的FIB表项。
(3) GW 1为报文封装源和目的MAC地址(分别为网关MAC地址和VM 2的MAC地址)、VXLAN头后,通过VXLAN隧道将其转发到GW 2。
(4) GW 2接收到报文后,解除VXLAN封装,并在VXLAN 10内进行二层转发,即根据目的MAC地址查找MAC地址表。
(5) GW 2根据MAC地址表查找结果,将报文转发给VM 2。
图1-11 非对称IRB三层流量转发过程
目前,本功能支持IPv4站点接入IPv4网络、IPv6站点接入IPv6网络。
当一个站点通过不同的以太网链路连接到多台VTEP时,这些链路就构成了一个ES(Ethernet Segment,以太网段),并以一个相同的ESI(ES Identifier)标识其属于同一个ES。连接的多台VTEP组成冗余备份组,可以避免VTEP单点故障对网络造成影响,从而提高EVPN网络的可靠性。
图1-12 多归属站点示意图
当一个站点连接到多台VTEP时,为了避免冗余备份组中的VTEP均发送泛洪流量给该站点,需要在冗余备份组中选举一个VTEP作为DF(Designated Forwarder,指定转发者),负责将泛洪流量转发给本地站点。其他VTEP作为BDF(Backup DF,备份DF),不会向本地站点转发泛洪流量。多归属成员通过发送以太网段路由,向其它VTEP通告ES及其连接的VTEP信息,仅配置了ESI的VTEP会接收以太网段路由并根据其携带的ES、VTEP信息选举出DF。
设备支持多种DF选举算法,用户可以根据业务需要灵活地选择DF选举算法,使组网中DF能够均匀分布,提高网络设备的使用率。
图1-13 DF示意图
基于VLAN Tag的DF选举算法根据VLAN Tag和VTEP的IP地址为每个AC选举DF。
图1-14 基于VLAN Tag的DF选举
如图1-14所示,以允许VLAN Tag 4通过的AC 1的DF选举为例,基于VLAN Tag的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。
基于优先级的DF选举算法根据DF选举优先级、DP(Don't Preempt Me,不可回切)位和VTEP的IP地址为每个ES选举DF。其中,DP位的取值包括:
· 1:表示开启了基于优先级DF选举算法不回切功能。即当前设备被选举为DF后,即使后续选举出了新的设备作为DF,依然使用当前设备作为DF。
· 0:表示关闭了基于优先级DF选举算法不回切功能。即当前设备被选举为DF后,如果后续选举出了新的设备作为DF,则直接使用新的设备作为DF。
如图1-15所示,以ES 1、ES 2的DF选举为例,基于优先级的DF选举算法为:
(1) 同一ES内DF选举优先级(数值越大则优先级越高)最高的VTEP作为该ES的DF。在本例中,选举VTEP 2作为ES 1的DF。
(2) 若优先级相同,则DP位为1的VTEP作为DF。
(3) 若DP位相同,则IP地址小的VTEP作为DF。在本例中,选举VTEP 1作为ES 2的DF。
在多归属站点组网中,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。
EVPN组播组网仅支持IPv4网络作为Underlay网络。
为了避免组播发送的IGMP报文占用核心网络带宽,VTEP会根据接收到的报告报文和离开报文在本地建立或删除组播转发表项。通过SMET(Selective Multicast Ethernet Tag Route,选择性组播以太网标签路由)路由将组播组信息通告给其他VTEP,远端VTEP收到SMET路由后在本地建立组播转发表项。当VTEP再次收到属于同一IGMP版本加入同一组播组的报告报文时,将不再发送SMET路由。EVPN支持组播功能可以大大减少IGMP报文泛洪的次数。
如图1-17所示,在单归属站点组网中,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-18所示,多归属站点组播处理过程如下:
· 当接收报告报文的设备为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/ND请求报文占用核心网络带宽,VTEP会根据接收到的ARP/ND请求和ARP/ND应答报文、BGP EVPN路由在本地建立ARP/ND泛洪抑制表项。后续当VTEP收到本站点内虚拟机请求其它虚拟机MAC地址的ARP/ND请求时,优先根据ARP/ND泛洪抑制表项进行代答。如果没有对应的表项,则通过VXLAN隧道将ARP/ND请求泛洪到其他站点。ARP/ND泛洪抑制功能可以大大减少ARP/ND泛洪的次数。
图1-19 ARP/ND泛洪抑制示意图
如图1-19所示,以ARP为例,泛洪抑制的处理过程如下:
(1) 虚拟机VM 1发送ARP请求,获取VM 7的MAC地址。
(2) VTEP 1根据接收到的ARP请求,建立VM 1的ARP泛洪抑制表项,在VXLAN内泛洪该ARP请求(图1-19以单播路由泛洪方式为例)。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地址多次迁移时,通过序列号来标识最近一次迁移。
目前,本功能仅支持站点网络和Underlay网络同为IPv4网络,或站点网络和Underlay网络同为IPv6网络。
EVPN利用M-LAG功能(Multichassis link aggregation,跨设备链路聚合)将两台物理设备连接起来虚拟成一台设备,使用该虚拟设备作为VTEP(既可以是仅用于二层转发的VTEP,也可以是EVPN网关),可以避免VTEP单点故障对网络造成影响,从而提高EVPN网络的可靠性。M-LAG的详细介绍,请参见“二层技术-以太网交换配置指导”中的“M-LAG”。
图1-20 EVPN支持M-LAG组网图
作为M-LAG设备的两台VTEP通过peer-link链路连接,在peer-link链路上同步MAC地址、ARP和ND信息,以确保两台VTEP上的MAC地址、ARP和ND信息保持一致。peer-link链路既可以是以太网聚合链路,也可以是VXLAN隧道。作为peer-link链路的以太网聚合链路称为直连模式peer-link链路。
作为peer-link链路的VXLAN隧道自动与设备上的所有VXLAN关联。
作为M-LAG设备的两台VTEP具有相同的虚拟VTEP地址,对外表现为一台虚拟VTEP设备。其他VTEP使用该地址与这台虚拟设备自动建立VXLAN隧道。
两台VTEP使用不同的地址作为BGP对等体地址,分别与其他VTEP建立BGP EVPN邻居。
利用Underlay网络的等价路由机制,其他VTEP可以将发往虚拟VTEP地址的流量同时发送到两台VTEP,从而实现负载分担和冗余备份。
在用户侧,两台VTEP均通过以太网链路接入同一台虚拟机,跨设备在两条链路间建立二层聚合接口,将该聚合接口配置为AC(在聚合接口上创建以太网服务实例、配置报文匹配规则并关联以太网服务实例与VSI),从而避免单条以太网链路故障导致虚拟机无法访问网络。
采用直连模式peer-link链路时,VTEP通过自动创建VXLAN隧道或在peer-link链路上自动创建AC来实现用户侧链路备份。
· 自动创建VXLAN隧道
作为M-LAG设备的两台VTEP之间自动建立VXLAN隧道,并将该VXLAN隧道自动与所有VXLAN关联。
通过自动创建的VXLAN隧道实现用户侧链路备份的过程为:如果一台VTEP上的AC故障,则该VTEP从VXLAN隧道上接收到远端VTEP(非M-LAG成员设备)发送给故障AC的报文后,为报文添加VXLAN封装,封装的VXLAN ID为故障AC所属VSI对应的VXLAN ID,并通过自动创建的VXLAN隧道将其转发到另一台VTEP(M-LAG成员设备)。该VTEP根据VXLAN ID判断报文所属的VSI,并转发该报文。
· 在peer-link链路上自动创建AC
作为M-LAG设备的VTEP可以通过如下方式在peer-link链路上自动创建AC:
¡ 根据用户侧AC自动创建:用户侧接口上创建以太网服务实例、配置报文匹配规则并关联VSI后,VTEP会在peer-link链路上自动创建具有相同报文匹配规则、关联相同VSI的AC。
¡ 通过VXLAN ID映射方式自动创建:在VTEP上创建VXLAN后,peer-link链路上会自动创建以太网服务器实例,根据VXLAN ID生成报文匹配规则,并将以太网服务实例与该VXLAN对应的VSI关联。
通过自动创建的AC实现用户侧链路备份的过程为:当一台VTEP上的AC故障后,从VXLAN隧道上接收到的、发送给该AC的报文将通过peer-link链路转发到另一台VTEP,该VTEP根据peer-link链路上配置的AC判断报文所属VSI,并转发该报文,从而保证转发不中断。
EVPN VXLAN配置任务如下:
(1) 配置VXLAN隧道工作模式
(2) 配置VSI和VXLAN
a. 创建VSI和VXLAN
b. (可选)配置VSI参数
(3) 配置EVPN实例
(4) (可选)配置多归属站点
a. 配置接口ESI
b. (可选)配置DF选举算法
c. (可选)开启AC状态影响DF选举功能
d. (可选)配置DF选举延迟时间
e. (可选)配置DF选举不回切功能
f. (可选)配置延迟发布以太网段路由
(5) 配置BGP发布EVPN路由
b. (可选)配置BGP EVPN路由
c. (可选)配置BGP EVPN路由进行下一跳路由迭代时不能迭代到缺省路由
d. (可选)维护BGP会话
(6) 配置AC与VSI关联
(7) 配置EVPN网关
转发三层流量时,请选择以下一项任务进行配置:
(8) (可选)管理远端MAC地址和远端ARP/ND信息学习
(9) (可选)配置按需下发转发表项
执行本配置后,只有存在报文转发需求时,设备上才会将远端MAC地址表项、主机路由FIB表项或远端ARP表项下发到硬件,以节省设备的硬件资源。
(10) (可选)配置BGP EVPN路由的引入和发布
¡ 配置将包含ARP/ND信息的MAC/IP发布路由引入BGP单播路由表
¡ 配置BGP EVPN路由添加到VPN实例路由表时的Metric值
(11) (可选)维护和优化EVPN网络
(12) (可选)开启EVPN支持M-LAG功能
本功能将两台VTEP虚拟成一台VTEP设备,从而避免VTEP单点故障对网络造成影响,提高EVPN网络的可靠性。
EVPN功能受设备的工作模式限制,在使用EVPN功能前,请在系统视图下使用switch-mode 1命令配置设备工作在VXLAN模式,保存设备当前配置,然后重启设备。有关设备工作模式的详细介绍请参见“基础配置指导”中的“设备管理”。
VXLAN隧道既可以通过EVPN自动创建,也可以手工创建。隧道目的地址相同的EVPN自动创建隧道和手工创建隧道不能关联同一个VXLAN。手工创建VXLAN隧道的详细介绍,请参见“VXLAN配置指导”中的“配置VXLAN”。
建议在同一个EVPN网关上为所有的VSI虚接口配置相同的MAC地址,以免流量转发不通。
S5500V2-EI系列交换机不支持VXLAN、EVPN功能。有关VXLAN的详细介绍,请参见“VXLAN配置指导”中的“VXLAN”。
VXLAN隧道支持如下工作模式:
· 三层转发模式:VTEP设备通过查找FIB表项对流量进行转发。
· 二层转发模式:VTEP通过查找MAC地址表项对流量进行转发。
当设备作为VTEP时,需要配置VXLAN隧道工作在二层转发模式;当设备作为EVPN网关时,需要配置VXLAN隧道工作在三层转发模式。
重复执行vxlan ip-forwarding命令切换二层、三层转发模式前,必须先删除设备上的所有VSI、VSI虚接口和VXLAN隧道,否则将配置失败。因此,配置VXLAN前,用户需要先做好VXLAN网络规划,确定设备使用的VXLAN隧道工作模式,完成本配置后,再进行其他配置。
(1) 进入系统视图。
system-view
(2) 配置VXLAN隧道工作在二层或三层转发模式。
¡ 配置VXLAN隧道工作在二层转发模式。
undo vxlan ip-forwarding
¡ 配置VXLAN隧道工作在三层转发模式。
vxlan ip-forwarding
缺省情况下,VXLAN隧道工作在三层转发模式。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(1) 进入系统视图。
system-view
(2) 开启L2VPN功能。
l2vpn enable
缺省情况下,L2VPN功能处于关闭状态。
(3) 创建VSI,并进入VSI视图。
vsi vsi-name
(4) 开启VSI。
undo shutdown
缺省情况下,VSI处于开启状态。
(5) 创建VXLAN,并进入VXLAN视图。
vxlan vxlan-id
在一个VSI下只能创建一个VXLAN。
不同VSI下创建的VXLAN,其VXLAN ID不能相同。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 配置VSI的描述信息。
description text
缺省情况下,未配置VSI的描述信息。
(4) 配置VSI的MTU值。
mtu size
缺省情况下,VSI的MTU值为1500字节。
(5) 开启VSI的MAC地址学习功能。
mac-learning enable
缺省情况下,VSI的MAC地址学习功能处于开启状态。
创建EVPN实例后,可以为其配置RD和RT属性。仅用于二层交换的VXLAN网络无需关联VPN实例。VTEP在发布该VXLAN内路由时,携带VXLAN对应EVPN实例下配置的RD和RT。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 创建EVPN实例,并进入EVPN实例视图。
evpn encapsulation vxlan
(4) 配置EVPN实例的RD。
route-distinguisher { route-distinguisher | auto [ router-id ] }
缺省情况下,未指定EVPN实例的RD。
(5) 配置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.11.5 配置VSI虚接口关联L3VNI”。
多归属的站点,在冗余备份组的每个成员设备上的AC和VXLAN ID的配置应该保持一致,VXLAN ID相同的VSI应该配置不同的EVPN实例的RD,相同VXLAN网关关联的VPN实例或公网实例应该配置不同的RD。
IRF功能与多归属功能互斥,建议不要在同一个设备上同时配置IRF功能与多归属功能。
ESI是ES的唯一标识,ESI相同的接口对应的链路属于同一个ES,报文可以在这些链路之间进行负载分担。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 配置接口ESI。
esi esi-id
缺省情况下,未配置接口的ESI。
在EVPN多归属组网中,用户可以通过本功能灵活地选择DF选举算法,以提高设备的利用率。
系统视图和接口视图下均可以配置DF选举算法。系统视图的配置对所有ES都有效,而接口视图下的配置只对当前接口下的ES有效。对于一个ES来说,优先采用该接口视图下的配置,只有该接口下未进行配置时,才采用系统视图的配置。
(1) 进入系统视图。
system-view
(2) 全局配置DF选举算法。
evpn df-election algorithm algorithm
缺省情况下,采用基于VLAN Tag的算法。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
¡ 进入三层接口视图。
interface interface-type interface-number
¡ 进入三层聚合接口视图。
interface route-aggregation interface-number
(3) 配置DF选举算法。
evpn df-election algorithm algorithm
缺省情况下,以系统视图下配置的DF选举算法为准。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
¡ 进入三层接口视图。
interface interface-type interface-number
¡ 进入三层聚合接口视图。
interface route-aggregation interface-number
(3) 配置DF选举优先级。
evpn df-election preference preference
缺省情况下,DF选举优先级为32767。
DF选举优先级数值越大则优先级越高。
缺省情况下,在EVPN多归属组网中,同一ES内的所有VTEP都将参与DF选举,VTEP上AC的状态不影响VTEP是否参与DF选举。若选举为DF的VTEP上AC的状态为Down,会导致VTEP无法通过AC转发流量,此时可以通过配置本命令来解决此问题。
配置本命令之后,只有当AC状态为Up时VTEP才会参与DF选举。VTEP通过如下方式判断AC状态:
· 对于本端VTEP,通过检查本端AC是否Up来判断本端VTEP是否参与DF选举,只有AC状态为Up的本端VTEP才可以参与DF选举。
· 对于远端VTEP,通过检查是否收到远端VTEP发布的AD VTEPr ES路由和AD VTEPr EVI路由来判断远端VTEP是否参与DF选举,只有收到远端VTEP发布的AD VTEPr ES 路由和AD VTEPr EVI路由时,本端VTEP才认为远端VTEP上AC为Up状态,可以参与DF选举。
只有当冗余备份组中的所有VTEP上都开启本功能时,本功能才生效。
(1) 进入系统视图。
system-view
(2) 开启AC状态影响DF选举功能。
evpn df-election ac-influence enable
缺省情况下,AC状态影响DF选举功能处于关闭状态。
AC所在接口的状态、多归属成员设备数量或者接口下ESI值的频繁变化都会导致DF频繁选举,极大影响了网络的性能。通过本命令可以指定DF选举的时间间隔,避免频繁选举DF,保证网络的稳定性。
(1) 进入系统视图。
system-view
(2) 配置DF选举延迟时间。
evpn multihoming timer df-delay delay-value
缺省情况下,DF选举的延迟时间为3秒。
在EVPN多归属组网中,配置变化、设备重启或者进程重启都会触发DF重新选举,DF切换可能会造成转发丢包。在VTEP设备上配置本功能可以解决此问题。
以VTEP 1与VTEP 2组成冗余备份组,其中VTEP 1为DF为例,讲解DF选举不回切功能。当VTEP 1重启导致VTEP 2重新选举为DF时:
· 若VTEP 1重启后收到VTEP 2发布的以太网段路由,则VTEP 1比较以太网段路由中携带的DF选举优先级与本地配置的DF选举优先级。
¡ 若VTEP 1本地配置的DF选举优先级<收到的以太网段路由中携带的DF选举优先级,则VTEP 1发布的以太网段路由中携带的DF选举优先级为本地配置的DF选举优先级。
¡ 若VTEP 1本地配置的DF选举优先级=收到的以太网段路由中携带的DF选举优先级,则比较IP地址。
- VTEP 1的IP地址<VTEP 2的IP地址,则VTEP 1发布的以太网段路由中携带的DF选举优先级为本地配置的DF选举优先级、DP(Don't Preempt Me,不可回切)位为0。
- VTEP 1的IP地址>VTEP 2的IP地址,则VTEP 1发布的以太网段路由中携带的DF选举优先级为本地配置的DF选举优先级、DP位为1。
¡ 若VTEP 1本地配置的DF选举优先级>收到的以太网段路由中携带的DF选举优先级,则VTEP 1发布的以太网段路由中携带的DF选举优先级为VTEP 2发布的以太网段路由中的DF选举优先级、DP位为0。
· 若VTEP 1重启后未收到VTEP 2发布的以太网段路由,则VTEP 1发布的以太网段路由中携带的DF选举优先级为本地配置的DF选举优先级。
在EVPN多归属组网采用多活冗余模式时,建议配置本功能,解决DF回切造成的丢包问题;采用单活冗余模式时,不建议配置本功能,否则会影响DF回切性能。
在DF设备重启或者进程重启触发DF重新选举的场景中,DF设备重启或进程重启后会立刻发布以太网段路由,以便快速恢复为DF,但是由于接入侧连接恢复较慢,设备切换为DF后,会导致丢包。此时,可以配合evpn timer es-recovery命令,使设备在等待接入侧连接恢复后再发送以太网段路由。建议在多归属成员设备上同时配置evpn df-election preference non-revertive命令与evpn timer es-recovery命令。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
¡ 进入三层接口视图。
interface interface-type interface-number
¡ 进入三层聚合接口视图。
interface route-aggregation interface-number
(3) 开启基于优先级DF选举的不回切功能。
evpn df-election preference non-revertive
缺省情况下,基于优先级算法的DF选举不回切功能处于关闭状态。
在DF设备重启或者进程重启触发DF重新选举的场景中,DF设备重启或进程重启后会立刻发布以太网段路由,以便快速恢复为DF。但是,由于接入侧连接恢复较慢,设备切换为DF后,可能会因为AC状态未up而导致丢包。此时,可以配置本功能,使设备在等待接入侧连接恢复后再发送以太网段路由。
在EVPN多归属组网采用多活冗余模式时,建议配置本功能,解决DF回切造成的丢包问题;采用单活冗余模式时,不建议配置本功能,否则会影响DF回切性能。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
¡ 进入三层接口视图。
interface interface-type interface-number
¡ 进入三层聚合接口视图。
interface route-aggregation interface-number
(3) 配置基于优先级选举DF时,延迟发布以太网段路由。
evpn timer es-recovery recovery-time
缺省情况下,基于优先级选举DF时,不延迟发布以太网段路由。
本功能是指多归属站点AC故障时,将需要通过故障AC转发的流量临时通过冗余备份组成员VTEP间的VXLAN隧道转发,减少AC故障导致的丢包。
本功能配置在冗余备份组成员VTEP上。
(1) 进入系统视图。
system-view
(2) 开启全局EVPN VXLAN的FRR功能。
evpn multihoming vxlan-frr local
缺省情况下,EVPN VXLAN的FRR功能处于关闭状态。
在站点多归属组网中,用户需要重启其中一台VTEP时,重启该VTEP前,可以通过在该VTEP上执行本命令,来禁止通告以太网自动发现路由和以太网段路由,并撤销已经通告的该类路由,以便其他VTEP及时更新本地的EVPN路由表,确保VTEP的重启不会影响报文转发。
在站点多归属组网中,如果需要通过EVPN的SMET、IGMP-JS和IGMP-LS路由转发组播流量,则不能执行本配置。否则,可能会导致组播流量转发错误。
(1) 进入系统视图。
system-view
(2) 配置禁止通告以太网自动发现路由和以太网段路由,并撤销已经通告的该类路由。
evpn multihoming advertise disable
缺省情况下,允许通告EVPN以太网自动发现路由和以太网段路由。
BGP相关命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
(1) 进入系统视图。
system-view
(2) 配置全局Router ID。
router id router-id
缺省情况下,未配置全局Router ID。
(3) 启动BGP实例,并进入BGP实例视图。
bgp as-number [ instance instance-name ]
缺省情况下,系统没有运行BGP。
(4) 将远端VTEP配置为对等体。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } as-number as-number
(5) 创建BGP EVPN地址族,并进入BGP EVPN地址族视图。
address-family l2vpn evpn
(6) 使能本地路由器与指定对等体/对等体组交换BGP EVPN路由的能力。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } enable
缺省情况下,本地路由器不能与对等体/对等体组交换BGP EVPN路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置向对等体/对等体组发送缺省路由。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } default-route-advertise { ipv4 | ipv6 } vpn-instance vpn-instance-name
缺省情况下,不向对等体/对等体组发送缺省路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置对于从对等体/对等体组接收的BGP消息,允许本地AS号在该消息的AS_PATH属性中出现,并配置允许出现的次数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } allow-as-loop [ number ]
缺省情况下,不允许本地AS号在接收消息的AS_PATH属性中出现。
(5) 配置向EBGP对等体/对等体组发布路由时不改变下一跳。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } next-hop-invariable
缺省情况下,向EBGP对等体/对等体组发布路由时会将下一跳改为自己的地址。
(6) 配置向对等体/对等体组发布团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise-community
缺省情况下,不向对等体/对等体组发布团体属性。
(7) 配置向对等体/对等体组发布EVPN网关路由时不携带Default-gateway扩展团体属性。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } default-gateway no-advertise
缺省情况下,向对等体/对等体组发布EVPN网关路由时会携带Default-gateway扩展团体属性。
(8) 配置将发送给邻居的BGP路由调整为最低优先级。请选择其中一项进行配置。
¡ 配置邻居状态由Down变为Up后,在指定的持续时间内将发送给邻居的BGP路由调整为最低优先级。
advertise lowest-priority on-peer-up duration seconds
¡ 配置设备重启且BGP进程恢复后,在持续时间内调整发送给邻居的BGP路由优先级为最低。
advertise lowest-priority on-startup duration seconds
缺省情况下,设备不修改发送给邻居的BGP路由的优先级。
调整BGP路由优先级的方式是,将BGP路由的本地优先级值调整为最小值0,并将BGP路由的MED值调整为最大值4294967295。如需在设备发送最低优先级BGP路由的持续时间内,恢复发送正常优先级的路由,可以在用户视图下执行reset bgp advertise lowest-priority命令。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置BGP选择最优路由时,优选下一跳地址为IPv6地址的路由。
bestroute ipv6-nexthop
缺省情况下,BGP选择最优路由时,优选下一跳地址为IPv4地址的路由。
(5) (可选)配置BGP路由延迟优选功能,请至少选择其中的一项进行配置。
¡ 配置对地址族下的所有BGP路由延迟优选。
route-select delay delay-value
¡ 配置邻居状态由Down变为Up后,在指定的持续时间内仅对来自该邻居的BGP路由延迟优选。
route-select suppress on-peer-up milliseconds
缺省情况下,路由优选不延迟。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置本机作为路由反射器,对等体/对等体组作为路由反射器的客户机。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } reflect-client
缺省情况下,没有配置路由反射器及其客户机。
(5) (可选)允许路由反射器在客户机之间反射EVPN路由。
reflect between-clients
缺省情况下,允许路由反射器在客户机之间反射EVPN路由。
(6) (可选)配置路由反射器的集群ID。
reflector cluster-id { cluster-id | ipv4-address }
缺省情况下,每个路由反射器都使用自己的Router ID作为集群ID。
(7) (可选)配置路由反射器对反射的EVPN路由进行过滤。
rr-filter ext-comm-list-number
缺省情况下,路由反射器不会对反射的EVPN路由进行过滤。
(8) (可选)允许路由反射器反射路由时修改路由属性。
reflect change-path-attribute
缺省情况下,不允许路由反射器反射路由时修改路由属性。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 在本机上开启Route Server功能,配置对等体/对等体组作为Route Server的客户机。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-server-client [ external ]
缺省情况下,未配置Route Server功能及其客户机。
在本机上配置Route Server功能后,对等设备上需要配置peer ignore-first-as命令,不检查从指定EBGP对等体发来的更新消息中AS_Path属性的第一个AS号,否则邻居关系无法正常建立。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 对来自对等体/对等体组的路由或发布给对等体/对等体组的路由应用路由策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } route-policy route-policy-name { export | import }
缺省情况下,没有为对等体/对等体组指定路由策略。
(5) 设置基于二层ACL的路由过滤策略。
¡ 为指定对等体/对等体组设置基于二层ACL的路由过滤策略。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } filter-policy { mac-acl-number | name mac-acl-name } { export | import }
¡ 配置对发布的所有路由信息进行过滤。
filter-policy { mac-acl-number | name mac-acl-name } export
¡ 配置对接收的所有路由信息进行过滤。
filter-policy { mac-acl-number | name mac-acl-name } import
缺省情况下,未设置基于二层ACL的路由过滤策略。
在二层ACL中,rule [ rule-id ] { deny | permit } dest-mac dest-address dest-mask命令配置的规则用来过滤携带指定MAC地址的MAC/IP发布路由,不能过滤其他类型的BGP EVPN路由。除了上述规则之外,二层ACL中的其他规则对EVPN路由的过滤不生效。
(6) 开启BGP EVPN路由的VPN-Target过滤功能。
policy vpn-target
缺省情况下,BGP EVPN路由的VPN-Target过滤功能处于开启状态。
(7) 配置根据EBGP路由的第一个AS号来过滤发布对象。
peer-as-check enable
缺省情况下,设备接收到EBGP路由后,会将其发布给除发送该路由的对等体之外的所有BGP对等体,不会根据EBGP路由的第一个AS号来过滤发布对象。
配置本命令后,BGP向EBGP对等体发布EBGP路由时,会检查AS_Path属性中的第一个AS号,不会向EBGP对等体发布第一个AS号与该EBGP对等体所在的AS相同的路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 为指定对等体/对等体组配置Add-Path功能。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } additional-paths { receive | send } *
缺省情况下,未配置Add-Path功能。
(5) 配置向指定对等体/对等体组发送的Add-Path优选路由的最大条数。
peer { group-name | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] } advertise additional-paths best number
缺省情况下,向指定对等体/对等体组发送的Add-Path优选路由的最大条数为1。
(6) 配置Add-Path优选路由的最大条数。
additional-paths select-best best-number
缺省情况下,Add-Path优选路由的最大条数为1。
缺省情况下,BGP路由在进行下一跳路由迭代时,若只能通过缺省路由到达BGP路由的下一跳,则BGP路由会迭代到缺省路由,即选择缺省路由作为BGP路由的下一跳的依赖路由。如果通过该缺省路由实际无法到达BGP路由的下一跳,则匹配该BGP路由的流量将转发失败。
为了解决上述问题,可以配置本命令,使得BGP路由进行下一跳路由迭代时,不迭代到缺省路由。配置本命令后,BGP路由在进行下一跳路由迭代时,若只能通过缺省路由到达BGP路由的下一跳,则路由迭代失败,该BGP路由成为失效路由,同一前缀的其他BGP路由可以被优选。
本功能可以应用在到达同一目的地址存在多条链路的组网场景中,在承载流量的链路发生故障时,原本迭代到该链路的BGP路由也不会因为迭代到缺省路由而保持继续生效,而是变为失效路由,使得下一跳指向其他链路的BGP路由能够优选,以实现链路的切换,避免长时间丢包。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置下一跳路由迭代时不能迭代到缺省路由。
nexthop recursive-lookup default-route ignore [ route-policy route-policy-name ]
缺省情况下,BGP路由进行下一跳路由迭代时,可以迭代到缺省路由。
配置本命令后,可能会使得EVPN VXLAN网络中已经创建的VXLAN隧道重新建立,导致VXLAN流量的短暂丢失。建议您在配置本命令后,再使能BGP EVPN路由的交互能力。
请在用户视图下执行如下命令,复位或软复位BGP会话。
· 复位EVPN地址族下的BGP会话。
reset bgp [ instance instance-name ] { as-number | ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } l2vpn evpn
· 手工对EVPN地址族下的BGP会话进行软复位。
refresh bgp [ instance instance-name ] { ipv4-address [ mask-length ] | ipv6-address [ prefix-length ] | all | external | group group-name | internal } { export | import } l2vpn evpn
手工创建以太网服务实例,并将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
本配置与以太网链路聚合功能互斥。二层以太网接口加入聚合组后,不能再将该接口上的以太网服务实例与VSI关联;反之亦然。
请不要在同一个二层以太网接口/二层聚合接口上同时配置以下功能:
· VLAN映射、以太网服务实例与VSI
· QinQ、以太网服务实例与VSI
请不要在VXLAN隧道出接口的二层以太网接口/二层聚合接口上配置VLAN映射、QinQ、MAC VLAN功能
否则,可能导致这些功能不可用。
同一接口下不同以太网服务实例,不能配置匹配相同外层VLAN tag不同内层VLAN tag的报文匹配规则。
配置以太网服务实例的报文匹配规则时需要注意的事项请参见“VXLAN命令参考”中的“VXLAN”。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 手工创建以太网服务实例,并进入以太网服务实例视图。
service-instance instance-id
(4) 配置以太网服务实例的报文匹配规则。
¡ 匹配报文的外层VLAN tag。
encapsulation s-vid vlan-id [ only-tagged ]
¡ 匹配不携带VLAN tag的所有报文。
encapsulation untagged
¡ 匹配未匹配到接口上其他以太网服务实例的所有报文。
encapsulation default
同一个接口上最多只能有一个服务实例的报文匹配规则为encapsulation default。
如果接口上只存在一个配置了encapsulation default规则的以太网服务实例,则该接口上的所有报文都匹配该以太网服务实例。
缺省情况下,未配置报文匹配规则。
(5) 将以太网服务实例与VSI关联。
xconnect vsi vsi-name [ access-mode { 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地址认证”。
动态创建的以太网服务实例通过检查报文携带的VLAN ID、源MAC地址是否分别与以太网服务实例匹配的VLAN ID、MAC地址相同。只有VLAN ID、源MAC地址均相同时,报文才属于该AC。
采用该方式动态创建的以太网服务实例必须采用MAC地址认证或基于MAC接入控制的802.1X认证,并开启动态创建的以太网服务实例匹配MAC地址功能。
二层聚合接口的成员端口上无法动态创建以太网服务实例。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
¡ 进入二层以太网接口视图。
interface interface-type interface-number
¡ 进入二层聚合接口视图。
interface bridge-aggregation interface-number
(3) 开启动态创建的以太网服务实例匹配MAC地址功能。
mac-based ac
缺省情况下,动态创建的以太网服务实例匹配MAC地址功能处于关闭状态,即动态创建的以太网服务实例只匹配VLAN。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(4) 配置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/ND泛洪抑制功能。EVPN组网中通常关闭远端ARP/ND自动学习功能,网关从VXLAN隧道上接收到请求网关MAC地址的ARP/ND请求后,不会对其进行应答。如果未开启ARP/ND泛洪抑制功能,则可能会导致虚拟机获取不到网关的MAC地址。
配置EVPN网关前,需要配置VXLAN隧道工作在三层转发模式。
(1) 进入系统视图。
system-view
(2) 创建VSI虚接口,并进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(3) 配置VSI虚接口的IP地址。
(IPv4网络)
ip address ip-address { mask | mask-length } [ sub ]
(IPv6网络)
IPv6地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
缺省情况下,未配置VSI虚接口的IP地址。
(4) 退回系统视图。
quit
(5) 进入VXLAN所在VSI视图。
vsi vsi-name
(6) 为VSI指定网关接口。
gateway vsi-interface vsi-interface-id
缺省情况下,未指定VSI的网关接口。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
在集中式EVPN网关组网中,若用户终端的MAC地址与集中式EVPN网关MAC地址发生冲突,则VTEP设备会认为发生MAC地址迁移,用户终端的MAC地址表项会覆盖集中式EVPN网关的MAC地址表项,导致流量转发错误。
在集中式EVPN网关上配置本功能可以解决上述问题。配置本功能后,集中式EVPN网关在通过MAC/IP发布路由通告集中式EVPN网关MAC地址时,将该路由携带的MAC迁移扩展属性中的静态比特位设置为1,以标识集中式EVPN网关MAC地址为静态MAC地址。当用户终端的MAC地址与集中式EVPN网关MAC地址发生冲突时,用户MAC地址不会覆盖网关MAC地址表项,避免流量转发错误。
MAC迁移扩展属性中的静态比特位设置为1,表示该MAC地址为静态MAC;取值为0时,表示该MAC地址为非静态MAC。
(1) 进入系统视图。
system-view
(2) 将集中式网关的MAC地址标记为静态MAC。
evpn route gateway-mac unmovable
缺省情况下,将集中式网关的MAC地址标记为非静态MAC。
分布式EVPN网关上VSI虚接口存在如下配置要求:
· VSI接口的MAC地址不能配置为设备的保留MAC。
· 同一分布式网关上承载L3VNI的VSI虚接口的MAC地址必须配置一致。
· 不同分布式网关上作为同一个VXLAN网络网关接口的VSI虚接口需要配置相同的IP/IPv6地址和MAC地址。
· 当网关连接IPv6站点网络时,还需要为同一分布式网关上承载L3VNI的VSI虚接口配置相同的IPv6链路本地地址。采用自动方式生成链路本地地址时,由于MAC地址相同,则生成的链路本地地址相同;若采用手工方式配置,则必须保证配置的链路本地地址相同。
在分布式EVPN网关设备上,如果开启了ARP/ND泛洪抑制功能,并在VSI虚接口上开启了本地代理ARP/ND功能,则只有本地代理ARP/ND功能生效。请在分布式EVPN网关设备上选择一种进行配置,建议不要在分布式EVPN网关设备上同时开启这两个功能。
在分布式EVPN网关设备上,如果通过mac-address命令修改了某一关联L3VNI的VSI虚接口的MAC地址,则必须通过该命令将所有与L3VNI关联的VSI虚接口的MAC地址修改为相同的值,否则可能会导致报文转发失败。
配置EVPN网关前,需要配置VXLAN隧道工作在三层转发模式。
如果虚拟机要想与外部网络进行三层通信,那么除了分布式EVPN网关的配置外,还需要在接入虚拟机的本地分布式EVPN网关上配置静态路由或策略路由:
· 配置静态路由:指定路由的下一跳为Border上同一个VXLAN对应VSI虚接口的IPv4地址或IPv6地址。
· 配置策略路由:通过apply default-next-hop命令或apply next-hop命令设置报文的缺省下一跳或下一跳为Border上同一个VXLAN对应VSI虚接口的IP地址。策略路由的配置方法,请参见“三层技术-IP路由配置指导”中的“策略路由”和“IPv6策略路由”。
目前,非对称IRB转发方式仅支持通过分布式EVPN网关转发相同VXLAN的三层流量,且不同GW上相同VSI虚接口的IP地址不能相同。
(1) 进入系统视图。
system-view
(2) 配置EVPN VXLAN的转发方式。请选择其中一项进行配置。
¡ EVPN VXLAN采用非对称IRB方式转发流量。
evpn irb asymmetric [ route-policy route-policy-name ]
¡ EVPN VXLAN采用对称IRB方式转发流量。
undo evpn irb asymmetric
缺省情况下,EVPN网关采用对称IRB方式转发流量。
为了节省分布式VXLAN IP网关设备上的三层接口资源,在网关设备上多个VXLAN可以共用一个VSI虚接口,为VSI虚接口配置一个主IPv4地址和多个从IPv4地址、或多个IPv6地址,分别作为不同VXLAN内虚拟机的网关地址。
多个VXLAN共用一个VSI虚接口时,网关设备无法判断从VSI虚接口接收到的报文属于哪个VXLAN。为了解决该问题,需要在VSI视图下通过gateway subnet命令指定VSI所属的子网网段,通过子网网段判断报文所属的VSI,并在该VSI内转发报文,从而限制IPv4广播报文范围或IPv6组播报文,有效地节省带宽资源。
(1) 进入系统视图。
system-view
(2) 创建VSI虚接口,并进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(3) 配置VSI虚接口的IP地址。
(IPv4网络)
ip address ip-address { mask | mask-length } [ sub ]
(IPv6网络)
IPv6地址的配置方法,请参见“三层技术-IP业务配置指导”中的“IPv6基础”。
缺省情况下,未配置VSI虚接口的IP地址。
(4) 配置VSI虚接口的MAC地址。
mac-address mac-address
缺省情况下,VSI虚接口的MAC地址为设备桥MAC地址加26。
不同分布式EVPN网关设备上,为同一个VXLAN的VSI虚接口配置的MAC地址必须相同。否则,虚拟机发生迁移后,虚拟机上网关IP地址对应的MAC地址为远端网关的MAC地址,可能导致流量转发错误。
(5) 配置VSI虚接口为分布式网关接口。
distributed-gateway local
缺省情况下,VSI虚接口不是分布式本地网关接口。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(6) (可选)开启本地代理ARP功能或本地ND代理功能。
(IPv4网络)
local-proxy-arp enable [ ip-range startIP to endIP ]
缺省情况下,本地代理ARP功能处于关闭状态。
本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“代理ARP”。
(IPv6网络)
local-proxy-nd enable
缺省情况下,本地ND代理功能处于关闭状态。
本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”。
(7) 退回系统视图。
quit
(8) 进入VXLAN所在VSI视图。
vsi vsi-name
(9) 为VSI指定网关接口。
gateway vsi-interface vsi-interface-id
缺省情况下,未指定VSI的网关接口。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(1) 进入系统视图。
system-view
(2) 配置VPN实例。
a. 创建VPN实例,并进入VPN实例视图。
ip vpn-instance vpn-instance-name
b. 配置VPN实例的RD。
route-distinguisher route-distinguisher
缺省情况下,未配置VPN实例的RD。
c. 配置VPN实例的RT。
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]
缺省情况下,未配置VPN实例的Route Target。
d. (可选)对VPN实例应用出方向路由策略。
export route-policy route-policy
缺省情况下,不对发布的路由进行过滤。
e. (可选)对VPN实例应用入方向路由策略。
import route-policy route-policy
缺省情况下,VPN实例未应用入方向路由策略。如果接收到的路由携带的Route Target属性中存在与本地配置的Import Target相同的值,则接收该路由。
(3) 配置VPN实例下的EVPN。
a. 进入VPN实例EVPN视图。
address-family evpn
b. 在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匹配,反之亦然。
c. (可选)在VPN实例下配置EVPN的出方向路由策略。
export route-policy route-policy
缺省情况下,不对发布的路由进行过滤。
出方向路由策略用来对VPN实例发布给BGP EVPN协议的路由进行过滤。
d. (可选)在VPN实例下配置EVPN的入方向路由策略。
import route-policy route-policy
缺省情况下,在VPN实例下未配置EVPN的入方向路由策略,即如果接收到的路由携带的Route Target属性中存在与本地配置的Import Target相同的值,则接收该路由。
入方向路由策略用来对从BGP EVPN协议引入到VPN实例的路由进行过滤。
(4) 依次执行以下命令退回系统视图。
a. quit
b. quit
(5) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(6) 配置接口与指定的VPN实例关联。
ip binding vpn-instance vpn-instance-name
缺省情况下,接口未关联VPN实例,接口属于公网。
(7) 配置VPN实例的L3VNI。
l3-vni vxlan-id [ vsi vsi-name ]
缺省情况下,未配置VPN实例的L3VNI。
一个VPN实例只能关联一个L3VNI。若为VPN实例配置了多个L3VNI,则该VPN实例与数值最小的L3VNI关联。通过display evpn routing-table命令可以查看与VPN实例关联的L3VNI。
(1) 进入系统视图。
system-view
(2) 创建公网实例,并进入公网实例视图。
ip public-instance
本命令的详细介绍请参见“MPLS命令参考”中的“MPLS L3VPN”。
(3) 配置公网实例的RD。
route-distinguisher route-distinguisher
缺省情况下,未配置公网实例的RD。
(4) 配置公网实例的L3VNI。
l3-vni vxlan-id
缺省情况下,未配置公网实例的L3VNI。
一个公网实例只能关联一个L3VNI。不能通过重复执行本命令修改公网实例的L3VNI。如需修改,请先删除已有的L3VNI后再配置。
(5) (可选)配置公网实例的RT。
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]
缺省情况下,未配置公网实例的RT。
(6) 进入公网实例IPv4地址族视图、IPv6 VPN视图或EVPN视图。
¡ 进入公网实例IPv4地址族视图。
address-family ipv4
本命令的详细介绍请参见“MPLS命令参考”中的“MPLS L3VPN”。
¡ 进入公网实例IPv6地址族视图。
address-family ipv6
本命令的详细介绍请参见“MPLS命令参考”中的“MPLS L3VPN”。
¡ 进入公网实例EVPN视图。
address-family evpn
(7) 在公网实例下配置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匹配,反之亦然。
(8) 依次执行以下命令退回系统视图。
a. quit
b. quit
(9) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(10) 在属于公网实例的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”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP地址族视图。
¡ 进入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 ]
(4) 将IGP路由协议的路由信息引入到BGP路由表中。
import-route protocol [ { process-id | all-processes } [ allow-direct | med med-value | route-policy route-policy-name ] * ]
缺省情况下,BGP不会引入IGP路由协议的路由信息。
(5) (可选)允许将缺省路由引入到BGP路由表中。
default-route imported
缺省情况下,BGP不允许将缺省路由引入到BGP路由表中。
(6) (可选)配置VPN引入等价路由功能。
a. 退回BGP实例视图。
quit
b. 进入BGP EVPN地址族视图。
address-family l2vpn evpn
c. 开启VPN引入等价路由功能。
vpn-route cross multipath
缺省情况下,VPN引入等价路由功能处于关闭状态,对于前缀和RD均相同的多条路由,只会将最优路由引入到BGP EVPN路由表中。
开启本功能后,BGP将前缀和RD均相同的多条路由全部引入到BGP EVPN路由表中。
缺省情况下,各VPN实例之间的BGP路由均相互隔离。但在某些组网场景下,设备需要实现跨VPN发布路由,并且为了隐藏站点内部特定VPN实例的路由信息,用户需要将该VPN实例的BGP路由通过其他的VPN实例对外发布。
图2-1 公网和VPN实例路由互相引入示意图
如图2-1所示,PE 1和PE 2分别与PE 3建立公网IBGP会话,并通过公网与VPN实例间的路由互引来实现内部站点和外部公网的互通;PE 1和PE 2之间建立BGP EVPN IBGP对等体,向对方传递本站点VPN实例的路由,以实现站点间的通信。链路完好时,PE 2可以直接接收PE 3发布的公网路由,并引入到本地站点中;PE 2 和PE 3之间链路发生故障时,外部公网路由无法直接发布给PE 2,导致站点内用户与外部网络通信受阻。
此时PE 1可以将引入到VPN实例的公网BGP路由在指定的VPN实例进行重生成,并将重生成的路由发布给IBGP对等体PE 2,以恢复PE 2本地站点内的用户与外部网络的通信。具体工作过程如下:
(1) 在PE 1的公网实例中配置Route Target,使Route Target属性与想要引入公网路由的VPN实例的Route Target属性相匹配。
(2) 在PE 1上配置route-replicate enable命令,将公网实例下的BGP路由引入到Route Target属性相匹配的VPN实例中。
(3) 在PE 1上配置advertise route-reoriginate命令,如果其他VPN实例的Route Target属性与当前地址族视图所属的VPN实例匹配,则会在该VPN实例的BGP路由表中重生成其他VPN实例的所有BGP路由(不包括从本地引入的路由,如配置import-route命令后引入的IGP路由)。
(4) 缺省情况下,PE 1从IBGP对等体接收到的路由在重生成后,不会再发布给IBGP对等体PE 2,通过配置peer advertise vpn-reoriginate ibgp命令,可以实现将重生成的路由发布给IBGP对等体PE 2。
peer advertise vpn-reoriginate ibgp命令需要和advertise route-reoriginate命令配合使用,单独配置peer advertise vpn-reoriginate ibgp命令时,该命令不生效。
在BGP-VPN IPv4单播地址族视图下配置advertise route-reoriginate命令时,重生成的是IPv4单播路由;在BGP-VPN IPv6单播地址族视图下配置advertise route-reoriginate命令时,重生成的是IPv6单播路由。
有关advertise route-reoriginate命令和route-replicate enable命令的详细介绍,请参见“MPLS命令参考”中的“MPLS L3VPN”
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) (可选)开启公网和VPN实例BGP路由互相引入功能。
route-replicate enable
缺省情况下,公网和VPN实例的BGP路由互相引入功能处于关闭状态。
(4) 进入BGP-VPN IPv4单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 依次执行以下命令进入BGP-VPN IPv4单播地址族视图。
ip vpn-instance vpn-instance-name
address-family ipv4 [ unicast ]
¡ 依次执行以下命令进入BGP-VPN IPv6单播地址族视图。
ip vpn-instance vpn-instance-name
address-family ipv6 [ unicast ]
(5) 配置在指定VPN实例的BGP单播路由表中重生成其他VPN实例下的BGP单播路由。
advertise route-reoriginate [ route-policy route-policy-name ] [ replace-rt ]
缺省情况下,在VPN实例下无法重生成其他VPN实例下的BGP单播路由。
本命令仅能重生成与当前视图所属的VPN实例Route Target属性匹配的VPN实例下的路由,且不能重生成BGP路由表中从本地引入的路由。
(6) (可选)配置向指定IBGP对等体/对等体组发布VPN实例下重生成的BGP路由。
a. 退回BGP实例视图。
quit
quit
b. 进入BGP EVPN地址族视图。
address-family l2vpn evpn
c. 配置以IP前缀路由的形式向指定IBGP对等体/对等体组发布VPN实例下重生成的BGP路由。
peer { group-name | ipv4-address [ mask-length ] } advertise vpn-reoriginate ibgp
缺省情况下,不会向IBGP对等体/对等体组发布VPN实例下重生成的BGP路由。
EVPN全局MAC地址仅用于承载L3VNI的VSI虚接口。如果承载L3VNI的VSI虚接口上通过mac-address命令配置了MAC地址,则VSI虚接口的MAC地址为该地址;否则,VSI虚接口的MAC地址为配置的EVPN全局MAC地址。
分布式EVPN网关在所有承载L3VNI的VSI虚接口中,选择接口编号最小的VSI虚接口的MAC地址作为Router MAC。在EVPN M-LAG组网中,作为M-LAG设备的两台分布式EVPN网关选取的Router MAC可能不同,导致报文转发错误。在两台网关上均执行本配置,设置相同的EVPN全局MAC地址,可以解决上述问题。
EVPN全局MAC地址不能与设备的预留MAC地址相同。
(1) 进入系统视图。
system-view
(2) 配置EVPN的全局MAC地址。
evpn global-mac mac-address
缺省情况下,未配置EVPN的全局MAC地址。
分布式VXLAN IP网关上,缺省情况下,VSI虚接口IP地址所在网段会产生IP前缀路由,并将该路由发布给远端VTEP。远端VTEP可以将该路由发布到本地站点。如果用户不希望将该路由发布到租户网络,则可以执行本配置禁止VSI虚接口IP地址所在网段产生IP前缀路由。
本命令仅对分布式VXLAN IP网关(在VSI虚接口上执行distributed-gateway local命令)生效。在集中式VXLAN IP网关上,只产生VSI虚接口IP地址和MAC对应关系的MAC/IP发布路由,不会产生IP前缀路由,不受本命令的控制。
(1) 进入系统视图。
system-view
(2) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 配置分布式VXLAN IP网关中VSI虚接口IP地址所在网段不产生IP前缀路由。
ip-prefix-route generate disable
缺省情况下,对于分布式VXLAN IP网关,VSI虚接口IP地址所在网段会产生IP前缀路由。
EVPN分布式网关从VXLAN隧道接收到RS消息后会丢弃该报文,且网关仅周期性地向本地发送RA消息,不会向VXLAN隧道发送RA消息。若VXLAN隧道对端的分布式网关不支持主动向本地发送RA消息,也不支持根据RS消息应答RA消息,就会导致VXLAN隧道对端的设备无法根据RA消息来更新网关信息。开启本功能后,对于从VXLAN隧道接收到的RS消息,网关会应答RA消息,并且网关会周期性地向VXLAN隧道发送RA消息,以保证VXLAN隧道对端的设备能够收到RA消息,并根据该消息来更新网关信息。
系统视图和VSI虚接口视图下均可以开启网关向VXLAN隧道发送RA消息功能。系统视图的配置对所有VSI虚接口都有效,而VSI虚接口视图下的配置只对当前VSI虚接口有效。对于一个VSI虚接口来说,优先采用该VSI虚接口视图下的配置,只有该VSI虚接口下未进行配置时,才采用系统视图的配置。
(1) 进入系统视图。
system-view
(2) 全局开启网关向VXLAN隧道发送RA消息功能。
ipv6 nd ra tunnel-broadcast global enable
缺省情况下,网关向VXLAN隧道发送RA消息功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 开启网关向VXLAN隧道发送RA消息功能。
ipv6 nd ra tunnel-broadcast enable
缺省情况下,与系统视图下配置的网关向VXLAN隧道发送RA消息功能的开启状态一致。
在EVPN分布式网关上配置L3VNI后,网关会自动创建与该L3VNI关联的VSI。用户无法进入该VSI的视图,无法对其进行配置。
通过本配置开启与L3VNI关联的VSI的流量统计功能后,设备将对该VSI接收和发送的报文进行统计。通过display l2vpn vsi verbose命令可以查看统计信息;通过reset l2vpn statistics vsi命令可以清除统计信息。
(1) 进入系统视图。
system-view
(2) 开启与L3VNI关联的VSI的流量统计功能,同时开启VSI实例内所有VXLAN隧道的报文统计功能。
l2vpn statistics vsi l3-vni
缺省情况下,与L3VNI关联的VSI的流量统计功能处于关闭状态,VSI实例内VXLAN隧道的报文统计功能处于关闭状态。
在EVPN分布式网关下行连接VTEP的组网中,分布式网关通过IP前缀路由通告网关的ARP信息。VTEP设备上由于不存在网关配置而无法学习到网关的ARP信息,导致其不能将流量转发到网关设备。此时,可以在分布式网关设备上开启本功能,使得该网关通过MAC/IP发布路由通告分布式网关的ARP信息(即作为分布式网关的VSI虚接口的IP地址和MAC地址),使VTEP学习到网关的ARP信息。
(1) 进入系统视图。
system-view
(2) 开启通过MAC/IP发布路由通告分布式网关ARP信息的功能。
evpn mac-ip advertise distributed-gateway
缺省情况下,通过MAC/IP发布路由通告分布式网关ARP信息的功能处于关闭状态。
缺省情况下,设备从VXLAN隧道接收到报文后可以自动学习远端虚拟机的MAC地址和ARP/ND信息。在EVPN组网中,为了避免自动学习的远端MAC地址/ARP信息/ND信息与通过BGP通告的MAC地址/ARP信息/ND信息冲突,需要关闭远端MAC地址和远端ARP/ND自动学习功能。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(1) 进入系统视图。
system-view
(2) 关闭远端MAC地址自动学习功能。
vxlan tunnel mac-learning disable
缺省情况下,远端MAC地址自动学习功能处于开启状态。
(3) 关闭远端ARP自动学习功能。
vxlan tunnel arp-learning disable
缺省情况下,远端ARP自动学习功能处于开启状态。
(4) 关闭远端ND自动学习功能。
vxlan tunnel nd-learning disable
缺省情况下,远端ND自动学习功能处于开启状态。
VTEP可能会同时向远端VTEP通告MAC地址信息和ARP/ND信息。其中,ARP/ND信息中已经包含MAC地址信息。为了避免重复,可以执行本配置来禁止本端VTEP向远端VTEP通告MAC地址信息。执行本配置后,本端VTEP还会撤销已经发布的MAC地址信息。
(1) 进入系统视图。
system-view
(2) 进入EVPN实例视图。
evpn instance instance-name
(3) 配置禁止通告MAC地址信息,并撤销已经通告的MAC地址信息。
mac-advertising disable
缺省情况下,允许通告MAC地址信息。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation vxlan
(4) 配置禁止通告MAC地址信息,并撤销已经通告的MAC地址信息。
mac-advertising disable
缺省情况下,允许通告MAC地址信息。
EVPN VXLAN组网中,不同VTEP下的设备如果错误地配置了相同的MAC地址,会造成VTEP间不断同步MAC地址信息,并更新本地EVPN的MAC地址表项。此时VTEP认为该设备在不断迁移。这种情况可能会使VTEP间形成环路,占用大量的链路带宽。开启本功能后,若在检测周期内某MAC地址从本地迁移到远端的次数超过阈值,则抑制最后一次由远端向本地迁移,即仅本地学习但不对外通告该MAC地址,避免VTEP间形成环路。
执行undo evpn route mac-mobility suppression命令或MAC地址的抑制时间超过抑制恢复时间时,如果VTEP上被抑制迁移的MAC地址未老化,则立即向远端通告该MAC地址;如果VTEP上被抑制迁移的MAC地址已经老化,则VTEP重新从本地学习该MAC地址后再对外通告。
当MAC地址表项和ARP表项均发生冲突时,需要同时开启MAC地址反复迁移抑制功能和ARP反复迁移抑制功能。如果仅开启MAC地址表项抑制功能,则会导致MAC地址表项抑制失败。
(1) 进入系统视图。
system-view
(2) 开启MAC地址反复迁移抑制功能。
evpn route mac-mobility suppression [ detect-cycle detect-time | detect-threshold move-times | suppression-time [ suppression-time | permanent ] ] *
缺省情况下,MAC地址反复迁移抑制功能处于关闭状态。
VTEP可能会同时接收到远端VTEP通告的MAC地址信息和ARP/ND信息。其中,ARP/ND信息中包含MAC地址信息。为了避免重复,可以在VTEP上执行本配置来禁止EVPN从ARP/ND信息中学习MAC地址表项,EVPN仅通过MAC地址信息学习远端MAC地址表项。
(1) 进入系统视图。
system-view
(2) 进入EVPN实例视图。
evpn instance instance-name
(3) 配置禁止EVPN从ARP信息中学习MAC地址表项。
arp mac-learning disable
缺省情况下,EVPN可以从ARP信息中学习MAC地址表项。
(4) 配置禁止EVPN从ND信息中学习MAC地址表项。
nd mac-learning disable
缺省情况下,EVPN可以从ND信息中学习MAC地址表项。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation vxlan
(4) 配置禁止EVPN从ARP信息中学习MAC地址表项。
arp mac-learning disable
缺省情况下,EVPN可以从ARP信息中学习MAC地址表项。
(5) 配置禁止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信息。
(1) 进入系统视图。
system-view
(2) 进入EVPN实例视图。
evpn instance instance-name
(3) 配置禁止通告ARP信息,并撤销已经通告的ARP信息。
arp-advertising disable
缺省情况下,允许通告ARP信息。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation vxlan
(4) 配置禁止通告ARP信息,并撤销已经通告的ARP信息。
arp-advertising disable
缺省情况下,允许通告ARP信息。
在EVPN分布式网关组网中,如果同一个VXLAN内的所有用户终端都部署在同一台EVPN网关下,则EVPN不需要通告该VXLAN的ND信息(同时携带MAC和IPv6地址的MAC/IP发布路由),只需通告IP前缀路由,其他VXLAN内的用户终端通过IP前缀路由即可访问该VXLAN。此时,可以配置本命令禁止EVPN通告ND信息,以减少占用的设备和网络资源。执行本命令后,设备还会撤销已经发布的ND信息。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation vxlan
(4) 开启通告ND信息功能。
nd-advertising enable
缺省情况下,允许通告ND信息。
集中式EVPN网关组网中,虚拟机VM 1和VM 2属于同一VXLAN,所属网段为10.1.1.0/24,VSI虚接口1为该VXLAN的网关接口,网关连接的外部三层网络为10.1.2.0/24。若连接VM 2的VTEP上配置了ARP/ND泛洪抑制功能,则VM 2的地址错误地配置为10.1.2.0/24网段的地址(如10.1.2.2)时,连接VM 2的VTEP会向网关发送携带ARP/ND信息(IP为10.1.2.2,MAC为VM 2的MAC)的MAC/IP发布路由,网关会学习该ARP/ND并下发到转发表。这种情况下,若VM 1访问外部网络中的10.1.2.2,则网关会将流量转发至VM 2,造成VM 1无法访问10.1.2.2。
配置本功能后,网关不会跨网段学习MAC/IP发布路由中的ARP/ND信息,从而解决上述问题。
(1) 进入系统视图。
system-view
(2) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(3) 配置禁止集中式EVPN网关跨网段学习MAC/IP发布路由中的ARP/ND信息。
evpn span-segment { arp-learning | nd-learning } disable
缺省情况下,集中式EVPN网关可以跨网段学习MAC/IP发布路由中的ARP/ND信息。
EVPN VXLAN组网中,不同VTEP下的设备如果错误地配置了相同的IP地址,会造成VTEP间不断同步ARP信息并更新本地EVPN的ARP表项信息,此时VTEP认为该设备在不断迁移。这种情况可能会使VTEP间形成环路,占用大量的链路带宽。开启本功能后,若检测周期内某ARP信息从本地迁移到远端的次数超过阈值,则抑制最后一次由远端向本地迁移,即仅本地学习但不对外通告该ARP信息,避免VTEP间形成环路。
ARP反复迁移抑制功能仅在EVPN VXLAN分布式网关组网中生效。
执行undo evpn route arp-mobility suppression命令或ARP表项的抑制时间超过抑制恢复时间时,如果VTEP上被抑制迁移的ARP表项未老化,则立即向远端通告该ARP信息;如果VTEP上被抑制迁移的ARP表项已经老化,则VTEP重新从本地学习该ARP信息后再对外通告。
当MAC地址表项和ARP表项均发生冲突时,需要同时开启MAC地址反复迁移抑制功能和ARP反复迁移抑制功能。如果仅开启MAC地址表项抑制功能,则会导致MAC地址表项抑制失败。
(1) 进入系统视图。
system-view
(2) 开启ARP反复迁移抑制功能。
evpn route arp-mobility suppression [ detect-cycle detect-time | detect-threshold move-times | suppression-time [ suppression-time | permanent ] ] *
缺省情况下,ARP反复迁移抑制功能处于关闭状态。
EVPN VXLAN组网中,如果不同VTEP学习到了相同的本地ND表项,则VTEP会不断在彼此之间同步ND信息,并更新本地EVPN的ND表项信息,此时VTEP认为该设备在不断迁移。这种情况可能会使VTEP间形成环路,占用大量的链路带宽。开启本功能后,若检测周期内某ND信息从本地迁移出到远端的次数超过阈值,则抑制最后一次由远端向本地迁移,即仅本地学习但不对外通告该ND信息,避免VTEP间形成环路。
执行undo evpn route nd-mobility suppression命令或ND表项的抑制时间超过抑制恢复时间时,如果VTEP上被抑制迁移的ND表项未老化,则立即向远端通告该ND信息;如果VTEP上被抑制迁移的ND表项已经老化,则VTEP重新从本地学习该ND信息后再对外通告。
ND反复迁移抑制功能仅在如下两种组网中生效:
· 启用ND泛洪抑制功能的EVPN VXLAN组网
· EVPN VXLAN分布式网关组网
当MAC地址表项和ND表项均发生冲突时,需要同时开启MAC地址反复迁移抑制功能和ND反复迁移抑制功能。如果仅开启MAC地址表项抑制功能,则会导致MAC地址表项抑制失败。
(1) 进入系统视图。
system-view
(2) 开启ND反复迁移抑制功能。
evpn route nd-mobility suppression [ detect-cycle detect-time | detect-threshold move-times | suppression-time [ suppression-time | permanent ] ] *
缺省情况下,ND反复迁移抑制功能处于关闭状态。
EVPN VXLAN组网中,VM 1连接VTEP 1,VM 2连接VTEP 2,VM 1和VM 2属于同一网段。VTEP 1和VTEP 2分别配置VSI虚接口作为VM 1和VM 2的网关,VTEP 1和VTEP 2均配置如下功能:
· VTEP 1和VTEP 2建立BGP EVPN邻居
· 禁止EVPN从ARP信息中学习MAC地址表项
· 禁止通告MAC地址信息,并撤销已经通告的MAC地址信息
· 关闭远端MAC地址自动学习功能
· VSI虚接口开启本地代理ARP功能
· VTEP 1和VTEP 2的VSI虚接口的IP地址、MAC地址均不同
在该组网中,VM 1希望访问VM 2时,VM 1发送ARP请求报文,VTEP 1学习VM 1的MAC地址并代理应答VM 1的ARP请求报文。同时VTEP 1发送ARP请求报文请求VM 2的MAC地址。VM 2单播应答VTEP 1的ARP请求。VTEP 2不会从VM 2的ARP应答报文中学习VM 2的MAC地址,由于VTEP 1关闭了远端MAC地址自动学习功能,也不会学习VM 2的MAC地址,无法形成表项,导致VM 1无法访问VM 2。
为解决上述问题,可在VTEP 2上配置本功能,使VTEP 2收到VTEP 1的ARP请求报文时,生成以VSI虚接口IP地址为源的ARP请求,并同时广播两个ARP请求。VM 2分别应答VTEP 1和VTEP 2的ARP请求。VTEP 2从VM 2发给自己的ARP应答报文中学习VM 2的MAC地址,并通过EVPN路由发布给VTEP 1。VTEP 1和VTEP 2均获得VM 1和VM 2的MAC地址信息后,VM 1和VM 2可以互相访问。
(1) 进入系统视图。
system-view
(2) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 开启ARP请求代理发送功能。
arp proxy-send enable
缺省情况下,ARP请求代理发送功能处于关闭状态。
EVPN VXLAN组网中,VM 1连接VTEP 1,VM 2连接VTEP 2,VM 1和VM 2属于同一网段。VTEP 1和VTEP 2分别配置VSI虚接口作为VM 1和VM 2的网关,VTEP 1和VTEP 2均配置如下功能:
· VTEP 1和VTEP 2建立BGP EVPN邻居
· 禁止EVPN从ND信息中学习MAC地址表项
· 禁止通告MAC地址信息,并撤销已经通告的MAC地址信息
· 关闭远端MAC地址自动学习功能
· VSI虚接口开启本地代理ND功能
· VTEP 1和VTEP 2的VSI虚接口的IPv6地址、MAC地址均不同
在该组网中,VM 1希望访问VM 2时,VM 1发送NS报文,VTEP 1学习VM 1的MAC地址并代理应答VM 1的NS报文。同时VTEP 1发送NS报文请求VM 2的MAC地址。VM 2单播应答VTEP 1的ND请求。VTEP 2不会从VM 2的NA报文中学习VM 2的MAC地址,由于VTEP 1关闭了远端MAC地址自动学习功能,也不会学习VM 2的MAC地址,无法形成表项,导致VM 1无法访问VM 2。
为解决上述问题,可在VTEP 2上配置本命令,使VTEP 2收到VTEP 1的NS报文时,生成以VSI虚接口IPv6地址为源的NS报文,并同时组播两个NS报文。VM 2分别应答VTEP 1和VTEP 2的NS报文。VTEP 2从VM 2发给自己的NA报文中学习VM 2的MAC地址,并通过EVPN路由发布给VTEP 1。VTEP 1和VTEP 2均获得VM 1和VM 2的MAC地址信息后,VM 1和VM 2可以互相访问。
(1) 进入系统视图。
system-view
(2) 进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
(3) 开启ND请求代理发送功能。
ipv6 nd proxy-send enable
缺省情况下,ND请求代理发送功能处于关闭状态。
执行本配置后,只有存在报文转发需求时,设备上才会将远端MAC地址表项、主机路由FIB表项或远端ARP表项下发到硬件,以节省设备的硬件资源。
本功能仅用于EVPN组网。非EVPN组网中,不要配置本功能。
缺省情况下,设备会直接生成主机路由FIB表项,并下发到硬件。开启本功能后,设备不会直接将主机路由FIB表项下发到硬件,只有在报文转发过程中需要使用主机路由FIB表项时,才会将其下发到硬件,以节省设备的硬件资源。
用户配置的老化时间过长或者过短,都可能影响设备的运行性能:
· 如果用户配置的老化时间过长,设备可能会保存许多过时的主机路由FIB表项,从而耗尽主机路由FIB表项资源,导致设备无法根据网络的变化及时更新主机路由FIB表项。
· 如果用户配置的老化时间太短,设备可能会删除有效的主机路由FIB表项,导致表项震荡,影响设备的运行性能。
所以用户需要根据实际情况,配置合适的老化时间来有效地实现主机路由FIB表项老化功能。
开启本功能后,当设备收到目的IP地址匹配直连路由、但不存在对应主机路由的报文时,会创建探测节点,周期性发送ARP请求来学习目的IP地址的主机路由。如果在探测节点老化时间内收到50次目的IP地址相同的报文,且设备没有学习到此IP地址的主机路由,则设备会添加目的IP地址为此地址的黑洞路由,丢弃后续发往该IP地址的报文,直到探测节点老化删除,或者设备学习到目的IP地址的主机路由。
(1) 进入系统视图。
system-view
(2) 开启报文转发时下发主机路由FIB表项功能。
ip forwarding-conversational-learning [ aging aging-time ]
缺省情况下,报文转发时下发主机路由FIB表项功能处于关闭状态。
缺省情况下,设备会直接生成主机路由IPv6 FIB表项,并下发到硬件。开启本功能后,设备不会直接将主机路由IPv6 FIB表项下发到硬件,只有在报文转发过程中需要使用主机路由IPv6 FIB表项时,才会将其下发到硬件,以节省设备的硬件资源。
用户配置的老化时间过长或者过短,都可能影响设备的运行性能:
· 如果用户配置的老化时间过长,设备可能会保存许多过时的主机路由IPv6 FIB表项,从而耗尽主机路由IPv6 FIB表项资源,导致设备无法根据网络的变化更新主机路由IPv6 FIB表项。
· 如果用户配置的老化时间太短,设备可能会删除有效的主机路由IPv6 FIB表项,可能导致表项震荡,影响设备的运行性能。
所以用户需要根据实际情况,配置合适的老化时间来有效地实现主机路由IPv6 FIB表项老化功能。
(1) 进入系统视图。
system-view
(2) 开启报文转发时下发主机路由IPv6 FIB表项功能。
ipv6 forwarding-conversational-learning [ aging aging-time ]
缺省情况下,报文转发时下发主机路由IPv6 FIB表项功能处于关闭状态。
在BGP IPv4或BGP IPv6单播地址族下配置BGP EVPN路由引入BGP单播路由表后,设备会将从对等体/对等体组收到的包含ARP/ND信息的MAC/IP发布路由添加到BGP IPv4或BGP IPv6单播路由表,并发布到本地站点。
在BGP-VPN IPv4或BGP-VPN IPv6单播地址族下配置BGP EVPN路由引入BGP单播路由表后,设备会将从对等体/对等体组收到的包含ARP/ND信息的MAC/IP发布路由添加到VPN实例对应的BGP IPv4或BGP IPv6单播路由表,如果执行了advertise l2vpn evpn命令配置允许向本地站点发布BGP EVPN路由,则该路由会发布到本地站点,否则,该路由不会发布到本地站点。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4或BGP IPv6单播地址族视图。
address-family { ipv4 | ipv6 }
(4) 配置将包含ARP/ND信息的MAC/IP发布路由引入BGP IPv4或BGP IPv6单播路由表。
import evpn mac-ip
缺省情况下,禁止将包含ARP/ND信息的MAC/IP发布路由引入BGP IPv4或BGP IPv6单播路由表。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP-VPN实例视图。
ip vpn-instance vpn-instance-name
(4) 进入BGP-VPN IPv4或BGP-VPN IPv6单播地址族视图。
address-family { ipv4 | ipv6 }
(5) 配置将包含ARP/ND信息的MAC/IP发布路由引入BGP-VPN IPv4或BGP-VPN IPv6单播路由表。
import evpn mac-ip
缺省情况下,禁止将包含ARP/ND信息的MAC/IP发布路由引入BGP-VPN IPv4或BGP-VPN IPv6单播路由表。
配置本功能后,设备将BGP EVPN路由添加到VPN实例的路由表时,VPN实例中的该路由将会继承到达原EVPN路由下一跳的IGP路由的Metric值,即该路由在VPN实例路由表中的IGP Metric值为到达原EVPN路由下一跳的IGP路由的Metric值。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP EVPN地址族视图。
address-family l2vpn evpn
(4) 配置将BGP EVPN路由添加到VPN实例路由表时,路由的Metric值为到达原EVPN路由下一跳的IGP路由的Metric值。
igp-metric inherit
缺省情况下,将BGP EVPN路由添加到VPN实例路由表时,路由的Metric值变为0。
在IP路由表中,对于相同的目的地,不同的路由协议、直连路由和静态路由可能会发现不同的路由,但这些路由并不都是最优的。为了判断最优路由,各路由协议、直连路由和静态路由都被赋予了一个优先级,具有较高优先级的路由协议发现的路由将成为最优路由。
本功能用来设置来自EBGP对等体和来自IBGP对等体的MAC/IP发布路由(EVPN 2类路由)的优先级,或应用路由策略为通过匹配规则过滤的MAC/IP发布路由配置优先级,以改变该路由被添加到VPN实例IP路由表后被选为最优路由的可能性。
根据路由策略设置路由的优先级时,需要在指定的路由策略中通过apply preference命令配置路由的优先级。如果没有在路由策略中配置apply preference命令,则通过匹配规则过滤的路由使用缺省的优先级。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP-VPN实例视图。
ip vpn-instance vpn-instance-name
(4) 进入BGP-VPN IPv4单播地址族视图或BGP-VPN IPv6单播地址族视图。
¡ 进入BGP-VPN IPv4单播地址族视图。
address-family ipv4 [ unicast ]
¡ 进入BGP-VPN IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(5) 配置引入单播地址族的MAC/IP发布路由的优先级。
evpn mac-ip preference { external-preference internal-preference | route-policy route-policy-name }
缺省情况下,来自EBGP对等体的路由的优先级为255,来自IBGP对等体的路由的优先级为255。
配置允许对外发布BGP EVPN路由后,设备接收到BGP EVPN的IP前缀路由和包含ARP/ND信息的MAC/IP发布路由,并将其添加到某个VPN实例路由表后,会将IP前缀路由和包含ARP/ND信息的MAC/IP发布路由(私网路由)发布到本地站点。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP-VPN实例视图。
ip vpn-instance vpn-instance-name
(4) 进入BGP-VPN IPv4单播地址族视图。
address-family ipv4 [ unicast ]
(5) 配置允许向本地站点发布BGP EVPN路由。
advertise l2vpn evpn
缺省情况下,允许向本地站点发布BGP EVPN路由。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP-VPN实例视图。
ip vpn-instance vpn-instance-name
(4) 进入BGP-VPN IPv6单播地址族视图。
address-family ipv6 [ unicast ]
(5) 配置允许向本地站点发布BGP EVPN路由。
advertise l2vpn evpn
缺省情况下,允许向本地站点发布BGP EVPN路由。
缺省情况下,VTEP从本地站点内接收到目的MAC地址为广播、未知单播和未知组播的数据帧后,会在该VXLAN内除接收接口外的所有本地接口和VXLAN隧道上泛洪该数据帧,将该数据帧发送给VXLAN内的所有站点;VTEP从VXLAN隧道接收到目的MAC地址为广播、未知单播和未知组播的数据帧后,会在该VXLAN内的所有本地接口上泛洪该数据帧。通过本配置可以手工禁止某类数据帧在VXLAN内泛洪,以减少网络中的泛洪流量。
禁止通过VXLAN隧道向远端站点泛洪后,为了将某些单播或组播MAC地址的数据帧泛洪到远端站点以保证某些业务的流量在站点间互通,可以配置选择性泛洪的MAC地址,当数据帧的目的MAC地址匹配该MAC地址时,该数据帧可以泛洪到远端站点。
本配置中各命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
在VSI视图下,同时配置flooding disable all [ all-direction ]命令和selective-flooding mac-addres命令,则selective-flooding mac-addres命令不生效。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 关闭VSI的泛洪功能。
flooding disable { all | { broadcast | unknown-multicast | unknown-unicast } * } [ all-direction ]
缺省情况下,VSI泛洪功能处于开启状态。
unknown-multicast和unknown-unicast参数必须同时指定。
数据中心互联场景中,如果只想禁止向数据中心间的VXLAN-DCI隧道泛洪,而数据中心内部的VXLAN隧道可以泛洪,请指定dci参数。
(4) (可选)配置VSI选择性泛洪的MAC地址。
selective-flooding mac-address mac-address
本功能适用于通过AC关联VSI或者配置VLAN关联VXLAN的场景,这些场景都需要通过AC来关联VSI,泛洪抑制功能在VSI下配置。
VLAN关联VXLAN的详细介绍,请参见“VXLAN配置指导”中的“VXLAN”。
开启ARP/ND泛洪抑制时,如果同时执行flooding disable命令关闭了VSI的泛洪功能,则建议通过mac-address timer命令配置动态MAC地址的老化时间大于25分钟(ARP/ND泛洪抑制表项的老化时间),以免MAC地址在ARP/ND泛洪抑制表项老化之前老化,产生黑洞MAC地址。
如果配置了vxlan tunnel arp-learning disable或vxlan tunnel nd-learning disable命令,则设备从VXLAN隧道上接收到ARP/ND请求报文后,不会采用匹配的ARP/ND泛洪抑制表项对其进行应答。
ARP泛洪抑制表项可以通过reset arp suppression vsi命令清除,不能通过reset arp命令清除。reset arp suppression vsi命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”;reset arp命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“ARP”。
ND泛洪抑制表项可以通过reset ipv6 nd suppression vsi命令清除,不能通过reset ipv6 neighbors命令清除。reset ipv6 nd suppression vsi命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”;reset ipv6 neighbors命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“IPv6基础”。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 开启ARP泛洪抑制功能。
arp suppression enable
缺省情况下,ARP泛洪抑制功能处于关闭状态。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 开启ND泛洪抑制功能。
ipv6 nd suppression enable
缺省情况下,ND泛洪抑制功能处于关闭状态。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
本项目适用于开启了VLAN映射VXLAN功能的场景。此场景直接将VLAN与VXLAN关联,泛洪抑制功能在VLAN下配置。
(1) 进入系统视图。
system-view
(2) 进入VLAN视图。
vlan vlan-id
(3) 开启VLAN下的ARP泛洪抑制功能。
arp suppression enable
缺省情况下,ARP泛洪抑制功能处于关闭状态。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
开启EVPN告警功能后,当MAC地址迁移次数达到设置的阈值时会产生告警信息。生成的告警信息将发送到设备的SNMP模块,通过设置SNMP中告警信息的发送参数,来决定告警信息输出的相关属性。
有关告警信息的详细介绍,请参见“网络管理和监控配置指导”中的“SNMP”。
(1) 进入系统视图。
system-view
(2) 开启EVPN告警功能。
snmp-agent trap enable evpn [ mac-mobility-suppression ]
缺省情况下,EVPN告警功能处于关闭状态。
在两台VTEP上均开启EVPN支持M-LAG功能,并为其配置相同的虚拟VTEP地址后,这两台VTEP将虚拟成为一台VTEP设备,设备采用虚拟VTEP地址作为源端地址与远端VTEP自动建立VXLAN隧道,从而避免VTEP单点故障对网络造成影响。
在EVPN M-LAG组网中,组成M-LAG系统的两台VTEP上AC配置可能不一致,若某个AC仅连接到其中一台VTEP,该AC称为单挂AC。执行evpn m-lag local命令后,VTEP发布从单挂AC学习到的路由信息时,将路由的下一跳设置为该命令配置的本地VTEP地址(local-ipv4-address或local-ipv6-address),从而保证该AC的流量不会错误地转发到另一台VTEP。VTEP从remote-ipv4-address或remote-ipv6-address接收到EVPN路由后,不会与其建立VXLAN隧道,以免单挂AC的流量转发失败。
采用直连模式peer-link链路时,如果存在单挂AC,则必须执行evpn m-lag local命令。
配置EVPN分布式聚合时,需要注意:
· 开启、关闭EVPN的分布式聚合模式后,需要在BGP实例视图下执行address-family l2vpn evpn命令,以便设备采用新的隧道源端地址与远端VTEP建立隧道。
· 分布式聚合的虚拟VTEP地址不能指定为接口的从IP地址。
· Underlay网络为IPv4网络(或IPv6网络)时,分布式聚合的虚拟VTEP地址必须同为IPv4地址(或IPv6地址),否则会导致作为DR设备的VTEP无法与远端VTEP(非DR设备)建立VXLAN隧道。
· 若用户通过irf member renumber命令修改了设备的成员编号,则建议将设备的成员编号配置为1~5。
配置采用直连模式peer-link链路的EVPN支持M-LAG时,需要注意:
· 根据用户侧以太网服务实例的报文匹配规则创建peer-link链路上的AC时,用户侧以太网服务实例配置的报文匹配规则只能为匹配报文的外层VLAN tag(encapsulation s-vid { vlan-id | vlan-id-list })、匹配不携带VLAN tag的所有报文(encapsulation untagged),且AC的接入模式必须为VLAN模式。
· 采用VXLAN ID映射方式生成peer-link链路上动态AC的报文匹配规则,AC的接入模式必须为VLAN模式。
· 作为M-LAG设备的两台VTEP上,同一M-LAG接口以及单挂AC口上以太网服务实例的匹配规则、关联的VSI对应的VXLAN ID必须一致,且只能采用手工方式创建AC。
· 建议不要在作为M-LAG设备的两台VTEP上引入外部路由。
作为M-LAG设备的VTEP从M-LAG接口或VXLAN隧道学习到MAC地址,并通过peer-link链路将MAC地址同步给远端VTEP(另一台 M-LAG功能后)后,在本端VTEP上手动删除MAC地址表项,远端VTEP(M-LAG设备)上的MAC地址表项不会随之删除,只能等待MAC地址老化时间到达后,才会删除远端VTEP上的表项。
站点网络为IPv6网络时,如果在作为M-LAG设备的VTEP上开启ND泛洪抑制功能,则任意一台VTEP从M-LAG接口上接收到NS报文后,作为M-LAG设备的两台VTEP均会回复NA报文。
VTEP 1和VTEP 2组成M-LAG系统,并通过路由反射器在VTEP 1和VTEP 2之间反射路由。VTEP 1上执行evpn m-lag local命令后,如果在VTEP 2上也执行了evpn m-lag local命令或VTEP 1上执行undo evpn m-lag local命令取消配置,则需要通过reset arp、reset arp suppression vsi、reset ipv6 neighbors、reset ipv6 nd suppression vsi命令清除ARP、ARP泛洪抑制、ND和ND泛洪抑制表项,并重新学习这些表项,否则会导致部分流量转发失败。
在EVPN M-LAG组网中,除本配置外,还需执行以下配置:
· 配置M-LAG,并根据实际情况进行其他EVPN配置。M-LAG的配置方法请参见“二层技术-以太网交换配置指导”中的“M-LAG”。
· 为了避免M-LAG协议将接口置为M-LAG MAD DOWN状态,需要将如下参与EVPN业务的接口配置为保留接口:
¡ 执行m-lag mad default-action none命令使M-LAG系统分裂后接口保持原状态不变。
¡ M-LAG接口和peer-link接口所在VLAN对应的VLAN接口不需要做任何配置,M-LAG系统分裂后,这些端口不会Down。
¡ 采用直连模式peer-link链路时:上行接口(路由口、VLAN接口、物理接口)需要通过m-lag mad include interface命令配置为M-LAG非保留接口,M-LAG系统分裂后,这些端口会Down。
¡ 所有参与EVPN业务的接口(VSI虚接口、BGP对等体地址所在的接口、Keepalive链路的接口)不需要做任何配置,M-LAG系统分裂后,这些端口不会Down。
¡ M-LAG设备采用的虚拟地址(即evpn m-lag group命令配置的IP地址)所在的接口不需要做任何配置,M-LAG系统分裂后,这些端口不会Down。
· 执行m-lag restore-delay命令配置延迟恢复时间大于等于300秒。
· 在M-LAG设备上,需要关闭VXLAN隧道对应的二层以太网接口上的STP功能,以免上行设备错误地阻塞连接M-LAG设备的接口。
· 建议将peer-link接口的PVID配置为4094。否则,如果设备配置了通过VXLAN ID映射方式生成peer-link链路上动态AC的报文匹配规则(l2vpn m-lag peer-link ac-match-rule vxlan-mapping命令),可能会出现计算出的AC的报文匹配规则外层VLAN标签为peer-link接口的PVID,影响VLAN Tag为VXLAN ID%4094+1(VXLAN ID除以4094,取余后加1)的Underlay流量转发。
(1) 进入系统视图。
system-view
(2) 开启EVPN支持M-LAG功能,并配置虚拟VTEP地址。
evpn m-lag group virtual-vtep-ipv4
缺省情况下,EVPN支持M-LAG功能处于关闭状态。
不能通过重复执行本命令修改虚拟VTEP地址。如需修改,请先通过undo evpn m-lag group命令删除虚拟VTEP地址,再执行evpn m-lag group命令配置新的虚拟VTEP地址。
(3) 配置组成M-LAG系统的本地和远端VTEP的IPv4地址。
evpn m-lag local local-ipv4-address remote remote-ipv4-address [ mac-ip ]
缺省情况下,未指定组成M-LAG系统的本地和远端VTEP的IPv4地址。
本命令中指定的本地VTEP的IPv4地址必须是设备上本地接口的IPv4地址;指定的远端VTEP地址必须与远端VTEP上配置的本地IPv4地址保持一致。
(4) 配置M-LAG系统的本地VTEP地址仅对MAC/IP发布路由生效。
evpn m-lag local mac-ip
缺省情况下,M-LAG系统的本地VTEP地址对IMET路由、MAC/IP发布路由和IP前缀路由均生效。
(5) (可选)采用直连模式peer-link链路时,配置通过VXLAN ID映射方式生成peer-link链路上动态AC的报文匹配规则。
l2vpn m-lag peer-link ac-match-rule vxlan-mapping
缺省情况下,采用直连模式peer-link链路时,peer-link链路上动态AC的报文匹配规则与用户侧链路上AC的报文匹配规则相同。
peer-link链路上根据用户侧AC创建AC时,匹配相同外层VLAN Tag的不同以太网服务实例必须关联相同的VSI;采用VXLAN ID映射方式时,VTEP上创建的VXLAN的ID不能大于16000000。
(1) 进入系统视图。
system-view
(2) 开启EVPN支持M-LAG功能,并配置虚拟VTEP地址。
evpn m-lag group virtual-vtep-ipv6
缺省情况下,EVPN支持M-LAG功能处于关闭状态。
(3) 配置组成M-LAG系统的当前和远端VTEP的本地IPv6地址。
evpn m-lag local local-ipv6-address remote remote-ipv6-address [ mac-ip ]
缺省情况下,未指定组成M-LAG系统的当前和远端VTEP的本地IPv6地址。
本命令中指定当前VTEP的本地IPv6地址必须是设备上本地接口的IPv6地址;指定的远端VTEP本地地址必须与远端VTEP上配置的本地IPv6地址保持一致。
(4) 配置M-LAG系统的本地VTEP地址仅对MAC/IP发布路由生效。
evpn m-lag local mac-ip
缺省情况下,M-LAG系统的本地VTEP地址对IMET路由、MAC/IP发布路由和IP前缀路由均生效。
(5) (可选)采用直连模式peer-link链路时,配置通过VXLAN ID映射方式生成peer-link链路上动态AC的报文匹配规则。
l2vpn m-lag peer-link ac-match-rule vxlan-mapping
缺省情况下,采用直连模式peer-link链路时,peer-link链路上动态AC的报文匹配规则与用户侧链路上AC的报文匹配规则相同。
peer-link链路上根据用户侧AC创建AC时,匹配相同外层VLAN Tag的不同以太网服务实例必须关联相同的VSI;采用VXLAN ID映射方式时,VTEP上创建的VXLAN的ID不能大于16000000。
在完成上述配置后,在任意视图下执行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 | ipv6-address } { advertised-routes | received-routes } [ statistics ] | [ route-distinguisher route-distinguisher | route-type { auto-discovery | es | igmp-ls | igmp-js | imet | ip-prefix | mac-ip | s-pmsi | smet } ] * [ { evpn-route route-length | evpn-prefix } [ advertise-info | as-path | cluster-list | community | ext-community ] | { ipv4-address | ipv6-address | mac-address } [ verbose ] ] | statistics ] display bgp [ instance instance-name ] l2vpn evpn [ route-distinguisher route-distinguisher ] [ statistics ] community [ community-number&<1-32> | aa:nn&<1-32> ] [ internet | no-advertise | no-export | no-export-subconfed ] [ whole-match ] display bgp [ instance instance-name ] l2vpn evpn [ route-distinguisher route-distinguisher ] [ statistics ] community-list { basic-community-list-number | adv-community-list-number | comm-list-name } [ whole-match ] display bgp [ instance instance-name ] l2vpn evpn [ route-distinguisher route-distinguisher ] [ statistics ] ext-community [ bandwidth link-bandwidth-value | rt route-target | soo site-of-origin]&<1-32> [ whole-match ] |
显示BGP对等体或对等体组的状态和统计信息 |
display bgp [ instance instance-name ] peer l2vpn evpn [ ipv4-address mask-length | ipv6-address prefix-length | { ipv4-address | ipv6-address | group-name group-name } log-info | [ ipv4-address ] verbose ] |
显示BGP打包组的相关信息 |
display bgp [ instance instance-name ] update-group l2vpn evpn [ ipv4-address | ipv6-address ] |
显示EVPN通过BGP自动发现的IPv4邻居信息 |
display evpn auto-discovery { { imet | mac-ip } [ peer ip-address] [ vsi vsi-name ] | macip-prefix [ nexthop next-hop ] [ count ] } |
显示从M-LAG远端设备同步过来的MAC地址信息 |
display evpn m-lag synchronized-mac [ vsi vsi-name ] [ count ] |
显示EVPN的ES信息 |
display evpn es { local [ vsi vsi-name | xconnect-group group-name ] [ esi esi-id ] [ verbose ] | remote [ vsi vsi-name | xconnect-group group-name ] [ esi esi-id ] [ nexthop next-hop ] } |
显示DF选举的信息 |
display evpn df-election [ vsi vsi-name ] [ esi esi-id ] |
显示EVPN实例信息 |
display evpn instance [ name instance-name | vsi vsi-name ] vxlan |
显示EVPN通过BGP自动发现IPv6的邻居信息 |
display evpn ipv6 auto-discovery { imet [ peer ipv6-address ] [ vsi vsi-name ] | mac-ip | macip-prefix [ nexthop next-hop ] [ count ] } |
显示IPv6 EVPN的MAC地址信息 |
display evpn ipv6 route mac [ local | remote | nexthop ipv6-address ] [ vsi vsi-name ] [ count ] |
显示EVPN的ARP信息 |
display evpn route arp [ local | remote ] [ public-instance | vpn-instance vpn-instance-name ] [ count ] |
显示EVPN的ARP泛洪抑制信息 |
display evpn route arp suppression [ local | remote ] [ vsi vsi-name ] [ count ] |
显示EVPN的ARP迁移信息 |
display evpn route arp-mobility [ public-instance | vpn-instance vpn-instance-name ] [ ip ip-address ] |
显示EVPN的组播路由信息 |
display evpn route { igmp-js | igmp-ls | smet } [ local | remote ] [ vsi vsi-name ] [ count ] |
显示EVPN的MAC地址信息 |
display evpn route mac [ local | remote | nexthop ipv4-address ] [ vsi vsi-name ] [ count ] |
显示EVPN的MAC地址迁移信息 |
display evpn [ ipv6 ] route mac-mobility [ vsi vsi-name ] [ mac-address mac-address ] |
显示EVPN的ND信息 |
display evpn route nd [ local | remote ] [ public-instance | vpn-instance vpn-instance-name ] [ count ] |
显示EVPN的ND泛洪抑制信息 |
display evpn route nd suppression [ local | remote ] [ vsi vsi-name ] [ count ] |
显示EVPN的ND迁移信息 |
display evpn route nd-mobility [ public-instance | vpn-instance vpn-instance-name ] [ ip ipv6-address ] |
显示EVPN的路由表信息 |
display evpn routing-table { public-instance | vpn-instance vpn-instance-name } [ nexthop ipv4-address ] [ count ] display evpn routing-table ipv6 { public-instance | vpn-instance vpn-instance-name } [ nexthop ipv6-address ] [ count ] |
显示EVPN多归属组网中满足水平分割原则的接口信息 |
display l2vpn forwarding evpn split-horizon { ac interface interface-type interface-number service-instance instance-id | tunnel tunnel-number } slot slot-number |
取消对ARP迁移的抑制 |
reset evpn route arp-mobility suppression [ public-instance | vpn-instance vpn-instance-name [ ip ip-address ] ] |
取消对MAC地址迁移的抑制 |
reset evpn route mac-mobility suppression [ vsi vsi-name [ mac mac-address ] ] |
取消对ND迁移的抑制 |
reset evpn route nd-mobility suppression [ public-instance | vpn-instance vpn-instance-name [ ip ipv6-address ] ] |
显示以太网服务实例上ARP网关保护的相关信息 |
display arp filter source service-instance [ interface interface-type interface-number [ service-instance instance-id ] ] [ slot slot-number ] |
本节仅以IPv4站点接入IPv4网络为例,IPv4站点接入IPv6、IPv6站点接入IPv4网络、IPv6站点接入IPv6网络的配置与此类似。
Switch A、Switch B为与服务器连接的VTEP设备;Switch C为与广域网连接的集中式EVPN网关设备;Switch D为RR,负责在交换机之间反射BGP路由。
虚拟机VM 1和VM 3属于VXLAN 10;VM 2和VM 4属于VXLAN 20。相同VXLAN之间可以二层互通,不同VXLAN之间、VXLAN与广域网之间可以通过集中式EVPN网关互通。
图2-2 集中式IPv4 EVPN网关配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在VM 1和VM 3上指定网关地址为10.1.1.1;在VM 2和VM 4上指定网关地址为10.1.2.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 配置VXLAN隧道工作在二层转发模式。
[SwitchA] undo vxlan ip-forwarding
# 关闭远端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] 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
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 2 3
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 在接口GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchA-GigabitEthernet1/0/1] service-instance 2000
[SwitchA-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchA-GigabitEthernet1/0/1-srv2000] xconnect vsi vpnb
[SwitchA-GigabitEthernet1/0/1-srv2000] quit
[SwitchA-GigabitEthernet1/0/1] quit
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 配置VXLAN隧道工作在二层转发模式。
[SwitchB] undo vxlan ip-forwarding
# 关闭远端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] 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
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-GigabitEthernet1/0/1] quit
# 在接口GigabitEthernet1/0/2上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] service-instance 2000
[SwitchB-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchB-GigabitEthernet1/0/2-srv2000] xconnect vsi vpnb
[SwitchB-GigabitEthernet1/0/2-srv2000] quit
[SwitchB-GigabitEthernet1/0/2] quit
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在VSI实例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
(6) 配置Switch D
# 配置Switch D与其他交换机建立BGP连接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP发布EVPN路由,并关闭BGP EVPN路由的VPN-Target过滤功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D为路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 验证EVPN网关设备Switch C
# 查看Switch C上的EVPN路由信息,可以看到Switch C发送了网关的MAC/IP路由和IMET路由,并接收到Switch A和Switch B发送的MAC/IP路由和IMET路由。(具体显示信息略)
# 查看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: 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 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: 0 packets, 0 bytes, 0 drops
# 查看Switch C上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchC] display interface vsi-interface brief
Brief information on interfaces in route mode:
Link: ADM - administratively down; Stby - standby
Protocol: (s) - spoofing
Interface Link Protocol Primary IP Description
Vsi1 UP UP 10.1.1.1
Vsi2 UP UP 10.1.2.1
# 查看Switch C上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchC] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
Tunnel1 0x5000001 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
Tunnel1 0x5000001 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
Public 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
Public 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
# 查看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之间可以互访。
本节仅以IPv4站点接入IPv4网络为例,IPv6站点接入IPv4网络的配置与此类似。
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网关实现三层互通,并采用对称IRB方式转发流量;VXLAN与广域网之间通过边界网关实现三层互通。
图2-3 分布式IPv4 EVPN网关配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在VM 1和VM 3上指定网关地址为10.1.1.1;在VM 2和VM 4上指定网关地址为10.1.2.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 创建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] evpn encapsulation vxlan
[SwitchA-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 2 3
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 在接口GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchA-GigabitEthernet1/0/1] service-instance 2000
[SwitchA-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchA-GigabitEthernet1/0/1-srv2000] xconnect vsi vpnb
[SwitchA-GigabitEthernet1/0/1-srv2000] quit
[SwitchA-GigabitEthernet1/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance 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-interface2。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance l3vpna
[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实例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
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] gateway vsi-interface 2
[SwitchA-vsi-vpnb] quit
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 创建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 4.4.4.4 as-number 200
[SwitchB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-GigabitEthernet1/0/1] quit
# 在接口GigabitEthernet1/0/2上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-type trunk
[SwitchB-GigabitEthernet1/0/2] port trunk permit vlan 3
[SwitchB-GigabitEthernet1/0/2] service-instance 2000
[SwitchB-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchB-GigabitEthernet1/0/2-srv2000] xconnect vsi vpnb
[SwitchB-GigabitEthernet1/0/2-srv2000] quit
[SwitchB-GigabitEthernet1/0/2] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpna
[SwitchB-vpn-instance-l3vpna] route-distinguisher 1: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-interface2。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] ip binding vpn-instance l3vpna
[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实例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
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 2
[SwitchB-vsi-vpnb] quit
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 配置BGP发布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 4.4.4.4 as-number 200
[SwitchC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3 VNI的RD和RT。
[SwitchC] ip vpn-instance l3vpna
[SwitchC-vpn-instance-l3vpna] route-distinguisher 1: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-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
# 配置缺省路由,下一跳为广域网中某台设备的IP地址20.1.1.100。
[SwitchC] ip route-static vpn-instance l3vpna 0.0.0.0 0 20.1.1.100
# 将缺省路由引入到VPN实例l3vpna的BGP IPv4单播路由表中。
[SwitchC] bgp 200
[SwitchC-bgp-default] ip vpn-instance l3vpna
[SwitchC-bgp-default-l3vpna] address-family ipv4 unicast
[SwitchC-bgp-default-ipv4-l3vpna] default-route imported
[SwitchC-bgp-default-ipv4-l3vpna] import-route static
[SwitchC-bgp-default-ipv4-l3vpna] quit
[SwitchC-bgp-default-l3vpna] quit
[SwitchC-bgp-default] quit
# 配置连接广域网的接口Vlan-interface20与VPN实例l3vpna关联。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip binding vpn-instance l3vpna
[SwitchC-Vlan-interface20] ip address 20.1.1.3 24
[SwitchC-Vlan-interface20] quit
(6) 配置Switch D
# 配置Switch D与其他交换机建立BGP连接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP发布EVPN路由,并关闭BGP EVPN路由的VPN-Target过滤功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D为路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 验证分布式EVPN网关设备Switch A
# 查看Switch A上的EVPN路由信息,可以看到Switch A发送了网关的IP前缀路由、各VSI的IMET路由和MAC/IP路由,并接收到Switch B发送的网关IP前缀路由、各VSI的IMET路由和MAC/IP路由。(具体显示信息略)
# 查看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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。(以VSI虚接口1为例)
[SwitchA] display interface vsi-interface brief
Brief information on interfaces in route mode:
Link: ADM - administratively down; Stby - standby
Protocol: (s) - spoofing
Interface Link Protocol Primary IP Description
Vsi1 UP UP 10.1.1.1
Vsi2 UP UP 10.1.2.1
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_3
VSI Index : 1
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 1000
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
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
GE1/0/1 srv1000 0 Up Manual
VSI Name: vpnb
VSI Index : 2
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
GE1/0/1 srv2000 0 Up Manual
# 查看Switch A上VSI的ARP表项信息,可以看到已学习到了本地虚拟机的ARP信息。
# 查看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: l3vpna Interface: Vsi-interface1
IP address MAC address Router MAC VSI Index Flags
10.1.1.1 0001-0001-0001 a0ce-7e40-0400 0 GL
10.1.1.10 0000-1234-0001 a0ce-7e40-0400 0 DL
10.1.2.10 0000-1234-0002 a0ce-7e40-0400 0 DL
10.1.1.20 0000-1234-0003 a0ce-7e40-0400 0 B
10.1.2.20 0000-1234-0004 a0ce-7e40-0400 0 B
(2) 验证主机之间可以互访
虚拟机VM 1、VM 2、VM 3、VM 4之间可以互访。
本节仅以IPv6站点接入IPv6网络为例,IPv4站点接入IPv6网络的配置与此类似。
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网关实现三层互通,并采用对称IRB方式转发流量;VXLAN与广域网之间通过边界网关实现三层互通。
图2-4 分布式EVPN网关IPv6 Underlay配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在VM 1和VM 3上指定网关地址为11::1;在VM 2和VM 4上指定网关地址为12::1。(具体配置过程略)
# 配置各接口的IPv6地址和子网掩码;在IP核心网络内配置OSPFv3协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端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] router-id 1.1.1.1
[SwitchA-bgp-default] peer 4::4 as-number 200
[SwitchA-bgp-default] peer 4::4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4::4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 2 3
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 在接口GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchA-GigabitEthernet1/0/1] service-instance 2000
[SwitchA-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchA-GigabitEthernet1/0/1-srv2000] xconnect vsi vpnb
[SwitchA-GigabitEthernet1/0/1-srv2000] quit
[SwitchA-GigabitEthernet1/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance l3vpna
[SwitchA-vpn-instance-l3vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-l3vpna] address-family ipv6
[SwitchA-vpn-ipv6-l3vpna] vpn-target 2:2
[SwitchA-vpn-ipv6-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] 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 l3vpna
[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实例l3vpna对应的L3VNI为1000。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] ip binding vpn-instance l3vpna
[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
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端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] router-id 2.2.2.2
[SwitchB-bgp-default] peer 4::4 as-number 200
[SwitchB-bgp-default] peer 4::4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4::4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-GigabitEthernet1/0/1] quit
# 在接口GigabitEthernet1/0/2上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-type trunk
[SwitchB-GigabitEthernet1/0/2] port trunk permit vlan 3
[SwitchB-GigabitEthernet1/0/2] service-instance 2000
[SwitchB-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchB-GigabitEthernet1/0/2-srv2000] xconnect vsi vpnb
[SwitchB-GigabitEthernet1/0/2-srv2000] quit
[SwitchB-GigabitEthernet1/0/2] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpna
[SwitchB-vpn-instance-l3vpna] route-distinguisher 1:2
[SwitchB-vpn-instance-l3vpna] address-family ipv6
[SwitchB-vpn-ipv6-l3vpna] vpn-target 2:2
[SwitchB-vpn-ipv6-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] 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 l3vpna
[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实例l3vpna对应的L3VNI为1000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance l3vpna
[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
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址和远端ND自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel nd-learning disable
# 配置BGP发布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] router-id 3.3.3.3
[SwitchC-bgp-default] peer 4::4 as-number 200
[SwitchC-bgp-default] peer 4::4 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4::4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3 VNI的RD和RT。
[SwitchC] ip vpn-instance l3vpna
[SwitchC-vpn-instance-l3vpna] route-distinguisher 1:3
[SwitchC-vpn-instance-l3vpna] address-family ipv6
[SwitchC-vpn-ipv6-l3vpna] vpn-target 2:2
[SwitchC-vpn-ipv6-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-interface3,在该接口上配置VPN实例l3vpna对应的L3VNI为1000。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] ip binding vpn-instance l3vpna
[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 l3vpna :: 0 20::100
# 将缺省路由引入到VPN实例l3vpna的BGP IPv6单播路由表中。
[SwitchC] bgp 200
[SwitchC-bgp-default] ip vpn-instance l3vpna
[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实例l3vpna关联,并配置接口的IPv6地址。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip binding vpn-instance l3vpna
[SwitchC-Vlan-interface20] ipv6 address 20::1 64
[SwitchC-Vlan-interface20] quit
(6) 配置Switch D
# 配置Switch D与其他交换机建立BGP连接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] router-id 4.4.4.4
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1::1 group evpn
[SwitchD-bgp-default] peer 2::2 group evpn
[SwitchD-bgp-default] peer 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路由。(具体显示信息略)
# 查看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, destination 2::2
Tunnel protocol/transport UDP_VXLAN/IPv6
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。(以VSI虚接口1为例)
[SwitchA] display ipv6 interface vsi-interface brief
*down: administratively down
(s): spoofing
Interface Physical Protocol IPv6 Address
Vsi1 UP UP 11::1
Vsi2 UP UP 12::1
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_3
VSI Index : 1
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 1000
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
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
GE1/0/1 srv1000 0 Up Manual
VSI Name: vpnb
VSI Index : 2
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000001 Up Auto Disabled
Tunnel1 0x5000002 Up Auto Disabled
ACs:
AC Link ID State Type
GE1/0/1 srv2000 0 Up Manual
# 查看Switch A上VSI的EVPN ND表项信息,可以看到已学习到了本地虚拟机的ND信息。
[SwitchA] display evpn route nd
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
VPN instance: l3vpna Interface: Vsi-interface1
IPv6 address : 11::1
MAC address : 0001-0001-0001 Router MAC : 06dc-93de-0100
VSI index : 0 Flags : GL
IPv6 address : 11::7
MAC address : 06dc-98ca-0206 Router MAC : 06dc-93de-0100
VSI index : 0 Flags : DL
IPv6 address : 11::8
MAC address : 06dc-a8dd-0506 Router MAC : 06dc-a235-0400
VSI index : 0 Flags : B
VPN instance: l3vpna Interface: Vsi-interface2
IPv6 address : 12::1
MAC address : 0002-0002-0002 Router MAC : 06dc-93de-0100
VSI index : 1 Flags : GL
IPv6 address : 12::7
MAC address : 06dc-9ca0-0306 Router MAC : 06dc-93de-0100
VSI index : 1 Flags : DL
IPv6 address : 12::8
MAC address : 06dc-ad91-0606 Router MAC : 06dc-a235-0400
VSI index : 1 Flags : 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的VM通过分布式EVPN网关实现三层互通,并采用非对称IRB方式转发流量;VXLAN与广域网之间通过边界网关实现三层互通。
图2-5 分布式EVPN网关配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在VM 1、VM 2、VM 3和VM 4上分别指定网关地址为10.1.1.1、10.1.2.1、20.1.1.1、20.1.2.1。(具体配置过程略)
# 请按照图2-5配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 配置EVPN VXLAN采用非对称IRB方式转发流量。
[SwitchA] evpn irb asymmetric
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 创建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] evpn encapsulation vxlan
[SwitchA-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchA-vsi-vpnb] vxlan 20
[SwitchA-vsi-vpnb-vxlan-20] quit
[SwitchA-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 在接口GigabitEthernet1/0/1上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchA-GigabitEthernet1/0/1] service-instance 2000
[SwitchA-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchA-GigabitEthernet1/0/1-srv2000] xconnect vsi vpnb
[SwitchA-GigabitEthernet1/0/1-srv2000] quit
[SwitchA-GigabitEthernet1/0/1] quit
# 配置L3VNI的RD和RT。
[SwitchA] ip vpn-instance 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-interface2。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance l3vpna
[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实例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
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchA] vsi vpnb
[SwitchA-vsi-vpnb] gateway vsi-interface 2
[SwitchA-vsi-vpnb] quit
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 配置EVPN VXLAN采用非对称IRB方式转发流量。
[SwitchA] evpn irb asymmetric
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpna-evpn-vxlan] quit
# 创建VXLAN 10。
[SwitchB-vsi-vpna] vxlan 10
[SwitchB-vsi-vpna-vxlan-10] quit
[SwitchB-vsi-vpna] quit
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 4.4.4.4 as-number 200
[SwitchB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-GigabitEthernet1/0/1] quit
# 在接口GigabitEthernet1/0/2上创建以太网服务实例2000,该实例用来匹配VLAN 3的数据帧。
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-type trunk
[SwitchB-GigabitEthernet1/0/2] port trunk permit vlan 3
[SwitchB-GigabitEthernet1/0/2] service-instance 2000
[SwitchB-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 3
# 配置以太网服务实例2000与VSI实例vpnb关联。
[SwitchB-GigabitEthernet1/0/2-srv2000] xconnect vsi vpnb
[SwitchB-GigabitEthernet1/0/2-srv2000] quit
[SwitchB-GigabitEthernet1/0/2] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpna
[SwitchB-vpn-instance-l3vpna] route-distinguisher 1: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 20.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 l3vpna
[SwitchB-Vsi-interface2] ip address 20.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实例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
# 配置VXLAN 20所在的VSI实例和接口VSI-interface2关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 2
[SwitchB-vsi-vpnb] quit
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 配置BGP发布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 4.4.4.4 as-number 200
[SwitchC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置L3 VNI的RD和RT。
[SwitchC] ip vpn-instance l3vpna
[SwitchC-vpn-instance-l3vpna] route-distinguisher 1: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-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
# 配置缺省路由,下一跳为广域网中某台设备的IP地址20.1.1.100。
[SwitchC] ip route-static vpn-instance l3vpna 0.0.0.0 0 20.1.1.100
# 将缺省路由引入到VPN实例l3vpna的BGP IPv4单播路由表中。
[SwitchC] bgp 200
[SwitchC-bgp-default] ip vpn-instance l3vpna
[SwitchC-bgp-default-l3vpna] address-family ipv4 unicast
[SwitchC-bgp-default-ipv4-l3vpna] default-route imported
[SwitchC-bgp-default-ipv4-l3vpna] import-route static
[SwitchC-bgp-default-ipv4-l3vpna] quit
[SwitchC-bgp-default-l3vpna] quit
[SwitchC-bgp-default] quit
# 配置连接广域网的接口Vlan-interface20与VPN实例l3vpna关联。
[SwitchC] interface vlan-interface 20
[SwitchC-Vlan-interface20] ip binding vpn-instance l3vpna
[SwitchC-Vlan-interface20] ip address 20.1.1.3 24
[SwitchC-Vlan-interface20] quit
(6) 配置Switch D
# 配置Switch D与其他交换机建立BGP连接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP发布EVPN路由,并关闭BGP EVPN路由的VPN-Target过滤功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D为路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 验证分布式EVPN网关设备Switch A
# 查看Switch A上的EVPN路由信息,可以看到Switch A发送了网关的IP前缀路由、各VSI的IMET路由和MAC/IP路由,并接收到Switch B发送的网关IP前缀路由、各VSI的IMET路由和MAC/IP路由。(具体显示信息略)
# 查看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: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。(以VSI虚接口1为例)
[SwitchA] display interface vsi-interface 1
Vsi-interface1
Current state: UP
Line protocol state: UP
Description: Vsi-interface1 Interface
Bandwidth: 1000000 kbps
Maximum transmission unit: 1500
Internet address: 10.1.1.1/24 (primary)
IP packet frame type: Ethernet II, hardware address: 0003-0003-0003
IPv6 packet frame type: Ethernet II, hardware address: 0003-0003-0003
Physical: Unknown, baudrate: 1000000 kbps
Last clearing of counters: Never
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_3
VSI Index : 1
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 1000
Tunnel Statistics : Disabled
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
GE1/0/1 srv1000 0x0 Up Manual
VSI Name: vpnb
VSI Index : 2
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
GE1/0/1 srv2000 0x0 Up Manual
# 查看Switch A上VSI的ARP表项信息,可以看到已学习到了本地虚拟机的ARP信息。
# 以VSI实例vpna为例,查看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
E - Multihoming ES sync F - Leaf
VPN instance: l3vpna Interface: Vsi-interface1
IP address MAC address Router MAC VSI index Flags
10.1.1.1 0001-0001-0001 522b-3413-0200 0 GL
10.1.1.10 521f-b814-0106 522b-3413-0200 0 DL
20.1.1.20 522b-3c6a-0406 522b-38cd-0300 0 B
(2) 验证主机之间可以互访
虚拟机VM 1和VM 3、VM 2和VM 4之间分别可以互访。
本节仅以IPv4站点接入IPv4网络为例,IPv4站点接入IPv6、IPv6站点接入IPv4网络、IPv6站点接入IPv6网络的配置与此类似。
Switch A、Switch B、Switch C为分布式EVPN网关设备;Switch D为RR,负责在交换机之间反射BGP路由。
虚拟机VM 1属于VXLAN 10、位于VPN实例l3vpna;VM 2属于VXLAN 20、位于VPN实例l3vpnb;VM 3属于VXLAN 30、位于公网。通过EVPN分布式网关和公私网互通配置,保证VM 1和VM 2之间互通(私网之间互通),VM 2不能访问VM 3,VM 1和VM 3之间互通(公私网互通)。
图2-6 IPv4 EVPN公私网互通配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在VM 1上指定网关地址为10.1.1.1;在VM 2上指定网关地址为10.1.2.1;在VM 3上指定网关地址10.1.3.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchA-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchA-vsi-vpna-evpn-vxlan] quit
# 创建VXLAN 10。
[SwitchA-vsi-vpna] vxlan 10
[SwitchA-vsi-vpna-vxlan-10] quit
[SwitchA-vsi-vpna] quit
# 配置BGP发布EVPN路由。
[SwitchA] bgp 200
[SwitchA-bgp-default] peer 4.4.4.4 as-number 200
[SwitchA-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchA-bgp-default] address-family l2vpn evpn
[SwitchA-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchA-bgp-default-evpn] quit
[SwitchA-bgp-default] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 1的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 1
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 1
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 配置L3 VNI的RD和RT。
[SwitchA] ip vpn-instance l3vpna
[SwitchA-vpn-instance-l3vpna] route-distinguisher 1:1
[SwitchA-vpn-instance-l3vpna] address-family ipv4
[SwitchA-vpn-ipv4-l3vpna] vpn-target 1:1
[SwitchA-vpn-ipv4-l3vpna] vpn-target 2:2 import-extcommunity
[SwitchA-vpn-ipv4-l3vpna] vpn-target 3:3 import-extcommunity
[SwitchA-vpn-ipv4-l3vpna] quit
[SwitchA-vpn-instance-l3vpna] address-family evpn
[SwitchA-vpn-evpn-l3vpna] vpn-target 1:1
[SwitchA-vpn-evpn-l3vpna] vpn-target 2:2 import-extcommunity
[SwitchA-vpn-evpn-l3vpna] vpn-target 3:3 import-extcommunity
[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] distributed-gateway local
[SwitchA-Vsi-interface1] local-proxy-arp enable
[SwitchA-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置VPN实例l3vpna对应的L3VNI为1000。
[SwitchA] interface vsi-interface 2
[SwitchA-Vsi-interface2] ip binding vpn-instance l3vpna
[SwitchA-Vsi-interface2] l3-vni 1000
[SwitchA-Vsi-interface2] quit
# 创建VSI虚接口VSI-interface3,在该接口上配置L3VNI为2000,用来匹配从Switch B接收的路由。
[SwitchA] interface vsi-interface 3
[SwitchA-Vsi-interface3] l3-vni 2000
[SwitchA-Vsi-interface3] quit
# 创建VSI虚接口VSI-interface4,在该接口上配置L3VNI为3000,用来匹配从Switch C接收的路由。
[SwitchA] interface vsi-interface 4
[SwitchA-Vsi-interface4] l3-vni 3000
[SwitchA-Vsi-interface4] quit
# 配置VXLAN 10所在的VSI实例和接口VSI-interface1关联。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] gateway vsi-interface 1
[SwitchA-vsi-vpna] quit
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] evpn encapsulation vxlan
[SwitchB-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchB-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchB-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchB-vsi-vpnb] vxlan 20
[SwitchB-vsi-vpnb-vxlan-20] quit
[SwitchB-vsi-vpnb] quit
# 配置BGP发布EVPN路由。
[SwitchB] bgp 200
[SwitchB-bgp-default] peer 4.4.4.4 as-number 200
[SwitchB-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchB-bgp-default] address-family l2vpn evpn
[SwitchB-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchB-bgp-default-evpn] quit
[SwitchB-bgp-default] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] service-instance 1000
[SwitchB-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchB-GigabitEthernet1/0/1-srv1000] xconnect vsi vpnb
[SwitchB-GigabitEthernet1/0/1-srv1000] quit
[SwitchB-GigabitEthernet1/0/1] quit
# 配置L3 VNI的RD和RT。
[SwitchB] ip vpn-instance l3vpnb
[SwitchB-vpn-instance-l3vpnb] route-distinguisher 2:2
[SwitchB-vpn-instance-l3vpnb] address-family ipv4
[SwitchB-vpn-ipv4-l3vpnb] vpn-target 2:2
[SwitchB-vpn-ipv4-l3vpnb] vpn-target 1:1 import-extcommunity
[SwitchB-vpn-ipv4-l3vpnb] quit
[SwitchB-vpn-instance-l3vpnb] address-family evpn
[SwitchB-vpn-evpn-l3vpnb] vpn-target 2:2
[SwitchB-vpn-evpn-l3vpnb] vpn-target 1:1 import-extcommunity
[SwitchB-vpn-evpn-l3vpnb] quit
[SwitchB-vpn-instance-l3vpnb] quit
# 配置VSI虚接口VSI-interface1。
[SwitchB] interface vsi-interface 1
[SwitchB-Vsi-interface1] ip binding vpn-instance l3vpnb
[SwitchB-Vsi-interface1] ip address 10.1.2.1 255.255.255.0
[SwitchB-Vsi-interface1] distributed-gateway local
[SwitchB-Vsi-interface1] local-proxy-arp enable
[SwitchB-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置L3VNI为1000,用来匹配从Switch A接收的路由。
[SwitchB] interface vsi-interface 2
[SwitchB-Vsi-interface2] l3-vni 1000
[SwitchB-Vsi-interface2] qui
# 创建VSI虚接口VSI-interface3,在该接口上配置VPN实例l3vpnb对应的L3VNI为2000。
[SwitchB] interface vsi-interface 3
[SwitchB-Vsi-interface3] ip binding vpn-instance l3vpnb
[SwitchB-Vsi-interface3] l3-vni 2000
[SwitchB-Vsi-interface3] quit
# 创建VSI虚接口VSI-interface4,在该接口上配置L3VNI为3000,用来匹配从Switch C接收的路由。
[SwitchA] interface vsi-interface 4
[SwitchA-Vsi-interface4] l3-vni 3000
[SwitchA-Vsi-interface4] quit
# 配置VXLAN 20所在的VSI实例和接口VSI-interface1关联。
[SwitchB] vsi vpnb
[SwitchB-vsi-vpnb] gateway vsi-interface 1
[SwitchB-vsi-vpnb] quit
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在VSI实例vpnc下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] evpn encapsulation vxlan
[SwitchC-vsi-vpnc-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpnc-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpnc-evpn-vxlan] quit
# 创建VXLAN 30。
[SwitchC-vsi-vpnc] vxlan 30
[SwitchC-vsi-vpnc-vxlan-30] quit
[SwitchC-vsi-vpnc] quit
# 配置BGP发布EVPN路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] peer 4.4.4.4 as-number 200
[SwitchC-bgp-default] peer 4.4.4.4 connect-interface loopback 0
[SwitchC-bgp-default] address-family ipv4 unicast
[SwitchC-bgp-default-ipv4]quit
[SwitchC-bgp-default] address-family l2vpn evpn
[SwitchC-bgp-default-evpn] peer 4.4.4.4 enable
[SwitchC-bgp-default-evpn] quit
[SwitchC-bgp-default] quit
# 配置公网实例的RD和RT,配置公网实例对应的L3VNI为3000。
[SwitchC] ip public-instance
[SwitchC-public-instance] route-distinguisher 3:3
[SwitchC-public-instance] l3-vni 3000
[SwitchC-public-instance] address-family ipv4
[SwitchC-public-instance-ipv4] vpn-target 3:3
[SwitchC-public-instance-ipv4] vpn-target 1:1 import-extcommunity
[SwitchC-public-instance-ipv4] quit
[SwitchC-public-instance] address-family evpn
[SwitchC-public-instance-evpn]vpn-target 3:3
[SwitchC-public-instance-evpn] vpn-target 1:1 import-extcommunity
[SwitchC-public-instance-evpn] quit
[SwitchC-public-instance] quit
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 3的数据帧。
[SwitchC] interface gigabitethernet 1/0/1
[SwitchC-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-GigabitEthernet1/0/1] port trunk permit vlan 3
[SwitchC-GigabitEthernet1/0/1] service-instance 1000
[SwitchC-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 3
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchC-GigabitEthernet1/0/1-srv1000] xconnect vsi vpnc
[SwitchC-GigabitEthernet1/0/1-srv1000] quit
[SwitchC-GigabitEthernet1/0/1] quit
# 配置VSI虚接口VSI-interface1。
[SwitchC] interface vsi-interface 1
[SwitchC-Vsi-interface1] ip address 10.1.3.1 255.255.255.0
[SwitchC-Vsi-interface1] distributed-gateway local
[SwitchC-Vsi-interface1] local-proxy-arp enable
[SwitchC-Vsi-interface1] quit
# 创建VSI虚接口VSI-interface2,在该接口上配置L3VNI为1000,用来匹配从Switch A接收的路由。
[SwitchC] interface vsi-interface 2
[SwitchC-Vsi-interface2] l3-vni 1000
[SwitchC-Vsi-interface2] quit
# 创建VSI虚接口VSI-interface3,在该接口上配置L3VNI为2000,用来匹配从Switch B接收的路由。
[SwitchC] interface vsi-interface 3
[SwitchC-Vsi-interface3] l3-vni 2000
[SwitchC-Vsi-interface3] quit
# 创建VSI虚接口VSI-interface4,在该接口上配置公网实例对应的L3VNI为3000。
[SwitchC] interface vsi-interface 4
[SwitchC-Vsi-interface4] l3-vni 3000
[SwitchC-Vsi-interface4] quit
# 配置VXLAN 30所在的VSI实例和接口VSI-interface1关联。
[SwitchC] vsi vpnc
[SwitchC-vsi-vpnc] gateway vsi-interface 1
[SwitchC-vsi-vpnc] quit
(6) 配置Switch D
# 配置Switch D与其他交换机建立BGP连接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP发布EVPN路由,并关闭BGP EVPN路由的VPN-Target过滤功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D为路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 验证分布式EVPN网关设备Switch A
# 查看Switch A上的EVPN路由信息,可以看到Switch A发送了网关的IP前缀路由、各VSI的IMET路由、带主机MAC的MAC路由和带主机ARP的MAC/IP发布路由,并接收到SwitchB, SwitchC发出的网关的IP前缀路由和MAC/IP发布路由。(具体显示信息略)
# 查看Switch A上的Tunnel接口信息,可以看到VXLAN模式的Tunnel接口处于up状态。
[SwitchA] display interface tunnel
Tunnel0
Current state: UP
Line protocol state: UP
Description: Tunnel0 Interface
Bandwidth: 64 kbps
Maximum transmission unit: 1464
Internet protocol processing: Disabled
Last clearing of counters: Never
Tunnel source 1.1.1.1, destination 2.2.2.2
Tunnel protocol/transport UDP_VXLAN/IP
Last 300 seconds input rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Last 300 seconds output rate: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 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 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
# 查看Switch A上的VSI虚接口信息,可以看到VSI虚接口处于up状态。
[SwitchA] display interface vsi-interface brief
Brief information on interfaces in route mode:
Link: ADM - administratively down; Stby - standby
Protocol: (s) - spoofing
Interface Link Protocol Primary IP Description
Vsi1 UP UP 10.1.1.1
Vsi2 UP UP --
Vsi3 UP UP --
Vsi4 UP UP --
# 查看Switch A上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchA] display l2vpn vsi verbose
VSI Name: Auto_L3VNI1000_2
VSI Index : 1
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 1000
VSI Name: Auto_L3VNI2000_3
VSI Index : 2
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 3
VXLAN ID : 2000
VSI Name: Auto_L3VNI3000_4
VSI Index : 3
VSI State : Down
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 4
VXLAN ID : 3000
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
ACs:
AC Link ID State Type
GE1/0/1 srv1000 0 Up Manual
# 查看Switch A上VSI的ARP表项信息,可以看到已学习到了本地虚拟机的ARP信息和BGP EVPN路由下一跳地址的ARP信息。
(2) 验证主机之间互访
VM 1和VM 2、VM 1和VM 3之间可以互访,VM 2和VM 3不能互访。
本节仅以IPv4站点接入IPv4网络为例,IPv6站点接入IPv6网络的配置与此类似。
Switch A、Switch B、Switch D为与服务器连接的VTEP设备,Switch A和Switch B通过M-LAG功能虚拟为一台VTEP设备,采用直连模式peer-link链路;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-7 IPv4 EVPN支持M-LAG配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B、Switch C和Switch D工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在VM 1和VM 2上指定网关地址为10.1.1.1;在VM 3上指定网关地址为10.1.2.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码。(具体配置过程略)
# 在IP核心网络内配置OSPF协议,发布各接口IP地址(包括Loopback接口的IP地址)对应网段的路由,确保交换机之间路由可达;并在OSPF邻居两端的接口上配置ospf peer hold-max-cost duration命令,提高M-LAG设备重启后的回切性能。(具体配置过程略)
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 配置VXLAN隧道工作在二层转发模式。
[SwitchA] undo vxlan ip-forwarding
# 配置peer-link链路上动态AC的报文匹配规则,有如下两个方案。Switch A和Switch B上采用的方案必须相同。
¡ 方案一:采用VXLAN ID映射方式生成peer-link链路上动态AC的报文匹配规则。
[SwitchA] l2vpn m-lag peer-link ac-match-rule vxlan-mapping
¡ 方案二:根据用户侧以太网服务实例的报文匹配规则创建peer-link链路上的AC。
无需执行其他配置,默认采用该方案。
# 开启EVPN支持M-LAG功能,并配置虚拟VTEP地址为1.2.3.4。
[SwitchA] evpn m-lag group 1.2.3.4
# 配置M-LAG系统。
[SwitchA] m-lag system-mac 0001-0001-0001
[SwitchA] m-lag system-number 1
[SwitchA] m-lag system-priority 10
[SwitchA] m-lag keepalive ip destination 60.1.1.2 source 60.1.1.1
[SwitchA] m-lag restore-delay 180
# 创建二层聚合接口3,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 3
[SwitchA-Bridge-Aggregation3] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation3] quit
# 将端口GigabitEthernet1/0/3加入到聚合组3中。
[SwitchA] interface gigabitethernet 1/0/3
[SwitchA-GigabitEthernet1/0/3] port link-aggregation group 3
[SwitchA-GigabitEthernet1/0/3] quit
# 将二层聚合接口3配置为peer-link接口。
[SwitchA] interface bridge-aggregation 3
[SwitchA-Bridge-Aggregation3] port m-lag peer-link 1
[SwitchA-Bridge-Aggregation3] quit
# 配置M-LAG设备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
# 在网络侧物理出接口GigabitEthernet1/0/5上关闭生成树协议。
[SwitchA] interface gigabitethernet 1/0/5
[SwitchA-GigabitEthernet1/0/5] undo stp enable
[SwitchA-GigabitEthernet1/0/5] quit
# 创建二层聚合接口4,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation4] quit
# 将端口GigabitEthernet1/0/1加入到聚合组4中。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-aggregation group 4
[SwitchA-GigabitEthernet1/0/1] quit
# 将二层聚合接口4加入M-LAG组4中。
[SwitchA] interface bridge-aggregation 4
[SwitchA-Bridge-Aggregation4] port m-lag group 4
[SwitchA-Bridge-Aggregation4] quit
# 创建二层聚合接口5,并配置该接口为动态聚合模式。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchA-Bridge-Aggregation5] quit
# 将端口GigabitEthernet1/0/2加入到聚合组5中。
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] port link-aggregation group 5
[SwitchA-GigabitEthernet1/0/2] quit
# 将二层聚合接口5加入M-LAG组5中。
[SwitchA] interface bridge-aggregation 5
[SwitchA-Bridge-Aggregation5] port m-lag 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] port link-type trunk
[SwitchA-Bridge-Aggregation4] port trunk permit vlan 2
[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] port link-type trunk
[SwitchA-Bridge-Aggregation5] port trunk permit vlan 3
[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业务的接口配置为M-LAG保留接口。
[SwitchA] m-lag mad exclude interface loopback 0
[SwitchA] m-lag mad exclude interface loopback 1
[SwitchA] m-lag mad exclude interface gigabitethernet 1/0/4
[SwitchA] m-lag mad exclude interface gigabitethernet 1/0/5
[SwitchA] m-lag mad exclude interface vlan-interface 11
[SwitchA] m-lag mad exclude interface vlan-interface 100
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 配置VXLAN隧道工作在二层转发模式。
[SwitchB] undo vxlan ip-forwarding
# 配置peer-link链路上动态AC的报文匹配规则,有如下两个方案。Switch A和Switch B上采用的方案必须相同。
¡ 方案一:采用VXLAN ID映射方式生成peer-link链路上动态AC的报文匹配规则。
[SwitchB] l2vpn m-lag peer-link ac-match-rule vxlan-mapping
¡ 方案二:根据用户侧以太网服务实例的报文匹配规则创建peer-link链路上的AC。
无需执行其他配置,默认采用该方案。
# 开启EVPN支持M-LAG功能,并配置虚拟VTEP地址为1.2.3.4。
[SwitchB] evpn m-lag group 1.2.3.4
# 配置M-LAG系统。
[SwitchB] m-lag system-mac 0001-0001-0001
[SwitchB] m-lag system-number 2
[SwitchB] m-lag system-priority 10
[SwitchB] m-lag keepalive ip destination 60.1.1.1 source 60.1.1.2
[SwitchB] m-lag restore-delay 180
# 创建二层聚合接口3,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 3
[SwitchB-Bridge-Aggregation3] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation3] quit
# 将端口GigabitEthernet1/0/3加入到聚合组3中。
[SwitchB] interface gigabitethernet 1/0/3
[SwitchB-GigabitEthernet1/0/3] port link-aggregation group 3
[SwitchB-GigabitEthernet1/0/3] quit
# 将二层聚合接口3配置为peer-link接口。
[SwitchB] interface bridge-aggregation 3
[SwitchB-Bridge-Aggregation3] port m-lag peer-link 1
[SwitchB-Bridge-Aggregation3] quit
# 配置M-LAG设备Switch A与Switch B之间路由可达。
[SwitchB] vlan 100
[SwitchB-vlan100] quit
[SwitchB] interface Vlan-interface 100
[SwitchB-Vlan-interface100] ip address 100.1.1.2 255.255.255.0
[SwitchB-Vlan-interface100] ospf 1 area 0.0.0.0
[SwitchB-Vlan-interface100] quit
# 在网络侧物理出接口GigabitEthernet1/0/5上关闭生成树协议。
[SwitchB] interface gigabitethernet 1/0/5
[SwitchB-GigabitEthernet1/0/5] undo stp enable
[SwitchB-GigabitEthernet1/0/5] quit
# 创建二层聚合接口4,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation4] quit
# 将端口GigabitEthernet1/0/1加入到聚合组4中。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-aggregation group 4
[SwitchB-GigabitEthernet1/0/1] quit
# 将二层聚合接口4加入M-LAG组4中。
[SwitchB] interface bridge-aggregation 4
[SwitchB-Bridge-Aggregation4] port m-lag group 4
[SwitchB-Bridge-Aggregation4] quit
# 创建二层聚合接口5,并配置该接口为动态聚合模式。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] link-aggregation mode dynamic
[SwitchB-Bridge-Aggregation5] quit
# 将端口GigabitEthernet1/0/2加入到聚合组5中。
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-aggregation group 5
[SwitchB-GigabitEthernet1/0/2] quit
# 将二层聚合接口5加入M-LAG组5中。
[SwitchB] interface bridge-aggregation 5
[SwitchB-Bridge-Aggregation5] port m-lag 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] port link-type trunk
[SwitchB-Bridge-Aggregation4] port trunk permit vlan 2
[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] port link-type trunk
[SwitchB-Bridge-Aggregation5] port trunk permit vlan 3
[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业务的接口配置为M-LAG保留接口。
[SwitchB] m-lag mad exclude interface loopback 0
[SwitchB] m-lag mad exclude interface loopback 1
[SwitchB] m-lag mad exclude interface gigabitethernet 1/0/4
[SwitchB] m-lag mad exclude interface gigabitethernet 1/0/5
[SwitchB] m-lag mad exclude interface vlan-interface 12
[SwitchB] m-lag mad exclude interface vlan-interface 100
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchC] vsi vpna
[SwitchC-vsi-vpna] evpn encapsulation vxlan
[SwitchC-vsi-vpna-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpna-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpna-evpn-vxlan] quit
# 创建VXLAN 10。
[SwitchC-vsi-vpna] vxlan 10
[SwitchC-vsi-vpna-vxlan-10] quit
[SwitchC-vsi-vpna] quit
# 在VSI实例vpnb下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchC] vsi vpnb
[SwitchC-vsi-vpnb] evpn encapsulation vxlan
[SwitchC-vsi-vpnb-evpn-vxlan] route-distinguisher auto
[SwitchC-vsi-vpnb-evpn-vxlan] vpn-target auto
[SwitchC-vsi-vpnb-evpn-vxlan] quit
# 创建VXLAN 20。
[SwitchC-vsi-vpnb] vxlan 20
[SwitchC-vsi-vpnb-vxlan-20] quit
[SwitchC-vsi-vpnb] quit
# 配置BGP发布EVPN路由,并作为路由反射器反射路由。
[SwitchC] bgp 200
[SwitchC-bgp-default] 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
(6) 配置Switch D
# 开启L2VPN能力。
<SwitchD> system-view
[SwitchD] l2vpn enable
# 配置VXLAN隧道工作在二层转发模式。
[SwitchD] undo vxlan ip-forwarding
# 在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
# 接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 4的数据帧。
[SwitchD] interface gigabitethernet 1/0/1
[SwitchD-GigabitEthernet1/0/1] port link-type trunk
[SwitchD-GigabitEthernet1/0/1] port trunk permit vlan 4
[SwitchD-GigabitEthernet1/0/1] service-instance 1000
[SwitchD-GigabitEthernet1/0/1] encapsulation s-vid 4
# 配置以太网服务实例1000与VSI实例vpnb关联。
[SwitchD-GigabitEthernet1/0/1] xconnect vsi vpnb
[SwitchD-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路由。(具体显示信息略)
# 查看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: 0 bytes/sec, 0 bits/sec, 0 packets/sec
Input: 0 packets, 0 bytes, 0 drops
Output: 0 packets, 0 bytes, 0 drops
# 查看Switch C上的VSI信息,可以看到VSI内创建的VXLAN、与VXLAN关联的VXLAN隧道、与VSI关联的VSI虚接口等信息。
[SwitchC] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 0
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 1
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
VSI Name: vpnb
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
Gateway Interface : VSI-interface 2
VXLAN ID : 20
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel1 0x5000001 UP Auto Disabled
(2) 以Switch A为例,验证M-LAG设备
# 查看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 : [2][0][48][0800-2700-400e][0][0.0.0.0]/104
NextHop : 1.2.3.4 LocPrf : 100
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : [2][0][48][46b2-aea0-0101][0][0.0.0.0]/104
NextHop : 3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
* > Network : [2][0][48][ac1e-24e3-0201][0][0.0.0.0]/104
NextHop : 3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : [3][0][32][1.2.3.4]/80
NextHop : 1.2.3.4 LocPrf : 100
PrefVal : 32768 OutLabel : NULL
MED : 0
Path/Ogn: i
* >i Network : [3][0][32][3.3.3.3]/80
NextHop : 3.3.3.3 LocPrf : 100
PrefVal : 0 OutLabel : NULL
MED : 0
Path/Ogn: 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
# 查看Switch A上的VSI信息,可以看到设备自动在peer-link链路上创建了AC,并将其与VSI关联。
¡ 采用VXLAN ID映射方式生成peer-link链路上动态AC的报文匹配规则:
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
VXLAN ID : 10
Tunnels:
Tunnel Name Link ID State Type Flood proxy
Tunnel0 0x5000000 UP Auto Disabled
ACs:
AC Link ID State Type
BAGG3 srv1 0 Up Dynamic (M-LAG)
BAGG4 srv1000 1 Up Manual
BAGG5 srv1000 2 Up Manual
¡ 根据用户侧以太网服务实例的报文匹配规则创建peer-link链路上的AC:
[SwitchA] display l2vpn vsi verbose
VSI Name: vpna
VSI Index : 1
VSI State : Up
MTU : 1500
Bandwidth : -
Broadcast Restrain : -
Multicast Restrain : -
Unknown Unicast Restrain: -
MAC Learning : Enabled
MAC Table Limit : -
MAC Learning rate : -
Drop Unknown : -
Flooding : Enabled
Statistics : Disabled
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 srv2 1 Up Dynamic (M-LAG)
BAGG5 srv1000 2 Up Manual
BAGG3 srv3 3 Up Dynamic (M-LAG)
(3) 验证主机之间可以互访
虚拟机VM 1、VM 2和VM 3之间可以互访。虚拟机与Switch A或Switch B相连的链路断开后,VM 1、VM 2和VM 3仍然可以通过另一台设备互访。
Switch A、Switch B、Switch C为分布式EVPN网关设备;Switch D为RR,负责在交换机之间反射BGP路由。
虚拟机VM 1、VM 2和VM 3属于VXLAN 10;VM 4属于VXLAN 20。VM 2通过聚合链路多归属于Switch A、Switch B,VM 3通过聚合链路多归属于Switch B、Switch C。VM 1、VM 4分别为Switch A和Switch C下的单归属设备。相同VXLAN之间可以二层互通;不同VXLAN之间通过分布式EVPN网关实现三层互通。
图2-8 EVPN支持IPv4站点多归属配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在VM 1、VM 2和VM 3上指定网关地址为10.1.1.1;在VM 4上指定网关地址为20.1.1.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA ] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto 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
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 在接入服务器的接口GigabitEthernet1/0/2上配置ESI值。
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] port link-type trunk
[SwitchA-GigabitEthernet1/0/2] port trunk permit vlan 2
[SwitchA-GigabitEthernet1/0/2] esi 0.0.0.0.1
# 在该接口上创建以太网服务实例2000,用来匹配VLAN 2的数据帧。
[SwitchA-GigabitEthernet1/0/2] service-instance 2000
[SwitchA-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 2
# 配置以太网服务实例2000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/2-srv2000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/2-srv2000] 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
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto 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
# 在接入服务器的接口GigabitEthernet1/0/1上配置ESI值。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] esi 0.0.0.0.1
# 在该接口上创建以太网服务实例2000,用来匹配VLAN 2的数据帧。
[SwitchB-GigabitEthernet1/0/1] service-instance 2000
[SwitchB-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 2
# 配置以太网服务实例2000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv2000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/1-srv2000] quit
# 在接入服务器的接口GigabitEthernet1/0/2上配置ESI值。
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-type trunk
[SwitchB-GigabitEthernet1/0/2] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/2] esi 0.0.0.0.2
# 在该接口上创建以太网服务实例3000,用来匹配VLAN 2的数据帧。
[SwitchB-GigabitEthernet1/0/2] service-instance 3000
[SwitchB-GigabitEthernet1/0/2-srv3000] encapsulation s-vid 2
# 配置以太网服务实例3000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/2-srv3000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/2-srv3000] 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
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在VSI实例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
# 在接入服务器的接口GigabitEthernet1/0/1上配置ESI值。
[SwitchC] interface gigabitethernet 1/0/1
[SwitchC-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchC-GigabitEthernet1/0/1] esi 0.0.0.0.2
# 在该接口上创建以太网服务实例3000,用来匹配VLAN 2的数据帧。
[SwitchC-GigabitEthernet1/0/1] service-instance 3000
[SwitchC-GigabitEthernet1/0/1-srv3000] encapsulation s-vid 2
# 配置以太网服务实例3000与VSI实例vpna关联。
[SwitchC-GigabitEthernet1/0/1-srv3000] xconnect vsi vpna
[SwitchC-GigabitEthernet1/0/1-srv3000] quit
# 在接口GigabitEthernet1/0/2上创建以太网服务实例4000,该实例用来匹配VLAN 2的数据帧。
[SwitchC] interface gigabitethernet 1/0/2
[SwitchC-GigabitEthernet1/0/2] port link-type trunk
[SwitchC-GigabitEthernet1/0/2] port trunk permit vlan 3
[SwitchC-GigabitEthernet1/0/2] service-instance 4000
[SwitchC-GigabitEthernet1/0/2-srv4000] encapsulation s-vid 3
# 配置以太网服务实例4000与VSI实例vpnb关联。
[SwitchC-GigabitEthernet1/0/2-srv4000] xconnect vsi vpnb
[SwitchC-GigabitEthernet1/0/2-srv4000] quit
[SwitchC-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
(6) 配置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路由。(具体显示信息略)
# 查看Switch C上的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
* - The output interface is issued to another VSI
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 GE1/0/1 Aging
0002-0001-0010 Dynamic vpnb GE1/0/2 Aging
--- 4 mac address(es) found ---
# 查看Switch C上的EVPN的MAC地址信息。
<SwitchC> display evpn route mac
Flags: D - Dynamic B - BGP L - Local active
G - Gateway S - Static M - Mapping I - Invalid
A - MAC-authentication P – Multiport/Multicast
VSI name: vpna
EVPN instance: -
MAC address Link ID/Name Flags Encap Next hop
0001-0001-0030 0 DL VXLAN -
0001-0001-0010 Tunnel0 B VXLAN 1.1.1.1
0001-0001-0020 Tunnel0 B VXLAN 1.1.1.1
Tunnel1 B VXLAN 2.2.2.2
VSI name: vpnb
EVPN instance: -
MAC address Link ID/Name Flags Encap Next hop
0002-0001-0010 0 DL VXLAN -
# 查看Switch C上的本地和远端ES信息。
<SwitchC> display evpn es local
Redundancy mode: A - All active, S - Single active
VSI name : vpna
EVPN instance: -
ESI Tag ID DF address Mode State ESI label
0000.0000.0000.0000.0002 - 2.2.2.2 A Up -
<SwitchC> display evpn es remote
Control Flags: P – Primary, B – Backup, C - Control word
VSI name : vpna
EVPN instance: -
ESI : 0000.0000.0000.0000.0001
A-D per ES routes :
Peer IP Remote Redundancy mode
1.1.1.1 All active
2.2.2.2 All active
A-D per EVI routes :
Tag ID Peer IP
- 1.1.1.1
- 2.2.2.2
ESI : 0000.0000.0000.0000.0002
Ethernet segment routes :
2.2.2.2
A-D per ES routes :
Peer IP Remote Redundancy mode
2.2.2.2 All active
A-D per ES routes :
2.2.2.2
A-D per EVI routes :
Tag ID Peer IP
- 2.2.2.2
(2) 验证主机之间可以互访
Switch A、Switch B、Switch C为分布式EVPN网关设备;Switch D为RR,负责在交换机之间反射BGP路由。
虚拟机VM 1、VM 2和VM 3属于VXLAN 10。VM 2通过聚合链路多归属于Switch A、Switch B, VM 3通过聚合链路多归属于Switch B、Switch C。VM 1为Switch A下的单归属设备。相同VXLAN之间可以二层互通。
图2-9 EVPN支持组播配置组网图
(1) 配置设备工作在VXLAN模式。
# 配置Switch A、Switch B和Switch C工作在VXLAN模式,并重启设备。以Switch A为例,其他设备的配置方法与此相同。
<SwitchA> system-view
[SwitchA] switch-mode 1
Reboot device to make the configuration take effect.
[SwitchA] quit
<SwitchA> reboot
Start to check configuration with next startup configuration file, please wait..
.......DONE!
Current configuration may be lost after the reboot, save current configuration?
[Y/N]:y
This command will reboot the device. Continue? [Y/N]:y
(2) 配置IP地址和单播路由协议
# 在VM 1、VM 2和VM 3上指定网关地址为10.1.1.1。(具体配置过程略)
# 配置各接口的IP地址和子网掩码;在IP核心网络内配置OSPF协议,确保交换机之间路由可达。(具体配置过程略)
(3) 配置Switch A
# 开启L2VPN能力。
<SwitchA> system-view
[SwitchA] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchA] vxlan tunnel mac-learning disable
[SwitchA] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchA] vsi vpna
[SwitchA-vsi-vpna] evpn encapsulation vxlan
[SwitchA-vsi-vpna-evpn-vxlan] route-distinguisher auto 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
# 在接入服务器的接口GigabitEthernet1/0/1上创建以太网服务实例1000,该实例用来匹配VLAN 2的数据帧。
[SwitchA] interface gigabitethernet 1/0/1
[SwitchA-GigabitEthernet1/0/1] port link-type trunk
[SwitchA-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchA-GigabitEthernet1/0/1] service-instance 1000
[SwitchA-GigabitEthernet1/0/1-srv1000] encapsulation s-vid 2
# 配置以太网服务实例1000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/1-srv1000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/1-srv1000] quit
# 在接入服务器的接口GigabitEthernet1/0/2上配置ESI值。
[SwitchA] interface gigabitethernet 1/0/2
[SwitchA-GigabitEthernet1/0/2] port link-type trunk
[SwitchA-GigabitEthernet1/0/2] port trunk permit vlan 2
[SwitchA-GigabitEthernet1/0/2] esi 0.0.0.0.1
# 在该接口上创建以太网服务实例2000,用来匹配VLAN 2的数据帧。
[SwitchA-GigabitEthernet1/0/2] service-instance 2000
[SwitchA-GigabitEthernet1/0/2-srv2000] encapsulation s-vid 2
# 配置以太网服务实例2000与VSI实例vpna关联。
[SwitchA-GigabitEthernet1/0/2-srv2000] xconnect vsi vpna
[SwitchA-GigabitEthernet1/0/2-srv2000] 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> system-view
[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
(4) 配置Switch B
# 开启L2VPN能力。
<SwitchB> system-view
[SwitchB] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchB] vxlan tunnel mac-learning disable
[SwitchB] vxlan tunnel arp-learning disable
# 在VSI实例vpna下创建EVPN实例,并配置自动生成EVPN实例的RD和RT。
[SwitchB] vsi vpna
[SwitchB-vsi-vpna] evpn encapsulation vxlan
[SwitchB-vsi-vpna-evpn-vxlan] route-distinguisher auto 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
# 在接入服务器的接口GigabitEthernet1/0/1上配置ESI值。
[SwitchB] interface gigabitethernet 1/0/1
[SwitchB-GigabitEthernet1/0/1] port link-type trunk
[SwitchB-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/1] esi 0.0.0.0.1
# 在该接口上创建以太网服务实例2000,用来匹配VLAN 2的数据帧。
[SwitchB-GigabitEthernet1/0/1] service-instance 2000
[SwitchB-GigabitEthernet1/0/1-srv2000] encapsulation s-vid 2
# 配置以太网服务实例2000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/1-srv2000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/1-srv2000] quit
# 在接入服务器的接口GigabitEthernet1/0/2上配置ESI值。
[SwitchB] interface gigabitethernet 1/0/2
[SwitchB-GigabitEthernet1/0/2] port link-type trunk
[SwitchB-GigabitEthernet1/0/2] port trunk permit vlan 2
[SwitchB-GigabitEthernet1/0/2] esi 0.0.0.0.2
# 在该接口上创建以太网服务实例3000,用来匹配VLAN 2的数据帧。
[SwitchB-GigabitEthernet1/0/2] service-instance 3000
[SwitchB-GigabitEthernet1/0/2-srv3000] encapsulation s-vid 2
# 配置以太网服务实例3000与VSI实例vpna关联。
[SwitchB-GigabitEthernet1/0/2-srv3000] xconnect vsi vpna
[SwitchB-GigabitEthernet1/0/2-srv3000] 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
# 开启设备的IGMP Snooping特性。
<SwitchB> system-view
[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
(5) 配置Switch C
# 开启L2VPN能力。
<SwitchC> system-view
[SwitchC] l2vpn enable
# 关闭远端MAC地址和远端ARP自动学习功能。
[SwitchC] vxlan tunnel mac-learning disable
[SwitchC] vxlan tunnel arp-learning disable
# 在VSI实例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
# 在接入服务器的接口GigabitEthernet1/0/1上配置ESI值。
[SwitchC] interface gigabitethernet 1/0/1
[SwitchC-GigabitEthernet1/0/1] port link-type trunk
[SwitchC-GigabitEthernet1/0/1] port trunk permit vlan 2
[SwitchC-GigabitEthernet1/0/1] esi 0.0.0.0.2
# 在该接口上创建以太网服务实例3000,用来匹配VLAN 2的数据帧。
[SwitchC-GigabitEthernet1/0/1] service-instance 3000
[SwitchC-GigabitEthernet1/0/1-srv3000] encapsulation s-vid 2
# 配置以太网服务实例3000与VSI实例vpna关联。
[SwitchC-GigabitEthernet1/0/1-srv3000] xconnect vsi vpna
[SwitchC-GigabitEthernet1/0/1-srv3000] 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> system-view
[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
(6) 配置Switch D
# 配置Switch D与其他路由器建立BGP连接。
<SwitchD> system-view
[SwitchD] bgp 200
[SwitchD-bgp-default] group evpn
[SwitchD-bgp-default] peer 1.1.1.1 group evpn
[SwitchD-bgp-default] peer 2.2.2.2 group evpn
[SwitchD-bgp-default] peer 3.3.3.3 group evpn
[SwitchD-bgp-default] peer evpn as-number 200
[SwitchD-bgp-default] peer evpn connect-interface loopback 0
# 配置BGP发布EVPN路由,并关闭BGP EVPN路由的VPN-Target过滤功能。
[SwitchD-bgp-default] address-family l2vpn evpn
[SwitchD-bgp-default-evpn] peer evpn enable
[SwitchD-bgp-default-evpn] undo policy vpn-target
# 配置Switch D为路由反射器。
[SwitchD-bgp-default-evpn] peer evpn reflect-client
[SwitchD-bgp-default-evpn] quit
[SwitchD-bgp-default] quit
(1) 当配置完成后,从VM 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上的SMET路由信息。
<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) 多归属的VM 2向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 : -
Remote version : v3(E)
ESI : 0000.0000.0000.0000.0001
Ethernet tag ID : 2
Interface : GE1/0/1 srv2000
Peers : 1.1.1.1
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!