• 产品与解决方案
  • 行业解决方案
  • 服务
  • 支持
  • 合作伙伴
  • 新华三人才研学中心
  • 关于我们

SRv6技术白皮书-6W104

手册下载

SRv6技术白皮书-6W104-整本手册.pdf  (538.49 KB)

  • 发布时间:2024/2/1 22:36:44
  • 浏览量:
  • 下载量:

SRv6技术白皮书

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Copyright © 2022 新华三技术有限公司 版权所有,保留一切权利。

非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。

除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。

本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。



概述

1.1  产生背景

云计算的发展对广域网提出了新的挑战,要求传统广域网进行变革。SD-WAN作为重构广域网的核心技术,通过自动部署、集中控制、智能调度及可视化等手段,加速网络交付,优化应用体验,提高带宽利用率,简化网络运维,满足了云计算对广域网的需求。

智能调度是新一代广域网的一个关键能力,对应用质量的保障、带宽资源的优化非常重要。现有的MPLSRSVP-TE等流量工程技术可以满足应用对带宽的差异化保障需求,但存在协议种类多、部署复杂、管理困难、可扩展性差等问题,无法满足新一代广域网所要求的动态部署、灵活调度、快速、可扩展等方面的要求。因此,出现了一种新的协议Segment Routing

SRSegment Routing,分段路由)采用源路径选择机制,预先在源节点封装好路径所要经过节点分配的SIDSegment Identifier,段标识),当报文经过SR节点时,该节点根据报文的SID对报文进行转发。除源节点外,其它节点无需维护路径状态。

SRv6Segment Routing IPv6IPv6段路由)是指基于IPv6转发平面实现SRSRv6通过在IPv6报文中插入一个路由扩展头SRHSegment Routing HeaderSRv6报文头),并在SRH中添加路径所要经过的所有段的SID,即SID List,来显式指定该报文的转发路径。

SRv6SD-WAN网络提供了一种灵活高效的控制手段,具有部署简单、容易扩展的特点,能够更好地实现流量调度和路径优化,保障关键业务质量、均衡流量分布、提高专线利用率和降低线路成本。

1.2  技术优势

SRv6技术具有如下优势:

·     简化维护

仅需要在源节点上控制和维护路径信息,网络中其他节点不需要维护路径信息。

·     智能控制

SRv6基于SDN架构设计,跨越了应用和网络之间的鸿沟,能够更好地实现应用驱动网络。SRv6中转发路径、转发行为、业务类型均可控。

·     部署简单

SRv6基于IGPBGP扩展实现,无须使用MPLS标签,不需要部署标签分发协议,配置简单。

SRv6网络中,不需要大规模升级网络设备,就可以部署新业务。在DCData Center,数据中心)和WAN(广域网)中,只需网络边界设备及特定网络节点支持SRv6,其他设备支持IPv6即可。

·     适应5G业务需求

随着5G业务的发展,IPv4地址已经无法满足运营商的网络需求。可通过在运营商网络中部署SRv6,使所有设备通过IPv6地址转发流量,实现IPv6化网络,以满足5G业务需求。

·     易于实现VPN等新业务

SRv6定义了多种类型的SID,不同SID具有不同的作用,指示不同的转发动作。通过不同的SID操作,可以实现VPN等业务处理。

日后,用户还可以根据实际需要,定义新的SID类型,具有很好的扩展性。

SRv6基本原理

SRv6是指在IPv6网络中使用Segment Routing,将IPv6地址作为SIDSRv6 节点根据SID对报文进行转发。SRv6SID列表封装在IPv6报文的SRHSegment Routing HeaderSR报文头)中,以控制报文转发路径。

2.1  SRv6报文和SRH

SRv6的报文封装格式为:在原始数据报文前面添加新的IPv6基本头和SRHSRH是路由类型取值为4的一种路由扩展头。

说明

在某些场景下,源节点不会添加新的IPv6头,而是在原始IPv6报文的IPv6头中插入SRH扩展头。插入的SRH扩展头的格式与1相同。本文不再详细描述这种报文封装格式。

 

图1 SRv6的报文封装示意图

 

1所示,IPv6基本头中Next Header取值为43,表明下一个报文头为路由扩展头。路由扩展头的路由类型字段取值为4,表明该路由扩展头为SRHSRH主要包含以下几个部分:

·     Next Header8bits,用来标识下一个报文头的类型。

·     Hdr Ext Len8bits,表示以8个字节为单位的SRH头的长度,不包括第一个8个字节。

·     Routing Type8bits,路由类型字段,取值为4,表示携带的是SRH

·     Segments Left8bits,标识剩余未处理的SID的个数,初始取值为n-1n表示路由扩展头中SID的数目),每经过一个节点减1

·     Last Entry8bitsSRH头中报文实际转发路径的第一个SID的编号。

·     Flags8bits,标志位信息。

·     Tag16bits,用来标记具有相同特性的一组报文。

·     Segment ListSID列表。按照报文转发路径上节点从远到近的顺序进行排列,即Segment List [0]表示路径的最后一个SIDSegment List [1]表示路径的倒数第二个SID,以此类推。

2.2  SRH处理过程

为了便于理解SRv6的转发原理,采用2所示方式简化SRv6报文。其中:

·     IPv6 Destination AddressIPv6报文的目的地址,简称IPv6 DA。在普通IPv6报文里,IPv6 DA是固定不变的。在SRv6中,IPv6 DA仅标识当前报文的下一个节点,是不断变换的。

·     SRH(SL=n-1)<Segment List [0]=a, Segment List [1]=b, …, Segment List [n-1]=x>SRv6报文的SID列表。通过SLSegment List字段共同决定IPv6 DA的取值。

图2 SRv6报文简化示意图

 

3所示,在SRv6中,每经过一个SRv6节点,SL字段减1IPv6 DA信息变换一次:

·     如果SL=n-1,则IPv6 DASID [n-1]=x

·     如果SL=1,则IPv6 DASID [1]=b

·     如果SL=0,则IPv6 DASID [0]=a

图3 SRH处理过程示意图

2.3  SRv6 SID

SRv6中,SID用来定义某种网络功能、代表某种网络指令。SRv6 SID采用IPv6地址形式,但不与任何设备上的接口地址对应。

