11-SRv6 SFC配置
本章节下载: 11-SRv6 SFC配置 (812.51 KB)
目 录
1.3.1 服务链静态代理(Static SR Proxy SFC)
1.3.2 服务链伪代理(Masquerading SR Proxy SFC)
1.5.4 SF双归保护和Bypass保护混合场景下SRv6 SFC报文转发
1.16 配置SRv6 SFC服务链静态代理的Bypass保护
为了满足用户业务安全、稳定等需求,数据报文在网络中传递时,往往需要按照业务逻辑依次经过各种服务节点,例如防火墙(Firewall)、入侵防御系统(Intrusion Prevention System)、应用加速器和地址转换(Network Address Translation)等。SRv6 SFC(Service Function Chain,服务链)是一种通过在原始报文中添加SRv6路径信息来引导报文按照指定的路径依次经过应用层服务设备的技术。SRv6 SFC技术可以很方便地满足上述需求。
如图1-1所示,SRv6 SFC服务链网络用于将租户的特定业务报文引导到指定的应用服务节点进行处理,并转发到目的地。
图1-1 SRv6 SFC典型组网示意图
SRv6 SFC服务链网络包括以下角色:
· SC(Service Classifier,业务分类节点):位于SRv6 SFC服务链网络边缘,是服务链路径的源节点。SC可以采用不同的引流方式,将业务数据引入SRv6 TE Policy隧道中进行转发。
· SF(Service Function,应用服务节点):为业务流量提供特定应用服务的节点。不能识别SRv6报文的应用服务节点称为SRv6-unaware SF,能够识别SRv6报文的应用服务节点称为SRv6-aware SF。
· SFF(Service Function Forwarder,服务链转发节点):SFF作为SF的服务链代理,根据SRv6封装信息,将收到的报文转发到SFF关联的若干SF上。SF处理报文后,将报文返回给SFF,SFF决定是否继续转发报文。
服务链静态代理适用于SF不能识别SRv6报文的场景。由于SF不能识别SRv6报文,SFF需要将SRv6报文解封装后,把用户网络的原始数据报文转发给SF处理。SF处理完原始报文后,将其转发回SFF节点,由SFF决定是否继续在SRv6 SFC网络中转发报文。如果继续在SRv6 SFC网络中转发,则SFF节点需要根据手工配置的SID列表为处理后的业务报文重新封装SRv6头部。服务链静态代理支持内层报文类型为IPv4或IPv6。服务链静态代理支持双归保护和Bypass保护功能。
为了实现服务链静态代理报文转发,在SFF上引入一种新的SRv6 SID类型——End.AS SID。End.AS SID用于标识SRv6 SFC服务链网络中的某个应用服务节点。End.AS SID对应的转发动作是:
· 报文从转发节点SFF发送到应用服务节点SF之前,SFF先解封装报文,然后根据End.AS SID关联的出接口转发报文。
· 报文从应用服务节点SF到转发节点SFF之后,SFF根据报文的入接口或者入接口和VLAN关联的End.AS SID及其配置,重新封装报文。
服务链伪代理适用于SF能够识别SRv6报文的场景。由于SF能够识别SRv6报文, SFF将SRv6报文直接转发给SF处理。SF完成应用服务处理后,不处理SRv6的SRH头部信息,直接将报文转发回SFF节点,SFF按照正常SRv6转发流程处理报文。服务链伪代理目前支持的内层报文类型为IPv4、IPv6和以太网报文。服务链伪代理不支持双归保护和Bypass保护功能。
为了实现服务链伪代理报文转发,在SFF上引入一种SRv6 SID类型——End.AM SID。End.AM SID用于标识SRv6 SFC服务链网络中的某个应用服务节点。End.AM SID对应的转发动作是:
· 报文从转发节点SFF发送到应用服务节点SF之前,SFF先将SRv6报文的目的地址修改为SRH中第一个SID值即SRH[0],然后根据End.AM SID关联的出接口转发。
· 报文从应用服务节点SF到转发节点SFF之后,SFF恢复SRv6报文目的地址为SRH[SL],按照正常SRv6报文转发流程进行报文转发。
图1-2 SRv6 SFC服务链静态代理的报文转发流程
如图1-2所示,以IPv4 L3VPN over SRv6-TE组网为例,SRv6 SFC服务链静态代理的报文转发过程如下:
(1) 源节点SC收到用户网络原始IPv4报文后,可以将流量引入SRv6 TE Policy中。SC根据SRv6 TE Policy进行SRv6报文封装,此时IPv6报文的目的地址是SFF的End.AS SID,SRH头部包括SRv6 TE Policy的路径信息和尾节点的End.DT4 SID。
(2) SFF收到报文以后,通过查找Local SID表发现目的地址为本地End.AS SID,记录当前SL值,并执行End.AS SID对应指令,即解封装报文,去除IPv6报文头部后将原始报文通过配置的出接口发送到SF进行处理。
(3) SF处理完报文以后,将报文发回给SFF。
(4) SFF根据报文的入接口(SFF上与SF相连的接收IPv4报文的接口)或入接口和VLAN,查找配置信息,然后依据配置的SID list重新封装SRv6报文,封装后报文SRH中SID list与源节点SC上SRv6 TE Policy路径一致,SRH中的SL值为记录的SL值减1。此时SRv6报文目的地址是本地End.AS SID的下一个SID(即Device C的End SID)。SFF根据报文的目的IPv6地址,查找IPv6路由表转发报文。
(5) Device C接收到报文以后,通过查找Local SID表发现目的地址为本地End SID,按SRv6转发流程处理报文。目的地址替换为D1(即尾节点的End SID),SL-1,查找IPv6路由表转发报文。
(6) 尾节点接收到报文以后,通过查找Local SID表发现目的地址D1为本地SID,将目的地址替换为D2(即尾节点的End.DT4 SID),SL-1变为0。尾节点执行End.DT4 SID对应指令,即解封装SRv6报文,并将原始报文转发到对应VPN或公网。
图1-3 SRv6 SFC服务链伪代理的报文转发流程
如图1-3所示,以IPv4 L3VPN over SRv6-TE组网为例,SRv6 SFC服务链伪代理报文转发过程如下:
(1) 源节点SC收到用户网络原始报文后,将流量引入SRv6 TE Policy中。SC根据SRv6 TE Policy进行SRv6报文封装,此时SRv6报文的目的地址是SFF的End.AM SID,SRH头部包括SRv6 TE Policy的路径信息和尾节点的End.DT4 SID。
(2) SFF收到报文以后,通过查找Local SID表发现目的地址为End.AM SID,将SRv6报文的目的地址替换为SRH SID列表中的最后一个SID,即尾节点的End.DT4 SID,同时将SL减1,并将报文从End.AM SID绑定的出接口发送到SF进行处理。
(3) SF处理完报文以后,不修改SRv6报文信息,把报文发回给SFF。
(4) 如果报文的入接口(SFF上与SF相连的接收报文的接口)或入接口和VLAN绑定了End.AM SID,则SFF根据SRH中的SL值替换SRv6报文的目的地址。此时,SL值为2,因此,将SRv6报文目的地址替换为C(本地End.AM SID的下一个SID,即Device C的End SID),SFF根据报文的目的IPv6地址,查找IPv6路由表转发报文。
(5) Device C接收到报文后,通过查找Local SID表发现目的地址为本地End SID,按SRv6转发流程处理报文。目的地址替换为D1(即尾节点的End SID),SL-1,查找IPv6路由表转发报文。
(6) 尾节点接收到报文以后,通过查找Local SID表发现目的地址D1为本地End SID,将目的地址替换为D2(即尾节点的End.DT4 SID),SL-1变为0。尾节点执行End.DT4 SID对应指令,即解封装SRv6报文,并将原始报文转发到对应VPN或公网。
图1-4 SF不可达导致报文转发异常
如图1-4所示,在没有任何保护的情况下,SF不可达时,需要经过应用服务节点SF处理的报文到达SFF设备后会被丢弃,报文既无法按正常逻辑顺序转发,也无法经过应用服务节点的处理。为了提升SRv6 SFC服务链静态代理的可靠性,SFF支持双归保护和Bypass保护:
· 双归保护是指一个应用服务节点SF双归连接主备两个SFF。当主用SFF不可达时,业务切换到备份SFF上处理。
· Bypass保护是指应用服务节点SF故障时,报文绕行该服务节点,不再经过该服务节点处理。
SRv6 SFC服务链伪代理不提供可靠性保护机制。
图1-5 SF双归保护场景下SRv6 SFC报文转发示意图
如图1-5所示,SF双归接入SFF 1和SFF 2,无Bypass保护。
为了实现双归保护,服务链转发节点SFF 1和SFF 2上需要执行如下操作:
· 指定对方的End SID互为备份Peer SID。
· 引用相同的Locator段用来分配主、备End.AS SID。
· 配置相同的主End.AS SID和备End.AS SID。
当SFF 1检测到从SFF 1到SF不可达时,SFF 1解封装报文,去掉原IPv6和SRH报文头,并根据配置重新封装IPv6和SRH头部,其中SRH头部的SID list中包含备End.AS SID X2和SFF 2的End SID C。IPv6头部的目的地址为C,SFF 1查路由表将封装后的报文转发至双归备份节点SFF 2。报文到达SFF 2后,如果SFF 2到SF可达,则按照正常SRv6 SFC服务链静态代理的转发流程处理报文;如果SFF 2到SF不可达,则丢弃报文。
图1-6 Bypass保护场景下SRv6 SFC报文转发示意图
如图1-6所示,在SFC网络中存在SF 1的Bypass保护服务节点SF 2,SF 1单归连接到SFF 1,Bypass保护服务节点SF 2单归连接到SFF 2。
为了实现Bypass应用服务保护,服务链转发节点SFF 1上需要开启Bypass功能并指定Bypass End.AS SID。
当SFF 1检测到从SFF 1到SF不可达时,SFF 1解封装报文,去掉原IPv6和SRH报文头,并根据配置重新封装IPv6头部,其中IPv6的目的地址为C,SFF 1查路由表将封装后的报文转发至SFF 2。SFF 2接收到报文后按正常SRv6 SFC服务链静态代理的转发流程处理报文。
如果仅开启Bypass功能而不指定Bypass保护服务节点SF 2的End.AS SID,SFF 1跳过当前SF 1的End.AS SID B,使用D作为下一跳目的地址,继续按SRH头转发至尾节点。
图1-7 双归保护和Bypass保护混合场景下SRv6 SFC报文转发示意图
如图1-7所示,在SRv6 SFC网络中存在SF 1的Bypass保护服务节点SF 2,SF 1双归连接到SFF 1和SFF 2,Bypass保护服务节点SF 2单归连接到SFF 3。双归保护和Bypass保护同时存在的情况下优先执行双归保护流程,双归保护失效再切换到Bypass保护流程。
为了实现双归和Bypass保护,服务链转发节点上需要执行如下操作:
· SFF 1和SFF 2上指定对方的End SID互为备份Peer SID。
· SFF 1和SFF 2上引用相同的Locator段用来分配主、备End.AS SID。
· SFF 1和SFF 2上配置相同的主End.AS SID和备End.AS SID。
· SFF 1和SFF 2上开启Bypass功能并指定Bypass End.AS SID。
具体的报文转发流程如下:
(1) 在SFF 1上,报文转发处理有两种情况:
¡ 当SFF 1到SF 1转发正常时,按照正常SRv6 SFC服务链静态代理的转发流程处理报文。
¡ 当SFF 1检测到从SFF 1到SF 1不可达时,SFF 1解封装报文,去掉原IPv6和SRH报文头,并根据配置重新封装IPv6和SRH头部,其中SRH头部的SID list中包含备End.AS SID X2和SFF 2的End SID C。IPv6头部的目的地址为C,SFF 1查路由表将封装后的报文转发至双归备份节点SFF 2。
(2) 报文到达SFF 2后,报文转发处理也有两种情况:
¡ 当SFF 2到SF 1可达,则按照正常SRv6 SFC服务链静态代理的转发流程处理报文。
¡ 当SFF 2检测到SFF 2到SF 1不可达,则切换Bypass保护转发流程。SFF 2解封装报文,去掉原IPv6和SRH报文头,并根据配置重新封装IPv6和SRH头部,其中SRH中仅包含Bypass End.AS SID值D,IPv6的目的地址为D,SFF 2查路由表将封装后的报文转发至SFF 3。
(3) 报文到达SFF 3后,报文转发处理也有两种情况:
¡ 当SFF 3到Bypass SF 2可达,则按照正常SRv6 SFC服务链静态代理的转发流程处理报文。
¡ 当SFF 3检测到SFF 3到Bypass SF 2不可达,则丢弃报文。
SRv6 SFC目前只能用于IP/EVPN L3VPN over SRv6网络。
SRv6 SFC服务链静态代理支持处理内层协议类型为IPv4和IPv6的报文。
SRv6 SFC服务链伪代理支持处理内层协议类型为IPv4、IPv6和以太网报文。SRv6 SFC服务链伪代理不支持双归保护和Bypass保护功能。
SRv6 SFC服务链伪代理场景中,如果同一台SFF上配置了多个End.AM SID用来分别连接不同的SF,则需要在SFF上执行undo ipv6 fast-forwarding load-sharing命令,否则SRv6报文会在SFF设备内部形成环路。
(1) 配置SRv6 TE Policy引流
根据服务链业务需求,可以在SC将流量引入SRv6 TE Policy隧道。配置方法请参见“Segment Routing配置指导”中的“SRv6 TE Policy”。
(2) 配置SRv6 SFC服务链静态代理基本功能
¡ (可选)配置服务链静态代理的差分服务模式
¡ (可选)配置服务链静态代理的TTL处理模式
(4) 配置SRv6 SFC服务链静态代理的Bypass保护
(1) 配置SRv6 TE Policy引流
根据服务链业务需求,可以在SC将流量引入SRv6 TE Policy隧道。配置方法请参见“Segment Routing配置指导”中的“SRv6 TE Policy”。
(2) 配置SRv6 SFC服务链伪代理基本功能
在配置SRv6 SFC功能前需要完成以下任务:
· 规划SFC域中各设备角色,各设备之间部署IGP实现IPv6地址互通和SRv6 SID通告。
· 规划SFC显式路径和SRv6 TE Policy路径信息。
· 根据业务需要,在SC和尾节点上配置VPN实例,并将VPN实例与接口绑定。
配置End.AS类型的SID,并创建SRv6服务链静态代理视图后,需要在该视图下配置SFF支持向SF发送的原始报文的协议类型。如果不执行本配置,则无法正常转发服务链报文到SF。
在SRv6 SFC服务链静态代理双归保护场景下,SFF上的End.AS SID应与End SID属于不同的Locator。
当SRv6 SFC网络中同时存在IPv4和IPv6的原始报文时,请配置本功能并同时指定ipv4和ipv6参数,否则未指定的协议类型的原始报文无法转发给SF。
(1) 进入系统视图。
system-view
(2) 开启SRv6功能,并进入SRv6视图。
segment-routing ipv6
(3) 配置End.AS引用的Locator段,并进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 配置End.AS Opcode,并进入SRv6服务链静态代理视图。
opcode { opcode | hex hex-opcode } end-as
(5) 配置SFF支持向SF发送的原始报文的协议类型。
inner-type { ipv4 | ipv6 } *
缺省情况下,SFF不能向SF发送任何协议类型的原始报文。
(1) 进入系统视图。
system-view
(2) 开启SRv6功能,并进入SRv6视图。
segment-routing ipv6
(3) 配置End.AM引用的Locator段,并进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 配置End.AM Opcode,并进入SRv6服务链伪代理视图。
opcode { opcode | hex hex-opcode } end-am
应用服务节点SF可能通过二层或者三层接口接入服务链的转发节点SFF。根据SF和SFF连接的接口类型,可以选择SFF和SF间的报文转发方式,保证报文在SFF和SF之间正常转发。
SF上可能存在多个虚机VM为同一应用服务进行负载分担。通过在同一个SRv6服务链静态代理下多次配置转发方式,可以实现应用服务在VM间负载分担。
作为服务链静态代理的出接口或入接口不能绑定任何其他业务,例如VPN实例,否则会引起转发问题。
一个服务链静态代理下不能同时配置二层和三层封装转发方式。
SRv6服务链静态代理和SRv6服务链伪代理的入接口不能相同。
三层封装转发的出接口和入接口只能是三层接口。二层转发的出入接口不能是VLAN接口。
配置二层封装转发时,需要注意:
· 不同SRv6服务链静态代理的入接口和入方向报文内外层VLAN不能相同。
· 在同一个SRv6服务链静态代理下,相同的出接口和出方向报文内外层VLAN只能对应一个入接口。多次配置二层封装转发,指定相同出接口和出方向的内外层报文VLAN,但关联不同入接口时,最后一次执行的配置生效。
配置三层封装转发时,需要注意:
· 不同SRv6服务链静态代理的入接口不能相同;
· 在同一个SRv6服务链静态代理下,一个出接口只能对应一个入接口。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 进入SRv6服务链静态代理视图。
opcode { opcode | hex hex-opcode } end-as
(5) 配置SFF和SF之间的报文转发方式,请选择其中一项进行配置。
¡ 配置报文在SFF和SF之间通过二层封装转发。
encapsulation eth out-interface out-interface-type out-interface-number [ out-s-vlan out-svid [ out-c-vlan out-cvid ] ] in-interface in-interface-type in-interface-number [ in-s-vlan in-svid [ in-c-vlan in-cvid ] ] [ dest-mac dest-mac ]
缺省情况下,未配置报文在SFF和SF之间的二层封装转发。
多次配置本命令,指定不同接口或不同VLAN可以实现流量转发负载分担。
¡ 配置报文在SFF和SF之间通过IPv4下一跳进行三层封装转发。
encapsulation ipv4 nexthop nexthop-addr out-interface out-interface-type out-interface-number in-interface in-interface-type in-interface-number [ symmetric-index index-value ]
缺省情况下,未配置报文在SFF和SF之间通过IPv4下一跳进行三层封装转发。
¡ 配置报文在SFF和SF之间通过IPv6下一跳进行三层封装转发。
encapsulation ipv6 nexthop nexthop-ipv6-addr out-interface out-interface-type out-interface-number in-interface in-interface-type in-interface-number [ symmetric-index index-value ]
缺省情况下,未配置报文在SFF和SF之间通过IPv6下一跳进行三层封装转发。
应用服务节点SF可能通过二层或者三层接口接入服务链的转发节点SFF。根据SF和SFF连接的接口类型,可以选择SFF和SF间的报文转发方式,保证报文在SFF和SF之间正常转发。
作为服务链伪代理的出接口或入接口不能绑定任何其他业务,例如VPN实例,否则会引起转发问题。
一个服务链伪代理下不能同时配置二层和三层封装转发方式。
对于SRv6服务链伪代理的入接口有以下限制:
· SRv6服务链静态代理和SRv6服务链伪代理的入接口不能相同。
· 不同SRv6服务链伪代理的入接口可以相同。
· 三层封装转发的入接口只能是三层接口。二层转发的入接口不能是VLAN接口。
对于SRv6服务链伪代理的出接口有以下限制:
· 三层封装转发的出接口只能是三层接口。二层转发的出接口不能是VLAN接口。
· 配置二层封装转发时,在同一个SRv6服务链伪代理下,相同的出接口和出方向报文内外层VLAN只能对应一个入接口。多次配置二层封装转发,指定相同出接口和出方向的内外层报文VLAN,但关联不同入接口时,最后一次执行的配置生效。
· 配置三层封装转发时,在同一个SRv6服务链伪代理下,一个出接口只能对应一个入接口。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 进入SRv6服务链伪代理视图。
opcode { opcode | hex hex-opcode } end-am
(5) 配置SFF和SF之间的报文转发方式,请选择其中一项进行配置。
¡ 配置报文在SFF和SF之间通过二层封装转发。
encapsulation eth out-interface out-interface-type out-interface-number [ out-s-vlan out-svid [ out-c-vlan out-cvid ] ] in-interface in-interface-type in-interface-number [ in-s-vlan in-svid [ in-c-vlan in-cvid ] ]
缺省情况下,未配置报文在SFF和SF之间的二层封装转发。
多次配置本命令,指定不同接口或不同VLAN可以实现流量转发负载分担。
¡ 配置报文在SFF和SF之间通过IPv6下一跳进行三层封装转发。
encapsulation ipv6 nexthop nexthop-addr out-interface out-interface-type out-interface-number in-interface in-interface-type in-interface-number [ symmetric-index index-value ]
缺省情况下,未配置报文在SFF和SF之间通过IPv6下一跳进行三层封装转发。
多次配置本命令,指定不同下一跳可以实现流量转发负载分担。
SRv6 SFC服务链静态代理模式中,当报文经过应用服务节点SF处理后回到转发节点SFF时,报文不携带IPv6和SRH头。SFF会根据入接口查找对应的服务链静态代理,并为报文添加该服务链下配置的SID列表作为SRH。同时SFF为报文重新封装IPv6头部,其中IPv6源地址需要手工指定,目的地址为SID列表中本地End.AS SID的下一个SID值。重新封装后的报文继续在SRv6 SFC网络中转发。
需要按照距离源节点由近及远的顺序,依次指定转发路径上各个节点的SID值,即距离源节点越近的节点,其SID在SID列表中的位置越靠前。
为了避免业务报文在SFF之间循环,不允许新封装的SID列表中存在两个相同的SID。
SID列表中至少存在两个SID,最后一个SID必须是End.DT4 SID或者End.DT6 SID,同时列表中必须包括End.AS SID。
配置的SID列表表示的显式路径与源节点SC上SRv6 TE Policy端到端的路径需要一致。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 进入SRv6服务链静态代理视图。
opcode { opcode | hex hex-opcode } end-as
(5) 配置从SF收到报文后SFF为该报文重新封装的源IPv6地址。
cache source-address ipv6-address
缺省情况下,未配置从SF收到报文后SFF重新封装报文的源IPv6地址, SFF会丢弃报文。
(6) 配置SFF收到SF返回的报文后,重新封装的SID列表。
cache list sid-list
缺省情况下,未配置重新封装的SID列表。
SRv6 SFC服务链静态代理模式中,报文在SFF和SF之间转发时,SFF可以配置报文的差分服务处理模式。服务链的差分服务缺省情况下为Uniform模式,若配置为Pipe模式,则要对服务类型和颜色进行配置。
· Pipe模式:在入方向,即报文从SF进入SFF时,SFF会忽略其自身携带的IP或DSCP优先级,使用配置的service-class值作为新封装的IPv6报文的优先级,使用配置的color值作为新封装报文的颜色标记。在SRv6网络中,依据配置的优先级和颜色标记对报文进行QoS调度。在出方向,即报文由SFF进入SF时,SFF剥离外层IPv6和SRH报文头,不会修改原始报文的原有IP或DSCP优先级和颜色。
· Uniform模式:在入方向,即报文从SF进入SFF时,SFF会将其自身携带的IP或DSCP优先级映射为新封装IPv6报文头的优先级,报文颜色不变。在出方向,即报文由SFF进入SF时,SFF剥离外层IPv6和SRH报文头,再将外层IPv6头的优先级映射为原始报文的IP或DSCP优先级,报文颜色不变。
有关IP优先级、DSCP优先级和颜色的详细介绍,请参见“ACL和QoS配置指导”中的“QoS”。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 进入SRv6服务链静态代理视图。
opcode { opcode | hex hex-opcode } end-as
(5) 配置服务链的差分服务模式。
sfc diffserv-mode pipe service-class color
缺省情况下,服务链静态代理的差分服务模式为Uniform。
当报文从SF转发回SFF后,SFF可以配置报文的TTL处理模式。
· Uniform模式:报文从SF转发回SFF后,SFF将原始报文的TTL值减1作为新封装的IPv6头的TTL值。
· Pipe模式:报文从SF转发回SFF后,SFF直接将配置的ttl-value减1作为新封装的IPv6头的TTL值。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 进入SRv6服务链静态代理视图。
opcode { opcode | hex hex-opcode } end-as
(5) 配置服务链TTL的处理模式。
sfc ttl-mode pipe ttl-value
缺省情况下,服务链的TTL处理模式为Uniform。
SFF 1和SFF 2上,End.AS SID和End SID应属于不同的Locator。
双归保护的转发节点SFF 1和SFF 2上需要配置相同主End.AS Opcode和相同的备份End.AS Opcode。
SFF上配置的各种静态SID不能互相冲突。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 将双归备份SFF的End SID配置为备份Peer SID。
proxy peer-sid peer-sid
缺省情况下,未指定双归备份的备份Peer SID。
主备SFF上需要互相指定对方的End SID为备份Peer SID。
(4) 进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(5) 进入SRv6服务链静态代理视图。
opcode { opcode | hex hex-opcode } end-as
(6) 配置SRv6服务链静态代理双归保护的备份End.AS SID Opcode。
backup-opcode { func-opcode | hex hex-func-opcode }
缺省情况下,未配置SRv6服务链静态代理双归保护的备份End.AS SID Opcode
主备SFF上配置的主备End.AS SID属于同一Locator段,备份Opcode与主用Opcode不同以区分主备SFF关系。
如果同时存在双归保护和Bypass保护功能,则优先按双归保护流程处理,双归保护失效时再按照Bypass保护流程转发。
(1) 进入系统视图。
system-view
(2) 进入SRv6视图。
segment-routing ipv6
(3) 进入SRv6 Locator视图。
locator locator-name [ ipv6-prefix ipv6-address prefix-length [ args args-length | static static-length ] * ]
(4) 进入SRv6服务链静态代理视图。
opcode { opcode | hex hex-opcode } end-as
(5) 开启Bypass功能,并指定Byapss End.AS SID
bypass [ sid ipv6-address ]
缺省情况下,Bypass功能处于关闭状态。
网络中没有Bypass SF节点时,如果仍需要保证SF不可达后服务链数据可以正常转发,则可以仅开启Bypass功能而不指定Byapss End.AS SID。此时,SFF将跳过当前应用服务节点的End.AS SID,使用SRH中下一个SID作为下一跳目的地址,继续按SRH头转发至尾节点。
通过echo报文方式的静态BFD会话检测SFF与SF之间的可达性,当SF不可达时,可以快速触发SRv6 SFC服务链静态代理的双归保护或Bypass保护机制。
使用echo报文方式的静态BFD会话检测SF的可达性时,仅需在本端SFF上创建静态BFD会话。
首次创建静态BFD会话时,必须指定静态BFD会话的对端SF的IPv4地址。系统仅检查IP地址的形式,不检查其正确性。指定错误的对端IP地址或源IP地址均会导致静态BFD会话无法建立。
不同的静态BFD会话的本地标识符不能相同。
echo报文方式的静态BFD会话选取报文源地址的规则如下:
(1) 如果创建静态BFD会话时未指定source-ip/source-ipv6参数,将使用bfd echo-source-ip/bfd echo-source-ipv6命令指定的IPv4/IPv6地址作为echo报文的源IPv4/IPv6地址。
(2) 如果创建静态BFD会话时指定了source-ip/source-ipv6参数,将使用该参数的地址作为echo报文的源IPv4/IPv6地址。
(3) 如果未通过(1)或(2)指定报文的源地址,echo报文方式的静态BFD会话将使用发送报文的接口IPv4/IPv6地址作为报文的源IPv4/IPv6地址。
建议用户创建echo报文方式的静态BFD会话时指定source-ip/source-ipv6参数。
本配置中涉及命令的详细介绍,请参见“可靠性命令参考”中的“BFD”。
(1) 进入系统视图。
system-view
(2) (可选)配置echo报文源IP地址。
¡ 配置echo报文源IPv4地址。
bfd echo-source-ip ip-address
缺省情况下,未配置echo报文的源IPv4地址。
¡ 配置echo报文源IPv6地址。
bfd echo-source-ipv6 ipv6-address
缺省情况下,未配置echo报文的源IPv6地址。
echo报文源IPv6地址仅支持全球单播地址。
(3) 创建静态BFD会话,并进入静态BFD会话视图。
(IPv4网络)
bfd static session-name [ peer-ip ipv4-address interface interface-type interface-number destination-ip ipv4-address [ source-ip ipv4-address ] one-arm-echo [ discriminator auto ] ]
(IPv6网络)
bfd static session-name [ peer-ipv6 ipv6-address interface interface-type interface-number destination-ipv6 ipv6-address [ source-ipv6 ipv6-address ] one-arm-echo [ discriminator auto ] ]
(4) (可选)指定静态BFD会话的本地标识符。
discriminator local local-value
缺省情况下,未指定静态BFD会话的本地标识符。
本命令仅用于创建静态BFD会话时未指定静态BFD会话标识符的场景。
可在任意视图下执行以下命令,显示SRv6 SFC服务链静态代理的转发表项信息:
表1-1 显示SRv6 SFC信息
操作 |
命令 |
显示SRv6 SFC服务链静态代理的转发信息 |
display segment-routing ipv6 sfc forwarding [ locator locator-name [ opcode operation-code ] ] [ nid-value ] |
如图1-8所示,CE 1和CE 2属于同一个VPN。SRv6 SFC采用伪代理模式,控制CE 1业务流量经过SF处理后转发到CE 2上。SFF 1设备通过三层以太网接口连接SF,报文在SFF 1和SF之间采用三层封装转发。
· 在SC和Tail上配置VPN实例,业务流量通过SRv6 TE Policy转发,转发路径为SC->SFF 1->SF->Tail。
· 在SFF 1上配置SRv6 SFC服务链伪代理。
图1-8 SRv6 SFC服务链伪代理采用三层封装转发配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
SC |
Loop1 |
1::1/128 |
SFF 1 |
Loop1 |
2::2/128 |
GE2/0/1 |
16.0.0.2/30 |
GE2/0/1 |
100::2/96 |
||
GE2/0/2 |
100::1/96 |
GE1/0/2 |
10::1/96 |
||
SF |
- |
10::2/96 |
|
GE1/0/3 |
400::1/96 |
Tail |
Loop1 |
5::5/128 |
CE 1 |
Loop1 |
6.6.6.6/32 |
|
GE2/0/1 |
57.0.0.1/30 |
|
GE2/0/1 |
16.0.0.1/30 |
|
GE2/0/2 |
400::2/96 |
CE 2 |
Loop1 |
7.7.7.7/32 |
|
|
|
|
GE2/0/1 |
57.0.0.2/30 |
· 规划SRv6 SID信息:
¡ SC:Locator a网段为1000::/64,End SID为1000::1,End.DT4 SID为1000::2
¡ SFF 1:Locator b网段为2000::/64,End SID为2000::1;Locator am1网段为2001::/64,End.AM SID为2001::1
¡ Tail:Locator e网段为5000::/64,End SID为5000::1,End.DT4 SID为5000::2
· 规划流量转发隧道和隧道显式路径:在SC上,流量通过SRv6 TE Policy指定的显式路径经过SFF 1转发至SF上处理后,最终转发到Tail设备。
(1) 在SC、SFF 1、Tail设备上配置IPv6 IS-IS,实现骨干网设备的互通
# 配置SC。
<SC> system-view
[SC] isis 1
[SC-isis-1] is-level level-2
[SC-isis-1] cost-style wide
[SC-isis-1] network-entity 10.1111.1111.1111.00
[SC-isis-1] address-family ipv6 unicast
[SC-isis-1-ipv6] quit
[SC-isis-1] quit
[SC] interface loopback 1
[SC-LoopBack1] ipv6 address 1::1 128
[SC-LoopBack1] isis ipv6 enable 1
[SC-LoopBack1] quit
[SC] interface gigabitethernet 2/0/2
[SC-GigabitEthernet2/0/2] ipv6 address 100::1 96
[SC-GigabitEthernet2/0/2] isis ipv6 enable
[SC-GigabitEthernet2/0/2] quit
# 配置SFF 1。
<SFF1> system-view
[SFF1] isis
[SFF1-isis-1] is-level level-2
[SFF1-isis-1] cost-style wide
[SFF1-isis-1] network-entity 10.2222.2222.2222.00
[SFF1-isis-1] address-family ipv6 unicast
[SFF1-isis-1-ipv6] quit
[SFF1-isis-1] quit
[SFF1] interface loopback 1
[SFF1-LoopBack1] ipv6 address 2::2 128
[SFF1-LoopBack1] isis ipv6 enable
[SFF1-LoopBack1] quit
[SFF1] interface gigabitethernet 2/0/1
[SFF1-GigabitEthernet2/0/1] ipv6 address 100::2 96
[SFF1-GigabitEthernet2/0/1] isis ipv6 enable
[SFF1-GigabitEthernet2/0/1] quit
[SFF1] interface gigabitethernet 2/0/3
[SFF1-GigabitEthernet2/0/3] ipv6 address 400::1 96
[SFF1-GigabitEthernet2/0/3] isis ipv6 enable
[SFF1-GigabitEthernet2/0/3] quit
# 配置Tail。
<Tail> system-view
[Tail] isis
[Tail-isis-1] is-level level-2
[Tail-isis-1] cost-style wide
[Tail-isis-1] network-entity 10.5555.5555.5555.00
[Tail-isis-1] address-family ipv6 unicast
[Tail-isis-1-ipv6] quit
[Tail-isis-1] quit
[Tail] interface loopback 1
[Tail-LoopBack1] ipv6 address 5::5 128
[Tail-LoopBack1] isis ipv6 enable
[Tail-LoopBack1] quit
[Tail] interface gigabitethernet 2/0/2
[Tail-GigabitEthernet2/0/2] ipv6 address 400::2 96
[Tail-GigabitEthernet2/0/2] isis ipv6 enable
[Tail-GigabitEthernet2/0/2] quit
配置完成后,SC、SFF 1、Tail之间应能建立IPv6 IS-IS邻居,执行display isis peer命令可以看到邻居达到Up状态。执行display isis route ipv6命令可以看到SC和Tail互相学习到对方的Loopback接口的路由。
(2) 在SC和Tail设备上配置VPN实例,将CE 1和CE 2分别接入SC和Tail
# 配置SC。
[SC] ip vpn-instance vpn1
[SC-vpn-instance-vpn1] route-distinguisher 100:1
[SC-vpn-instance-vpn1] vpn-target 111:1
[SC-vpn-instance-vpn1] quit
[SC] interface gigabitethernet 2/0/1
[SC-GigabitEthernet2/0/1] ip binding vpn-instance vpn1
[SC-GigabitEthernet2/0/1] ip address 16.0.0.2 30
[SC-GigabitEthernet2/0/1] quit
# 配置Tail。
[Tail] ip vpn-instance vpn1
[Tail-vpn-instance-vpn1] route-distinguisher 100:1
[Tail-vpn-instance-vpn1] vpn-target 111:1
[Tail-vpn-instance-vpn1] quit
[Tail] interface gigabitethernet 2/0/1
[Tail-GigabitEthernet2/0/1] ip binding vpn-instance vpn1
[Tail-GigabitEthernet2/0/1] ip address 57.0.0.1 24
[Tail-GigabitEthernet2/0/1] quit
# 按配置各CE的接口IP地址,配置过程略。
配置完成后,在PE设备上执行display ip vpn-instance命令可以看到VPN实例的配置情况。SC和Tail能ping通自己接入的CE。
以SC和CE 1为例:
[SC] display ip vpn-instance
Total VPN-Instances configured : 1
Total IPv4 VPN-Instances configured : 1
Total IPv6 VPN-Instances configured : 1
VPN-Instance Name RD Address family Create time
vpn1 100:1 IPv4/IPv6 2020/10/29 13:59:39
[SC] ping -vpn-instance vpn1 16.0.0.1
Ping 16.0.0.1 (16.0.0.1): 56 data bytes, press CTRL+C to break
56 bytes from 16.0.0.1: icmp_seq=0 ttl=255 time=2.000 ms
56 bytes from 16.0.0.1: icmp_seq=1 ttl=255 time=0.000 ms
56 bytes from 16.0.0.1: icmp_seq=2 ttl=255 time=1.000 ms
56 bytes from 16.0.0.1: icmp_seq=3 ttl=255 time=0.000 ms
56 bytes from 16.0.0.1: icmp_seq=4 ttl=255 time=0.000 ms
--- Ping statistics for 16.0.0.1 in VPN instance vpn1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/0.600/2.000/0.800 ms
(3) 在SC和Tail与各自接入的CE之间建立EBGP对等体,引入VPN路由
# 配置CE 1。
<CE1> system-view
[CE1] bgp 65410
[CE1-bgp-default] peer 16.0.0.2 as-number 100
[CE1-bgp-default] address-family ipv4 unicast
[CE1-bgp-default-ipv4] peer 16.0.0.2 enable
[CE1-bgp-default-ipv4] import-route direct
[CE1-bgp-default-ipv4] quit
[CE1-bgp-default] quit
# CE 2配置与CE 1设备配置类似,配置过程省略。
# 配置SC。
[SC] bgp 100
[SC-bgp-default] router-id 1.1.1.1
[SC-bgp-default] ip vpn-instance vpn1
[SC-bgp-default-vpn1] peer 16.0.0.1 as-number 65410
[SC-bgp-default-vpn1] address-family ipv4 unicast
[SC-bgp-default-ipv4-vpn1] peer 16.0.0.1 enable
[SC-bgp-default-ipv4-vpn1] quit
[SC-bgp-default-vpn1] quit
# Tail配置与SC设备配置类似,配置过程省略。
配置完成后,在PE设备上执行display bgp peer ipv4 vpn-instance命令,可以看到SC和Tail与各自接入的CE之间的BGP对等体关系已建立,并达到Established状态。
(4) 在SC和Tail之间建立VPNv4对等体
# 配置SC。
[SC] bgp 100
[SC-bgp-default] peer 5::5 as-number 100
[SC-bgp-default] peer 5::5 connect-interface loopback 1
[SC-bgp-default] address-family vpnv4
[SC-bgp-default-vpnv4] peer 5::5 enable
[SC-bgp-default-vpnv4] quit
[SC-bgp-default] quit
# 配置Tail。
[Tail] bgp 100
[Tail-bgp-default] peer 1::1 as-number 100
[Tail-bgp-default] peer 1::1 connect-interface loopback 1
[Tail-bgp-default] address-family vpnv4
[Tail-bgp-default-vpnv4] peer 1::1 enable
[Tail-bgp-default-vpnv4] quit
[Tail-bgp-default] quit
配置完成后,在SC和Tail上执行display bgp peer vpnv4命令,可以看到SC和Tail之间的VPNv4对等体关系已建立,并达到Established状态。
(5) 在SC、SFF 1、Tail设备上配置End SID,在SC和Tail设备上配置End.DT4 SID,将SID所属的Locator通过IGP发布
# 配置SC。
[SC] segment-routing ipv6
[SC-segment-routing-ipv6] encapsulation source-address 11::11
[SC-segment-routing-ipv6] locator a ipv6-prefix 1000::1 64 static 32
[SC-segment-routing-ipv6-locator-a] opcode 1 end
[SC-segment-routing-ipv6-locator-a] opcode 2 end-dt4 vpn-instance vpn1
[SC-segment-routing-ipv6-locator-a] quit
[SC-segment-routing-ipv6] quit
[SC] isis 1
[SC-isis-1] address-family ipv6 unicast
[SC-isis-1-ipv6] segment-routing ipv6 locator a
[SC-isis-1-ipv6] quit
[SC-isis-1] quit
# 配置SFF 1。
[SFF1] segment-routing ipv6
[SFF1-segment-routing-ipv6] encapsulation source-address 22::22
[SFF1-segment-routing-ipv6] locator b ipv6-prefix 2000::1 64 static 32
[SFF1-segment-routing-ipv6-locator-b] opcode 1 end
[SFF1-segment-routing-ipv6-locator-b] quit
[SFF1-segment-routing-ipv6] quit
[SFF1] isis 1
[SFF1-isis-1] address-family ipv6 unicast
[SFF1-isis-1-ipv6] segment-routing ipv6 locator b
[SFF1-isis-1-ipv6] quit
[SFF1-isis-1] quit
# 配置Tail。
[Tail] segment-routing ipv6
[Tail-segment-routing-ipv6] encapsulation source-address 55::55
[Tail-segment-routing-ipv6] locator e ipv6-prefix 5000::1 64 static 32
[Tail-segment-routing-ipv6-locator-e] opcode 1 end
[Tail-segment-routing-ipv6-locator-e] opcode 2 end-dt4 vpn-instance vpn1
[Tail-segment-routing-ipv6-locator-e] quit
[Tail-segment-routing-ipv6] quit
[Tail] isis 1
[Tail-isis-1] address-family ipv6 unicast
[Tail-isis-1-ipv6] segment-routing ipv6 locator e
[Tail-isis-1-ipv6] quit
[Tail-isis-1] quit
配置完成后,在SC设备上执行display ipv6 routing-table命令,可以看到已经将End.DT4 SID引入路由表中,并生成SRv6路由。
以SC为例:
[SC] display ipv6 routing-table protocol srv6
Summary count : 8
SRv6 Routing table status : <Active>
Summary count : 8
Destination: 1000::2/128 Protocol : SRv6
NextHop : ::1 Preference: 4
Interface : InLoop0 Cost : 0
SRv6 Routing table status : <Inactive>
Summary count : 0
(6) 在SC和Tail设备上配置为私网路由添加End.DT4 SID,对等体之间交换End.DT4 SID,同时允许将私网路由迭代到End.DT4 SID的路由条目上
# 配置SC。
[SC] bgp 100
[SC-bgp-default] address-family vpnv4
[SC-bgp-default-vpnv4] peer 5::5 prefix-sid
[SC-bgp-default-vpnv4] quit
[SC-bgp-default] ip vpn-instance vpn1
[SC-bgp-default-vpn1] address-family ipv4 unicast
[SC-bgp-default-ipv4-vpn1] segment-routing ipv6 locator a
[SC-bgp-default-ipv4-vpn1] segment-routing ipv6 traffic-engineering best-effort
[SC-bgp-default-ipv4-vpn1] quit
[SC-bgp-default-vpn1] quit
[SC-bgp-default] quit
# 配置Tail。
[Tail] bgp 100
[Tail-bgp-default] address-family vpnv4
[Tail-bgp-default-vpnv4] peer 1::1 prefix-sid
[Tail-bgp-default-vpnv4] quit
[Tail-bgp-default] ip vpn-instance vpn1
[Tail-bgp-default-vpn1] address-family ipv4 unicast
[Tail-bgp-default-ipv4-vpn1] segment-routing ipv6 locator e
[Tail-bgp-default-ipv4-vpn1] segment-routing ipv6 traffic-engineering best-effort
[Tail-bgp-default-ipv4-vpn1] quit
[Tail-bgp-default-vpn1] quit
[Tail-bgp-default] quit
配置完成后,在SC设备上执行display bgp routing-table vpnv4命令查看对端Tail发送的路由详细信息,可以看到对端Tail发送的路由携带SID属性数据。此时SC和Tail设备之间可以互相发布携带SRv6 SID的VPNv4路由,SC和Tail设备之间的SRv6 BE隧道正常建立。
以SC为例:
[SC] display bgp routing-table vpnv4 7.7.7.7
BGP local router ID: 1.1.1.1
Local AS number: 100
Route distinguisher: 100:1(vpn1)
Total number of routes: 1
Paths: 1 available, 1 best
BGP routing table information of 7.7.7.7/32:
From : 5::5 (5.5.5.5)
Rely nexthop : FE80::2A96:34FF:FE9D:216
Original nexthop: 5::5
Out interface : GigabitEthernet2/0/2
Route age : 00h14m23s
OutLabel : 3
Ext-Community : <RT: 111:1>
RxPathID : 0x0
TxPathID : 0x0
PrefixSID : End.DT4 SID <5000::2>
AS-path : 65420
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : N/A
(7) 在SC和Tail设备上配置SRv6 TE Policy隧道,流量从SC向Tail转发时,需经过SFF 1上的应用服务节点SF处理。
# 配置SC。
[SC] segment-routing ipv6
[SC-segment-routing-ipv6] traffic-engineering
[SC-srv6-te] srv6-policy locator a
[SC-srv6-te] segment-list s1
[SC-srv6-te-sl-s1] index 10 ipv6 2001::1
[SC-srv6-te-sl-s1] index 20 ipv6 5000::1
[SC-srv6-te-sl-s1] quit
[SC-srv6-te] policy p1
[SC-srv6-te-policy-p1] color 10 end-point ipv6 5::5
[SC-srv6-te-policy-p1] candidate-paths
[SC-srv6-te-policy-p1-path] preference 10
[SC-srv6-te-policy-p1-path-pref-10] explicit segment-list s1
[SC-srv6-te-policy-p1-path-pref-10] quit
[SC-srv6-te-policy-p1-path] quit
[SC-srv6-te-policy-p1] quit
[SC-srv6-te] quit
[SC-segment-routing-ipv6] quit
# 配置Tail。
[Tail] segment-routing ipv6
[Tail-segment-routing-ipv6] traffic-engineering
[Tail-srv6-te] srv6-policy locator e
[Tail-srv6-te] segment-list s2
[Tail-srv6-te-sl-s2] index 10 ipv6 2001::1
[Tail-srv6-te-sl-s2] index 10 ipv6 1000::1
[Tail-srv6-te-sl-s2] quit
[Tail-srv6-te] policy p1
[Tail-srv6-te-policy-p1] color 10 end-point ipv6 1::1
[Tail-srv6-te-policy-p1] candidate-paths
[Tail-srv6-te-policy-p1-path] preference 10
[Tail-srv6-te-policy-p1-path-pref-10] explicit segment-list s2
[Tail-srv6-te-policy-p1-path-pref-10] quit
[Tail-srv6-te-policy-p1-path] quit
[Tail-srv6-te-policy-p1] quit
[Tail-srv6-te] quit
[Tail-segment-routing-ipv6] quit
配置完成后,SRv6 TE Policy隧道创建成功,在SC和Tail设备上执行display segment-routing ipv6 te policy命令查看隧道详细信息。
以SC为例:
[SC] display segment-routing ipv6 te policy
Name/ID: p1/0
Color: 10
Endpoint: 5::5
Name from BGP:
BSID:
Mode: Dynamic Type: Type_2 Request state: Succeeded
Current BSID: 1000::1:0:5 Explicit BSID: - Dynamic BSID: 1000::1:0:5
Reference counts: 4
Flags: A/BS/NC
Status: Up
Up time: 2020-10-30 16:08:03
Down time: 2020-10-30 16:03:48
Hot backup: Not configured
Statistics: Not configured
SBFD: Not configured
BFD Echo: Not configured
Forwarding index: 2150629377
Candidate paths state: Configured
Candidate paths statistics:
CLI paths: 1 BGP paths: 0 PCEP paths: 0
Candidate paths:
Preference : 10
CPathName:
Instance ID: 0 ASN: 0 Node address: 0.0.0.0
Peer address: ::
Optimal: Y Flags: V/A
Explicit SID list:
ID: 1 Name: s1
Weight: 1 Forwarding index: 2149580801
State: Up State(SBFD): -
(8) 在SC和Tail设备上配置路由策略,通过Color值匹配将流量引入SRv6 TE Policy
# 配置SC。
[SC] route-policy p1 permit node 10
[SC-route-policy-p1-10] apply extcommunity color 00:10 additive
[SC-route-policy-p1-10] quit
[SC] bgp 100
[SC-bgp-default] address-family vpnv4
[SC-bgp-default-vpnv4] peer 5::5 route-policy p1 import
[SC-bgp-default-vpnv4] quit
[SC-bgp-default]quit
# 配置Tail。
[Tail] route-policy p1 permit node 10
[Tail-route-policy-p1-10] apply extcommunity color 00:10 additive
[Tail-route-policy-p1-10] quit
[Tail] bgp 100
[Tail-bgp-default] address-family vpnv4
[Tail-bgp-default-vpnv4] peer 1::1 route-policy p1 import
[Tail-bgp-default-vpnv4] quit
[Tail-bgp-default] quit
配置完成后,在SC设备上执行display bgp routing-table vpnv4命令查看对端Tail发送的路由详细信息,可以看到对端Tail发送的路由携带了扩展团体属性Color并且迭代进入上一步创建的SRv6 TE Policy隧道。
以SC为例:
[SC] display bgp routing-table vpnv4 7.7.7.7
BGP local router ID: 1.1.1.1
Local AS number: 100
Route distinguisher: 100:1(vpn1)
Total number of routes: 1
Paths: 1 available, 1 best
BGP routing table information of 7.7.7.7/32:
From : 5::5 (5.5.5.5)
Rely nexthop : FE80::2A96:34FF:FE9D:216
Original nexthop: 5::5
Out interface : GigabitEthernet2/0/2
Route age : 00h52m23s
OutLabel : 3
Ext-Community : <RT: 111:1>, <CO-Flag:Color(00:10)>
RxPathID : 0x0
TxPathID : 0x0
PrefixSID : End.DT4 SID <5000::2>
AS-path : 65420
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : 2150629377
(9) 在SFF 1上配置SRv6 SFC服务链伪代理功能
# 配置SFF 1。
[SFF1] interface gigabitethernet 2/0/2
[SFF1-GigabitEthernet2/0/2] ipv6 address 10::1 96
[SFF1-GigabitEthernet2/0/2] quit
[SFF1-segment-routing-ipv6] locator am1 ipv6-prefix 2001:: 64 static 32
[SFF1-segment-routing-ipv6-locator-am1] opcode 1 end-am
[SFF1-segment-routing-ipv6-locator-am1-endam-1] encapsulation ipv6 nexthop 10::1 out-interface gigabitethernet 2/0/2 in-interface gigabitethernet 2/0/2
[SFF1-segment-routing-ipv6-locator-am1-endam-1] quit
[SFF1-segment-routing-ipv6-locator-am1] quit
[SFF1-segment-routing-ipv6] quit
[SFF1] isis 1
[SFF1-isis-1] address-family ipv6 unicast
[SFF1-isis-1-ipv6] segment-routing ipv6 locator am1
[SFF1-isis-1-ipv6] quit
[SFF1-isis-1] quit
# 在SFF 1设备上执行命令display segment-routing ipv6 local-sid end-am,可以看到End.AM SID转发信息。
[SFF1] display segment-routing ipv6 local-sid end-am
Local SID forwarding table (End.AM)
Total SIDs: 1
SID : 2001::1/64
Function type : End.AM Allocation type: Static
Locator name : am1 Forward type : L3
Encapsulation count: 1
Next hop : 10::1 Out-interface : GE2/0/2
In-interface : GE2/0/2
Owner : SIDMGR State : Active
Create Time : May 19 17:21:15.687 2020
如图1-9所示,CE 1和CE 2属于同一个VPN。SRv6 SFC采用伪代理模式,控制CE 1业务流量经过SF处理后转发到CE 2上。SF通过三层以太网子接口与SFF 1设备相连,报文在SFF 1和SF之间采用二层封装转发。
· 在SC和Tail上配置VPN实例,业务流量通过SRv6 TE Policy转发,转发路径为SC->SFF 1->SF->Tail。
· 在SFF 1上配置SRv6 SFC服务链伪代理。
图1-9 SRv6 SFC服务链伪代理二层封装转发配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
SC |
Loop1 |
1::1/128 |
SFF 1 |
Loop1 |
2::2/128 |
GE2/0/1 |
16.0.0.2/30 |
GE2/0/1 |
100::2/96 |
||
GE2/0/2 |
100::1/96 |
GE1/0/3 |
400::1/96 |
||
Tail |
Loop1 |
5::5/128 |
CE 1 |
Loop1 |
6.6.6.6/32 |
|
GE2/0/1 |
57.0.0.1/30 |
|
GE2/0/1 |
16.0.0.1/30 |
|
GE2/0/2 |
400::2/96 |
CE 2 |
Loop1 |
7.7.7.7/32 |
|
|
|
|
GE2/0/1 |
57.0.0.2/30 |
· 规划SRv6 SID信息:
¡ SC:Locator a网段为1000::/64,End SID为1000::1,End.DT4 SID为1000::2
¡ SFF 1:Locator b网段为2000::/64,End SID为2000::1;Locator am1网段为2001::/64,End.AM SID为2001::1
¡ Tail:Locator e网段为5000::/64,End SID为5000::1,End.DT4 SID为5000::2
· 规划流量转发隧道和隧道显式路径:在SC上,流量通过SRv6 TE Policy的显示路径经过SFF 1转发至SF上处理后,最终转发到Tail设备。
SRv6 SFC伪代理二层转发和三层转发模式的主要区别在SF和SFF之间报文转发配置。L3VPN和SRv6 TE Policy部分配置请参见“1.19.3 SRv6 SFC服务链伪代理三层封装转发”,此处仅展示差异部分。
# 在SFF 1上配置基本的SRv6 SFC服务链伪代理功能
<SFF1> system-view
[SFF1] interface gigabitethernet 2/0/2.1
[SFF1-GigabitEthernet2/0/2.1] vlan-type dot1q vid 2
[SFF1-GigabitEthernet2/0/2.1] quit
[SFF1-segment-routing-ipv6] locator am1 ipv6-prefix 2001:: 64 static 32
[SFF1-segment-routing-ipv6-locator-am1] opcode 1 end-am
[SFF1-segment-routing-ipv6-locator-am1-endam-1] encapsulation eth out-interface gigabitethernet 2/0/2.1 out-s-vlan 2 in-interface gigabitethernet 2/0/2.1 in-s-vlan 2
[SFF1-segment-routing-ipv6-locator-am1-endam-1] quit
[SFF1-segment-routing-ipv6-locator-am1] quit
[SFF1-segment-routing-ipv6] quit
[SFF1] isis 1
[SFF1-isis-1] address-family ipv6 unicast
[SFF1-isis-1-ipv6] segment-routing ipv6 locator am1
[SFF1-isis-1-ipv6] quit
[SFF1-isis-1] quit
# 在SFF 1设备上执行命令display segment-routing ipv6 local-sid end-am,可以看到End.AM SID转发信息。
[SFF1] display segment-routing ipv6 local-sid end-am
Local SID forwarding table (End.AM)
Total SIDs: 1
SID : 2001::1/64
Function type : End.AM Allocation type: Static
Locator name : am1 Forward type : L2
Encapsulation count: 1
Out-interface: GE2/0/2.1 In-interface : GE2/0/2.1
Out-S-VLAN : 2 Out-C-VLAN : -
In-S-VLAN : 2 In-C-VLAN : -
Owner : SIDMGR State : Active
Create Time : May 19 17:21:15.687 2020
如图1-10所示,CE 1和CE 2属于同一个VPN。SRv6 SFC采用静态代理模式,控制CE 1业务流量经过SF 1处理后转发到CE 2上。为了保证业务可靠性,SF 1双归到SFF 1和SFF 2进行保护,同时SF 2对SF 1进行Bypass保护。三台SFF设备通过三层以太网接口连接SF,报文在SFF和SF之间采用三层封装转发。
· 在SC和Tail上配置VPN实例,业务流量通过SRv6 TE Policy转发,转发路径为SC->SFF 1->SF 1->Tail。
· 在SFF 1和SFF 2上配置SRv6 SFC服务链静态代理,服务节点SF 1双归到SFF 1和SFF 2。
· 在SFF 3上配置SRv6 SFC服务链静态代理,服务节点SF 2为SF 1提供Bypass保护。
图1-10 SRv6 SFC服务链静态代理采用三层封装转发配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
SC |
Loop1 |
1::1/128 |
SFF 1 |
Loop1 |
2::2/128 2.2.2.2/32 |
GE2/0/1 |
16.0.0.2/30 |
GE2/0/1 |
100::2/96 |
||
GE2/0/2 |
100::1/96 |
GE2/0/2 |
300::1/96 |
||
|
GE2/0/3 |
200::1/96 |
|
GE2/0/3 |
10.1.1.2/24 |
SFF 2 |
Loop1 |
3::3/128 3.3.3.3/32 |
|
GE2/0/4 |
400::1/96 |
|
GE2/0/1 |
300::2/96 |
SFF 3 |
Loop1 |
4::4/128 4.4.4.4/32 |
|
GE2/0/2 |
500::1/96 |
|
GE2/0/1 |
500::2/96 |
|
GE2/0/3 |
10.1.1.3/24 |
|
GE2/0/2 |
600::1/96 |
|
GE2/0/4 |
200::2/96 |
|
GE2/0/3 |
10.2.1.2/24 |
SF 1 |
- |
10.1.1.1/24 |
|
GE2/0/4 |
400::2/96 |
SF 2 |
- |
10.2.1.1/24 |
CE 1 |
Loop1 |
6.6.6.6/32 |
Tail |
Loop1 |
5::5/128 |
|
GE2/0/1 |
16.0.0.1/30 |
|
GE2/0/1 |
57.0.0.1/30 |
CE 2 |
Loop1 |
7.7.7.7/32 |
|
GE2/0/2 |
600::2/96 |
|
GE2/0/1 |
57.0.0.2/30 |
· 规划SRv6 SID信息:
¡ SC:Locator a网段为1000::/64,End SID为1000::1,End.DT4 SID为1000::2
¡ SFF 1:Locator b网段为2000::/64,End SID为2000::1;Locator as1网段为2001::/64,End.AS SID为2001::1
¡ SFF 2:Locator c网段为3000::/64,End SID为3000::1;Locator as1网段为2001::/64,End.AS SID为2001::1
¡ SFF 3:Locator d网段为4000::/64,End SID为4000::1;Locator as2网段4001::/64,End.AS SID为4001::1
¡ Tail:Locator e网段为5000::/64,End SID为5000::1,End.DT4 SID为5000::2
· 规划流量转发隧道和隧道显式路径:在SC上,流量通过SRv6 TE Policy指定的显式路径经过SFF 1转发至SF 1上处理后,最终转发到Tail设备;流量从Tail设备回程时通过SRv6 TE Policy指定的显式路径经过SFF 2节点回到SC,无需SF节点处理。
(1) 在SC、SFF 1、SFF 2、SFF 3、Tail设备上配置IPv6 IS-IS,实现骨干网设备的互通
# 配置SC。
<SC> system-view
[SC] isis 1
[SC-isis-1] is-level level-2
[SC-isis-1] cost-style wide
[SC-isis-1] network-entity 10.1111.1111.1111.00
[SC-isis-1] address-family ipv6 unicast
[SC-isis-1-ipv6] quit
[SC-isis-1] quit
[SC] interface loopback 1
[SC-LoopBack1] ipv6 address 1::1 128
[SC-LoopBack1] isis ipv6 enable 1
[SC-LoopBack1] quit
[SC] interface gigabitethernet 2/0/2
[SC-GigabitEthernet2/0/2] ipv6 address 100::1 96
[SC-GigabitEthernet2/0/2] isis ipv6 enable
[SC-GigabitEthernet2/0/2] quit
[SC] interface gigabitethernet 2/0/3
[SC-GigabitEthernet2/0/3] ipv6 address 200::1 96
[SC-GigabitEthernet2/0/3] isis ipv6 enable
[SC-GigabitEthernet2/0/3] quit
# 配置SFF 1。
<SFF1> system-view
[SFF1] isis
[SFF1-isis-1] is-level level-2
[SFF1-isis-1] cost-style wide
[SFF1-isis-1] network-entity 10.2222.2222.2222.00
[SFF1-isis-1] address-family ipv6 unicast
[SFF1-isis-1-ipv6] quit
[SFF1-isis-1] quit
[SFF1] interface loopback 1
[SFF1-LoopBack1] ipv6 address 2::2 128
[SFF1-LoopBack1] isis ipv6 enable
[SFF1-LoopBack1] quit
[SFF1] interface gigabitethernet 2/0/1
[SFF1-GigabitEthernet2/0/1] ipv6 address 100::2 96
[SFF1-GigabitEthernet2/0/1] isis ipv6 enable
[SFF1-GigabitEthernet2/0/1] quit
[SFF1] interface gigabitethernet 2/0/2
[SFF1-GigabitEthernet2/0/2] ipv6 address 300::1 96
[SFF1-GigabitEthernet2/0/2] isis ipv6 enable
[SFF1-GigabitEthernet2/0/2] quit
[SFF1] interface gigabitethernet 2/0/4
[SFF1-GigabitEthernet2/0/4] ipv6 address 400::1 96
[SFF1-GigabitEthernet2/0/4] isis ipv6 enable
[SFF1-GigabitEthernet2/0/4] quit
# 配置SFF 2。
<SFF2> system-view
[SFF2] isis
[SFF2-isis-1] is-level level-2
[SFF2-isis-1] cost-style wide
[SFF2-isis-1] network-entity 10.3333.3333.3333.00
[SFF2-isis-1] address-family ipv6 unicast
[SFF2-isis-1-ipv6] quit
[SFF2-isis-1] quit
[SFF2] interface loopback 1
[SFF2-LoopBack1] ipv6 address 3::3 128
[SFF2-LoopBack1] isis ipv6 enable
[SFF2-LoopBack1] quit
[SFF2] interface gigabitethernet 2/0/1
[SFF2-GigabitEthernet2/0/1] ipv6 address 300::2 96
[SFF2-GigabitEthernet2/0/1] isis ipv6 enable
[SFF2-GigabitEthernet2/0/1] quit
[SFF2] interface gigabitethernet 2/0/2
[SFF2-GigabitEthernet2/0/2] ipv6 address 500::1 96
[SFF2-GigabitEthernet2/0/2] isis ipv6 enable
[SFF2-GigabitEthernet2/0/2] quit
[SFF2] interface gigabitethernet 2/0/4
[SFF2-GigabitEthernet2/0/4] ipv6 address 200::2 96
[SFF2-GigabitEthernet2/0/4] isis ipv6 enable
[SFF2-GigabitEthernet2/0/4] quit
# 配置SFF 3。
<SFF3> system-view
[SFF3] isis
[SFF3-isis-1] is-level level-2
[SFF3-isis-1] cost-style wide
[SFF3-isis-1] network-entity 10.4444.4444.4444.00
[SFF3-isis-1] address-family ipv6 unicast
[SFF3-isis-1-ipv6] quit
[SFF3-isis-1] quit
[SFF3] interface loopback 1
[SFF3-LoopBack1] ipv6 address 4::4 128
[SFF3-LoopBack1] isis ipv6 enable
[SFF3-LoopBack1] quit
[SFF3] interface gigabitethernet 2/0/1
[SFF3-GigabitEthernet2/0/1] ipv6 address 500::2 96
[SFF3-GigabitEthernet2/0/1] isis ipv6 enable
[SFF3-GigabitEthernet2/0/1] quit
[SFF3] interface gigabitethernet 2/0/2
[SFF3-GigabitEthernet2/0/2] ipv6 address 600::1 96
[SFF3-GigabitEthernet2/0/2] isis ipv6 enable
[SFF3-GigabitEthernet2/0/2] quit
[SFF3] interface gigabitethernet 2/0/4
[SFF3-GigabitEthernet2/0/4] ipv6 address 400::2 96
[SFF3-GigabitEthernet2/0/4] isis ipv6 enable
[SFF3-GigabitEthernet2/0/4] quit
# 配置Tail。
<Tail> system-view
[Tail] isis
[Tail-isis-1] is-level level-2
[Tail-isis-1] cost-style wide
[Tail-isis-1] network-entity 10.5555.5555.5555.00
[Tail-isis-1] address-family ipv6 unicast
[Tail-isis-1-ipv6] quit
[Tail-isis-1] quit
[Tail] interface loopback 1
[Tail-LoopBack1] ipv6 address 5::5 128
[Tail-LoopBack1] isis ipv6 enable
[Tail-LoopBack1] quit
[Tail] interface gigabitethernet 2/0/2
[Tail-GigabitEthernet2/0/2] ipv6 address 600::2 96
[Tail-GigabitEthernet2/0/2] isis ipv6 enable
[Tail-GigabitEthernet2/0/2] quit
配置完成后,SC、SFF 1、SFF 2、SFF 3、Tail之间应能建立IPv6 IS-IS邻居,执行display isis peer命令可以看到邻居达到Up状态。执行display isis route ipv6命令可以看到SC和Tail互相学习到对方的Loopback接口的路由。
(2) 在SC和Tail设备上配置VPN实例,将CE 1和CE 2分别接入SC和Tail
# 配置SC。
[SC] ip vpn-instance vpn1
[SC-vpn-instance-vpn1] route-distinguisher 100:1
[SC-vpn-instance-vpn1] vpn-target 111:1
[SC-vpn-instance-vpn1] quit
[SC] interface gigabitethernet 2/0/1
[SC-GigabitEthernet2/0/1] ip binding vpn-instance vpn1
[SC-GigabitEthernet2/0/1] ip address 16.0.0.2 30
[SC-GigabitEthernet2/0/1] quit
# 配置Tail。
[Tail] ip vpn-instance vpn1
[Tail-vpn-instance-vpn1] route-distinguisher 100:1
[Tail-vpn-instance-vpn1] vpn-target 111:1
[Tail-vpn-instance-vpn1] quit
[Tail] interface gigabitethernet 2/0/1
[Tail-GigabitEthernet2/0/1] ip binding vpn-instance vpn1
[Tail-GigabitEthernet2/0/1] ip address 57.0.0.1 24
[Tail-GigabitEthernet2/0/1] quit
# 按配置各CE的接口IP地址,配置过程略。
配置完成后,在PE设备上执行display ip vpn-instance命令可以看到VPN实例的配置情况。SC和Tail能ping通自己接入的CE。
以SC和CE 1为例:
[SC] display ip vpn-instance
Total VPN-Instances configured : 1
Total IPv4 VPN-Instances configured : 1
Total IPv6 VPN-Instances configured : 1
VPN-Instance Name RD Address family Create time
vpn1 100:1 IPv4/IPv6 2020/10/29 13:59:39
[SC] ping -vpn-instance vpn1 16.0.0.1
Ping 16.0.0.1 (16.0.0.1): 56 data bytes, press CTRL+C to break
56 bytes from 16.0.0.1: icmp_seq=0 ttl=255 time=2.000 ms
56 bytes from 16.0.0.1: icmp_seq=1 ttl=255 time=0.000 ms
56 bytes from 16.0.0.1: icmp_seq=2 ttl=255 time=1.000 ms
56 bytes from 16.0.0.1: icmp_seq=3 ttl=255 time=0.000 ms
56 bytes from 16.0.0.1: icmp_seq=4 ttl=255 time=0.000 ms
--- Ping statistics for 16.0.0.1 in VPN instance vpn1 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.000/0.600/2.000/0.800 ms
(3) 在SC和Tail与各自接入的CE之间建立EBGP对等体,引入VPN路由
# 配置CE 1。
<CE1> system-view
[CE1] bgp 65410
[CE1-bgp-default] peer 16.0.0.2 as-number 100
[CE1-bgp-default] address-family ipv4 unicast
[CE1-bgp-default-ipv4] peer 16.0.0.2 enable
[CE1-bgp-default-ipv4] import-route direct
[CE1-bgp-default-ipv4] quit
[CE1-bgp-default] quit
# CE 2配置与CE 1设备配置类似,配置过程省略。
# 配置SC。
[SC] bgp 100
[SC-bgp-default] router-id 1.1.1.1
[SC-bgp-default] ip vpn-instance vpn1
[SC-bgp-default-vpn1] peer 16.0.0.1 as-number 65410
[SC-bgp-default-vpn1] address-family ipv4 unicast
[SC-bgp-default-ipv4-vpn1] peer 16.0.0.1 enable
[SC-bgp-default-ipv4-vpn1] quit
[SC-bgp-default-vpn1] quit
# Tail配置与SC设备配置类似,配置过程省略。
配置完成后,在PE设备上执行display bgp peer ipv4 vpn-instance命令,可以看到SC和Tail与各自接入的CE之间的BGP对等体关系已建立,并达到Established状态。
(4) 在SC和Tail之间建立VPNv4对等体
# 配置SC。
[SC] bgp 100
[SC-bgp-default] peer 5::5 as-number 100
[SC-bgp-default] peer 5::5 connect-interface loopback 1
[SC-bgp-default] address-family vpnv4
[SC-bgp-default-vpnv4] peer 5::5 enable
[SC-bgp-default-vpnv4] quit
[SC-bgp-default] quit
# 配置Tail。
[Tail] bgp 100
[Tail-bgp-default] peer 1::1 as-number 100
[Tail-bgp-default] peer 1::1 connect-interface loopback 1
[Tail-bgp-default] address-family vpnv4
[Tail-bgp-default-vpnv4] peer 1::1 enable
[Tail-bgp-default-vpnv4] quit
[Tail-bgp-default] quit
配置完成后,在SC和Tail上执行display bgp peer vpnv4命令,可以看到SC和Tail之间的VPNv4对等体关系已建立,并达到Established状态。
(5) 在SC、SFF 1、SFF 2、SFF 3、Tail设备上配置End SID,在SC和Tail设备上配置End.DT4 SID,将SID所属的Locator通过IGP发布
# 配置SC。
[SC] segment-routing ipv6
[SC-segment-routing-ipv6] encapsulation source-address 11::11
[SC-segment-routing-ipv6] locator a ipv6-prefix 1000::1 64 static 32
[SC-segment-routing-ipv6-locator-a] opcode 1 end
[SC-segment-routing-ipv6-locator-a] opcode 2 end-dt4 vpn-instance vpn1
[SC-segment-routing-ipv6-locator-a] quit
[SC-segment-routing-ipv6] quit
[SC] isis 1
[SC-isis-1] address-family ipv6 unicast
[SC-isis-1-ipv6] segment-routing ipv6 locator a
[SC-isis-1-ipv6] quit
[SC-isis-1] quit
# 配置SFF 1。
[SFF1] segment-routing ipv6
[SFF1-segment-routing-ipv6] encapsulation source-address 22::22
[SFF1-segment-routing-ipv6] locator b ipv6-prefix 2000::1 64 static 32
[SFF1-segment-routing-ipv6-locator-b] opcode 1 end
[SFF1-segment-routing-ipv6-locator-b] quit
[SFF1-segment-routing-ipv6] quit
[SFF1] isis 1
[SFF1-isis-1] address-family ipv6 unicast
[SFF1-isis-1-ipv6] segment-routing ipv6 locator b
[SFF1-isis-1-ipv6] quit
[SFF1-isis-1] quit
# 配置SFF 2。
[SFF2] segment-routing ipv6
[SFF2-segment-routing-ipv6] encapsulation source-address 33::33
[SFF2-segment-routing-ipv6] locator c ipv6-prefix 3000::1 64 static 32
[SFF2-segment-routing-ipv6-locator-c] opcode 1 end
[SFF2-segment-routing-ipv6-locator-c] quit
[SFF2-segment-routing-ipv6] quit
[SFF2] isis 1
[SFF2-isis-1] address-family ipv6 unicast
[SFF2-isis-1-ipv6] segment-routing ipv6 locator c
[SFF2-isis-1-ipv6] quit
[SFF2-isis-1] quit
# 配置SFF 3。
[SFF3] segment-routing ipv6
[SFF3-segment-routing-ipv6] encapsulation source-address 44::44
[SFF3-segment-routing-ipv6] locator d ipv6-prefix 4000::1 64 static 32
[SFF3-segment-routing-ipv6-locator-d] opcode 1 end
[SFF3-segment-routing-ipv6-locator-d] quit
[SFF3-segment-routing-ipv6] quit
[SFF3] isis 1
[SFF3-isis-1] address-family ipv6 unicast
[SFF3-isis-1-ipv6] segment-routing ipv6 locator d
[SFF3-isis-1-ipv6] quit
[SFF3-isis-1] quit
# 配置Tail。
[Tail] segment-routing ipv6
[Tail-segment-routing-ipv6] encapsulation source-address 55::55
[Tail-segment-routing-ipv6] locator e ipv6-prefix 5000::1 64 static 32
[Tail-segment-routing-ipv6-locator-e] opcode 1 end
[Tail-segment-routing-ipv6-locator-e] opcode 2 end-dt4 vpn-instance vpn1
[Tail-segment-routing-ipv6-locator-e] quit
[Tail-segment-routing-ipv6] quit
[Tail] isis 1
[Tail-isis-1] address-family ipv6 unicast
[Tail-isis-1-ipv6] segment-routing ipv6 locator e
[Tail-isis-1-ipv6] quit
[Tail-isis-1] quit
配置完成后,在SC设备上执行display ipv6 routing-table命令,可以看到已经将End.DT4 SID引入路由表中,并生成SRv6路由。
以SC为例:
[SC] display ipv6 routing-table protocol srv6
Summary count : 8
SRv6 Routing table status : <Active>
Summary count : 8
Destination: 1000::2/128 Protocol : SRv6
NextHop : ::1 Preference: 4
Interface : InLoop0 Cost : 0
SRv6 Routing table status : <Inactive>
Summary count : 0
(6) 在SC和Tail设备上配置为私网路由添加End.DT4 SID,对等体之间交换End.DT4 SID,同时允许将私网路由迭代到End.DT4 SID的路由条目上
# 配置SC。
[SC] bgp 100
[SC-bgp-default] address-family vpnv4
[SC-bgp-default-vpnv4] peer 5::5 prefix-sid
[SC-bgp-default-vpnv4] quit
[SC-bgp-default] ip vpn-instance vpn1
[SC-bgp-default-vpn1] address-family ipv4 unicast
[SC-bgp-default-ipv4-vpn1] segment-routing ipv6 locator a
[SC-bgp-default-ipv4-vpn1] segment-routing ipv6 traffic-engineering best-effort
[SC-bgp-default-ipv4-vpn1] quit
[SC-bgp-default-vpn1] quit
[SC-bgp-default] quit
# 配置Tail。
[Tail] bgp 100
[Tail-bgp-default] address-family vpnv4
[Tail-bgp-default-vpnv4] peer 1::1 prefix-sid
[Tail-bgp-default-vpnv4] quit
[Tail-bgp-default] ip vpn-instance vpn1
[Tail-bgp-default-vpn1] address-family ipv4 unicast
[Tail-bgp-default-ipv4-vpn1] segment-routing ipv6 locator e
[Tail-bgp-default-ipv4-vpn1] segment-routing ipv6 traffic-engineering best-effort
[Tail-bgp-default-ipv4-vpn1] quit
[Tail-bgp-default-vpn1] quit
[Tail-bgp-default] quit
配置完成后,在SC设备上执行display bgp routing-table vpnv4命令查看对端Tail发送的路由详细信息,可以看到对端Tail发送的路由携带SID属性数据。此时SC和Tail设备之间可以互相发布携带SRv6 SID的VPNv4路由,SC和Tail设备之间的SRv6 BE隧道正常建立。
以SC为例:
[SC] display bgp routing-table vpnv4 7.7.7.7
BGP local router ID: 1.1.1.1
Local AS number: 100
Route distinguisher: 100:1(vpn1)
Total number of routes: 1
Paths: 1 available, 1 best
BGP routing table information of 7.7.7.7/32:
From : 5::5 (5.5.5.5)
Rely nexthop : FE80::2A96:34FF:FE9D:216
Original nexthop: 5::5
Out interface : GigabitEthernet2/0/2
Route age : 00h14m23s
OutLabel : 3
Ext-Community : <RT: 111:1>
RxPathID : 0x0
TxPathID : 0x0
PrefixSID : End.DT4 SID <5000::2>
AS-path : 65420
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : N/A
(7) 在SC和Tail设备上配置SRv6 TE Policy隧道,流量从SC向Tail转发时,需经过SFF 1上的应用服务节点SF处理,流量从Tail向SC回程时,不通过SF处理
# 配置SC。
[SC] segment-routing ipv6
[SC-segment-routing-ipv6] traffic-engineering
[SC-srv6-te] srv6-policy locator a
[SC-srv6-te] segment-list s1
[SC-srv6-te-sl-s1] index 10 ipv6 2001::1
[SC-srv6-te-sl-s1] index 20 ipv6 5000::1
[SC-srv6-te-sl-s1] quit
[SC-srv6-te] policy p1
[SC-srv6-te-policy-p1] color 10 end-point ipv6 5::5
[SC-srv6-te-policy-p1] candidate-paths
[SC-srv6-te-policy-p1-path] preference 10
[SC-srv6-te-policy-p1-path-pref-10] explicit segment-list s1
[SC-srv6-te-policy-p1-path-pref-10] quit
[SC-srv6-te-policy-p1-path] quit
[SC-srv6-te-policy-p1] quit
[SC-srv6-te] quit
[SC-segment-routing-ipv6] quit
# 配置Tail。
[Tail] segment-routing ipv6
[Tail-segment-routing-ipv6] traffic-engineering
[Tail-srv6-te] srv6-policy locator e
[Tail-srv6-te] segment-list s2
[Tail-srv6-te-sl-s2] index 10 ipv6 3000::1
[Tail-srv6-te-sl-s2] index 20 ipv6 1000::1
[Tail-srv6-te-sl-s2] quit
[Tail-srv6-te] policy p1
[Tail-srv6-te-policy-p1] color 10 end-point ipv6 1::1
[Tail-srv6-te-policy-p1] candidate-paths
[Tail-srv6-te-policy-p1-path] preference 10
[Tail-srv6-te-policy-p1-path-pref-10] explicit segment-list s2
[Tail-srv6-te-policy-p1-path-pref-10] quit
[Tail-srv6-te-policy-p1-path] quit
[Tail-srv6-te-policy-p1] quit
[Tail-srv6-te] quit
[Tail-segment-routing-ipv6] quit
配置完成后,SRv6 TE Policy隧道创建成功,在SC和Tail设备上执行display segment-routing ipv6 te policy命令查看隧道详细信息。
以SC为例:
[SC] display segment-routing ipv6 te policy
Name/ID: p1/0
Color: 10
Endpoint: 5::5
Name from BGP:
BSID:
Mode: Dynamic Type: Type_2 Request state: Succeeded
Current BSID: 1000::1:0:5 Explicit BSID: - Dynamic BSID: 1000::1:0:5
Reference counts: 4
Flags: A/BS/NC
Status: Up
Up time: 2020-10-30 16:08:03
Down time: 2020-10-30 16:03:48
Hot backup: Not configured
Statistics: Not configured
SBFD: Not configured
BFD Echo: Not configured
Forwarding index: 2150629377
Candidate paths state: Configured
Candidate paths statistics:
CLI paths: 1 BGP paths: 0 PCEP paths: 0
Candidate paths:
Preference : 10
CPathName:
Instance ID: 0 ASN: 0 Node address: 0.0.0.0
Peer address: ::
Optimal: Y Flags: V/A
Explicit SID list:
ID: 1 Name: s1
Weight: 1 Forwarding index: 2149580801
State: Up State(SBFD): -
(8) 在SC和Tail设备上配置路由策略,通过Color值匹配将流量引入SRv6 TE Policy
# 配置SC。
[SC] route-policy p1 permit node 10
[SC-route-policy-p1-10] apply extcommunity color 00:10 additive
[SC-route-policy-p1-10] quit
[SC] bgp 100
[SC-bgp-default] address-family vpnv4
[SC-bgp-default-vpnv4] peer 5::5 route-policy p1 import
[SC-bgp-default-vpnv4] quit
[SC-bgp-default]quit
# 配置Tail。
[Tail] route-policy p1 permit node 10
[Tail-route-policy-p1-10] apply extcommunity color 00:10 additive
[Tail-route-policy-p1-10] quit
[Tail] bgp 100
[Tail-bgp-default] address-family vpnv4
[Tail-bgp-default-vpnv4] peer 1::1 route-policy p1 import
[Tail-bgp-default-vpnv4] quit
[Tail-bgp-default] quit
配置完成后,在SC设备上执行display bgp routing-table vpnv4命令查看对端Tail发送的路由详细信息,可以看到对端Tail发送的路由携带了扩展团体属性Color并且迭代进入上一步创建的SRv6 TE Policy隧道。
以SC为例:
[SC] display bgp routing-table vpnv4 7.7.7.7
BGP local router ID: 1.1.1.1
Local AS number: 100
Route distinguisher: 100:1(vpn1)
Total number of routes: 1
Paths: 1 available, 1 best
BGP routing table information of 7.7.7.7/32:
From : 5::5 (5.5.5.5)
Rely nexthop : FE80::2A96:34FF:FE9D:216
Original nexthop: 5::5
Out interface : GigabitEthernet2/0/2
Route age : 00h52m23s
OutLabel : 3
Ext-Community : <RT: 111:1>, <CO-Flag:Color(00:10)>
RxPathID : 0x0
TxPathID : 0x0
PrefixSID : End.DT4 SID <5000::2>
AS-path : 65420
Origin : incomplete
Attribute value : MED 0, localpref 100, pref-val 0
State : valid, internal, best
IP precedence : N/A
QoS local ID : N/A
Traffic index : N/A
Tunnel policy : NULL
Rely tunnel IDs : 2150629377
(9) 在SFF 1、SFF 2、SFF 3上配置基本的SFC功能
# 配置SFF 1。
[SFF1] interface gigabitethernet 2/0/3
[SFF1-GigabitEthernet2/0/3] ip address 10.1.1.2 24
[SFF1-GigabitEthernet2/0/3] quit
[SFF1] segment-routing ipv6
[SFF1-segment-routing-ipv6] locator as1 ipv6-prefix 2001:: 64 static 32
[SFF1-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF1-segment-routing-ipv6-locator-as1-endas-1] inner-type ipv4
[SFF1-segment-routing-ipv6-locator-as1-endas-1] encapsulation ipv4 nexthop 10.1.1.1 out-interface gigabitethernet 2/0/3 in-interface gigabitethernet 2/0/3
[SFF1-segment-routing-ipv6-locator-as1-endas-1] cache source-address 1::1
[SFF1-segment-routing-ipv6-locator-as1-endas-1] cache list 2001::1 5000::1 5000::2
[SFF1-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF1-segment-routing-ipv6-locator-as1] quit
[SFF1-segment-routing-ipv6] quit
[SFF1] isis 1
[SFF1-isis-1] address-family ipv6 unicast
[SFF1-isis-1-ipv6] segment-routing ipv6 locator as1
[SFF1-isis-1-ipv6] quit
[SFF1-isis-1] quit
# 配置SFF 2作为SFF 1的双归备份接入SF 1。
[SFF2] interface gigabitethernet 2/0/3
[SFF2-GigabitEthernet2/0/3] ip address 10.1.1.3 24
[SFF2-GigabitEthernet2/0/3] quit
[SFF2] segment-routing ipv6
[SFF2-segment-routing-ipv6] locator as1 ipv6-prefix 2001:: 64 static 32
[SFF2-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF2-segment-routing-ipv6-locator-as1-endas-1] inner-type ipv4
[SFF2-segment-routing-ipv6-locator-as1-endas-1] encapsulation ipv4 nexthop 10.1.1.1 out-interface gigabitethernet 2/0/3 in-interface gigabitethernet 2/0/3
[SFF2-segment-routing-ipv6-locator-as1-endas-1] cache source-address 1::1
[SFF2-segment-routing-ipv6-locator-as1-endas-1] cache list 2001::1 5000::1 5000::2
[SFF2-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF2-segment-routing-ipv6-locator-as1] quit
[SFF2-segment-routing-ipv6] quit
[SFF2] isis 1
[SFF2-isis-1] address-family ipv6 unicast
[SFF2-isis-1-ipv6] segment-routing ipv6 locator as1
[SFF2-isis-1-ipv6] quit
[SFF2-isis-1] quit
# 配置SFF3 接入SF 2。
[SFF3] interface gigabitethernet 2/0/3
[SFF3-GigabitEthernet2/0/3] ip address 10.2.1.2 24
[SFF3-GigabitEthernet2/0/3] quit
[SFF3] segment-routing ipv6
[SFF3-segment-routing-ipv6] locator as2 ipv6-prefix 4001:: 64 static 32
[SFF3-segment-routing-ipv6-locator-as2] opcode 1 end-as
[SFF3-segment-routing-ipv6-locator-as2-endas-1] inner-type ipv4
[SFF3-segment-routing-ipv6-locator-as2-endas-1] encapsulation ipv4 nexthop 10.2.1.1 out-interface gigabitethernet 2/0/3 in-interface gigabitethernet 2/0/3
[SFF3-segment-routing-ipv6-locator-as2-endas-1] cache source-address 1::1
[SFF3-segment-routing-ipv6-locator-as2-endas-1] cache list 4001::1 5000::1 5000::2
[SFF3-segment-routing-ipv6-locator-as2-endas-1] quit
[SFF3-segment-routing-ipv6-locator-as2] quit
[SFF3-segment-routing-ipv6] quit
[SFF3] isis 1
[SFF3-isis-1] address-family ipv6 unicast
[SFF3-isis-1-ipv6] segment-routing ipv6 locator as2
[SFF3-isis-1-ipv6] quit
[SFF3-isis-1] quit
(10) 在SFF 1和SFF 2上配置SFC双归保护功能,并对SFF和SF连接的三层口配置echo方式的静态BFD检测,加速故障倒换
# 配置SFF 1。
[SFF1] segment-routing ipv6
[SFF1-segment-routing-ipv6] proxy peer-sid 3000::1
[SFF1-segment-routing-ipv6] locator as1
[SFF1-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF1-segment-routing-ipv6-locator-as1-endas-1] backup-opcode 2
[SFF1-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF1-segment-routing-ipv6-locator-as1] quit
[SFF1-segment-routing-ipv6] quit
[SFF1] interface loopback 1
[SFF1-LoopBack1] ip address 2.2.2.2 32
[SFF1-LoopBack1] quit
[SFF1] bfd echo-source-ip 2.2.2.2
[SFF1] bfd static sf peer-ip 10.1.1.1 interface gigabitethernet 2/0/3 destination-ip 10.1.1.2 one-arm-echo
[SFF1-bfd-static-session-sf] discriminator local 100
[SFF1-bfd-static-session-sf] quit
# 配置SFF 2。
[SFF2] segment-routing ipv6
[SFF2-segment-routing-ipv6] proxy peer-sid 2000::1
[SFF2-segment-routing-ipv6] locator as1
[SFF2-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF2-segment-routing-ipv6-locator-as1-endas-1] backup-opcode 2
[SFF2-segment-routing-ipv6] quit
[SFF2] interface loopback 1
[SFF2-LoopBack1] ip address 3.3.3.3 32
[SFF2-LoopBack1] quit
[SFF2] bfd echo-source-ip 3.3.3.3
[SFF2] bfd static sf peer-ip 10.1.1.1 interface gigabitethernet 2/0/3 destination-ip 10.1.1.3 one-arm-echo
[SFF2-bfd-static-session-sf] discriminator local 200
[SFF2-bfd-static-session-sf] quit
(11) 在SFF 1和SFF 2上配置SFC Bypass保护功能,SF 2作为SF 1的Bypass保护节点
# 配置SFF 1。
[SFF1] segment-routing ipv6
[SFF1-segment-routing-ipv6] locator as1
[SFF1-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF1-segment-routing-ipv6-locator-as1-endas-1] bypass sid 4001::1
[SFF1-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF1-segment-routing-ipv6-locator-as1] quit
# 配置SFF 2。
[SFF2] segment-routing ipv6
[SFF2-segment-routing-ipv6] locator as1
[SFF2-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF2-segment-routing-ipv6-locator-as1-endas-1] bypass sid 4001::1
[SFF2-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF2-segment-routing-ipv6-locator-as1] quit
[SFF2-segment-routing-ipv6] quit
(1) 在SFF 1设备上执行命令display segment-routing ipv6 sfc forwarding,查看转发表项信息。存在主用SFC转发表项、双归备份SFC转发表项和Bypass保护SFC转发表项信息。
[SFF1] display segment-routing ipv6 sfc forwarding
Total forwarding entries: 3
NID : 2153775105
Locator name/Opcode : as1/1
Type : Cache list
Path Count : 1
Interface : GE2/0/4
NextHop : FE80::424:B0FF:FEF7:AD02
NID : 2153775106
Locator name/Opcode : as1/1
Type : Backup opcode
Path Count : 1
Interface : GE2/0/2
NextHop : ::1
NID : 2153775107
Locator name/Opcode : as2/1
Type : Bypass
Path Count : 1
Interface : GE2/0/4
NextHop : FE80::424:B0FF:FEF7:AD02
(2) 在SFF1设备上执行display segment-routing ipv6 forwarding命令,查看SFC 转发信息。
[SFF1] display segment-routing ipv6 forwarding
Total SRv6 forwarding entries: 3
Flags: T - Forwarded through a tunnel
N - Forwarded through the outgoing interface to the nexthop IP address
A - Active forwarding information
B - Backup forwarding information
ID FWD-Type Flags Forwarding info
--------------------------------------------------------------------------------
2153775105 SRv6SFC NA GE2/0/4
FE80::424:B0FF:FEF7:AD02
{2001::1, 5000::1, 5000::2}
2153775106 SRv6SFC N GE2/0/2
::1
{3000::1}
2153775107 SRv6SFC NA GE2/0/4
FE80::424:B0FF:FEF7:AD02
{4001::1}
如图1-11所示,CE 1和CE 2属于同一个VPN。SRv6 SFC采用静态代理模式,控制CE 1业务流量经过SF 1处理后转发到CE 2上。为了保证业务可靠性,SF 1双归到SFF 1和SFF 2进行保护,同时SF 2对SF 1进行Bypass保护。SF通过三层以太网子接口与三台SFF设备相连,报文在SFF和SF之间采用二层封装转发。
· 在SC和Tail上配置VPN实例,业务流量通过SRv6 TE Policy转发,转发路径为SC->SFF 1->SF 1->Tail。
· 在SFF 1和SFF 2上配置SRv6 SFC服务链静态代理,SFF指定服务节点SF 1双归到SFF 1和SFF 2。
· 在SFF 3上配置SRv6 SFC服务链静态代理,指定服务节点SF 2为SF 1提供Bypass保护。
图1-11 SRv6 SFC服务链静态代理二层封装转发配置组网图
设备 |
接口 |
IP地址 |
设备 |
接口 |
IP地址 |
SC |
Loop1 |
1::1/128 |
SFF 1 |
Loop1 |
2::2/128 |
GE2/0/1 |
16.0.0.2/30 |
GE2/0/1 |
100::2/96 |
||
GE2/0/2 |
100::1/96 |
GE2/0/2 |
300::1/96 |
||
|
GE2/0/3 |
200::1/96 |
|
GE2/0/4 |
400::1/96 |
SFF 2 |
Loop1 |
3::3/128 |
SFF 3 |
Loop1 |
4::4/128 |
|
GE2/0/1 |
300::2/96 |
|
GE2/0/1 |
500::2/96 |
|
GE2/0/2 |
500::1/96 |
|
GE2/0/2 |
600::1/96 |
|
GE2/0/4 |
200::2/96 |
|
GE2/0/4 |
400::2/96 |
Tail |
Loop1 |
5::5/128 |
CE 1 |
Loop1 |
6.6.6.6/32 |
|
GE2/0/1 |
57.0.0.1/30 |
|
GE2/0/1 |
16.0.0.1/30 |
|
GE2/0/2 |
600::2/96 |
CE 2 |
Loop1 |
7.7.7.7/32 |
|
|
|
|
GE2/0/1 |
57.0.0.2/30 |
· 规划SRv6 SID信息:
¡ SC:Locator a网段为1000::/64,End SID为1000::1,End.DT4 SID为1000::2
¡ SFF 1:Locator b网段为2000::/64,End SID为2000::1;Locator as1网段为2001::/64,End.AS SID为2001::1
¡ SFF 2:Locator c网段为3000::/64,End SID为3000::1;Locator as1网段为2001::/64,End.AS SID为2001::1
¡ SFF 3:Locator d网段为4000::/64,End SID为4000::1;Locator as2网段4001::/64,End.AS SID为4001::1
¡ Tail:Locator e网段为5000::/64,End SID为5000::1,End.DT4 SID为5000::2
· 规划流量转发隧道和隧道显式路径:在SC上,流量通过SRv6 TE Policy的显示路径经过SFF 1转发至SF 1上处理后,最终转发到Tail设备,流量从Tail设备回程时通过SRv6 TE Policy指定的显示路径经过SFF 2节点回到SC,无需SF节点处理。
双归备份和Bypass保护场景SRv6 SFC采用二层转发与三层转发的主要区别在SF和SFF之间报文转发配置,L3VPN和SRv6 TE Policy部分配置请参见“1.19.3 SRv6 SFC服务链静态代理三层封装转发”,此处仅展示差异部分。
(1) 在SFF 1、SFF 2、SFF 3上配置基本的SFC功能
# 配置SFF 1。
<SFF1> system-view
[SFF1] interface gigabitethernet 2/0/3.1
[SFF1-GigabitEthernet2/0/3.1] vlan-type dot1q vid 2
[SFF1-GigabitEthernet2/0/3.1] quit
[SFF1-segment-routing-ipv6] locator as1 ipv6-prefix 2001:: 64 static 32
[SFF1-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF1-segment-routing-ipv6-locator-as1-endas-1] inner-type ipv4
[SFF1-segment-routing-ipv6-locator-as1-endas-1] encapsulation eth out-interface gigabitethernet 2/0/3.1 out-s-vlan 2 in-interface gigabitethernet 2/0/3.1 in-s-vlan 2
[SFF1-segment-routing-ipv6-locator-as1-endas-1] cache source-address 1::1
[SFF1-segment-routing-ipv6-locator-as1-endas-1] cache list 2001::1 5000::1 5000::2
[SFF1-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF1-segment-routing-ipv6-locator-as1] quit
[SFF1-segment-routing-ipv6] quit
[SFF1] isis 1
[SFF1-isis-1] address-family ipv6 unicast
[SFF1-isis-1-ipv6] segment-routing ipv6 locator as1
[SFF1-isis-1-ipv6] quit
[SFF1-isis-1] quit
# 配置SFF 2作为SFF 1的双归备份接入SF 1。
<SFF2> system-view
[SFF2] interface gigabitethernet 2/0/3.1
[SFF2-GigabitEthernet2/0/3.1] vlan-type dot1q vid 2
[SFF2-GigabitEthernet2/0/3.1] quit
[SFF2] segment-routing ipv6
[SFF2-segment-routing-ipv6] locator as1 ipv6-prefix 2001:: 64 static 32
[SFF2-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF2-segment-routing-ipv6-locator-as1-endas-1] inner-type ipv4
[SFF2-segment-routing-ipv6-locator-as1-endas-1] encapsulation eth out-interface gigabitethernet 2/0/3.1 out-s-vlan 2 in-interface gigabitethernet 2/0/3.1 in-s-vlan 2
[SFF2-segment-routing-ipv6-locator-as1-endas-1] cache source-address 1::1
[SFF2-segment-routing-ipv6-locator-as1-endas-1] cache list 2001::1 5000::1 5000::2
[SFF2-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF2-segment-routing-ipv6-locator-as1] quit
[SFF2-segment-routing-ipv6] quit
[SFF2] isis 1
[SFF2-isis-1] address-family ipv6 unicast
[SFF2-isis-1-ipv6] segment-routing ipv6 locator as1
[SFF2-isis-1-ipv6] quit
[SFF2-isis-1] quit
# 配置SFF3 接入SF 2。
<SFF3> system-view
[SFF3] interface gigabitethernet 2/0/3.1
[SFF3-GigabitEthernet2/0/3.1] vlan-type dot1q vid 2
[SFF3-GigabitEthernet2/0/3.1] quit
[SFF3] segment-routing ipv6
[SFF3-segment-routing-ipv6] locator as2 ipv6-prefix 4001:: 64 static 32
[SFF3-segment-routing-ipv6-locator-as2] opcode 1 end-as
[SFF3-segment-routing-ipv6-locator-as2-endas-1] inner-type ipv4
[SFF3-segment-routing-ipv6-locator-as2-endas-1] encapsulation eth out-interface gigabitethernet 2/0/3.1 out-s-vlan 2 in-interface gigabitethernet 2/0/3.1 in-s-vlan 2
[SFF3-segment-routing-ipv6-locator-as2-endas-1] cache source-address 1::1
[SFF3-segment-routing-ipv6-locator-as2-endas-1] cache list 4001::1 5000::1 5000::2
[SFF3-segment-routing-ipv6-locator-as2-endas-1] quit
[SFF3-segment-routing-ipv6-locator-as2] quit
[SFF3-segment-routing-ipv6] quit
[SFF3] isis 1
[SFF3-isis-1] address-family ipv6 unicast
[SFF3-isis-1-ipv6] segment-routing ipv6 locator as2
[SFF3-isis-1-ipv6] quit
[SFF3-isis-1] quit
(2) 在SFF 1和SFF 2上配置SFC双归保护功能,二层转发方式暂不支持静态BFD检测
# 配置SFF 1。
[SFF1] segment-routing ipv6
[SFF1-segment-routing-ipv6] proxy peer-sid 3000::1
[SFF1-segment-routing-ipv6] locator as1
[SFF1-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF1-segment-routing-ipv6-locator-as1-endas-1] backup-opcode 2
[SFF1-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF1-segment-routing-ipv6-locator-as1] quit
[SFF1-segment-routing-ipv6] quit
# 配置SFF 2。
[SFF2] segment-routing ipv6
[SFF2-segment-routing-ipv6] proxy peer-sid 2000::1
[SFF2-segment-routing-ipv6] locator as1
[SFF2-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF2-segment-routing-ipv6-locator-as1-endas-1] backup-opcode 2
[SFF2-segment-routing-ipv6] quit
(3) 在SFF 1和SFF 2上配置SFC Bypass保护功能,SF 2作为SF 1的Bypass保护节点
# 配置SFF 1。
[SFF1] segment-routing ipv6
[SFF1-segment-routing-ipv6] locator as1
[SFF1-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF1-segment-routing-ipv6-locator-as1-endas-1] bypass sid 4001::1
[SFF1-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF1-segment-routing-ipv6-locator-as2] quit
# 配置SFF 2。
[SFF2] segment-routing ipv6
[SFF2-segment-routing-ipv6] locator as1
[SFF2-segment-routing-ipv6-locator-as1] opcode 1 end-as
[SFF2-segment-routing-ipv6-locator-as1-endas-1] bypass sid 4001::1
[SFF2-segment-routing-ipv6-locator-as1-endas-1] quit
[SFF2-segment-routing-ipv6-locator-as1] quit
[SFF2-segment-routing-ipv6] quit
(1) 在SFF 1设备上执行命令display segment-routing ipv6 sfc forwarding,查看转发表项信息。存在主用SFC转发表项、双归备份SFC转发表项和Bypass保护SFC转发表项信息。
[SFF1] display segment-routing ipv6 sfc forwarding
Total forwarding entries: 3
NID : 2153775105
Locator name/Opcode : as1/1
Type : Cache list
Path Count : 1
Interface : GE2/0/4
NextHop : FE80::424:B0FF:FEF7:AD02
NID : 2153775106
Locator name/Opcode : as1/1
Type : Backup opcode
Path Count : 1
Interface : GE2/0/2
NextHop : ::1
NID : 2153775107
Locator name/Opcode : as2/1
Type : Bypass
Path Count : 1
Interface : GE2/0/4
NextHop : FE80::424:B0FF:FEF7:AD02
(2) 在SFF1设备上执行display segment-routing ipv6 forwarding命令,查看SFC 转发信息。
[SFF1] display segment-routing ipv6 forwarding
Total SRv6 forwarding entries: 3
Flags: T - Forwarded through a tunnel
N - Forwarded through the outgoing interface to the nexthop IP address
A - Active forwarding information
B - Backup forwarding information
ID FWD-Type Flags Forwarding info
--------------------------------------------------------------------------------
2153775105 SRv6SFC NA GE2/0/4
FE80::424:B0FF:FEF7:AD02
{2001::1, 5000::1, 5000::2}
2153775106 SRv6SFC N GE2/0/2
::1
{3000::1}
2153775107 SRv6SFC NA GE2/0/4
FE80::424:B0FF:FEF7:AD02
{4001::1}
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!