10-EVPN VPLS over SRv6配置
本章节下载: 10-EVPN VPLS over SRv6配置 (881.29 KB)
目 录
1.6.2 在系统视图下的EVPN实例中配置VSI引用的Locator段
1.7 配置基于End.DX2 SID和End.DX2L SID转发单播流量
1.12 配置EVPN VPLS over SRv6封装的IPv6报文头的源地址
1.16.2 显示EVPN VPLS over SRv6的运行状态
1.16.4 显示EVPN VPLS over SRv6的转发信息
1.17 EVPN VPLS over SRv6典型配置举例
1.17.1 EVPN VPLS over SRv6单归属配置举例
1.17.2 EVPN VPLS over SRv6多归属配置举例(聚合链路接入)
1.17.3 EVPN VPLS over SRv6多归属配置举例(S-trunk接入)
2.13 配置SRv6分布式网关封装的IPv6报文头的源地址
2.14.1 配置允许将包含ARP信息的MAC/IP发布路由引入BGP单播路由表并发布
2.15.2 配置禁止EVPN从ARP信息中学习MAC地址表项
EVPN VPLS over SRv6是指通过SRv6隧道承载EVPN VPLS业务,通过IPv6网络透明传输用户二层数据,实现用户网络穿越IPv6网络建立点到多点连接。EVPN VPLS的详细介绍,请参见“EVPN配置指导”中的“EVPN VPLS”。
如图1-1所示,PE之间通过EVPN路由发布End.DT2M SID、End.DT2U SID、End.DX2 SID和End.DX2L SID,建立SRv6隧道。该SRv6隧道作为PW封装并转发站点网络之间的二层数据报文。在骨干网上,根据IGP计算的最优路径转发SRv6隧道封装后的报文,从而实现通过IPv6骨干网透明传输用户二层数据。
本端PE向远端PE发布EVPN路由时,在EVPN路由中携带本端为VSI分配的End.DT2M SID和End.DT2U SID、为AC分配的End.DX2 SID,从而建立本端PE到远端PE的SRv6隧道。其中:
· End.DT2M SID用来传递EVPN VPLS的BUM(广播、未知单播和组播)流量。通过在IMET路由中携带End.DT2M SID,可以为BUM流量建立SRv6隧道。
· End.DT2U SID和End.DX2 SID用来传递EVPN VPLS已知单播流量。通过在MAC/IP发布路由中携带End.DT2U SID或End.DX2 SID,可以为已知单播流量建立SRv6隧道。
两端PE均发布End.DT2M SID和End.DT2U SID(或End.DX2 SID),并在两个方向上均建立单跳SRv6隧道后,两条SRv6隧道组成一条PW,用来承载用户二层数据。
EVPN VPLS over SRv6支持SRv6 BE、SRv6 TE和SRv6 TE/SRv6 BE混合三种路由迭代方式。采用不同的路由迭代方式时,报文转发过程有所不同。
又称为基于SID的转发方式。该方式根据封装的End.DT2U SID、End.DX2 SID或End.DT2M SID查找IPv6路由表进行转发。
建立SRv6隧道后,二层已知单播报文从CE 1到CE 2的转发过程为:
(1) CE 1发送二层报文给PE 1。
(2) PE 1从连接CE 1的AC上接收到二层报文后,在AC关联的VSI中查找MAC地址表,找到对应的SRv6隧道,并获取该隧道的End.DT2U SID或End.DX2 SID,即PE 2分配的End.DT2U SID或End.DX2 SID。
(3) PE 1为报文封装外层IPv6报文头,目的IPv6地址为End.DT2U SID或End.DX2 SID,源IPv6地址为配置的EVPN VPLS over SRv6封装IPv6报文头的源地址。
(4) PE 1根据End.DT2U SID或End.DX2 SID查找IPv6路由表,通过最优IGP路由将报文转发给P。
(5) P根据End.DT2U SID或End.DX2 SID查找IPv6路由表,通过最优IGP路由将报文转发给PE 2。
(6) PE 2根据End.DT2U SID或End.DX2 SID查找Local SID表,执行End.DT2U SID或End.DX2 SID对应的转发动作:
¡ End.DT2U SID:解封装报文去掉IPv6报文头,并在End.DT2U SID所属的VSI内查找MAC地址表,根据查表结果将报文转发给CE 2。
¡ End.DX2 SID:解封装报文去掉IPv6报文头,并将报文转发给End.DX2 SID关联的AC。
建立SRv6隧道后,二层广播、组播和未知单播报文的转发过程为:
(7) CE 1发送二层广播、组播和未知单播报文给PE 1。
(8) PE 1从连接CE 1的AC上接收到二层报文后,在AC关联的VSI中查找所有远端PE分配的End.DT2M SID。
(9) PE 1为报文封装外层IPv6报文头,目的IPv6地址为End.DT2M SID,源IPv6地址为配置的EVPN VPLS over SRv6封装IPv6报文头的源地址。
如果PE 1接收到多个远端PE分配的End.DT2M SID,则为二层报文分别封装每个End.DT2M SID,将该报文转发给所有的远端PE。
(10) PE 1根据End.DT2M SID查找IPv6路由表,通过最优IGP路由将报文转发给P。
(11) P根据End.DT2M SID查找IPv6路由表,通过最优IGP路由将报文转发给PE 2。
(12) PE 2根据End.DT2M SID查找Local SID表,执行End.DT2M SID对应的转发动作,即解封装报文去掉IPv6报文头,并在End.DT2M SID所属的VSI内广播转发该报文。
又称为基于SRv6 TE Policy的转发方式。该方式根据报文属性查找匹配的SRv6 TE Policy,为报文添加携带End.DT2M SID(或End.DT2U SID、End.DX2 SID)、SRv6 TE Policy SID列表的SRH头后,通过SRv6 TE Policy转发该报文。
可以通过如下方式将报文引入到SRv6 TE Policy进行转发(即SRv6 TE Policy引流):
· 基于Color引流:查找是否存在Color和Endpoint地址与EVPN路由的Color扩展团体属性和下一跳地址完全相同的SRv6 TE Policy。若存在,则将该EVPN路由迭代到SRv6 TE Policy。当设备收到匹配该EVPN路由的报文时,会通过SRv6 TE Policy转发该报文。
· 基于隧道策略引流:根据路由下一跳地址在隧道策略中查找匹配的SRv6 TE Policy。通过首选隧道策略或负载分担隧道策略,可以实现用指定SRv6 TE Policy的路径作为承载SRv6 PW的公网隧道来转发私网报文。
隧道策略的详细介绍,请参见“MPLS配置指导”中的“隧道策略”;SRv6 TE Policy的详细介绍,请参见“Segment Routing配置指导”中的“SRv6 TE Policy”。
该方式优先通过SRv6 TE方式选择转发路径;如果SRv6 TE方式未找到可用的SRv6 TE Policy,则通过SRv6 BE方式选择转发路径。
如图1-2所示,当一个站点通过不同的以太网链路连接到多台PE时,这些链路就构成了一个ES(Ethernet Segment,以太网段),并以一个相同的ESI(ES Identifier)标识其属于同一个ES。连接的多台PE组成冗余备份组,可以避免PE单点故障对网络造成影响,从而提高网络的可靠性。目前仅支持双归属。
多归属站点组网支持的冗余备份模式包括:
· 多活冗余模式:冗余备份组中的成员PE均可以转发流量,流量在成员PE之间形成负载分担。
· 单活冗余模式:冗余备份组中只有一台成员PE转发流量,成员PE之间形成主备关系。冗余备份组通过一定的算法从成员中选举出一台PE作为DF(Designated Forwarder,指定转发者)。该PE作为主PE负责转发流量;另一台PE作为备PE,处于备份状态。DF选举方法的详细介绍,请参见“EVPN配置指导”中的“EVPN VPLS”。
冗余备份组中的两台成员PE均向PE 3发布End.DT2U SID、End.DX2 SID和End.DT2M SID,并向PE 3通告多归属站点的冗余备份模式以及在冗余备份组中的状态(主PE或备PE)。不同冗余备份模式下,PE 3的处理有所不同:
· 多活冗余模式下:PE 3将PE 1和PE 2发布的路由作为等价路由,在二者之间进行负载分担。
· 单活冗余模式下:PE 3将主PE发布的路由作为最优路由,仅通过该路由转发报文。
如图1-3所示,EVPN VPLS over SRv6多归属站点组网中,CE 1双归属接入PE 1和PE 2,其中PE 1为DF。当PE 1侧的AC故障时,PE 1会删除对应的MAC地址表项,并向PE 2及远端PE通告本地不可达信息撤销MAC地址。此时,已经从远端PE发送到PE 1的数据报文由于没有出接口,会被丢弃。
EVPN VPLS over SRv6通过FRR功能解决该问题。在PE 1上启用FRR功能,使PE 1侧的AC故障时,不删除对应的MAC地址表项,而是将匹配该MAC地址表项的报文通过PE 1与PE 2间的Bypass SRv6 PW转发至PE 2,再由PE 2转发至CE 1,从而减少AC故障导致的丢包。
图1-3 FRR功能原理图
如果PE 1和PE 2之间通过End.DT2U SID或End.DX2 SID建立Bypass SRv6 PW,则当PE 1和PE 2侧的AC链路均故障时,PE 1和PE 2会将从对端接收到的报文再次通过Bypass SRv6 PW转发给对端,造成短暂的环路。通过在PE 1和PE 2之间使用End.DT2UL SID或End.DX2L SID建立Bypass SRv6 PW,可以解决上述问题。End.DT2UL SID和End.DX2L SID用来标识报文来自Bypass SRv6 PW,携带该SID的报文不会再转发到该Bypass SRv6 PW,从而避免产生环路。
开启FRR功能后,PE会优选使用End.DT2UL SID或End.DX2L SID建立Bypass SRv6 PW;如果不存在End.DT2UL SID和End.DX2L SID,则会使用End.DT2U SID或End.DX2 SID建立Bypass SRv6 PW。
EVPN VPLS over SRv6配置任务如下:
(1) 创建并配置EVPN实例
a. 创建VSI
b. 配置EVPN实例
(2) 配置从指定Locator段申请SRv6 SID
a. 配置SRv6 SID
(3) 配置报文转发方式
¡ (可选)配置基于End.DX2 SID和End.DX2L SID转发单播流量
¡ 配置路由迭代方式
路由迭代方式为SRv6 TE方式或SRv6 TE和SRv6 BE混合方式时,必须执行本配置。
(4) 配置AC与VSI关联
(6) 配置EVPN VPLS over SRv6封装的IPv6报文头的源地址
(7) (可选)配置多归属站点
(8) (可选)配置ARP泛洪抑制
(9) (可选)维护EVPN VPLS over SRv6网络
本配置中各命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
(1) 进入系统视图。
system-view
(2) 开启L2VPN功能。
l2vpn enable
缺省情况下,L2VPN功能处于关闭状态。
(3) 创建VSI,并进入VSI视图。
vsi vsi-name
(4) 开启VSI。
undo shutdown
缺省情况下,VSI处于开启状态。
创建EVPN实例后,可以为其配置RD和RT属性。PE在发布EVPN路由时,携带对应EVPN实例视图下配置的RD和RT。
EVPN实例的创建方式包括以下几种:
· 系统视图下创建EVPN实例:创建EVPN实例后,不同的VSI均可以关联该EVPN实例,无需在各个VSI下重复配置相同的EVPN实例,以简化配置。
· VSI实例下创建EVPN实例:创建EVPN实例时,该EVPN实例直接与该VSI关联,无需手动关联VSI与EVPN实例。
VSI实例视图下创建EVPN实例后,该VSI不能与系统视图下的EVPN实例关联;反之亦然。
在EVPN VPLS over SRv6组网中,可以通过如下方式配置SRv6 PW的数据封装类型:
· 在PW模板视图下配置SRv6 PW的数据封装类型,EVPN实例引用该PW模板。
· 直接在VSI实例下SRv6封装的EVPN实例视图下配置SRv6 PW的数据封装类型。
如果同时通过上述两种方式配置了SRv6 PW的数据封装类型,则优先使用VSI实例下SRv6封装的EVPN实例视图下的配置。
(1) 进入系统视图。
system-view
(2) (可选)配置PW模板。
a. 创建PW模板,并进入PW模板视图。
pw-class class-name
本命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
b. 配置SRv6 PW数据封装类型。
srv6-pw-type { ethernet | vlan }
未指定SRv6 PW的数据封装类型。
如果AC的接入模式是Ethernet,并且本命令配置的SRv6 PW数据封装类型为VLAN,则SRv6 PW的SID不能超过3层。
c. 退回系统视图。
quit
(3) 创建EVPN实例,并进入EVPN实例视图。
evpn instance instance-name
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(4) 配置EVPN实例的RD。
route-distinguisher route-distinguisher
缺省情况下,未指定EVPN实例的RD。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(5) 配置EVPN实例的Route Target属性。
vpn-target vpn-target&<1-8> [ both | export-extcommunity | import-extcommunity ]
缺省情况下,未指定EVPN实例的Route Target属性。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
参数 |
使用说明 |
export-extcommunity |
不同EVPN实例的Export target不能相同;不同视图(系统视图、VSI视图、VPN实例视图、公网实例视图、交叉连接组视图)下EVPN实例的Export target也不能相同 |
import-extcommunity |
VPN实例、公网实例、各视图下EVPN实例的Import target建议不要与交叉连接组EVPN实例的Export target相同,反之亦然 |
(6) (可选)配置EVPN实例引用PW模板。
pw-class class-name
缺省情况下,EVPN实例未引用PW模板。
执行本配置指定引用PW模板后,该PW模板将应用于当前EVPN实例下建立的所有PW。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(7) (可选)指定引用的隧道策略。
tunnel-policy tunnel-policy-name
缺省情况下,未引用隧道策略。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(8) (可选)对EVPN实例应用出方向路由策略。
export route-policy route-policy
缺省情况下,不对发布的路由进行过滤。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(9) (可选)对EVPN实例应用入方向路由策略。
import route-policy route-policy
缺省情况下,不对发布的路由进行过滤。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(10) 退回系统视图。
quit
(11) 进入VSI视图。
vsi vsi-name
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(12) 配置VSI与EVPN实例关联。
evpn encapsulation srv6 binding instance instance-name vsi-tag tag-id
缺省情况下,VSI未关联EVPN实例。
一个VSI实例仅能关联一个SRv6封装类型的EVPN实例。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(3) 创建EVPN实例,并进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 配置EVPN实例的RD。
route-distinguisher route-distinguisher
缺省情况下,未指定EVPN实例的RD。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(5) 配置EVPN实例的Route Target属性。
vpn-target { vpn-target&<1-8> } [ both | export-extcommunity | import-extcommunity ]
缺省情况下,未指定EVPN实例的Route Target属性。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
参数 |
使用说明 |
export-extcommunity |
不同VSI实例下EVPN实例的Export target不能相同;不同视图(系统视图、VSI视图、VPN实例视图、公网实例视图、交叉连接组视图)下EVPN实例的Export target也不能相同 |
import-extcommunity |
VPN实例、公网实例、各视图下EVPN实例的Import target建议不要与交叉连接组EVPN实例的Export target相同,反之亦然 |
(6) (可选)指定引用的隧道策略。
tunnel-policy tunnel-policy-name
缺省情况下,未引用隧道策略。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(7) (可选)在EVPN实例下,配置SRv6 PW的数据封装类型。
srv6-pw-type { ethernet | vlan }
缺省情况下,未指定SRv6 PW的数据封装类型。
如果AC的接入模式是Ethernet,并且本命令配置的SRv6 PW数据封装类型为VLAN,则SRv6 PW的SID不能超过3层。
(8) (可选)在PW模板视图下配置SRv6 PW的数据封装类型,EVPN实例引用该PW模板。
a. 配置EVPN实例引用PW模板。
pw-class class-name
缺省情况下,EVPN实例未引用PW模板。
执行本配置指定引用PW模板后,该PW模板将应用于当前EVPN实例下建立的所有SRv6 PW。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
b. 退回系统视图。
quit
c. 创建PW模板,并进入PW模板视图。
pw-class class-name
本命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
d. 在PW模板视图下,配置SRv6 PW的数据封装类型。
srv6-pw-type { ethernet | vlan }
缺省情况下,未指定SRv6 PW的数据封装类型。
如果AC的接入模式是Ethernet,并且本命令配置的SRv6 PW数据封装类型为VLAN,则SRv6 PW的SID不能超过3层。
(1) 进入系统视图。
system-view
(2) 开启SRv6功能,并进入SRv6视图。
segment-routing ipv6
(3) 配置Locator段,并进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 配置Opcode段。
¡ 配置End.DT2U SID。
opcode { opcode | hex hex-opcode } end-dt2u vsi vsi-name
¡ 配置End.DT2UL SID。
opcode { opcode | hex hex-opcode } end-dt2ul vsi vsi-name
¡ 配置End.DX2 SID。
opcode { opcode | hex hex-opcode } end-dx2 vsi vsi-name interface interface-type interface-number [ service-instance instance-id ]
¡ 配置End.DX2L SID。
opcode { opcode | hex hex-opcode } end-dx2l vsi vsi-name interface interface-type interface-number [ service-instance instance-id ]
¡ 配置End.DT2M SID。
opcode { opcode | hex hex-opcode } end-dt2m vsi vsi-name
执行本配置后,设备将从引用的Locator段中为VSI申请SRv6 SID。
配置VSI引用Locator段的方式包括:
· 在系统视图下的EVPN实例中配置VSI引用的Locator段:关联该EVPN实例的不同VSI均可以引用同一个Locator段,无需在各个VSI下重复引用Locator段,以简化配置。
· 配置VSI实例下引用的Locator段:该Locator段仅可以被当前的VSI引用,如果其他VSI也需要引用该Locator段,则需要在其他的VSI视图下配置相同的Locator段。
(1) 进入系统视图。
system-view
(2) 创建EVPN实例,并进入EVPN实例视图。
evpn instance instance-name
(3) 配置VSI引用的Locator段。
segment-routing ipv6 locator locator-name [ dt2u-locator dt2u-locator-name ] [ dt2ul-locator dt2ul-locator-name ] [ auto-sid-disable ]
缺省情况下,未指定VSI引用的Locator段。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 配置VSI引用的Locator段。
segment-routing ipv6 locator locator-name [ dt2u-locator dt2u-locator-name ] [ dt2ul-locator dt2ul-locator-name ] [ dx2-locator dx2-locator-name ] [ dx2l-locator dx2l-locator-name ] [ auto-sid-disable ]
缺省情况下,未指定VSI引用的Locator段。
缺省情况下,PE接收到携带End.DT2U SID或End.DT2UL SID的报文后,会在End.DT2U SID或End.DT2UL SID所属的VSI内查找MAC地址表转发该报文。
执行本配置后,PE将为与VSI关联的每个AC分配一个End.DX2 SID或End.DX2L SID,并通过MAC/IP发布路由将该SID通告给远端PE。PE接收到携带本地分配的End.DX2 SID或End.DX2L SID的SRv6报文后,无需查找MAC地址表,直接将解除SRv6封装的报文发送给与该SID关联的AC,从而提高了转发效率。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 配置基于End.DX2 SID和End.DX2L SID转发单播流量。
unicast-forwarding dx2-based
缺省情况下,基于End.DT2U SID和End.DT2UL SID转发单播流量。
EVPN VPLS over SRv6网络中,PE为用户侧流量封装End.DT2M SID、End.DT2U SID、End.DT2UL SID、End.DX2 SID或End.DX2L SID后,可以根据如下路由迭代方式为封装后的报文查找转发路径:
· SRv6 BE方式:该方式根据封装的SID查找IPv6路由表进行转发。
· SRv6 TE方式:该方式根据路由的Color属性或下一跳地址查找匹配的SRv6 TE Policy,为报文添加携带End.DT2M SID(或End.DT2U SID、End.DT2UL SID、End.DX2 SID、End.DX2L SID)、SRv6 TE Policy SID列表的SRH头后,通过SRv6 TE Policy转发该报文。
· SRv6 TE和SRv6 BE混合方式:优先通过SRv6 TE方式选择转发路径;如果SRv6 TE方式未找到可用的SRv6 TE Policy,则通过SRv6 BE方式选择转发路径。
采用SRv6 TE或SRv6 TE/SRv6 BE混合方式时,需要配置SRv6 TE Policy引流,详细配置方法请参见“1.9 配置SRv6 TE Policy引流”。
(1) 进入系统视图。
system-view
(2) 创建EVPN实例,并进入EVPN实例视图。
evpn instance instance-name
(3) 配置路由迭代方式。
segment-routing ipv6 { best-effort | traffic-engineering [ best-effort ] }
缺省情况下,根据EVPN路由的下一跳地址查找IPv6路由表进行转发。
VSI与EVPN实例关联后,该VSI将采用本配置指定的路由迭代方式。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 配置路由迭代方式。
segment-routing ipv6 { best-effort | traffic-engineering [ best-effort ] }
缺省情况下,根据EVPN路由的下一跳地址查找IPv6路由表进行转发。
采用SRv6 TE方式或SRv6 TE和SRv6 BE混合方式进行路由迭代时,还需配置本功能才能将报文引流到SRv6 TE Policy上。
若同时配置了基于Color和基于隧道策略两种引流方式,则优先采用基于Color引流。
在EVPN VPWS over SRv6组网中,PE查找是否存在Color和Endpoint地址与EVPN路由的Color扩展团体属性和下一跳地址完全相同的SRv6 TE Policy。若存在,则将该EVPN路由迭代到SRv6 TE Policy。当设备收到匹配该EVPN路由的报文时,会通过SRv6 TE Policy转发该报文。
EVPN路由的Color有如下两种配置方式:
· 路由策略方式:如果EVPN路由不携带Color扩展团体属性,可以通过路由策略为EVPN路由添加Color扩展团体属性;如果EVPN路由携带Color扩展团体属性,也可以通过路由策略修改Color扩展团体属性。
· 缺省Color方式:如果EVPN路由不携带Color扩展团体属性,且未通过路由策略方式配置该路由的Color扩展团体属性,则该路由使用配置的缺省Color值。
采用路由策略方式引流时,需要通过路由策略等方式为EVPN路由添加Color扩展团体属性。路由策略的配置方法请参见“三层技术-IP路由配置指导”中的“路由策略”。
若本地引用的EVPN入方向路由策略中,配置的apply extcommunity color命令指定了additive参数且收到的EVPN路由本身携带Color扩展团体属性,则采用多个Color扩展团体属性中数值最大的Color扩展团体属性进行基于Color的引流。
(1) 进入系统视图。
system-view
(2) 进入路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
本命令的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(3) 配置BGP路由的Color扩展团体属性。
apply extcommunity color color [ additive ]
缺省情况下,未配置BGP路由属性。
本命令的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(4) 退回系统视图。
quit
(1) 进入系统视图。
system-view
(2) 进入EVPN实例视图。
evpn instance instance-name
(3) 对EVPN实例应用出方向路由策略。
export route-policy route-policy
缺省情况下,不对发布的路由进行过滤。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(4) 对EVPN实例应用入方向路由策略。
import route-policy route-policy
缺省情况下,不对发布的路由进行过滤。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 配置EVPN的入方向路由策略。
import route-policy route-policy
缺省情况下,EVPN实例下未配置EVPN的入方向路由策略,即不对接收的路由进行过滤。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(5) 配置EVPN的出方向路由策略。
export route-policy route-policy
缺省情况下,在EVPN实例下未配置EVPN的出方向路由策略,即不对发布的路由进行过滤。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入EVPN实例视图。
evpn encapsulation srv6
(4) 配置EVPN路由的缺省Color值。
default color color-value
缺省情况下,未配置EVPN路由的缺省Color值。
根据路由下一跳地址在隧道策略中查找匹配的SRv6 TE Policy,实现采用指定SRv6 TE Policy的路径作为承载SRv6 PW的公网隧道来转发私网报文。隧道策略的详细介绍请参见“MPLS配置指导”中的“隧道策略”。
(1) 进入系统视图。
system-view
(2) 创建隧道策略,并进入隧道策略视图。
tunnel-policy tunnel-policy-name [ default ]
(3) 配置隧道策略。请至少选择其中一项进行配置。
¡ 配置隧道与目的IP进行绑定,从而限制该隧道只能承载特定的VPN业务。
binding-destination dest-ipv6-address { srv6-policy group srv6-policy-group-id | srv6-policy { name policy-name | end-point ipv6 ipv6-address color color-value } } [ ignore-destination-check ] [ down-switch ]
缺省情况下,未将目的IP与任何隧道绑定。
¡ 配置指定的SRv6 TE Policy隧道为首选隧道。
preferred-path srv6-policy { name srv6-policy-name | end-point ipv6 ipv6-address color color-value }
缺省情况下,未配置首选隧道。
¡ 配置SRv6 TE Policy隧道的负载分担策略。
select-seq srv6-policy load-balance-number number
缺省情况下,未配置负载分担策略。
本命令的详细描述,请参见“MPLS命令参考”中的“隧道策略”。
(1) 进入系统视图。
system-view
(2) 进入EVPN实例视图。
evpn instance instance-name
(3) 指定引用的隧道策略。
tunnel-policy tunnel-policy-name
缺省情况下,未引用隧道策略。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 指定引用的隧道策略。
tunnel-policy tunnel-policy-name
缺省情况下,未引用隧道策略。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
将三层接口与VSI关联后,从三层接口接收到的报文,将通过查找关联VSI的MAC地址表进行转发。
本配置中各命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
(1) 进入系统视图。
system-view
(2) 进入三层接口视图。
interface interface-type interface-number
(3) 将三层接口与VSI关联。
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ]
缺省情况下,三层接口未关联VSI。
将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。以太网服务实例提供了多种报文匹配规则(包括接口接收到的所有报文、所有携带VLAN Tag的报文和所有不携带VLAN Tag的报文等),为报文关联VSI提供了更加灵活的方式。
本配置中各命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
不能通过重复执行encapsulation命令修改报文匹配规则。如需修改报文匹配规则,请先通过undo encapsulation命令删除报文匹配规则,再执行encapsulation命令。
删除以太网服务实例下的报文匹配规则后,会自动取消以太网服务实例与VSI的关联。
(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-list [ only-tagged ]
¡ 同时匹配报文的外层和内层VLAN tag。
encapsulation s-vid vlan-id c-vid vlan-id-list
¡ 匹配不携带VLAN tag的所有报文。
encapsulation { tagged | untagged }
¡ 匹配未匹配到接口上其他以太网服务实例的所有报文。
encapsulation default
同一个接口上最多只能有一个服务实例采用缺省的报文匹配规则。
如果接口上只存在一个配置了encapsulation default规则的以太网服务实例,则该接口上的所有报文都匹配该以太网服务实例。
缺省情况下,未配置报文匹配规则。
(5) 将以太网服务实例与VSI关联。
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ]
缺省情况下,以太网服务实例未关联VSI。
BGP相关命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 将对端PE配置为IPv6对等体。
peer { group-name | ipv6-address [ prefix-length ] } as-number as-number
(4) 指定与IPv6对等体/对等体组创建BGP会话时建立TCP连接使用的源接口。
peer { group-name | ipv6-address [ prefix-length ] } connect-interface interface-type interface-number
缺省情况下,BGP使用到达BGP对等体的最佳路由的出接口作为与对等体/对等体组创建BGP会话时建立TCP连接的源接口。
(5) 创建BGP EVPN地址族,并进入BGP EVPN地址族视图。
address-family l2vpn evpn
(6) 使能本地路由器与指定IPv6对等体交换EVPN路由信息的能力。
peer { group-name | ipv6-address [ prefix-length ] } enable
缺省情况下,本地路由器不能与对等体交换EVPN路由信息。
(7) 配置向对等体/对等体组发布SRv6封装的EVPN路由。
peer { group-name | ipv6-address [ prefix-length ] } advertise encap-type srv6
缺省情况下,向对等体/对等体组发布VXLAN封装的EVPN路由。
在EVPN VPLS over SRv6组网环境中,必须指定封装的IPv6报文头的源地址。否则,无法通过EVPN VPLS over SRv6转发数据流量。
配置源地址时,不能为环回地址、链路本地地址、组播地址和未指定地址。指定的源地址必须为本机地址,且已经由路由协议发布,建议指定本设备的Loopback接口地址。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 配置EVPN VPLS over SRv6封装的IPv6报文头的源地址。
encapsulation source-address ipv6-address [ ip-ttl ttl-value ]
缺省情况下,未指定EVPN VPLS over SRv6封装的IPv6报文头的源地址。
建议为同一冗余备份组中各PE连接多归属站点的AC接口配置相同的冗余备份模式。
主接口及其子接口上均可以配置ESI:
· 若主接口及其子接口上都配置了ESI,或仅在子接口上配置了ESI,则子接口的ESI以该子接口上的配置为准,子接口的冗余备份模式也以该子接口上的配置为准。
· 若仅在主接口上配置了ESI,则子接口继承主接口的ESI和冗余备份模式。即使 子接口上配置了冗余备份模式,该配置也不会生效。
ESI是ES的唯一标识,ESI相同的接口(或VSI)属于同一个ES,报文可以在这些接口(或VSI)之间进行负载分担。
(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) 配置接口ESI。
esi esi-id
缺省情况下,未配置接口的ESI。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
多归属站点的冗余备份模式包括单活冗余模式和多活冗余模式。
冗余备份组中的各PE分别与远端PE建立PW,若需两条PW间形成主备关系,则使用单活冗余模式;若需PW间形成等价负载分担,则使用多活冗余模式。
(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) 配置接口的冗余备份模式。
evpn redundancy-mode { all-active | single-active }
缺省情况下,冗余备份模式为多活冗余模式。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
本功能是指多归属站点AC故障时,将需要通过故障AC转发的流量临时通过冗余备份组成员PE间的Bypass SRv6 PW转发,减少AC故障导致的丢包。
如果全局视图下开启EVPN实例FRR功能的同时,在指定EVPN实例下执行了evpn frr local命令,则当前EVPN实例的FRR功能状态以EVPN实例下的配置为准。
如果在指定EVPN实例下开启了EVPN的FRR功能,则执行undo evpn multihoming vpls-frr local命令不会关闭该EVPN实例下的FRR功能。
本功能配置在冗余备份组成员PE上。
(1) 进入系统视图。
system-view
(2) 开启全局EVPN VPLS over SRv6的FRR功能。
evpn multihoming vpls-frr local
缺省情况下,EVPN VPLS over SRv6的FRR功能处于关闭状态。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(1) 进入系统视图。
system-view
(2) 进入EVPN实例视图。
evpn instance instance-name
(3) 开启或关闭指定EVPN实例的FRR功能。
evpn frr local { disable | enable }
缺省情况下,EVPN实例的FRR功能状态与EVPN VPLS全局FRR功能状态保持一致。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(1) 进入系统视图。
system-view
(2) 进入VSI实例视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 开启或关闭指定EVPN实例的FRR功能。
evpn frr local { disable | enable }
缺省情况下,EVPN实例的FRR功能状态与EVPN VPLS全局FRR功能状态保持一致。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
EVPN VPLS over SRv6多归属单活组网中,CE 1采用S-Trunk方式双归属接入PE 1和PE 2,PE 1为主用设备,PE 2为备份设备,PE 2上AC状态为Down。当PE 1上AC故障时,PE 1会撤销以太网自动发现路由,同时PE 2上的AC状态为Up,并向远端PE发送以太网自动发现路由,远端PE需要收到PE 2发送的以太网自动发现路由,才能切换至备份路径,路径切换过程速度较慢,会导致报文丢失。为解决上述问题,可在PE 2上配置本命令,使PE 2忽略AC状态并向远端PE发送以太网自动发现路由,远端PE保存该路由。当PE 1的AC故障时,远端PE将流量快速切换至备份路径,减少丢包。
系统视图和VSI视图下均可以配置VSI忽略AC状态功能。系统视图的配置对所有VSI都有效,而VSI视图的配置只对当前VSI有效。对于一个VSI来说,优先采用该VSI内的配置,只有该VSI内未进行配置时,才采用系统视图的配置。
本功能可以与本地重生成MAC/IP发布路由中的MAC地址功能配合使用。
(1) 进入系统视图。
system-view
(2) 全局开启VSI忽略AC状态功能。
l2vpn ignore-ac-state [ evpn-vpls ]
缺省情况下,VSI忽略AC状态的功能处于关闭状态。
(1) 进入系统视图。
system-view
(2) 进入VSI实例视图。
vsi vsi-name
(3) 开启或关闭指定VSI忽略AC状态的功能。
ignore-ac-state { enable | disable }
缺省情况下,指定VSI忽略AC状态的功能与全局VSI忽略AC功能状态的开关情况保持一致。
为了避免广播发送的ARP请求报文占用核心网络带宽,PE会根据接收到的ARP请求和ARP应答报文、BGP EVPN路由在本地建立ARP泛洪抑制表项。当PE再收到本地站点内虚拟机请求其它虚拟机MAC地址的ARP请求时,优先根据ARP泛洪抑制表项进行代答。如果没有对应的表项,则通过SRv6 PW将ARP请求泛洪到其他站点。ARP泛洪抑制功能可以大大减少ARP泛洪的次数。
开启ARP泛洪抑制时,如果同时执行flooding disable命令关闭了VSI的泛洪功能,则建议通过mac-address timer命令配置动态MAC地址的老化时间大于25分钟(ARP泛洪抑制表项的老化时间),以免MAC地址在ARP泛洪抑制表项老化之前老化,产生黑洞MAC地址。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 开启ARP泛洪抑制功能。
arp suppression enable
缺省情况下,ARP泛洪抑制功能处于关闭状态。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
如果EVPN VPLS over SRv6的路由迭代方式是SRv6 TE方式,则PE会为报文添加携带End.DT2M SID(或End.DT2U SID、End.DT2UL SID、End.DX2 SID、End.DX2L SID)、SRv6 TE Policy SID列表的SRH头,然后通过SRv6 TE Policy转发该报文。
在该组网环境中执行本命令时,SRv6 TE Policy的SID列表中end类型、附加行为是PSP的SID最多支持2个,或者end-coc32和end-x-coc32类型、附加行为是PSP的SID最多支持5个,否则使用Ping或Tracert检测SRv6 PW的单向连通性失败。
EVPN VPLS over SRv6组网中,本端PE设备与远端PE设备间通过SRv6 PW传输数据报文。当PE间出现丢包或断流现象时,可通过本命令检测本端PE到远端PE间SRv6 PW的单向连通性。具体检测过程为:
(1) 本端PE设备构造MPLS Echo请求报文,通过在指定VSI下查找到达指定目的MAC地址的转发信息,找到对应的SRv6隧道,并获取该隧道的End.DT2U SID,依次封装UDP头、IPv6报文头后将请求报文发送给远端PE。
(2) 远端PE设备收到MPLS Echo请求报文后,回复MPLS Echo应答报文。
(3) 本端PE设备根据是否收到MPLS Echo应答报文、收到MPLS Echo应答报文的时间,判断该SRv6 PW连通性,并输出相应的统计信息。
可在任意视图下执行本命令,检测EVPN VPLS over SRv6组网中SRv6 PW的单向连通性。
ping evpn vpls srv6 vsi vsi-name mac mac-address [ end-op endop ] [ -a source-ipv6 | -c count | -h hop-limit | -m interval | -r reply-mode | -s packet-size | -t time-out | -tc tc ] *
EVPN VPLS over SRv6组网中,本端PE设备与远端PE设备间通过SRv6 PW传输数据报文。当PE间出现丢包或断流现象时,可通过本命令查看本端PE到指定主机连接的远端PE间单向SRv6 PW所经过的路径,并根据应答信息对错误点进行定位。具体检测过程为:
(1) 本端PE设备构造MPLS Echo请求报文,通过在指定VSI下查找到达指定目的MAC地址的信息,找到对应的SRv6隧道,并获取该隧道的End.DT2U SID,依次封装UDP头、IPv6报文头后将请求报文发送给远端PE。此时IPv6报文头部的Hop limit字段的取值设置为1。
(2) 下一个节点收到报文后,Hop limit字段的值变成0,会向首节点(即本端PE)发送ICMPv6超时报文。
(3) 本端PE收到ICMPv6超时报文后,将Hop limit字段的取值加1(此时设置为2)继续发送ICMPv6回显请求报文。
(4) 下游节点收到报文后,依次将Hop limit减1,直到Hop limit为0,该节点会向首节点(即本端PE)发送ICMPv6超时报文;若为目的节点则向首节点发送MPLS Echo应答报文。
(5) 本端PE依次重复上述过程,直至未在time-out时间内收到应答报文或收到远端PE发送的应答报文。
(6) 本端PE设备根据是否收到应答报文、收到应答报文的时间,判断该SRv6 PW连通性,并输出相应的统计信息。
可在任意视图下执行本命令,查看本端PE到指定主机连接的远端PE间PW所经过的路径,并根据应答信息对错误点进行定位。
tracert evpn vpls srv6 vsi vsi-name mac mac-address [ end-op endop ] [ -a source-ip | -h hop-limit | -r reply-mode | -t time-out | -tc tc ] *
· 显示BGP EVPN对等体组的信息。
display bgp [ instance instance-name ] group l2vpn evpn [ group-name group-name ]
本命令的详细介绍请参见“三层技术-IP路由命令参考”中的“BGP基础命令”。
· 显示BGP EVPN对等体或对等体组的状态和统计信息。
display bgp [ instance instance-name ] peer l2vpn evpn [ ipv4-address mask-length | { ipv4-address | group-name group-name } log-info | [ ipv4-address ] verbose ]
本命令的详细介绍请参见“三层技术-IP路由命令参考”中的“BGP基础命令”。
· 显示BGP EVPN地址族的打包组相关信息。
display bgp [ instance instance-name ] update-group l2vpn evpn [ ipv4-address ]
本命令的详细介绍请参见“三层技术-IP路由命令参考”中的“BGP基础命令”。
· 显示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 | imet | mac-ip } ] * [ { evpn-route route-length | evpn-prefix } [ advertise-info ] | ipv4-address | ipv6-address | mac-address ] | statistics ]
本命令的详细介绍请参见“EVPN命令参考”中的“EVPN”。
可在任意视图下执行以下命令:
· 显示EVPN通过BGP自动发现的邻居信息。
display evpn auto-discovery { mac-ip [ srv6 ] [ peer ip-address] [ vsi vsi-name ] | macip-prefix [ nexthop next-hop ] [ count ] }
本命令的详细介绍请参见“EVPN命令参考”中的“EVPN”。
· 显示EVPN的ES信息。
display evpn es { local [ count | [ vsi vsi-name ] [ esi esi-id ] [ verbose ] ] | remote [ vsi vsi-name ] [ esi esi-id ] [ nexthop next-hop ] [ verbose ]}
本命令的详细介绍请参见“EVPN命令参考”中的“EVPN”。
· 显示VSI的信息。
display l2vpn vsi [ evpn-srv6 | name vsi-name ] [ count | verbose ]
· 显示L2VPN的SRv6相关信息。
display l2vpn peer srv6 [ vsi vsi-name ] [ state-machine | verbose ]
· 显示PW模板的信息。
display l2vpn pw-class [ class-name ] [ verbose ]
本命令的详细介绍请参见“MPLS命令参考”中的“VPLS”。
可在任意视图下执行以下命令:
· 显示EVPN的MAC地址信息。
display evpn route mac [ srv6 ] [ local | remote ] [ vsi vsi-name ] [ mac-address mac-address ] [ count ]
本命令的详细介绍请参见“EVPN命令参考”中的“EVPN”。
· 显示L2VPN的MAC地址表信息。
display l2vpn mac-address [ vsi vsi-name ] [ dynamic ] [ count | verbose ]
本命令的详细介绍请参见“VXLAN命令参考”中的“VXLAN”。
· 显示EVPN的ARP泛洪抑制信息。
display evpn route arp suppression [ srv6 ] [ local | remote ] [ vsi vsi-name ] [ ip ip-address ] [ count ]
本命令的详细介绍请参见“EVPN命令参考”中的“EVPN”。
可在任意视图下执行以下命令:
· 显示EVPN VPLS over SRv6组网中EVPN VSI的转发信息。
display l2vpn forwarding evpn [ vsi [ name vsi-name ] [ verbose ] ] [ slot slot-number ]
本命令的详细介绍请参见“EVPN命令参考”中的“EVPN”。
· 显示EVPN多归属组网中满足水平分割原则的接口信息。
display l2vpn forwarding evpn split-horizon { ac interface interface-type interface-number | ac interface interface-type interface-number service-instance instance-id | tunnel tunnel-number } [ slot slot-number ]
本命令的详细介绍请参见“EVPN命令参考”中的“EVPN”。
· 显示SRv6的转发信息。
display l2vpn forwarding srv6 [ vsi vsi-name ] [ slot slot-number ] [ verbose ]
用户网络有两个站点,分别为CE 1和CE 2。CE 1和CE 2通过以太网接口分别接入PE 1和PE 2并希望通过IPv6骨干网运行EVPN VPLS over SRv6功能实现二层互通。
图1-4 EVPN VPLS over SRv6单归属配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
CE 1 |
HGE1/0/1 |
10::1/64 |
P |
Loop0 |
3::3/128 |
PE 1 |
Loop0 |
1::1/128 |
|
HGE1/0/1 |
20::2/64 |
|
HGE1/0/1 |
- |
|
HGE1/0/2 |
30::1/64 |
|
HGE1/0/2 |
20::1/64 |
PE 2 |
Loop0 |
2::2/128 |
CE 2 |
HGE1/0/1 |
10::2/64 |
|
HGE1/0/1 |
- |
|
|
|
|
HGE1/0/2 |
30::2/64 |
(1) 配置CE 1
<CE1> system-view
[CE1] interface hundredgige 1/0/1
[CE1-HundredGigE1/0/1] ipv6 address 10::1 64
[CE1-HundredGigE1/0/1] quit
(2) 配置PE 1
# 在PE 1上运行OSPFv3,通过OSPFv3发布SID。
<PE1> system-view
[PE1] ospfv3
[PE1-ospfv3-1] router-id 1.1.1.1
[PE1-ospfv3-1] segment-routing ipv6 locator aaa
[PE1-ospfv3-1] area 0.0.0.0
[PE1-ospfv3-1-area-0.0.0.0] quit
[PE1-ospfv3-1] quit
# 配置Loopback0接口。
[PE1] interface loopback 0
[PE1-LoopBack0] ipv6 address 1::1 128
[PE1-LoopBack0] ospfv3 1 area 0
[PE1-LoopBack0] quit
# 开启L2VPN功能。
[PE1] l2vpn enable
# 配置连接P的接口HundredGigE1/0/2。
[PE1] interface hundredgige 1/0/2
[PE1-HundredGigE1/0/2] ipv6 address 20::1 64
[PE1-HundredGigE1/0/2] ospfv3 1 area 0
[PE1-HundredGigE1/0/2] undo shutdown
[PE1-HundredGigE1/0/2] quit
# 在PE 1和PE 2之间建立IBGP连接,并配置在二者之间通过BGP EVPN发布路由信息。
[PE1] bgp 100
[PE1-bgp-default] router-id 1.1.1.1
[PE1-bgp-default] peer 2::2 as-number 100
[PE1-bgp-default] peer 2::2 connect-interface loopback 0
[PE1-bgp-default] address-family l2vpn evpn
[PE1-bgp-default-evpn] peer 2::2 enable
[PE1-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE1-bgp-default-evpn] quit
[PE1-bgp-default] quit
# 创建VSI和EVPN实例,并指定EVPN采用SRv6封装,配置EVPN实例的RD与RT,配置根据路由携带的SID属性进行迭代,并指定EVPN实例引用的Locator段。
[PE1] vsi vpna
[PE1-vsi-vpna] evpn encapsulation srv6
[PE1-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE1-vsi-vpna-evpn-srv6] quit
# 将接口HundredGigE1/0/1与VSI关联。
[PE1] interface hundredgige 1/0/1
[PE1-HundredGigE1/0/1] xconnect vsi vpna
[PE1-HundredGigE1/0/1] quit
# 配置Locator段,用于申请End.DT2U SID和End.DT2M SID。
[PE1] segment-routing ipv6
[PE1-segment-routing-ipv6] encapsulation source-address 1::1
[PE1-segment-routing-ipv6] locator aaa ipv6-prefix 100:: 64 static 32
[PE1-segment-routing-ipv6-locator-aaa] quit
[PE1-segment-routing-ipv6] quit
(3) 配置PE 2
# 在PE 2上运行OSPFv3,通过OSPFv3发布SID。
<PE2> system-view
[PE2] ospfv3
[PE2-ospfv3-1] router-id 2.2.2.2
[PE2-ospfv3-1] segment-routing ipv6 locator aaa
[PE2-ospfv3-1] area 0.0.0.0
[PE2-ospfv3-1-area-0.0.0.0] quit
[PE2-ospfv3-1] quit
# 配置Loopback0接口。
[PE2] interface loopback 0
[PE2-LoopBack0] ipv6 address 2::2 128
[PE2-LoopBack0] ospfv3 1 area 0
[PE2-LoopBack0] quit
# 开启L2VPN功能。
[PE2] l2vpn enable
# 配置连接P的接口HundredGigE1/0/2。
[PE2] interface hundredgige 1/0/2
[PE2-HundredGigE1/0/2] ipv6 address 30::2 64
[PE2-HundredGigE1/0/2] ospfv3 1 area 0.0.0.0
[PE2-HundredGigE1/0/2] undo shutdown
[PE2-HundredGigE1/0/2] quit
# 在PE 1和PE 2之间建立IBGP连接,并配置在二者之间通过BGP EVPN发布路由信息。
[PE2] bgp 100
[PE2-bgp-default] router-id 2.2.2.2
[PE2-bgp-default] peer 1::1 as-number 100
[PE2-bgp-default] peer 1::1 connect-interface loopback 0
[PE2-bgp-default] address-family l2vpn evpn
[PE2-bgp-default-evpn] peer 1::1 enable
[PE2-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE2-bgp-default-evpn] quit
[PE2-bgp-default] quit
# 创建VSI和EVPN实例,并指定EVPN采用SRV6封装,配置EVPN实例的RD与RT,配置根据路由携带的SID属性进行迭代,并指定EVPN实例引用的Locator段。
[PE2] vsi vpna
[PE2-vsi-vpna] evpn encapsulation srv6
[PE2-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE2-vsi-vpna-evpn-srv6] quit
# 将接口HundredGigE1/0/1与VSI关联。
[PE2] interface hundredgige 1/0/1
[PE2-HundredGigE1/0/1] xconnect vsi vpna
[PE2-HundredGigE1/0/1] quit
# 配置Locator段,用于申请End.DT2U SID和End.DT2M SID。
[PE2] segment-routing ipv6
[PE2-segment-routing-ipv6] encapsulation source-address 2::2
[PE2-segment-routing-ipv6] locator aaa ipv6-prefix 200:: 64 static 32
[PE2-segment-routing-ipv6-locator-aaa] quit
[PE2-segment-routing-ipv6] quit
(4) 配置P
# 在P上运行OSPFv3。
<P> system-view
[P] ospfv3
[P-ospfv3-1] router-id 3.3.3.3
[P-ospfv3-1] area 0.0.0.0
[P-ospfv3-1-area-0.0.0.0] quit
[P-ospfv3-1] quit
# 配置接口的IPv6地址,并在接口上运行OSPFv3。
[P] interface loopback 0
[P-LoopBack0] ipv6 address 3::3 128
[P-LoopBack0] ospfv3 1 area 0
[P-LoopBack0] quit
[P] interface hundredgige 1/0/1
[P-HundredGigE1/0/1] ipv6 address 20::2 64
[P-HundredGigE1/0/1] ospfv3 1 area 0
[P-HundredGigE1/0/1] quit
[P] interface hundredgige 1/0/2
[P-HundredGigE1/0/2] ipv6 address 30::1 64
[P-HundredGigE1/0/2] ospfv3 1 area 0
[P-HundredGigE1/0/2] quit
(5) 配置CE 2
<CE2> system-view
[CE2] interface hundredgige 1/0/1
[CE2-HundredGigE1/0/1] ipv6 address 10::2 64
[CE2-HundredGigE1/0/1] quit
# 在PE 1上查看L2VPN的SRv6相关信息,可以看到PE 1和PE 2之间建立了SRv6隧道。
[PE1] display l2vpn peer srv6
Total number of SRv6 Tunnels: 1
1 up, 0 blocked, 0 down
VSI Name: vpna
Peer : 2::2
Flag : Main
State : Up
# 在PE 1上查看SRv6转发信息。
[PE1] display l2vpn forwarding srv6
Total number of VSIs: 1
Total number of SRv6 tunnels: 1, 1 up, 0 blocked, 0 down
VSI Name : vpna
Link ID : 0x9000000 Type: BE State: Up
In SID : 100::1:0:1
Out SID : 200::1:0:0
# CE 1与CE 2之间能够ping通。
用户网络有两个站点,分别为CE 1和CE 2。CE 1通过聚合链路多归属于PE 1和PE 2,CE 2为PE 3下的单归属设备。CE 1和CE 2希望通过骨干网的EVPN VPLS over SRv6功能二层互通。
图1-5 EVPN VPLS over SRv6多归属配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
PE 1 |
Loop0 |
1::1/128 |
CE 1 |
RAGG1 |
100::1/64 |
|
HGE1/0/1 |
- |
CE 2 |
HGE1/0/1 |
100::2/64 |
|
HGE1/0/2 |
10::1/64 |
PE 3 |
Loop0 |
3::3/128 |
|
HGE1/0/3 |
20::1/64 |
|
HGE1/0/1 |
- |
PE 2 |
Loop0 |
2::2/128 |
|
HGE1/0/2 |
10::3/64 |
|
HGE1/0/1 |
- |
|
HGE1/0/3 |
30::3/64 |
|
HGE1/0/2 |
30::2/64 |
|
|
|
|
HGE1/0/3 |
20::2/64 |
|
|
|
(1) 配置CE 1
# 创建三层聚合接口1,采用静态聚合模式,并为其配置IP地址和子网掩码。
<CE1> system-view
[CE1] interface route-aggregation 1
[CE1-Route-Aggregation1] ipv6 address 100::1 64
[CE1-Route-Aggregation1] quit
# 将接口HundredGigE1/0/1和HundredGigE1/0/2加入到聚合组1中。
[CE1] interface hundredgige 1/0/1
[CE1-HundredGigE1/0/1] port link-aggregation group 1
[CE1-HundredGigE1/0/1] quit
[CE1] interface hundredgige 1/0/2
[CE1-HundredGigE1/0/2] port link-aggregation group 1
[CE1-HundredGigE1/0/2] quit
(2) 配置PE 1
# 在PE 1上运行OSPFv3。
<PE1> system-view
[PE1] ospfv3
[PE1-ospfv3-1] router-id 1.1.1.1
[PE1-ospfv3-1] segment-routing ipv6 locator aaa
[PE1-ospfv3-1] area 0
[PE1-ospfv3-1-area-0.0.0.0] quit
[PE1-ospfv3-1] quit
# 配置Loopback0接口。
[PE1] interface loopback 0
[PE1-LoopBack0] ipv6 address 1::1 128
[PE1-LoopBack0] ospfv3 1 area 0
[PE1-LoopBack0] quit
# 开启L2VPN功能。
[PE1] l2vpn enable
# 配置连接PE 3的接口HundredGigE1/0/2。
[PE1] interface hundredgige 1/0/2
[PE1-HundredGigE1/0/2] ipv6 address 10::1/64
[PE1-HundredGigE1/0/2] ospfv3 1 area 0
[PE1-HundredGigE1/0/2] undo shutdown
[PE1-HundredGigE1/0/2] quit
# 配置连接PE 2的接口HundredGigE1/0/3。
[PE1] interface hundredgige 1/0/3
[PE1-HundredGigE1/0/3] ipv6 address 20::1/64
[PE1-HundredGigE1/0/3] ospfv3 1 area 0
[PE1-HundredGigE1/0/3] undo shutdown
[PE1-HundredGigE1/0/3] quit
# 在PE 1,PE 2和PE 3之间建立IBGP连接,并配置通过BGP EVPN发布路由信息。
[PE1] bgp 100
[PE1-bgp-default] router-id 1.1.1.1
[PE1-bgp-default] peer 2::2 as-number 100
[PE1-bgp-default] peer 2::2 connect-interface loopback 0
[PE1-bgp-default] peer 3::3 as-number 100
[PE1-bgp-default] peer 3::3 connect-interface loopback 0
[PE1-bgp-default] address-family l2vpn evpn
[PE1-bgp-default-evpn] peer 2::2 enable
[PE1-bgp-default-evpn] peer 3::3 enable
[PE1-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE1-bgp-default-evpn] peer 3::3 advertise encap-type srv6
[PE1-bgp-default-evpn] quit
[PE1-bgp-default] quit
# 创建VSI和EVPN实例,并指定EVPN采用SRv6封装,配置EVPN实例的RD与RT,配置根据路由携带的SID属性进行迭代,并指定EVPN实例引用的Locator段。
[PE1] vsi vpna
[PE1-vsi-vpna] evpn encapsulation srv6
[PE1-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE1-vsi-vpna-evpn-srv6] quit
# 在接入站点的接口HundredGigE1/0/1下配置ESI值和接口的冗余备份模式,并将其与VSI关联。
[PE1] interface hundredgige 1/0/1
[PE1-HundredGigE1/0/1] esi 1.1.1.1.1
[PE1-HundredGigE1/0/1] evpn redundancy-mode all-active
[PE1-HundredGigE1/0/1] xconnect vsi vpna
[PE1-HundredGigE1/0/1] quit
# 配置Locator段,用于申请End.DT2U SID和End.DT2M SID。
[PE1] segment-routing ipv6
[PE1-segment-routing-ipv6] encapsulation source-address 1::1
[PE1-segment-routing-ipv6] locator aaa ipv6-prefix 111:: 64 static 32 args 16
[PE1-segment-routing-ipv6-locator-aaa] quit
[PE1-segment-routing-ipv6] quit
(3) 配置PE 2
# 在PE 2上运行OSPFv3。
<PE2> system-view
[PE2] ospfv3
[PE2-ospfv3-1] router-id 2.2.2.2
[PE2-ospfv3-1] segment-routing ipv6 locator aaa
[PE2-ospfv3-1] area 0.0.0.0
[PE2-ospfv3-1-area-0.0.0.0] quit
[PE2-ospfv3-1] quit
# 配置Loopback0接口。
[PE2] interface loopback 0
[PE2-LoopBack0] ipv6 address 2::2 128
[PE2-LoopBack0] ospfv3 1 area 0
[PE2-LoopBack0] quit
# 开启L2VPN功能。
[PE2] l2vpn enable
# 配置连接PE 1的接口HundredGigE1/0/3。
[PE2] interface hundredgige 1/0/3
[PE2-HundredGigE1/0/3] ipv6 address 20::2 64
[PE2-HundredGigE1/0/3] ospfv3 1 area 0
[PE2-HundredGigE1/0/3] undo shutdown
[PE2-HundredGigE1/0/3] quit
# 配置连接PE 3的接口HundredGigE1/0/2。
[PE2] interface hundredgige 1/0/2
[PE2-HundredGigE1/0/2] ipv6 address 30::2 64
[PE2-HundredGigE1/0/2] ospfv3 1 area 0
[PE2-HundredGigE1/0/2] undo shutdown
[PE2-HundredGigE1/0/2] quit
# 在PE 1,PE 2和PE 3之间建立IBGP连接,并配置通过BGP EVPN发布路由信息。
[PE2] bgp 100
[PE2-bgp-default] router-id 2.2.2.2
[PE2-bgp-default] peer 1::1 as-number 100
[PE2-bgp-default] peer 1::1 connect-interface loopback 0
[PE2-bgp-default] peer 3::3 as-number 100
[PE2-bgp-default] peer 3::3 connect-interface loopback 0
[PE2-bgp-default] address-family l2vpn evpn
[PE2-bgp-default-evpn] peer 1::1 enable
[PE2-bgp-default-evpn] peer 3::3 enable
[PE2-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE2-bgp-default-evpn] peer 3::3 advertise encap-type srv6
[PE2-bgp-default-evpn] quit
[PE2-bgp-default] quit
# 创建VSI和EVPN实例,并指定EVPN采用SRV6封装,配置EVPN实例的RD与RT,配置根据路由携带的SID属性进行迭代,并指定EVPN实例引用的Locator段。
[PE2] vsi vpna
[PE2-vsi-vpna] evpn encapsulation srv6
[PE2-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE2-vsi-vpna-evpn-srv6] quit
# 在接入站点的接口HundredGigE1/0/1下配置ESI值和接口的冗余备份模式,并将其与VSI关联。
[PE2] interface hundredgige 1/0/1
[PE2-HundredGigE1/0/1] esi 1.1.1.1.1
[PE2-HundredGigE1/0/1] evpn redundancy-mode all-active
[PE2-HundredGigE1/0/1] xconnect vsi vpna
[PE2-HundredGigE1/0/1] quit
# 配置Locator段,用于申请End.DT2U SID和End.DT2M SID。
[PE2] segment-routing ipv6
[PE2-segment-routing-ipv6] encapsulation source-address 2::2
[PE2-segment-routing-ipv6] locator aaa ipv6-prefix 222:: 64 static 32
[PE2-segment-routing-ipv6-locator-aaa] quit
[PE2-segment-routing-ipv6] quit
(4) 配置PE 3
# 在PE 3上运行OSPFv3。
<PE3> system-view
[PE3] ospfv3
[PE3-ospfv3-1] router-id 3.3.3.3
[PE3-ospfv3-1] segment-routing ipv6 locator aaa
[PE3-ospfv3-1] area 0
[PE3-ospfv3-1-area-0.0.0.0] quit
[PE3-ospfv3-1] quit
# 配置LoopBack0接口。
[PE3] interface loopback 0
[PE3-LoopBack0] ipv6 address 3::3 128
[PE3-LoopBack0] ospfv3 1 area 0
[PE3-LoopBack0] quit
# 开启L2VPN功能。
[PE3] l2vpn enable
# 配置连接PE 1的接口HundredGigE1/0/2。
[PE3] interface hundredgige 1/0/2
[PE3-HundredGigE1/0/2] ipv6 address 10::3 64
[PE3-HundredGigE1/0/2] ospfv3 1 area 0
[PE3-HundredGigE1/0/2] undo shutdown
[PE3-HundredGigE1/0/2] quit
# 配置连接PE 2的接口HundredGigE1/0/3。
[PE3] interface hundredgige 1/0/3
[PE3-HundredGigE1/0/3] ipv6 address 30::3 64
[PE3-HundredGigE1/0/3] ospfv3 1 area 0
[PE3-HundredGigE1/0/3] undo shutdown
[PE3-HundredGigE1/0/3] quit
# 在PE 1,PE 2和PE 3之间建立IBGP连接,并配置通过BGP EVPN发布路由信息。
[PE3] bgp 100
[PE3-bgp-default] router-id 3.3.3.3
[PE3-bgp-default] peer 1::1 as-number 100
[PE3-bgp-default] peer 1::1 connect-interface loopback 0
[PE3-bgp-default] peer 2::2 as-number 100
[PE3-bgp-default] peer 2::2 connect-interface loopback 0
[PE3-bgp-default] address-family l2vpn evpn
[PE3-bgp-default-evpn] peer 1::1 enable
[PE3-bgp-default-evpn] peer 2::2 enable
[PE3-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE3-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE3-bgp-default-evpn] quit
[PE3-bgp-default] quit
# 创建VSI和EVPN实例,并指定EVPN采用SRv6封装,配置EVPN实例的RD与RT,配置根据路由携带的SID属性进行迭代,并指定EVPN实例引用的Locator段。
[PE3] vsi vpna
[PE3-vsi-vpna] evpn encapsulation srv6
[PE3-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE3-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE3-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE3-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE3-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE3-vsi-vpna-evpn-srv6] quit
# 将接口HundredGigE1/0/1与VSI关联。
[PE3] interface hundredgige 1/0/1
[PE3-HundredGigE1/0/1] xconnect vsi vpna
[PE3-HundredGigE1/0/1] quit
# 配置Locator段,用于申请End.DT2U SID和End.DT2M SID。
[PE3] segment-routing ipv6
[PE3-segment-routing-ipv6] encapsulation source-address 3::3
[PE3-segment-routing-ipv6] locator aaa ipv6-prefix 333:: 64 static 32
[PE3-segment-routing-ipv6-locator-aaa] quit
[PE3-segment-routing-ipv6] quit
(5) 配置CE 2
<CE2> system-view
[CE2] interface hundredgige 1/0/1
[CE2-HundredGigE1/0/1] ipv6 address 100::2 64
[CE2-HundredGigE1/0/1] quit
# 在PE 3上查看L2VPN的SRv6相关信息,可以看到PE 3分别与PE 1、PE 2建立了SRv6隧道,这两条隧道为等价隧道,流量在二者之间进行负载分担。
[PE3] display l2vpn peer srv6
Total number of SRv6 Tunnels: 2
2 up, 0 blocked, 0 down
VSI Name: vpna
Peer : 1::1
Flag : Main
State : Up
Peer : 2::2
Flag : Main
State : Up
# 在PE 3上查看SRv6转发信息。
[PE3] display l2vpn forwarding srv6
Total number of VSIs: 1
Total number of SRv6 tunnels: 2, 2 up, 0 blocked, 0 down
VSI Name : vpna
Link ID : 0x9000000 Type: BE State: Up
In SID : 333::1:0:4
Out SID : 111::1:0:4
Link ID : 0x9000001 Type: BE State: Up
In SID : 333::1:0:4
Out SID : 222::1:0:3
# CE 1与CE 2之间能够ping通。当CE 1和PE 1或CE 1和PE 2之间的链路出现故障时,CE 1与CE 2之间仍然能够ping通。
用户网络有两个站点,分别为CE 1和CE 2。CE 1双归属接入PE 1和PE 2,在PE 1和PE 2之间通过S-Trunk跨设备形成链路聚合,以提高可靠性;CE 2为PE 3下的单归属设备。CE 1和CE 2希望通过骨干网的EVPN VPLS over SRv6功能二层互通。
图1-6 EVPN VPLS over SRv6多归属配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
PE 1 |
Loop0 |
1::1/128 |
PE 2 |
Loop0 |
2::2/128 |
|
HGE1/0/1 |
- |
|
HGE1/0/1 |
- |
|
HGE1/0/2 |
10::1/64 |
|
HGE1/0/2 |
30::2/64 |
|
HGE1/0/3 |
20::1/64 |
|
HGE1/0/3 |
20::2/64 |
|
HGE1/0/3 |
10.1.2.1/24 |
|
HGE1/0/3 |
10.1.2.2/24 |
PE 3 |
Loop0 |
3::3/128 |
CE 1 |
RAGG1 |
100::1/64 |
|
HGE1/0/1 |
- |
CE 2 |
HGE1/0/1 |
100::2/64 |
|
HGE1/0/2 |
10::3/64 |
|
|
|
|
HGE1/0/3 |
30::3/64 |
|
|
|
(1) 配置CE 1
# 创建三层聚合接口1,采用动态聚合模式,并为其配置IP地址和子网掩码。
<CE1> system-view
[CE1] interface route-aggregation 1
[CE1-Route-Aggregation1] link-aggregation mode dynamic
[CE1-Route-Aggregation1] ipv6 address 100::1 64
[CE1-Route-Aggregation1] quit
# 将接口HundredGigE1/0/1至HundredGigE1/0/2加入到聚合组1中。
[CE1] interface hundredgige 1/0/1
[CE1-HundredGigE1/0/1] port link-aggregation group 1
[CE1-HundredGigE1/0/1] quit
[CE1] interface hundredgige 1/0/2
[CE1-HundredGigE1/0/2] port link-aggregation group 1
[CE1-HundredGigE1/0/2] quit
(2) 配置PE 1
# 在PE 1上运行OSPFv3。
<PE1> system-view
[PE1] ospfv3
[PE1-ospfv3-1] router-id 1.1.1.1
[PE1-ospfv3-1] segment-routing ipv6 locator aaa
[PE1-ospfv3-1] area 0
[PE1-ospfv3-1-area-0.0.0.0] quit
[PE1-ospfv3-1] quit
# 配置Loopback0接口。
[PE1] interface loopback 0
[PE1-LoopBack0] ipv6 address 1::1 128
[PE1-LoopBack0] ospfv3 1 area 0
[PE1-LoopBack0] quit
# 开启L2VPN功能。
[PE1] l2vpn enable
# 配置连接PE 3的接口HundredGigE1/0/2。
[PE1] interface hundredgige 1/0/2
[PE1-HundredGigE1/0/2] ipv6 address 10::1/64
[PE1-HundredGigE1/0/2] ospfv3 1 area 0
[PE1-HundredGigE1/0/2] undo shutdown
[PE1-HundredGigE1/0/2] quit
# 配置连接PE 2的接口HundredGigE1/0/3。
[PE1] interface hundredgige 1/0/3
[PE1-HundredGigE1/0/3] ipv6 address 20::1/64
[PE1-HundredGigE1/0/3] ospfv3 1 area 0
[PE1-HundredGigE1/0/3] undo shutdown
[PE1-HundredGigE1/0/3] quit
# 在PE 1,PE 2和PE 3之间建立IBGP连接,并配置通过BGP EVPN发布路由信息。
[PE1] bgp 100
[PE1-bgp-default] router-id 1.1.1.1
[PE1-bgp-default] peer 2::2 as-number 100
[PE1-bgp-default] peer 2::2 connect-interface loopback 0
[PE1-bgp-default] peer 3::3 as-number 100
[PE1-bgp-default] peer 3::3 connect-interface loopback 0
[PE1-bgp-default] address-family l2vpn evpn
[PE1-bgp-default-evpn] peer 2::2 enable
[PE1-bgp-default-evpn] peer 3::3 enable
[PE1-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE1-bgp-default-evpn] peer 3::3 advertise encap-type srv6
[PE1-bgp-default-evpn] quit
[PE1-bgp-default] quit
# 创建VSI和EVPN实例,并指定EVPN采用SRV6封装,配置EVPN实例的RD与RT,配置根据路由携带的SID属性进行迭代,并指定EVPN实例引用的Locator段。
[PE1] vsi vpna
[PE1-vsi-vpna] evpn encapsulation srv6
[PE1-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE1-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE1-vsi-vpna-evpn-srv6] quit
# 配置S-Trunk,在PE 1和PE 2之间跨设备建立链路聚合。
[PE1] lacp system-priority 10
[PE1] lacp system-mac 1-1-1
[PE1] lacp system-number 1
[PE1] s-trunk id 1
[PE1-s-trunk1] s-trunk ip destination 10.1.2.2 source 10.1.2.1
[PE1-s-trunk1] quit
[PE1] interface route-aggregation 1
[PE1-Route-Aggregation1] link-aggregation mode dynamic
[PE1-Route-Aggregation1] s-trunk 1
[PE1-Route-Aggregation1] s-trunk port-role primary
[PE1-Route-Aggregation1] quit
[PE1] interface hundredgige 1/0/1
[PE1-HundredGigE1/0/1] port link-aggregation group 1
[PE1-HundredGigE1/0/1] quit
# 在接入站点的接口Route-Aggregation1下配置ESI值和接口的冗余备份模式,并将其与VSI关联。
[PE1] interface route-aggregation 1
[PE1-Route-Aggregation1] esi 1.1.1.1.1
[PE1-Route-Aggregation1] evpn redundancy-mode all-active
[PE1-Route-Aggregation1] xconnect vsi vpna
[PE1-Route-Aggregation1] quit
# 配置Locator段,用于申请End.DT2U SID和End.DT2M SID。
[PE1] segment-routing ipv6
[PE1-segment-routing-ipv6] encapsulation source-address 1::1
[PE1-segment-routing-ipv6] locator aaa ipv6-prefix 111:: 64 static 32 args 16
[PE1-segment-routing-ipv6-locator-aaa] quit
[PE1-segment-routing-ipv6] quit
(3) 配置PE 2
# 在PE 2上运行OSPFv3。
<PE2> system-view
[PE2] ospfv3
[PE2-ospfv3-1] router-id 2.2.2.2
[PE2-ospfv3-1] segment-routing ipv6 locator aaa
[PE2-ospfv3-1] area 0.0.0.0
[PE2-ospfv3-1-area-0.0.0.0] quit
[PE2-ospfv3-1] quit
# 配置Loopback0接口。
[PE2] interface loopback 0
[PE2-LoopBack0] ipv6 address 2::2 128
[PE2-LoopBack0] ospfv3 1 area 0
[PE2-LoopBack0] quit
# 开启L2VPN功能。
[PE2] l2vpn enable
# 配置连接PE 1的接口HundredGigE1/0/3。
[PE2] interface hundredgige 1/0/3
[PE2-HundredGigE1/0/3] ipv6 address 20::2 64
[PE2-HundredGigE1/0/3] ospfv3 1 area 0
[PE2-HundredGigE1/0/3] undo shutdown
[PE2-HundredGigE1/0/3] quit
# 配置连接PE 3的接口HundredGigE1/0/2。
[PE2] interface hundredgige 1/0/2
[PE2-HundredGigE1/0/2] ipv6 address 30::2 64
[PE2-HundredGigE1/0/2] ospfv3 1 area 0
[PE2-HundredGigE1/0/2] undo shutdown
[PE2-HundredGigE1/0/2] quit
# 在PE 1,PE 2和PE 3之间建立IBGP连接,并配置通过BGP EVPN发布路由信息。
[PE2] bgp 100
[PE2-bgp-default] router-id 2.2.2.2
[PE2-bgp-default] peer 1::1 as-number 100
[PE2-bgp-default] peer 1::1 connect-interface loopback 0
[PE2-bgp-default] peer 3::3 as-number 100
[PE2-bgp-default] peer 3::3 connect-interface loopback 0
[PE2-bgp-default] address-family l2vpn evpn
[PE2-bgp-default-evpn] peer 1::1 enable
[PE2-bgp-default-evpn] peer 3::3 enable
[PE2-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE2-bgp-default-evpn] peer 3::3 advertise encap-type srv6
[PE2-bgp-default-evpn] quit
[PE2-bgp-default] quit
# 创建VSI和EVPN实例,并指定EVPN采用SRV6封装,配置EVPN实例的RD与RT,配置根据路由携带的SID属性进行迭代,并指定EVPN实例引用的Locator段。
[PE2] vsi vpna
[PE2-vsi-vpna] evpn encapsulation srv6
[PE2-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE2-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE2-vsi-vpna-evpn-srv6] quit
# 配置S-Trunk,在PE 1和PE 2之间跨设备建立链路聚合。
[PE2] lacp system-priority 10
[PE2] lacp system-mac 1-1-1
[PE2] lacp system-number 2
[PE2] s-trunk id 1
[PE2-s-trunk1] s-trunk ip destination 10.1.2.1 source 10.1.2.2
[PE2-s-trunk1] quit
[PE2] interface route-aggregation 1
[PE2-Route-Aggregation1] link-aggregation mode dynamic
[PE2-Route-Aggregation1] s-trunk 1
[PE2-Route-Aggregation1] s-trunk port-role primary
[PE2-Route-Aggregation1] quit
[PE2] interface hundredgige 1/0/1
[PE2-HundredGigE1/0/1] port link-aggregation group 1
[PE2-HundredGigE1/0/1] quit
# 在接入站点的接口Route-Aggregation1下配置ESI值和接口的冗余备份模式,并将其与VSI关联。
[PE2] interface route-aggregation 1
[PE2-Route-Aggregation1] esi 1.1.1.1.1
[PE2-Route-Aggregation1] evpn redundancy-mode all-active
[PE2-Route-Aggregation1] xconnect vsi vpna
[PE2-Route-Aggregation1] quit
# 配置Locator段,用于申请End.DT2U SID和End.DT2M SID。
[PE2] segment-routing ipv6
[PE2-segment-routing-ipv6] encapsulation source-address 2::2
[PE2-segment-routing-ipv6] locator aaa ipv6-prefix 222:: 64 static 32
[PE2-segment-routing-ipv6-locator-aaa] quit
[PE2-segment-routing-ipv6] quit
(4) 配置PE 3
# 在PE 3上运行OSPFv3。
<PE3> system-view
[PE3] ospfv3
[PE3-ospfv3-1] router-id 3.3.3.3
[PE3-ospfv3-1] segment-routing ipv6 locator aaa
[PE3-ospfv3-1] area 0
[PE3-ospfv3-1-area-0.0.0.0] quit
[PE3-ospfv3-1] quit
# 配置LoopBack0接口。
[PE3] interface loopback 0
[PE3-LoopBack0] ipv6 address 3::3 128
[PE3-LoopBack0] ospfv3 1 area 0
[PE3-LoopBack0] quit
# 开启L2VPN功能。
[PE3] l2vpn enable
# 配置连接PE 1的接口HundredGigE1/0/2。
[PE3] interface hundredgige 1/0/2
[PE3-HundredGigE1/0/2] ipv6 address 10::3 64
[PE3-HundredGigE1/0/2] ospfv3 1 area 0
[PE3-HundredGigE1/0/2] undo shutdown
[PE3-HundredGigE1/0/2] quit
# 配置连接PE 2的接口HundredGigE1/0/3。
[PE3] interface hundredgige 1/0/3
[PE3-HundredGigE1/0/3] ipv6 address 30::3 64
[PE3-HundredGigE1/0/3] ospfv3 1 area 0
[PE3-HundredGigE1/0/3] undo shutdown
[PE3-HundredGigE1/0/3] quit
# 在PE 1,PE 2和PE 3之间建立IBGP连接,并配置通过BGP EVPN发布路由信息。
[PE3] bgp 100
[PE3-bgp-default] router-id 3.3.3.3
[PE3-bgp-default] peer 1::1 as-number 100
[PE3-bgp-default] peer 1::1 connect-interface loopback 0
[PE3-bgp-default] peer 2::2 as-number 100
[PE3-bgp-default] peer 2::2 connect-interface loopback 0
[PE3-bgp-default] address-family l2vpn evpn
[PE3-bgp-default-evpn] peer 1::1 enable
[PE3-bgp-default-evpn] peer 2::2 enable
[PE3-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE3-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE3-bgp-default-evpn] quit
[PE3-bgp-default] quit
# 创建VSI和EVPN实例,并指定EVPN采用SRv6封装,配置EVPN实例的RD与RT,配置根据路由携带的SID属性进行迭代,并指定EVPN实例引用的Locator段。
[PE3] vsi vpna
[PE3-vsi-vpna] evpn encapsulation srv6
[PE3-vsi-vpna-evpn-srv6] route-distinguisher 1:1
[PE3-vsi-vpna-evpn-srv6] vpn-target 1:1 export-extcommunity
[PE3-vsi-vpna-evpn-srv6] vpn-target 1:1 import-extcommunity
[PE3-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE3-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE3-vsi-vpna-evpn-srv6] quit
# 将接口HundredGigE1/0/1与VSI关联。
[PE3] interface hundredgige 1/0/1
[PE3-HundredGigE1/0/1] xconnect vsi vpna
[PE3-HundredGigE1/0/1] quit
# 配置Locator段,用于申请End.DT2U SID和End.DT2M SID。
[PE3] segment-routing ipv6
[PE3-segment-routing-ipv6] encapsulation source-address 3::3
[PE3-segment-routing-ipv6] locator aaa ipv6-prefix 333:: 64 static 32
[PE3-segment-routing-ipv6-locator-aaa] quit
[PE3-segment-routing-ipv6] quit
(5) 配置CE 2
<CE2> system-view
[CE2] interface hundredgige 1/0/1
[CE2-HundredGigE1/0/1] ipv6 address 100::2 64
[CE2-HundredGigE1/0/1] quit
# 在PE 3上查看L2VPN的SRv6相关信息,可以看到PE 3分别与PE 1、PE 2建立了SRv6隧道,这两条隧道为等价隧道,流量在二者之间进行负载分担。
[PE3] display l2vpn peer srv6
Total number of SRv6 Tunnels: 2
2 up, 0 blocked, 0 down
VSI Name: vpna
Peer : 1::1
Flag : Main
State : Up
Peer : 2::2
Flag : Main
State : Up
# 在PE 3上查看SRv6转发信息。
[PE3] display l2vpn forwarding srv6
Total number of VSIs: 1
Total number of SRv6 tunnels: 2, 2 up, 0 blocked, 0 down
VSI Name : vpna
Link ID : 0x9000000 Type: BE State: Up
In SID : 333::1:0:4
Out SID : 111::1:0:4
Link ID : 0x9000001 Type: BE State: Up
In SID : 333::1:0:4
Out SID : 222::1:0:3
# CE 1与CE 2之间能够ping通。当CE 1和PE 1或CE 1和PE 2之间的链路出现故障时,CE 1与CE 2之间仍然能够ping通。
EVPN VPLS over SRv6只能实现不同站点间的二层互联,不同站点之间无法进行三层通信。通过部署SRv6分布式网关,可以实现为同一租户的不同子网提供三层互联,并为其提供与外部网络的三层互联。
如图2-1所示,在SRv6分布式网关组网中,每台PE设备都作为SRv6网关,对本地站点的流量进行三层转发,以缓解网关压力。所有SRv6网关(GW)和边界网关(Border)上都需要创建VSI虚接口,该接口作为分布式网关接口。不同GW上相同VSI虚接口的IP地址必须相同,该IP地址作为EVPN VPLS over SRv6网络内用户的网关地址。
图2-1 SRv6分布式网关典型组网示意图
SRv6分布式网关通过为EVPN路由(MAC/IP地址发布路由)分配End.DT4/End.DT46 SID来标识报文所属的VPN实例,并实现三层转发。
如图2-2所示,SRv6分布式网关组网中,ARP学习和EVPN路由发布过程为:
(1) CE 2发送ARP请求获取网关(PE 2上VSI虚接口)的MAC地址。
(2) PE 2从AC接收到ARP请求后,判断AC所属的VSI实例,并查找该VSI实例关联的VSI虚接口。
(3) PE 2采用VSI虚接口的MAC地址应答ARP请求。同时,将CE 2的ARP信息学习到VSI虚接口所绑定的VPN实例中,并形成ARP信息对应的FIB表项。
(4) PE 2通过MAC/IP地址发布路由将ARP信息发布给PE 1,其中携带PE 2为VPN实例分配的End.DT4/End.DT46 SID。
(5) PE 1查找与路由中的Route Target属性匹配的本地Import Route Target属性,将ARP信息学习到Import Route Target属性所在的VPN实例的ARP表中,并形成ARP信息对应的FIB表项,该表项中记录PE 2分配的End.DT4/End.DT46 SID。
通过上述方法,PE 1和PE 2均学习到了CE 2的ARP信息,CE 2也学习到了网关的MAC地址。通过同样的方法,PE 1和PE 2也可以学习到CE 1的ARP信息,CE 1也可以学习到网关的MAC地址。
图2-2 SRv6分布式网关控制平面工作机制
SRv6分布式网关支持SRv6 BE、SRv6 TE和SRv6 TE/SRv6 BE混合方式三种报文转发方式。以SRv6 BE为例,CE 1访问CE 2时,报文转发过程为:
(1) CE 1将访问CE 2的报文发送给网关PE 1,报文封装的目的MAC地址为PE 1上VSI虚接口的MAC地址。
(2) PE 1从AC接收到报文后,发现报文的目的MAC地址为本地VSI虚接口的MAC地址。因此,PE 1剥离报文的数据帧头,根据报文的目的IP地址在VSI虚接口绑定的VPN实例的FIB表中查找匹配的表项,该表项记录了PE 2分配的End.DT4/End.DT46 SID。
(3) PE 1为报文封装外层IPv6报文头,并将其转发给PE 2。其中:
¡ 封装的目的IPv6地址为End.DT4/End.DT46 SID。
¡ 源IPv6地址由用户手工配置。
(4) PE 2接收到报文后,在End.DT4/End.DT46 SID标识的VPN实例内查找FIB表,出接口为AC。PE 2剥离外层IPv6报文头后,通过AC将报文发送给CE 2。
SRv6分布式网关连接IPv4站点网络时,所有网关上都需要为相同VSI虚接口配置相同的MAC地址。
在SRv6分布式网关设备上,如果开启了ARP泛洪抑制功能,并在VSI虚接口上开启了本地代理ARP功能,则只有本地代理ARP功能生效。建议不要在SRv6分布式网关设备上同时开启这两个功能。
SRv6分布式网关配置任务如下:
(1) 创建VSI
(2) 配置EVPN实例
(3) 配置SRv6 SID
(5) 配置报文转发方式
¡ 配置路由迭代方式
路由迭代方式为SRv6 TE方式或SRv6 TE和SRv6 BE混合方式时,必须执行本配置。
(6) 配置AC与VSI关联
(10) 管理远端MAC地址和远端ARP信息学习
如果虚拟机要想与外部网络进行三层通信,那么除了SRv6分布式网关的配置外,还需要在接入虚拟机的本地SRv6分布式网关上配置静态路由或策略路由:
· 配置静态路由:指定路由的下一跳为Border上VSI虚接口的IPv4地址。
· 配置策略路由:通过apply default-next-hop命令或apply next-hop命令设置报文的缺省下一跳或下一跳为Border上VSI虚接口的IP地址。策略路由的配置方法,请参见“三层技术-IP路由配置指导”中的“策略路由”。
本配置中各命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
(1) 进入系统视图。
system-view
(2) 开启L2VPN功能。
l2vpn enable
缺省情况下,L2VPN功能处于关闭状态。
(3) 创建VSI,并进入VSI视图。
vsi vsi-name
(4) 开启VSI。
undo shutdown
缺省情况下,VSI处于开启状态。
PE在发布EVPN路由时,携带VSI实例下的EVPN实例视图下配置的RD和RT。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 创建EVPN实例,并进入EVPN实例视图。
evpn encapsulation srv6
(4) 配置EVPN实例的RD。
route-distinguisher route-distinguisher
缺省情况下,未指定EVPN实例的RD。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
(5) 配置EVPN实例的Route Target属性。
vpn-target { vpn-target&<1-8> } [ both | export-extcommunity | import-extcommunity ]
缺省情况下,未指定EVPN实例的Route Target属性。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
参数 |
使用说明 |
export-extcommunity |
不同VSI实例下EVPN实例的Export target不能相同;不同视图(系统视图、VSI视图、VPN实例视图、公网实例视图、交叉连接组视图)下EVPN实例的Export target也不能相同 |
import-extcommunity |
VPN实例、公网实例、各视图下EVPN实例的Import target建议不要与交叉连接组EVPN实例的Export target相同,反之亦然 |
(6) (可选)指定引用的隧道策略。
tunnel-policy tunnel-policy-name
缺省情况下,未引用隧道策略。
本命令的详细介绍,请参见“EVPN命令参考”中的“EVPN”。
本配置中各命令的详细介绍,请参见“Segment Routing命令参考”中的“SRv6”。
(1) 进入系统视图。
system-view
(2) 开启SRv6功能,并进入SRv6视图。
segment-routing ipv6
(3) 配置Locator段,并进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 配置Opcode段。
¡ 配置End.DT4 SID。
opcode opcode end-dt4 [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT4 SID。
¡ 配置End.DT46 SID。
opcode opcode end-dt46 [ vpn-instance vpn-instance-name [ evpn ] ]
指定的VPN实例必须已经存在。不同VPN实例不能配置相同End.DT46 SID。
为了节省SRv6分布式网关设备上的三层接口资源,在网关设备上多个EVPN VPLS网络可以共用一个VSI虚接口,为VSI虚接口配置一个主IPv4地址和多个从IPv4地址,分别作为不同EVPN VPLS网络内虚拟机的网关地址。
多个EVPN VPLS网络共用一个VSI虚接口时,网关设备无法判断从VSI虚接口接收到的报文属于哪个EVPN VPLS网络。为了解决该问题,需要在VSI视图下通过gateway subnet命令指定VSI所属的子网网段,通过子网网段判断报文所属的VSI,并在该VSI内转发报文,从而限制IPv4广播报文范围,有效地节省带宽资源。
(1) 进入系统视图。
system-view
(2) 创建VSI虚接口,并进入VSI虚接口视图。
interface vsi-interface vsi-interface-id
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(3) 配置VSI虚接口的IP地址。
ip address ip-address { mask | mask-length } [ sub ]
缺省情况下,未配置VSI虚接口的IP地址。
(4) 配置VSI虚接口的MAC地址。
mac-address mac-address
缺省情况下,未配置VSI虚接口的MAC地址。
不同SRv6分布式网关设备上,为同一个EVPN VPLS网络的VSI虚接口配置的MAC地址必须相同。否则,虚拟机发生迁移后,虚拟机上网关IP地址对应的MAC地址为远端网关的MAC地址,可能导致流量转发错误。
(5) 配置VSI虚接口为分布式网关接口。
distributed-gateway local
缺省情况下,VSI虚接口不是分布式本地网关接口。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(6) (可选)开启本地代理ARP功能。
local-proxy-arp enable [ ip-range startIP to endIP ]
缺省情况下,本地代理ARP功能处于关闭状态。
本命令的详细介绍,请参见“三层技术-IP业务命令参考”中的“代理ARP”。
(7) 退回系统视图。
quit
(8) 进入VSI视图。
vsi vsi-name
(9) 为VSI指定网关接口。
gateway vsi-interface vsi-interface-id
缺省情况下,未指定VSI的网关接口。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
(10) 配置当前VSI所属的子网网段。
gateway subnet ipv4-address wildcard-mask
缺省情况下,未指定VSI所属的子网网段。
本命令的详细介绍,请参见“VXLAN命令参考”中的“VXLAN”。
SRv6分布式网关网络中,PE为用户侧流量封装End.DT4/End.DT46 SID后,可以根据如下路由迭代方式为封装后的报文查找转发路径:
· SRv6 BE方式:该方式根据封装的SID查找IPv6路由表进行转发。
· SRv6 TE方式:该方式根据路由的Color属性或下一跳地址查找匹配的SRv6 TE Policy,为报文添加携带End.DT4(或End.DT46 SID)、SRv6 TE Policy SID列表的SRH头后,通过SRv6 TE Policy转发该报文。
· SRv6 TE和SRv6 BE混合方式:优先通过SRv6 TE方式选择转发路径;如果SRv6 TE方式未找到可用的SRv6 TE Policy,则通过SRv6 BE方式选择转发路径。
采用SRv6 TE或SRv6 TE/SRv6 BE混合方式时,需要配置SRv6 TE Policy引流,详细配置方法请参见“2.10 配置SRv6 TE Policy引流”。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入EVPN实例视图。
evpn encapsulation srv6
(4) 配置路由迭代方式。
segment-routing ipv6 { best-effort | traffic-engineering [ best-effort ] }
缺省情况下,根据EVPN路由的下一跳地址查找IPv6路由表进行转发。
采用SRv6 TE方式或SRv6 TE和SRv6 BE混合方式进行路由迭代时,还需配置本功能才能将报文引流到SRv6 TE Policy上。
若同时配置了基于Color和基于隧道策略两种引流方式,则优先采用基于Color引流。
查找是否存在Color和Endpoint地址与EVPN路由的Color扩展团体属性和下一跳地址完全相同的SRv6 TE Policy。若存在,则将该EVPN路由迭代到SRv6 TE Policy。当设备收到匹配该EVPN路由的报文时,会通过SRv6 TE Policy转发该报文。
采用基于Color的引流方式时,需要通过路由策略等方式为EVPN路由添加Color扩展团体属性。路由策略的配置方法请参见“三层技术-IP路由配置指导”中的“路由策略”。
若本地引用的EVPN入方向路由策略中,配置的apply extcommunity color命令指定了additive参数且收到的EVPN路由本身携带Color扩展团体属性,则采用多个Color扩展团体属性中数值最大的Color扩展团体属性进行基于Color的引流。
(1) 进入系统视图。
system-view
(2) 进入路由策略视图。
route-policy route-policy-name { deny | permit } node node-number
本命令的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(3) 配置BGP路由的Color扩展团体属性。
apply extcommunity color color [ additive ]
缺省情况下,未配置BGP路由属性。
本命令的详细介绍,请参见“三层技术-IP路由配置指导”中的“路由策略”。
(4) 退回系统视图。
quit
(5) 进入VSI视图。
vsi vsi-name
(6) 进入EVPN实例视图。
evpn encapsulation srv6
(7) 配置EVPN的入方向路由策略。
import route-policy route-policy
缺省情况下,EVPN实例下未配置EVPN的入方向路由策略,即不对接收的路由进行过滤。
(8) 配置EVPN的出方向路由策略。
export route-policy route-policy
缺省情况下,在EVPN实例下未配置EVPN的出方向路由策略,即不对发布的路由进行过滤。
根据路由下一跳地址在隧道策略中查找匹配的SRv6 TE Policy,实现采用指定SRv6 TE Policy的路径作为公网隧道来转发私网报文。隧道策略的详细介绍请参见“MPLS配置指导”中的“隧道策略”。
(1) 进入系统视图。
system-view
(2) 创建隧道策略,并进入隧道策略视图。
tunnel-policy tunnel-policy-name [ default ]
(3) 配置隧道策略。请至少选择其中一项进行配置。
¡ 配置隧道与目的IP进行绑定,从而限制该隧道只能承载特定的VPN业务。
binding-destination dest-ipv6-address { srv6-policy group srv6-policy-group-id | srv6-policy { name policy-name | end-point ipv6 ipv6-address color color-value } } [ ignore-destination-check ] [ down-switch ]
缺省情况下,未将目的IP与任何隧道绑定。
¡ 配置指定的SRv6 TE Policy隧道为首选隧道。
preferred-path srv6-policy { name srv6-policy-name | end-point ipv6 ipv6-address color color-value }
缺省情况下,未配置首选隧道。
¡ 配置SRv6 TE Policy隧道的负载分担策略。
select-seq srv6-policy load-balance-number number
缺省情况下,未配置负载分担策略。
本命令的详细描述,请参见“MPLS命令参考”中的“隧道策略”。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入EVPN实例视图。
evpn encapsulation srv6
(4) 指定引用的隧道策略。
tunnel-policy tunnel-policy-name
缺省情况下,未引用隧道策略。
将三层接口与VSI关联后,从三层接口接收到的报文,将通过查找关联VSI的MAC地址表进行转发。
本配置中各命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
(1) 进入系统视图。
system-view
(2) 进入三层接口视图。
interface interface-type interface-number
(3) 将三层接口与VSI关联。
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ]
缺省情况下,三层接口未关联VSI。
将以太网服务实例与VSI关联后,从该接口接收到的、符合以太网服务实例报文匹配规则的报文,将通过查找关联VSI的MAC地址表进行转发。以太网服务实例提供了多种报文匹配规则(包括接口接收到的所有报文、所有携带VLAN Tag的报文和所有不携带VLAN Tag的报文等),为报文关联VSI提供了更加灵活的方式。
本配置中各命令的详细介绍,请参见“MPLS命令参考”中的“VPLS”。
不能通过重复执行encapsulation命令修改报文匹配规则。如需修改报文匹配规则,请先通过undo encapsulation命令删除报文匹配规则,再执行encapsulation命令。
删除以太网服务实例下的报文匹配规则后,会自动取消以太网服务实例与VSI的关联。
(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-list [ only-tagged ]
¡ 同时匹配报文的外层和内层VLAN tag。
encapsulation s-vid vlan-id c-vid vlan-id-list
¡ 匹配不携带VLAN tag的所有报文。
encapsulation { tagged | untagged }
¡ 匹配未匹配到接口上其他以太网服务实例的所有报文。
encapsulation default
同一个接口上最多只能有一个服务实例采用缺省的报文匹配规则。
如果接口上只存在一个配置了encapsulation default规则的以太网服务实例,则该接口上的所有报文都匹配该以太网服务实例。
缺省情况下,未配置报文匹配规则。
(5) 将以太网服务实例与VSI关联。
xconnect vsi vsi-name [ access-mode { ethernet | vlan } ]
缺省情况下,以太网服务实例未关联VSI。
BGP相关命令的详细介绍,请参见“三层技术-IP路由命令参考”中的“BGP”。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 将对端PE配置为IPv6对等体。
peer { group-name | ipv6-address [ prefix-length ] } as-number as-number
(4) 指定与IPv6对等体/对等体组创建BGP会话时建立TCP连接使用的源接口。
peer { group-name | ipv6-address [ prefix-length ] } connect-interface interface-type interface-number
缺省情况下,BGP使用到达BGP对等体的最佳路由的出接口作为与对等体/对等体组创建BGP会话时建立TCP连接的源接口。
(5) 创建BGP EVPN地址族,并进入BGP EVPN地址族视图。
address-family l2vpn evpn
(6) 使能本地路由器与指定IPv6对等体交换EVPN路由信息的能力。
peer { group-name | ipv6-address [ prefix-length ] } enable
缺省情况下,本地路由器不能与对等体交换EVPN路由信息。
(7) 配置向对等体/对等体组发布SRv6封装的EVPN路由。
peer { group-name | ipv6-address [ prefix-length ] } advertise encap-type srv6
缺省情况下,向对等体/对等体组发布VXLAN封装的EVPN路由。
在SRv6分布式网关组网环境中,必须指定封装的IPv6报文头的源地址。否则,无法通过SRv6分布式网关转发数据流量。
配置源地址时,可以指定任意IPv6地址。建议将源地址指定为本设备上未使用的IPv6地址。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 配置SRv6分布式网关封装的IPv6报文头的源地址。
encapsulation source-address ipv6-address [ ip-ttl ttl-value ]
缺省情况下,未指定SRv6分布式网关封装的IPv6报文头的源地址。
在BGP IPv4单播地址族下配置BGP EVPN路由引入BGP单播路由表后,设备会将从对等体/对等体组收到的包含ARP信息的MAC/IP发布路由添加到BGP IPv4单播路由表,并发布到本地站点。
在BGP-VPN IPv4单播地址族下配置BGP EVPN路由引入BGP单播路由表后,设备会将从对等体/对等体组收到的包含ARP信息的MAC/IP发布路由添加到VPN实例对应的BGP IPv4单播路由表。如果执行了advertise l2vpn evpn命令配置允许向本地站点发布BGP EVPN路由,则该路由会发布到本地站点;否则,该路由不会发布到本地站点。
(1) 进入系统视图。
system-view
(2) 进入BGP实例视图。
bgp as-number [ instance instance-name ]
(3) 进入BGP IPv4单播地址族视图或BGP-VPN IPv4单播地址族视图。
¡ 进入BGP IPv4单播地址族视图。
address-family ipv4
¡ 请依次执行以下命令进入BGP-VPN IPv4单播地址族视图
ip vpn-instance vpn-instance-name
address-family ipv4
(4) 配置允许将包含ARP信息的MAC/IP发布路由引入BGP IPv4单播路由表,并允许对外发布。
import evpn mac-ip
缺省情况下,在SRv6组网中,包含ARP信息的MAC/IP发布路由可以引入到BGP IPv4单播路由表,但不允许对外发布。
配置允许对外发布BGP EVPN路由后,设备接收到BGP EVPN路由,并将其添加到某个VPN实例路由表后,会将该路由(私网路由)发布到本地站点。
(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路由。
PE可能会同时向远端PE通告MAC地址信息和ARP信息。其中,ARP信息中已经包含MAC地址信息。为了避免重复,可以执行本配置来禁止本端PE向远端PE通告MAC地址信息。执行本配置后,本端PE还会撤销已经发布的MAC地址信息。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 配置禁止通告MAC地址信息,并撤销已经通告的MAC地址信息。
mac-advertising disable
缺省情况下,允许通告MAC地址信息。
PE可能会同时接收到远端PE通告的MAC地址信息和ARP信息。其中,ARP信息中包含MAC地址信息。为了避免重复,可以在PE上执行本配置来禁止EVPN从ARP信息中学习MAC地址表项,EVPN仅通过MAC地址信息学习远端MAC地址表项。
(1) 进入系统视图。
system-view
(2) 进入VSI视图。
vsi vsi-name
(3) 进入VSI实例下的EVPN实例视图。
evpn encapsulation srv6
(4) 配置禁止EVPN从ARP信息中学习MAC地址表项。
arp mac-learning disable
缺省情况下,EVPN可以从ARP信息中学习MAC地址表项。
可在任意视图下执行以下命令:
· 显示EVPN的ARP信息。
display evpn route arp [ local | remote ] [ public-instance | vpn-instance vpn-instance-name ] [ count ]
· 显示EVPN的路由表信息。
display evpn routing-table [ ipv6 ] { public-instance | vpn-instance vpn-instance-name } [ count ]
· 显示IPv4路由表信息
display ip routing-table [ all-vpn-instance | vpn-instance vpn-instance-name ] [ verbose ]
EVPN VPLS over SRv6组网中,PE 1和PE 2为SRv6分布式网关,在站点间转发三层流量,实现站点间不同网段的三层互通。
图2-3 SRv6分布式网关配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
PE 1 |
Loop0 |
1::1/128 |
PE 2 |
Loop0 |
2::2/128 |
|
VSI-int1 |
100.1.1.1/24 |
|
HGE1/0/1 |
- |
|
HGE1/0/1 |
- |
|
HGE1/0/2 |
30::2/64 |
|
HGE1/0/2 |
20::1/64 |
|
VSI-int1 |
100.1.2.1/24 |
P |
Loop0 |
3::3/128 |
CE 1 |
HGE1/0/1 |
100.1.1.10/24 |
|
HGE1/0/1 |
20::2/64 |
CE 2 |
HGE1/0/1 |
100.1.2.20/24 |
|
HGE1/0/2 |
30::1/64 |
|
|
|
(1) 配置IP地址和单播路由协议
# 在CE 1上配置静态缺省路由,指定网关地址为100.1.1.1。
<CE1> system-view
[CE1] ip route-static 0.0.0.0 0 100.1.1.1
# 在CE2上配置静态缺省路由,指定网关地址为10.1.2.1。
<CE2> system-view
[CE2] ip route-static 0.0.0.0 0 100.1.2.1
# 配置各接口的IP地址和子网掩码;在IPv6核心网络内配置OSPFv3协议,确保设备之间路由可达。(具体配置过程略)
(2) 配置PE 1
# 开启L2VPN能力。
<PE1> system-view
[PE1] l2vpn enable
# 配置VPN实例vpn1的RD和RT。
[PE1] ip vpn-instance vpn1
[PE1-vpn-instance-vpn1] route-distinguisher 1:1
[PE1-vpn-instance-vpn1] address-family ipv4
[PE1-vpn-ipv4-vpn1] vpn-target 1:1 import-extcommunity
[PE1-vpn-ipv4-vpn1] vpn-target 1:1 export-extcommunity
[PE1-vpn-ipv4-vpn1] quit
[PE1-vpn-instance-vpn1] address-family evpn
[PE1-vpn-evpn-vpn1] vpn-target 2:2 import-extcommunity
[PE1-vpn-evpn-vpn1] vpn-target 2:2 export-extcommunity
[PE1-vpn-evpn-vpn1] quit
[PE1-vpn-instance-vpn1] quit
# 配置VSI虚接口VSI-interface 1。
[PE1] interface vsi-interface 1
[PE1-Vsi-interface1] ip binding vpn-instance vpn1
[PE1-Vsi-interface1] ip address 100.1.1.1 255.255.255.0
[PE1-Vsi-interface1] mac-address 0001-0001-0001
[PE1-Vsi-interface1] local-proxy-arp enable
[PE1-Vsi-interface1] distributed-gateway local
[PE1-Vsi-interface1] quit
# 配置SRv6封装的VSI实例vpna。
[PE1] vsi vpna
[PE1-vsi-vpna] gateway vsi-interface 1
[PE1-vsi-vpna] evpn encapsulation srv6
[PE1-vsi-vpna-evpn-srv6] route-distinguisher 6:6
[PE1-vsi-vpna-evpn-srv6] vpn-target 6:6 import-extcommunity
[PE1-vsi-vpna-evpn-srv6] vpn-target 6:6 export-extcommunity
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE1-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE1-vsi-vpna-evpn-srv6] quit
[PE1-vsi-vpna] quit
# 配置Locator段,用于申请SRv6 SID。
[PE1] segment-routing ipv6
[PE1-segment-routing-ipv6] encapsulation source-address 1::1
[PE1-segment-routing-ipv6] locator aaa ipv6-prefix 1:1:: 64 static 32
[PE1-segment-routing-ipv6-locator-aaa] quit
# 配置BGP对等体。
[PE1] bgp 100
[PE1-bgp-default] router-id 1.1.1.1
[PE1-bgp-default] peer 2::2 as-number 100
[PE1-bgp-default] peer 2::2 connect-interface loopback 0
# 配置BGP EVPN 地址族。
[PE1-bgp-default] address-family l2vpn evpn
[PE1-bgp-default-evpn] peer 2::2 enable
[PE1-bgp-default-evpn] peer 2::2 advertise encap-type srv6
[PE1-bgp-default-evpn] quit
# 配置BGP IPv4 VPN实例。
[PE1-bgp-default] ip vpn-instance vpn1
[PE1-bgp-default-vpn1] address-family ipv4 unicast
[PE1-bgp-default-ipv4-vpn1] import evpn mac-ip
[PE1-bgp-default-ipv4-vpn1] advertise l2vpn evpn
[PE1-bgp-default-ipv4-vpn1] segment-routing ipv6 best-effort evpn
[PE1-bgp-default-ipv4-vpn1] segment-routing ipv6 locator aaa evpn
[PE1-bgp-default-ipv4-vpn1] quit
# 将接入CE 1的接口HundredGigE1/0/1与VSI绑定。
[PE1] interface hundredgige 1/0/1
[PE1-HundredGigE1/0/1] xconnect vsi vpna
[PE1-HundredGigE1/0/1] quit
(3) 配置PE 2
# 开启L2VPN能力。
<PE2> system-view
[PE2] l2vpn enable
# 配置VPN实例vpn1的RD和RT。
[PE2] ip vpn-instance vpn1
[PE2-vpn-instance-vpn1] route-distinguisher 1:1
[PE2-vpn-instance-vpn1] address-family ipv4
[PE2-vpn-ipv4-vpn1] vpn-target 1:1 import-extcommunity
[PE2-vpn-ipv4-vpn1] vpn-target 1:1 export-extcommunity
[PE2-vpn-ipv4-vpn1] quit
[PE2-vpn-instance-vpn1] address-family evpn
[PE2-vpn-evpn-vpn1] vpn-target 2:2 import-extcommunity
[PE2-vpn-evpn-vpn1] vpn-target 2:2 export-extcommunity
[PE2-vpn-evpn-vpn1] quit
[PE2-vpn-instance-vpn1] quit
# 配置VSI虚接口VSI-interface1。
[PE2] interface vsi-interface 1
[PE2-Vsi-interface1] ip binding vpn-instance vpn1
[PE2-Vsi-interface1] ip address 100.1.1.1 255.255.255.0
[PE2-Vsi-interface1] mac-address 0001-0001-0001
[PE2-Vsi-interface1] local-proxy-arp enable
[PE2-Vsi-interface1] distributed-gateway local
[PE2-Vsi-interface1] quit
# 配置SRv6封装的VSI实例vpna。
[PE2] vsi vpna
[PE2-vsi-vpna] gateway vsi-interface 1
[PE2-vsi-vpna] evpn encapsulation srv6
[PE2-vsi-vpna-evpn-srv6] route-distinguisher 6:6
[PE2-vsi-vpna-evpn-srv6] vpn-target 6:6 import-extcommunity
[PE2-vsi-vpna-evpn-srv6] vpn-target 6:6 export-extcommunity
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 locator aaa
[PE2-vsi-vpna-evpn-srv6] segment-routing ipv6 best-effort
[PE2-vsi-vpna-evpn-srv6] quit
[PE2-vsi-vpna] quit
# 配置Locator段,用于申请SRv6 SID。
[PE2] segment-routing ipv6
[PE2-segment-routing-ipv6] encapsulation source-address 2::2
[PE2-segment-routing-ipv6] locator aaa ipv6-prefix 2:2:: 64 static 32
[PE2-segment-routing-ipv6-locator-aaa] quit
# 配置BGP对等体。
[PE2] bgp 100
[PE2-bgp-default] router-id 2.2.2.2
[PE2-bgp-default] peer 1::1 as-number 100
[PE2-bgp-default] peer 1::1 connect-interface loopback 0
# 配置BGP EVPN 地址族。
[PE2-bgp-default] address-family l2vpn evpn
[PE2-bgp-default-evpn] peer 1::1 enable
[PE2-bgp-default-evpn] peer 1::1 advertise encap-type srv6
[PE2-bgp-default-evpn] quit
# 配置BGP IPv4 VPN实例。
[PE2-bgp-default] ip vpn-instance vpn1
[PE2-bgp-default-vpn1] address-family ipv4 unicast
[PE2-bgp-default-ipv4-vpn1] import evpn mac-ip
[PE2-bgp-default-ipv4-vpn1] segment-routing ipv6 best-effort evpn
[PE2-bgp-default-ipv4-vpn1] segment-routing ipv6 locator aaa evpn
[PE2-bgp-default-ipv4-vpn1] quit
# 将接入CE 2的接口HundredGigE1/0/1与VSI绑定。
[PE2] interface hundredgige 1/0/1
[PE2-HundredGigE1/0/1] xconnect vsi vpna
[PE2-HundredGigE1/0/1] quit
# 在PE 1上查看VPN实例vpn1的路由表信息,可以看到PE 1学习到了CE 2的主机路由。
[PE1] display ip routing-table vpn-instance vpn1
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
100.1.1.0/24 Direct 0 0 100.1.1.1 Vsi1
100.1.1.0/32 Direct 0 0 100.1.1.1 Vsi1
100.1.1.1/32 Direct 0 0 127.0.0.1 InLoop0
100.1.1.255/32 Direct 0 0 100.1.1.1 Vsi1
100.1.2.20/32 BGP 255 0 2:2:: HGE1/0/2
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
# 在PE 2上查看VPN实例vpn1的路由表信息,可以看到PE 2学习到了CE 1的主机路由。
[PE2] display ip routing-table vpn-instance vpn1
Destinations : 11 Routes : 11
Destination/Mask Proto Pre Cost NextHop Interface
0.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
100.1.2.0/24 Direct 0 0 100.1.1.1 Vsi1
100.1.2.0/32 Direct 0 0 100.1.1.1 Vsi1
100.1.2.1/32 Direct 0 0 127.0.0.1 InLoop0
100.1.1.10/32 BGP 255 0 1:1:: HGE1/0/2
100.1.2.255/32 Direct 0 0 100.1.1.1 Vsi1
127.0.0.0/8 Direct 0 0 127.0.0.1 InLoop0
127.0.0.0/32 Direct 0 0 127.0.0.1 InLoop0
127.0.0.1/32 Direct 0 0 127.0.0.1 InLoop0
127.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
255.255.255.255/32 Direct 0 0 127.0.0.1 InLoop0
# CE 1和CE 2可以互相ping通。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!