2.3.1  SID组成及分类

4所示,SRv6 SIDLocatorFunctionArgumentsMBZ四部分组成:

·     Locator:标识SID所属的网段。LocatorSR域内唯一。

·     Function:标识与SID绑定的本地操作指令,SR域内指定节点收到流量后,根据SRv6 SIDFunction字段执行相关操作。

·     Arguments定义报文的流和服务等信息。

·     MBZMust be zero):当LocatorFunctionArguments的位数之和小于128bits时,其他位使用0补齐。

图4 SRv6 SID

 

根据SRv6 SID功能和应用场景的不同,SRv6 SID包括但不限于:

·     End SID:用于标识网络中的某个目的地址前缀。End SID对应的转发动作是将SRH中的SL的值减1,并根据SLSRH取出下一个SID更新到IPv6报文头的目的地址,再根据IPv6目的地址查表转发。

·     End.X SID:用于标识网络中的某条链路。End.X SID对应的转发动作是根据该SID绑定的三层接口转发给特定下一跳。

·     End.DT4 SID:用于标识网络中的某个IPv4 VPN实例。End.DT4 SID对应的转发动作是解封装报文,并且查找IPv4 VPN实例路由表转发。End.DT4 SID用于IPv4 L3VPN over SRv6EVPN IPv4 L3VPN over SRv6和公网IPv4 over SRv6场景。

·     End.DT6 SID:用于标识网络中的某个IPv6 VPN实例。End.DT6 SID对应的转发动作是解封装报文,并且查找IPv6 VPN实例路由表转发。End.DT6 SID用于IPv6 L3VPN over SRv6EVPN IPv6 L3VPN over SRv6和公网IPv6 over SRv6场景。

·     End.DT46 SID:用于标识网络中的某个IPv4 VPN实例或IPv6 VPN实例。End.DT46 SID对应的转发动作是解封装报文,并且查找IPv4 VPN实例或IPv6 VPN实例路由表转发。End.DT46 SID用于IPv4 L3VPN over SRv6EVPN IPv4 L3VPN over SRv6、公网IPv4 over SRv6IPv6 L3VPN over SRv6EVPN IPv6 L3VPN over SRv6和公网IPv6 over SRv6场景。

·     End.DX4 SID:用于标识网络中的某个IPv4下一跳。End.DX4 SID对应的转发动作是解封装报文,并且将解封后的IPv4报文通过该SID绑定的三层接口转发给特定下一跳。End.DX4 SID用于IPv4 L3VPN over SRv6EVPN IPv4 L3VPN over SRv6和公网IPv4 over SRv6场景。

·     End.DX6 SID:用于标识网络中的某个IPv6下一跳。End.DX6 SID对应的转发动作是解封装报文,并且将解封后的IPv6报文通过该SID绑定的三层接口转发给特定下一跳。End.DX6 SID用于IPv6 L3VPN over SRv6EVPN IPv6 L3VPN over SRv6和公网IPv6 over SRv6场景。

·     End.DX2 SID:用于标识一个端点。End.DX2 SID对应的转发动作是解封装报文,并将解封装后的报文转发到SID对应的出接口。End.DX2 SID用于EVPN VPWS over SRv6EVPN VPLS over SRv6场景。

·     End.DX2L SID:用于标识报文来自Bypass SRv6 PW,携带该SID的报文不会再转发到该Bypass SRv6 PW,从而避免产生环路。End.DX2L SID对应的转发动作是解封装报文,并将解封装后的报文转发到SID对应的出接口。End.DX2L SID用于EVPN VPWS over SRv6多归属站点和EVPN VPLS over SRv6多归属站点场景。

·     End.DT2M SID:用于转发VSI实例中的泛洪流量。End.DT2M SID对应的转发动作是解封装报文,并将解封装后的报文在VSI内广播泛洪。End.DT2M SID用于EVPN VPLS over SRv6场景。

·     End.DT2U SID:用于转发VSI实例中的单播流量。End.DT2U SID对应的转发动作是解封装报文,根据解封装后报文的目的MAC地址查找VSI实例的MAC地址表,根据MAC表项将报文转发到对应的出接口。End.DT2U SID用于EVPN VPLS over SRv6场景。

·     End.DT2UL SID:用来标识报文来自Bypass SRv6 PW,携带该SID的报文不会再转发到该Bypass SRv6 PW,从而避免产生环路。End.DT2UL SID对应的转发动作是解封装报文,并根据解封装后报文的目的MAC地址查找VSI实例的MAC地址表,根据MAC表项将报文转发到对应的出接口。End.DX2L SID用于EVPN VPLS over SRv6多归属站点场景。

·     End.OP SIDOAM类型的SIDEnd.OP SID对应的转发动作是对下一个SRv6 SID进行检查。如果下一个SRv6 SID是本地SRv6 SID,则回复应答报文;否则丢弃该报文。End.OP SID用于SRv6 OAM场景。

·     End.M SID:用于保护指定的Locator,即保护指定Locator段内的SRv6 SID。如果远端设备发布的SRv6 SID在指定Locator段的范围内,则使用End.M SID对该SRv6 SID(称为远端SRv6 SID)进行保护。End.M SID对应的转发动作为解封装报文,获取内层报文信息。内层报文的目的IPv6地址作为远端SRv6 SID,执行远端SRv6 SID对应的转发动作。End.M SID用于SRv6 TE Policy尾节点保护场景。

·     End.T SID:用于Option B跨域VPN场景。

·     End.AS SID:用于SRv6 SFC服务链静态代理场景。有关End.AS SID的详细介绍,请参见SRv6 SFC技术白皮书。

·     End.AM SID:用于SRv6 SFC服务链伪代理场景。有关End.AM SID的详细介绍,请参见SRv6 SFC技术白皮书。

通过IGP协议通告SR节点的SRv6 SID后,其他SR节点可以根据收到的路由协议报文生成到达该SRv6 SID的路由转发表项。

2.3.2  SID附加行为

SID附加行为(Flavors)可以改变SRv6 SID的转发行为,以便适配多种业务需求。目前,支持的SRv6 SID附加行为包括:

·     PSPPenultimate Segment POP of the SRH):倒数第二Endpoint节点执行SRH移除操作。为了减轻SRv6网络尾节点的负担,可以在倒数第二Endpoint节点将SRH移除,尾节点不需要查看SRH信息,只需根据目的IPv6地址查找Local SID表进行处理。

·     USPUltimate Segment POP of the SRH):最后一Endpoint节点执行SRH移除操作。SRv6 VPN网络中,PE节点根据SID查找到对应的转发动作后,执行SRH移除操作,将报文转发给CE设备。

·     USDUltimate Segment Decapsulation):最后一Endpoint节点执行外层IPv6头移除操作。TI-LFA场景中,Repair List的最后一个Endpoint节点需要将外层IPv6头移除,将内层报文转发到目的节点。TI-LFA的详细介绍,请参见SRv6高可靠性技术白皮书。

·     COCContinue of Compression:标识SID之后是G-SID,用于SID压缩场景,以减少SRH大小。SID压缩的详细介绍,请参见“G-SRv6”。

2.3.3  Local SID

SRv6节点维护一个Local SID表,记录本节点生成的SRv6 SID,以及与SRv6 SID绑定的操作指令和转发信息,例如VPN实例、出接口和下一跳等。

SRv6节点接收到SRv6报文后,根据报文中的SID,查找Local SID表,并根据查找结果执行SID对应的转发动作。

2.4  SRv6节点

按照功能的不同,SRv6网络中的节点分为三种角色:

·     源节点:负责在IPv6报文的IPv6头中插入SRH扩展头,或者在报文外加上IPv6头并插入SRH扩展头。该节点将报文流引入SRHSegment List定义的SRv6路径。

¡     如果Segment List中只包含一个SID,并且不需要在SRH中携带信息或TLV,则只需要将IPv6头的目的地址设置为这个SID,不需要插入SRH

¡     如果Segment List中包含多个SID,则需要插入SRH

源节点可以是产生SRv6报文的主机,也可以是SRv6域的边缘设备。

·     中转节点:在报文的SRv6路径上,不参与SRv6处理,只执行普通的IPv6报文转发。中转节点可以是支持SRv6的节点,也可以是不支持SRv6的节点。

·     Endpoint节点:对接收到的SRv6报文进行SRv6相关处理。接收到的SRv6报文的IPv6目的地址必须是Endpoint节点上配置的SRv6 SID,该节点需要按SRv6 SID的指令进行处理,并更新SRH

同一个节点可以是不同的角色,比如节点在某个SRv6路径里可能是源节点,在其他SRv6路径里可能就是中转节点或者Endpoint节点。

2.5  SRv6报文详细转发过程

图5 SRv6报文详细转发示意图

 

5所示,源节点Device A接收到符合指定特征的报文后,需要通过SRv6路径转发该报文。SRv6路径中Device A为源节点,Device CDevice EEndpoint节点,Device BDevice D为中转节点。报文通过SRv6路径转发的过程为:

(1)     源节点Device A收到IPv6报文,执行如下操作:

¡     封装SRH头。由于从Device ADevice E路径必须经过CE个节点,因此,SRHSL2-1,即SL=1,封装的SID列表信息为Segment List [0]=ESegment List [1]=C

¡     封装IPv6基本头。IPv6基本头中的源地址为Device A上的一个地址,目的地址为SL指示的地址,即SL=1对应的Segment List [1](本例中为Device C的地址)。

¡     根据封装的IPv6头中的目的地址查找路由表,将封装后的报文转发给Device B

(2)     Device B收到报文后,据IPv6头中的目的地址查找路由表,将报文转发给Device C

(3)     Device C收到报文,执行如下操作:

¡     SRH头中的SL值,如果SL>0SL值减1,目的地址更新为SL指示的地址,即SL=0对应的Segment List [0](本例中为Device E的地址)。

¡     根据IPv6头中的目的地址查找路由表,将报文转发给Device D

(4)     Device D收到报文后,据IPv6头中的目的地址查找路由表,将报文转发给Device E

(5)     尾节点Device E收到报文,检查SRH头中的SL值,发现SL=0。对报文进行解封装,删除封装IPv6基本头和SRH,根据原始报文的目的地址进行报文转发。

2.6  IS-IS SRv6扩展

2.6.1  IS-IS SRv6协议原理

1所示,为了支持SRv6IS-IS协议需要发布两类SRv6信息:

·     Locator信息:用于网络中的其他节点定位到发布SID信息的节点。

·     SID信息:用于详细描述SID的功能,比如SID绑定的Function

表1 IS-IS针对SRv6的扩展描述表

TLV名称

作用

携带位置

SRv6 Capabilities sub-TLV

通告SRv6能力

IS-IS Router CAPABILITY TLV

Node MSD sub-TLV

通告MSDMaximum SID Depth),即SID列表中能够包括的SID的最大数目

IS-IS Router CAPABILITY TLV

SRv6 Locator TLV

通告SRv6Locator以及该Locator相关的End SID

IS-IS报文,SRv6引入的一个顶级TLV

SRv6 End SID sub-TLV

通告End SID

SRv6 Locator TLV

SRv6 End.X SID sub-TLV

P2P网络中通告End.X SID

IS-IS NBR TLVIS-IS2223141222223等类型TLV

SRv6 LAN End.X SID sub-TLV

LAN网络中通告End.X SID

IS-IS NBR TLVIS-IS2223141222223等类型TLV

SRv6 SID Structure Sub-Sub-TLV

发布SRv6 SID格式

·     SRv6 End SID sub-TLV

·     SRv6 End.X SID sub-TLV

·     SRv6 LAN End.X SID sub-TLV

 

2.6.2  SRv6 Capabilities sub-TLV

SRv6 Capabilities sub-TLV用于通告节点支持SRv6功能,即本节点能够处理SRH

SRv6 Capabilities sub-TLV的报文格式如6所示。

图6 SRv6 Capabilities sub-TLV

 

SRv6 Capabilities sub-TLV包含字段如2所示。

表2 SRv6 Capabilities sub-TLV的字段描述表

字段名称

长度

含义

Type

8比特

类型,取值为25

Length

8比特

长度

Flags

16比特

标志位

·     C:表示支持SRv6 SID压缩功能

·     O:用于OAM

optional sub-sub-TLVs

可变长度

可选的Sub-sub-TLV

 

2.6.3  Node MSD sub-TLV

Node MSD sub-TLV用于通告设备MSD,即SID列表中能够包括的SID的最大数目。

Node MSD sub-TLV的报文格式如7所示。

图7 Node MSD sub-TLV

 

Node MSD sub-TLV包含字段如3所示。

表3 Node MSD sub-TLV的字段描述表

字段名称

长度

含义

Type

8比特

类型,取值为23

Length

8比特

长度

MSD-Type

8比特

MSD类型:

·     41SRH Max SLSRHSegment Left字段的最大值

·     42SRH Max End Pop,支持PSPUSPEndpoint节点能够弹出的最大SID个数

·     45SRH Max End DEndpoint节点能够解封装的SID的最大个数

MSD Value

8比特

MSD取值

 

2.6.4  SRv6 Locator TLV

SRv6 Locator TLV用于发布SRv6 Locator以及该Locator相关的End SID

SRv6Locator必须通过SRv6 Locator TLV发布出去,其他具备IS-IS SRv6能力的设备接收到TLV以后,将Locator对应的网段路由添加到本机路由表中,没有SRv6能力的设备则不添加Locator对应网段的路由。

Locator对应的网段路由也可以通过Prefix Reachability TLV236/237)发布出去,以便不支持SRv6的设备能够添加路由表项,进而支持与SRv6节点共同组网。如果设备同时收到Prefix Reachability TLVSRv6 Locator TLV,则Prefix Reachability TLV优先使用。

SRv6 Locator TLV的报文格式如8所示。

图8 SRv6 Locator TLV

 

SRv6 Locator TLV包含字段如4所示。

表4 SRv6 Locator TLV的字段描述表

字段名称

长度

含义

Type

8比特

类型,取值为27

Length

8比特

长度

MTID

12比特

多拓扑标识符

Metric

8比特

开销

Flags

8比特

标志位

当前只定义了D标志位。当SIDLevel-2渗透到Level-1,必须置位。D标志置位后,SID不能从Level-1渗透到Level-2,以防止路由循环

Algorithm

8比特

路由算法

Loc Size

8比特

Locator长度

Locator (variable)

可变长度

Locator段的网络前缀

Sub-tlv-len

8比特

Sub-TLV长度

Sub-TLVs (variable)

可变长度

包含的Sub-TLV,例如SRv6 End SID sub-TLV

 

2.6.5  SRv6 End SID sub-TLV

SRv6 End SID sub-TLV用于发布End SID

SRv6 End SID sub-TLV的报文格式如9所示。

图9 SRv6 End SID sub-TLV

 

SRv6 End SID sub-TLV包含字段如5所示。

表5 SRv6 End SID sub-TLV的字段描述表

字段名称

长度

含义

Type

8比特

类型,取值为5

Length

8比特

长度

Flags

8比特

标志位:

·     C表示发布G-SID

SRv6 Endpoint Function

16比特

SRv6 SID绑定的动作,具体参见“2.3.1  SID组成及分类

SID

16字节

发布的SRv6 SID

Sub-sub-tlv-len

8比特

Sub-sub-TLV长度

Sub-sub-TLVs (variable)

可变长度

包含的Sub-sub-TLV

 

2.6.6  SRv6 End.X SID sub-TLV

SRv6 End.X SID sub-TLV用于发布一个P2P邻接类型的End.X SID

SRv6 End.X SID sub-TLV的报文格式如10所示。

图10 SRv6 End.X SID sub-TLV

 

SRv6 End.X SID sub-TLV包含字段如6所示。

表6 SRv6 End.X SID sub-TLV的字段描述表

字段名称

长度

含义

Type

8比特

类型,取值为43

Length

8比特

长度

Flags

8比特

标志位:

·     BBackup):备份标志,用于TI-LFA场景

·     SSet):组标志。如果置位,表示End.X SID是一组邻接

·     PPersistent):永久分配标志。如果置位,表示End.X SID被永久分配

·     C表示发布G-SID

Algorithm

8比特

算法

Weight

8比特

权重,暂不支持

SRv6 Endpoint Function

16比特

SRv6 SID绑定的动作,具体参见“2.3.1  SID组成及分类

SID

16字节

发布的SRv6 SID

Sub-sub-tlv-len

8比特

Sub-sub-TLV长度

Sub-sub-TLVs (variable)

可变长度

包含的Sub-sub-TLV

 

2.6.7  SRv6 LAN End.X SID sub-TLV

SRv6 LAN End.X SID sub-TLV用于发布一个LAN邻接类型的End.X SID

SRv6 LAN End.X SID sub-TLV的报文格式如11所示。

图11 SRv6 LAN End.X SID sub-TLV

 

SRv6 LAN End.X SID sub-TLV包含字段如7所示。

表7 SRv6 End.X SID sub-TLV的字段描述表

字段名称

长度

含义

Type

8比特

类型,取值为44

Length

8比特

长度

System ID

48比特

IS-ISSystem ID

Flags

8比特

标志位:

·     BBackup):备份标志,用于TI-LFA场景

·     SSet):组标志。如果置位,表示End.X SID是一组邻接

·     PPersistent):永久分配标志。如果置位,表示End.X SID被永久分配

·     C表示发布G-SID

Algorithm

8比特

算法

Weight

8比特

权重,暂不支持

SRv6 Endpoint Function

16比特

SRv6 SID绑定的动作,具体参见“2.3.1  SID组成及分类

SID

16字节

发布的SRv6 SID

Sub-sub-tlv-len

8比特

Sub-sub-TLV长度

Sub-sub-TLVs (variable)

可变长度

包含的Sub-sub-TLV

 

2.6.8  SRv6 SID Structure Sub-Sub-TLV

SRv6 SID Structure Sub-Sub-TLV用于发布SRv6 SID的格式,即SRv6 SID中各个字段的长度。

SRv6 SID Structure Sub-Sub-TLV的报文格式如12所示。

图12 SRv6 SID Structure Sub-Sub-TLV

 

SRv6 SID Structure Sub-Sub-TLV包含字段如8所示。

表8 SRv6 SID Structure Sub-Sub-TLV的字段描述表

字段名称

长度

含义

Type

8比特

类型,取值为1

Length

8比特

长度

LB Length

8比特

LocatorBlock长度,即公共前缀长度,用于SID压缩

LN Length

8比特

LocatorNode ID长度,即节点标识,用于SID压缩

Fun.Length

8比特

SID中的Function字段长度

Arg.Length

8比特

SID中的Arguments字段长度

 

2.6.9  SRv6 Endpoint Function

SRv6通过Endpoint Function定义每个SRv6 SID绑定的动作。除了发布Locator网段路由,IS-IS完成的另一个功能就是将SRv6 SID信息和SID对应的SRv6 EndPoint Function信息通过IS-IS的各类SID sub-TLV发布出去,对网络进行编程。不同SID sub-TLV支持的EndPoint Function类型如9所示。其中,Y表示该sub-TLV会发布这种类型的SRv6 Endpoint FunctionN表示不发布。

表9 IS-IS发布的SRv6 Endpoint Function描述表

SRv6 Endpoint Function

SRv6 End SID sub-TLV

SRv6 End.X SID sub-TLV

SRv6 LAN End.X SID sub-TLV

End (no PSP, no USP)

Y

N

N

End (with PSP)

Y

N

N

End (with USP)

Y

N

N

End (with PSP & USP)

Y

N

N

End.X (no PSP, no USP)

N

Y

Y

End.X (with PSP)

N

Y

Y

End.X (with USP)

N

Y

Y

End.X (with PSP & USP)

N

Y

Y

End.DT4

Y

N

N

End.DT6

Y

N

N

End.DX4

N

Y

Y

End.DX6

N

Y

Y

End.OP

Y

N

N

End with COC

Y

N

N

End with PSP&COC

Y

N

N

End with PSP&USP&COC

Y

N

N

End.X with COC

N

Y

Y

End.X with PSP&COC

N

Y

Y

End.X with PSP&USP&COC

N

Y

Y

End with PSP&USD&COC

Y

N

N

End with PSP&USP&USD&COC

Y

N

N

End.X with PSP&USD&COC

N

Y

Y

 

G-SRv6

3.1  产生背景

SRv6 TE Policy组网场景中,管理员需要将报文转发路径上的SRv6节点的128-bit SRv6 SID添加到SRv6 TE PolicySID列表中。因此,路径越长,SRv6 TE PolicySID列表中SRv6 SID数目越多,SRv6报文头开销也越大,导致设备转发效率低、芯片处理速度慢。在跨越多个AS域的场景中,端到端的SRv6 SID数目可能更多,报文开销问题更加严峻。关于SRv6 TE Policy的详细介绍,请参见《SRv6 TE Policy技术白皮书》。

Generalized SRv6G-SRv6)通过对128-bit SRv6 SID进行压缩,在SRHSegment List中封装更短的SRv6 SIDG-SID),来减少SRv6报文头的开销,从而提高SRv6报文的转发效率。同时,G-SRv6支持将128-bit SRv6 SIDG-SID混合编排到Segment List中。

3.2  G-SRv6简介

部署SRv6时,通常会规划出一个地址块,专门用于SRv6 SID的分配,这个地址块称为SID Space。在一个SRv6域中,SRv6 SID均从SID Space中分配,具有相同的前缀(即公共前缀Common Prefix)。因此,Segment ListSRv6 SID的公共前缀是冗余信息。G-SRv6Segment ListSRv6 SIDCommon Prefix移除,仅携带SRv6 SID中的可变部分,即压缩SIDG-SID),可以有效减少SRv6报文头开销。报文转发过程中,在根据SRH头中的Segment List替换报文的目的地址时,将G-SIDCommon Prefix拼接形成新的目的地址,继续查表转发。

G-SRv6SRv6 SID进行压缩时,既要保证高效压缩,又要兼顾网络规模等需求。综合考虑,32比特是当前较为理想的压缩后SID长度。

3.3  G-SID格式

13所示,SRv6 SIDLocator部分可以细分为Common PrefixNode ID,其中Common Prefix表示公共前缀地址;Node ID表示节点标识。具有相同Common PrefixSRv6 SID可以进行压缩,形成32-bit G-SID32-bit G-SID128-bit SRv6 SID中的Node IDFunction组成。128-bit SRv6 SID32-bit G-SID的转换关系为:128-bit SRv6 SID Common Prefix + 32-bit G-SID + 0 (Args&MBZ)

图13 支持压缩的SRv6 SID格式图

 

例如,管理员按14所示规划Locator段长度为64Common Prefix10:20:30::/48Args段长度为16Common PrefixG-SIDArgs段的总长度为96位,因此,MBZ段长度为128-9632位。

图14 G-SID的部署示例

 

3.4  G-SRv6报文

1. G-SRv6报文格式

图15 G-SRv6报文格式示意图

 

说明

如果下一个节点的SRv6 SID需要进行压缩,则路由协议在发布本节点的SRv6 SID时,会为该SRv6 SID添加COC标记,标识本SRv6 SID之后是G-SID 报文中不会携带COC标记,COCSRv6 SID本身的转发行为,为了方便理解,在报文结构中标识出SRv6 SID是否具有COC标记。

 

15所示,G-SRv6可以将G-SID128-bit SRv6 SID混合编排在SRHSegment List中。为准确定位G-SID,需要在原本封装128-bit SRv6 SID的位置封装432-bit G-SID。如果封装的G-SID不足4个,即不足128比特,则需要用0补齐,对齐128比特。128比特中封装的G-SID称为一组G-SID。多个连续的G-SID组成一段压缩路径,称为G-SID ListG-SID List中可以包含一组或多组G-SID

G-SIDSegment List中的排列规则为:

(1)     G-SID List的前一个SRv6 SID为携带COC标记的128-bit SRv6 SID,标识下一个SID32-bit G-SID

(2)     G-SID List中的最后一个G-SID外,其余G-SID必须携带COC标记,标识下一个SID32-bit G-SID

(3)     G-SID List的最后一个G-SID必须是未携带COC标记的32-bit G-SID,标识下一个SID128-bit SRv6 SID

(4)     G-SID List结束的下一个SRv6 SID128-bit SRv6 SID,其可以是未携带COC标记的SRv6 SID,也可以是携带COC标记的SRv6 SID

2. 通过G-SID计算目的地址

图16 G-SID组成示意图

 

16所示,使用G-SID计算目的地址的方法为将Segment List中的G-SIDCommon Prefix拼接形成新的目的地址。其中:

·     Common Prefix:公共前缀,由管理员手工配置。

·     G-SID:按照32比特进行压缩的SID,从SRH中获取。

·     SISID Index):用于在一组G-SID中定位G-SIDSI为目的地址的最低两位,取值为03。每经过一个对SID进行压缩的节点,SI值减1。如果SI值为0,则将SL值减1。如17所示,在Segment List的一组G-SID中,G-SID按照SI从小到大的顺序从左到右依次排列,即最左侧的G-SIDSI0,最右侧的G-SIDSI3

图17 通过SI定位G-SID

 

·     0:若Common PrefixG-SIDSI的位数之和不足128比特,则中间位使用0补齐。

如果SRv6节点上管理员部署的Common PrefixA:0:0:0::/64SRv6报文中的当前的G-SID1:1,该G-SID对应的SI3,则组合成的目的地址为A:0:0:0:1:1::3

SRv6节点收到G-SRv6报文后,不同情况下,报文目的地址计算方法为:

·     如果当前报文的目的地址在Segment List中为携带COC标记的128-bit SRv6 SID,则表示下一个SIDG-SID,将SL1,根据[SL1]值定位所处的G-SID组,并按照上述方法根据[SI3]对应的32-bit G-SID计算目的地址。

·     如果当前报文的目的地址在Segment List中为携带COC标记的32-bit G-SID,则表示下一个SIDG-SID

¡     如果SI0,则将SI1,根据报文当前的SL值定位所处的G-SID组,并按照上述方法根据[SI1]对应的32-bit G-SID计算目的地址。

¡     如果SI0,则将SL1、将SI值重置,即将SI设置为3,根据报文当前的SL值定位所处的G-SID组,并按照上述方法根据[SI3]对应的32-bit G-SID计算目的地址。

·     如果当前报文的目的址在Segment List中是未携带COC标记的32-bit G-SID,则将SL1,同时查找[SL1]对应的128-bit SRv6 SID,并使用该SRv6 SID替换IPv6头中的目的地址。

·     如果当前报文的目的址在Segment List中是未携带COC标记的128-bit SRv6 SID,则将SL1,同时查找[SL1]对应的128-bit SRv6 SID,并使用该SRv6 SID替换IPv6头中的目的地址。

BGP-EPE

4.1  BGP-EPE应用背景

IGP for SRv6只能在ASAutonomous System,自治系统)内通告SRv6 SID,通过合理编排AS内的SID,规划出AS内的最优路径。大规模网络通常需要跨越多个AS,此时IGP for SRv6无能为力。

BGP-EPEBGP Egress Peer EngineeringBGP出口对等体工程)用来为域间路径分配SID,该SID称为BGP Peer SIDBGP Peer SID可以通过BGP LS扩展传递给控制器。控制器通过对IGP SIDBGP Peer SID进行编排,实现端到端SRv6路径部署。

4.2  BGP Peer SID

BGP-EPE可以自动为对等体分配BGP Peer SID,也可以手工指定BGP Peer SID

BGP Peer SID分为以下几种类型:

·     PeerNode SID:用于指示一个对等体节点。每一个BGP会话都会分配Peer-Node SID。对于基于Loopback接口建立的EBGP邻居,其对应的物理链路可能有多条,那么针对该邻居的Peer-Node SID就会对应多个出接口。基于Peer-Node SID转发时,会在多个出接口间负载分担。

·     PeerAdj SID:用于指示到达对等体的一个邻接链路。对于基于Loopback接口建立的EBGP邻居,其对应的物理链路可能有多条,则每条链路都会分配一个Peer-Adj SID。基于Peer-Adj SID转发时,只能通过指定出接口进行转发。

·     PeerSet SID:用于标识一组对等体。BGP支持将一组对等体规划为一个Set,基于该组分配SID,这个SID称为PeerSet SID。基于PeerSet SID转发时,会在多个邻居间负载分担。一个PeerSet SID对应多个PeerNode SIDPeerAdj SID

图18 BGP-EPE示意图

 

17所示,BGP-EPESID分配方式为:

·     ASBR 1ASBR 3间存在两条直连物理链路,二者通过LoopBack接口建立EBGP邻居,BGP-EPE针对对等体分配了PeerNode SID 100:AB::1,为物理链路分配了PeerAdj SID 100:AB:1::2100:AB:1::3当通过PeerNode SID转发流量时,会在两条链路间负载分担。

·     ASBR 1ASBR 5ARBR 2ASBR 4,以及ASBR 2ASBR 5使用直连物理接口建立EBGP邻居,BGP-EPE为对等体只分配了PeerNode SID 100:AB::2100:AB::4100:AB::5

·     ASBR 4ASBR 5均和ASBR 2建立EBPG邻居关系,BGP-EPE将对等体ASBR 4ASBR 5加入同一Set组,为其分配PeerSet SID 100:AB::3当通过PeerSet SID转发流量时,会在多个邻居间负载分担。

4.3  BGP-EPE工作过程

在跨域SRv6组网中,通告将域内SRv6 SID和域间Peer SID合理组合,可以实现跨域最优路径转发。

图19 BGP-EPE组网图

 

18所示,在PE 1PE 2之间建立跨域SRv6路径,该路径包括以下几个部分:

·     PE 1ASBR 1的路径,即SRv6 SID A

·     ASBR 1ASBR 2的路径,即由BGP-EPE分配的PeerNode SID B

·     ASBR 2PE 2的路径,即SRv6 SID C

控制器对域内和域间SID进行编排后,将SRv6路径(SID列表{A, B, C})下发给源节点PE 1,即可实现流量沿着PE 1->ASBR 1->ASBR 2->PE 2的路径转发。

BGP LS for SRv6

5.1  BGP LS for SRv6应用场景

27所示,在SRv6网络中,SRv6节点通常会通过BGP LS路由,将链路状态、SIDSRv6 TE Policy的候选路径等信息上报给控制器,控制器根据上报的信息计算出最优路径,并将路径下发给源节点,以便指导报文沿着SRv6路径转发。

发布BGP LS路由的SRv6节点,称为BGP LS发言者。

图20 BGP LS for SRv6典型组网

 

5.2  BGP-LS for SRv6的路由扩展

5.2.1  路由扩展简介

为了支持SRv6BGP-LS新定义了一个SRv6 SID NLRI,用于通告和收集SRv6 SID的网络层可达信息。SRv6 SID NLRI的报文格式如28所示。

图21 SRv6 SID NLRI

 

SRv6 SID NLRI包含字段如10所示。

表10 SRv6 SID NLRI的字段描述表

字段名称

长度

含义

Protocol-ID

8比特

协议IDBGP-LS通过指定协议学习节点的SRv6 SID 信息:

·     1IS-IS Level 1

·     2IS-IS Level 2

·     4:直连路由

·     5:静态路由

·     6OSPFv3

·     7BGP

Identifier

64比特

节点标识符

Local Node Descriptors

长度可变

本地节点描述

SRv6 SID Descriptors

长度可变

SRv6 SID相关信息,必须包含SRv6 SID Information TLV

 

BGP-LS还在已有Node NLRILink NLRIPrefix NLRI中定义了新的子TLV,以通告SRv6相关信息。

BGP-LS针对SRv6的扩展具体如11所示。

表11 BGP-LS针对SRv6的扩展

TLV名称

作用

携带位置

SRv6 Capabilities TLV

通告SRv6能力

BGP-LS Node NLRI

SRv6 Node MSD Types

通告节点的SID列表中能够包括的SID的最大数目MSD

非新增TLV,仅在Node MSD TLV基础上新增类型

BGP-LS Node NLRI

SRv6 End.X SID TLV

通告End.X SID

BGP-EPE组网中,该TLV还可以用于通告Peer-Adj-SID,也就是BGP EPE PeerEnd.X SID

BGP-LS Link NLRI

SRv6 LAN End.X SID TLV

通告广播网络邻接类型的End.X SID

BGP-LS Link NLRI

SRv6 Link MSD Types

通告链路的SID列表中能够包括的SID的最大数目MSD

非新增TLV,仅在Link MSD TLV基础上新增类型

BGP-LS Link NLRI

SRv6 Locator TLV

通告Locator信息

BGP-LS Prefix NLRI

SRv6 SID Information TLV

通告SRv6 SID

BGP-LS SRv6 SID NLRI

SRv6 Endpoint Behavior TLV

通告SRv6 SID类型

BGP-LS SRv6 SID NLRI

SRv6 BGP Peer Node SID TLV

通告BGP-EPE组网中的BGP Peer Node SIDBGP Peer Set SID,该TLV必须与BGP Peer NodePeer Set功能关联的SRv6 End.X SID一起使用

BGP-LS SRv6 SID NLRI

SRv6 SID Stucture TLV

通告SRv6 SID格式,即描述SID各部分的长度

BGP-LS SRv6 SID NLRI可选TLVSRv6 End.XIS-IS SRv6 LAN End.XOSPFv3 SRv6 LAN End.X TLVssub-TLV

 

5.2.2  SRv6 Capabilities TLV

SRv6 Capabilities TLV用于通告节点支持SRv6功能,即本节点能够处理SRH

SRv6 Capabilities TLV的报文格式如29所示。

图22 SRv6 Capabilities TLV

 

SRv6 Capabilities TLV包含字段如12所示。

表12 SRv6 Capabilities TLV的字段描述表

字段名称

长度

含义

Type

16比特

类型,取值为1038

Length

16比特

长度

Flags

16比特

标志位:

·     O:用于OAM

Reserved

16比特

预留值,取值为0

 

5.2.3  SRv6 Node MSD Types

SRv6 Node MSD Types用于通告节点的SID列表中能够包括的SID的最大数目。

SRv6 Node MSD Types的报文格式如30所示。

图23 SRv6 Node MSD Types

 

SRv6 Node MSD Types包含字段如13所示。

表13 SRv6 Node MSD Types的字段描述表

字段名称

长度

含义

Type

8比特

类型,取值为23

Length

8比特

长度

MSD-Type

8比特

MSD类型:

·     41SRH Max SLSRHSegment Left字段的最大值

·     42SRH Max End Pop,支持PSPUSPEndpoint节点能够弹出的最大SID个数

·     45SRH Max End DEndpoint节点能够解封装的SID的最大个数

MSD Value

8比特

MSD取值

 

5.2.4  SRv6 End.X SID TLV

SRv6 End.X SID TLV用于发布End.X SID

SRv6 End.X SID TLV的报文格式如31所示。

图24 SRv6 End.X SID TLV

 

SRv6 End.X SID TLV包含字段如14所示。

表14 SRv6 End.X SID TLV的字段描述表

字段名称

长度

含义

Type

16比特

类型,取值为1106

Length

16比特

长度

Endpoint Behavior

16比特

SRv6 SID类型:

·     End SID

·     End.X SID

·     End.T SID

·     End.DX6 SID

·     End.DX4 SID

·     End.DT6 SID

·     End.DT4 SID

·     End.DX2 SID

·     End.DX2V SID

·     End.DT2U SID

·     End.DT2M SID

Flags

8比特

标志位:

·     BBackup):备份标志,用于TI-LFA场景

·     SSet):组标志。如果置位,表示End.X SID是一组邻接

·     PPersistent):永久分配标志。如果置位,表示End.X SID被永久分配

Algorithm

8比特

算法

Weight

8比特

权重,暂不支持

Reserved

16比特

预留值,取值为0

SID

16字节

发布的SRv6 SID

Sub-TLVs (variable)

可变长度

包含的Sub-TLV

 

5.2.5  SRv6 LAN End.X SID TLV

SRv6 LAN End.X SID TLV用于发布一个广播邻接类型的End.X SID

SRv6 LAN End.X SID TLV的报文格式如32所示。

图25 SRv6 LAN End.X SID TLV

 

SRv6 LAN End.X SID TLV包含字段如15所示。

表15 SRv6 LAN End.X SID TLV的字段描述表

字段名称

长度

含义

Type

16比特

类型:

·     1107:表示发布IS-IS的链路状态信息,在该TLV中携带IS-ISSystem ID

·     1108:表示发布OSPFv3的链路状态信息,在该TLV中携带OSPFv3 Router-ID

Length

16比特

长度

Endpoint Behavior

16比特

SRv6 SID类型:

·     End SID

·     End.X SID

·     End.T SID

·     End.DX6 SID

·     End.DX4 SID

·     End.DT6 SID

·     End.DT4 SID

·     End.DX2 SID

·     End.DX2V SID

·     End.DT2U SID

·     End.DT2M SID

Flags

8比特

标志位:

·     BBackup):备份标志,用于TI-LFA场景

·     SSet):组标志。如果置位,表示End.X SID是一组邻接

·     PPersistent):永久分配标志。如果置位,表示End.X SID被永久分配

Algorithm

8比特

算法

Weight

8比特

权重,暂不支持

Reserved

16比特

预留值,取值为0

ISIS System-ID (6 octets) or OSPFv3 Router-ID (4 octets) of the neighbor

48比特或者32比特

IS-ISSystem IDOSPFv3 Router-ID

SID

16字节

发布的SRv6 SID

Sub-TLVs (variable)

可变长度

包含的Sub-TLV

 

5.2.6  SRv6 Link MSD Types

SRv6 Link MSD Types用于通告链路的SID列表中能够包括的SID的最大数目,其格式同SRv6 Node MSD Types

5.2.7  SRv6 Locator TLV

SRv6 Locator TLV用于收集节点的Locator信息。

SRv6 Locator TLV的报文格式如33所示。

图26 SRv6 Locator TLV

 

SRv6 Locator TLV包含字段如16所示。

表16 SRv6 Locator TLV的字段描述表

字段名称

长度

含义

Type

16比特

类型,取值为1162

Length

16比特

长度

Flags

8比特

标志位:

·     D标志位:表示Locator网段路由不能渗透到IGP

·     A标志位:表示该LocatorAnycast Locator,即一组SRv6节点具有相同的Locator

Algorithm

8比特

算法

Reserved

16比特

预留值,取值为0

Metric

32比特

开销

Sub-TLVs (variable)

可变长度

包含的Sub-TLV,例如SRv6 End SID sub-TLV

 

5.2.8  SRv6 SID Information TLV

SRv6 SID Information TLVSRv6 SID NLRI的一个子TLV,用于通告SRv6 SID相关信息。

SRv6 SID Information TLV的报文格式如34所示。

图27 SRv6 SID Information TLV

 

SRv6 SID Information TLV包含字段如17所示。

表17 SRv6 SID Information TLV的字段描述表

字段名称

长度

含义

Type

16比特

类型,取值为518

Length

16比特

长度

SID

16字节

发布的SRv6 SID

 

5.2.9  SRv6 Endpoint Behavior TLV

SRv6 Endpoint Behavior TLV是一个必须包含于SRv6 SID NLRI关联的BGP-LS属性中的强制TLV

SRv6 Endpoint Behavior TLV的报文格式如35所示。

图28 SRv6 Endpoint Behavior TLV

 

SRv6 Endpoint Behavior TLV包含字段如18所示。

表18 SRv6 Endpoint Behavior TLV的字段描述表

字段名称

长度

含义

Type

16比特

类型,取值为1250

Length

16比特

长度

Endpoint Behavior

16比特

SRv6 SID类型:

·     End SID

·     End.X SID

·     End.T SID

·     End.DX6 SID

·     End.DX4 SID

·     End.DT6 SID

·     End.DT4 SID

·     End.DX2 SID

·     End.DX2V SID

·     End.DT2U SID

·     End.DT2M SID

Flags

8比特

标志位:

·     BBackup):备份标志,用于TI-LFA

·     SSet):组标志。如果置位,表示End.X SID是一组邻接

·     PPersistent):永久分配标志。如果置位,表示End.X SID被永久分配

Algorithm

8比特

算法

 

5.2.10  SRv6 BGP Peer Node SID TLV

SRv6 BGP Peer Node SID TLV用于在BGP-EPE组网中的BGP Peer Node SIDBGP Peer Set SID,该TLV必须与BGP Peer NodePeer Set功能关联的SRv6 End.X SID一起使用。

SRv6 BGP Peer Node SID TLV的报文格式如36所示。

图29 SRv6 BGP Peer Node SID TLV

 

SRv6 BGP Peer Node SID TLV包含字段如19所示。

表19 SRv6 BGP Peer Node SID TLV的字段描述表

字段名称

长度

含义

Type

16比特

类型,取值为1251

Length

16比特

长度

Flags

8比特

标志位:

·     BBackup):备份标志,用于TI-LFA

·     SSet):组标志。如果置位,表示End.X SID是一组邻接

·     PPersistent):永久分配标志。如果置位,表示End.X SID被永久分配

Weight

8

SID的权重值,暂不支持

Reserved

16比特

预留值,取值为0

Peer AS Number

32比特

BGP邻居的AS

Peer BGP Identifier

32比特

BGP邻居的Router ID

 

5.2.11  SRv6 SID Structure TLV

SRv6 SID Structure TLV用于发布SRv6 SID的格式,即SRv6 SID组成中各个字段的长度。

SRv6 SID Structure TLV的报文格式如37所示。

图30 SRv6 SID Structure TLV

 

SRv6 SID Structure TLV包含字段如20所示。

表20 SRv6 SID Structure TLV的字段描述表

字段名称

长度

含义

Type

8比特

类型

Length

8比特

长度

LB Length

8比特

LocatorBlock长度,即公共前缀长度,用于SID压缩

LN Length

8比特

LocatorNode ID长度,即节点标识,用于SID压缩

Fun.Length

8比特

SID中的Function字段长度

Arg.Length

8比特

SID中的Arguments字段长度

 

参考文献

·     draft-ietf-idr-bgpls-srv6-ext-05

·     draft-ietf-bess-srv6-services-02

·     draft-ietf-spring-srv6-network-programming-16

·     draft-ietf-6man-spring-srv6-oam-05

·     draft-ietf-lsr-isis-srv6-extensions-08

·     RFC 8667IS-IS Extensions for Segment Routing

·     RFC 8754IPv6 Segment Routing Header (SRH)

新华三官网
联系我们