SR MPLS的标签空间
简介
段路由SR(Segment Routing)是基于源路由理念而设计的在网络上转发数据包的一种协议。SR MPLS是指基于MPLS转发平面的SR。SR MPLS将网络路径分成一个个段,并且为这些段和网络中的转发节点分配段标识ID。SR MPLS通过对段和网络节点进行有序排列(Segment List),就可以得到一条转发路径。
SR MPLS会使用多种SID,这些SID在转发平面都是MPLS标签。SID规划直接影响到后续网络的扩展和运维,规划不当,可能会导致网络后期调整。所以部署SR MPLS之前,有必要了解SR MPLS里的SID种类,配置方法,配置范围,以及SR MPLS SID范围与MPLS LDP/RSVP-TE标签范围的关系等信息。
MPLS标签范围
由于SID也是MPLS标签,所以SID的范围受MPLS标签范围的限制。MPLS标签长度为4个字节,封装结构如图1-1所示。
标签共有4个域:
Label:20bit,标签值域。所以标签总个数是2的20次幂(1048576),实际标签取值空间是0~1048575,这是标签空间决定的。无论是MPLS标签还是SR MPLS的SID,都不会超过1048575。实际标签最大值随设备不同而不同,很多设备取值达不到1048575,所以配置SR MPLS时,需要预先获取设备具体取值范围,再进行标签空间规划。
Exp:3bit,用于扩展。现在通常用做CoS(Class of Service),其作用与Ethernet 802.1p的作用类似。
S:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签。
TTL:8bit,和IP分组中的TTL(Time To Live)意义相同。
SR MPLS使用的SID
目前,SR MPLS使用的SID主要有前缀SID、节点SID、邻接SID、Segment routing mapping server (SRMS) SID、Binding SID和BGP EPE(Egress Peer Engineering)SID等,各个SID的简单介绍如下:
- 前缀SID(Prefix SID):用于标识网络中的某个目的地址前缀(Prefix)。前缀SID是源端发布的SRGB范围内的偏移值,接收端会根据自己的SRGB计算实际标签值用于生成MPLS转发表项。前缀SID通过IGP协议扩散到其他网元,全局可见,全局有效。
- 节点SID(Node SID):用于标识网络中的某个节点(Node)。为节点的Loopback接口IP地址配置SID,就可以作为这个节点的Node SID。节点SID通过IGP协议扩散到其他网元,全局可见,全局有效。
- 邻接SID(Adjacency SID):用于标识网络中的某个邻接。邻接SID为SRGB范围外的本地SID,支持静态配置和IGP动态分配。邻接SID通过IGP协议扩散到其他网元,全局可见,本地有效。
- SRMS SID:用于SR与LDP互通场景,将LDP侧的前缀映射到SID,然后发布到Segment Routing域。SRMS SID在SRGB范围内配置,根据SRGB的偏移值计算得到。
- Binding SID:SR-TE隧道或者SR Policy都可以配置Binding SID,Binding SID意味着将使用该SID的流量与一个SR-TE隧道或者一个SR Policy绑定。Binding SID还可以帮助实现跨域E2E SR-TE隧道。
- BGP EPE SID:BGP EPE能够针对对等体分配Peer-Node SID、Peer-Adj SID和Peer-Set SID。
Peer-Node SID用于指示一个对等体节点。每一个BGP会话都会分配Peer-Node SID。对于基于Loopback接口建立的EBGP邻居,其对应的物理链路可能有多条,那么针对该邻居的Peer-Node SID就会对应多个出接口,转发时可以使用任意一个出接口转发,也可以使用多个出接口负载分担。
Peer-Adj SID用于指示到达对等体的一个邻接。对于基于Loopback接口建立的EBGP邻居,其对应的物理链路可能有多条,则每个邻接都会分配一个Peer-Adj SID,转发时只能使用指定的链路(对应指定的出接口)进行转发。
Peer-Set SID用于指示一组邻居。BGP支持将一组邻居规划为一个Set,然后基于该组分配SID,这个SID称为Peer-Set SID,Peer-Set SID在转发时可以对应多个出接口。一个Peer-Set由众多Peer-Node和Peer-Adj组成,那么针对该Peer-Set分配的SID就会对应到多个Peer-Node SID和Peer-Adj SID。
前缀SID和节点SID在本机SRGB(Segment Routing Global Block)范围内配置,Binding SID在本机SRLB(Segment Routing Local Block)范围内配置,而邻接SID和BGP EPE SID都在静态标签范围内配置,但是静态标签范围受设备动态标签范围影响,这个范围并不固定。
SRGB和SRLB都是本机预留的静态标签范围。标签空间里,除去MPLS预留标签范围(0~15)和静态标签范围,剩余的是动态标签范围,此范围SR MPLS与MPLS LSP/RSVP-TE共用。
每台设备的标签空间是固定的,如果设备上MPLS LSP/RSVP-TE业务量大,占用标签多,就会影响到SR MPLS的标签空间。
SR MPLS的SID配置
一、前缀SID和节点SID(以IS-IS为例)
a.全局使能SR能力
执行命令system-view,进入系统视图。
执行命令segment-routing,进入Segment Routing视图。
执行命令commit,提交配置。
b.配置SRGB
执行命令system-view,进入系统视图。
执行命令isis [ process-id ],进入IS-IS协议视图。
执行命令network-entity net,设置网络实体名称。
执行命令cost-style { wide | compatible | wide-compatible },配置IS-IS的Wide Metric属性。
为了在IS-IS进程使用TE特性,必须使用cost-style命令将IS-IS报文的cost类型设置为wide、compatible或wide-compatible。
执行命令segment-routing mpls命令用来使能IS-IS对应拓扑的Segment Routing功能。
执行命令segment-routing global-block begin-value end-value命令用来配置当前IS-IS实例的Segment Routing全局标签范围。
如果配置SRGB时系统提示被占用,可使用display segment-routing global-block命令查看可配置的范围段,也可通过删除已经占用该标签的无用配置释放标签空间。
# 显示所有可用的全局Segment Routing标签值。
<HUAWEI> display segment-routing global-block Segment Routing Global Block ---------------------------------- Lower SID Upper SID Total ------------------------------------------------------ 10000 29999 20000
执行命令commit,提交配置。
c.配置Segment Routing前缀SID
执行命令system-view,进入系统视图。
执行命令interface loopback loopback-number,创建Loopback接口并进入接口视图。
执行命令isis enable [ process-id ],使能IS-IS接口。
执行命令ip address ip-address { mask | mask-length },配置Loopback接口的IP地址。
执行命令isis prefix-sid { absolute sid-value | index index-value } [ node-disable ],为Loopback接口的IP地址配置SID。
执行命令commit,提交配置。
二、邻接SID(以IS-IS为例)
邻接SID在IS-IS使能SR能力后动态生成,可以配置segment-routing auto-adj-sid disable命令关闭动态邻接SID。动态邻接SID在设备重启后可能会发生变化,如果显式路径使用动态邻接SID,则在设备重启之后就需要重新配置。为了方便使用显式路径,用户也可以手工配置邻接SID。步骤如下:
- 执行命令system-view,进入系统视图。
- 执行命令segment-routing,进入Segment Routing视图。
- 执行命令ipv4 adjacency local-ip-addr local-ip-address remote-ip-addr remote-ip-address sid sid-value,配置静态邻接SID。
- 执行命令commit,提交配置。
三、SRMS SID
- 执行命令system-view,进入系统视图。
- 执行命令segment-routing,进入Segment Routing视图。
- 执行命令mapping-server prefix-sid-mapping ip-address mask-length begin-value [ range range-value ] [ attached ],配置前缀和SID的映射关系。
- 执行命令commit,提交配置。
四、Binding SID
在E2E SR-TE场景:
- 执行命令system-view,进入系统视图。
- 执行命令interface tunnel tunnel-number,进入AS域内SR-TE Tunnel接口视图。
- 执行命令mpls te binding-sid label label-value,配置AS域内SR-TE隧道的Binding SID。
- 执行命令commit,提交配置。
在SR Policy场景:
- 执行命令system-view,进入系统视图。
- 执行命令segment-routing,使能全局SR能力,并进入Segment Routing视图。
- 执行命令local-blockbegin-value end-value,配置Segment Routing本地标签范围SRLB。
如果配置SRLB时系统提示被占用,可使用display segment-routing local-block命令查看可配置的范围段,也可通过删除已经占用该标签的无用配置释放标签空间。
# 显示可用的 Segment Routing本地标签范围。
<HUAWEI> display segment-routing local-block 5000 Segment Routing Local Block Information ------------------------------------------------- Begin Value End Value Range ------------------------------------------------------------- 48120 152770 104651 156502 212657 56156 212979 321535 108557 524288 1048575 524288
- 执行命令sr-te policy policy-name,创建SR Policy,并且进入SR Policy视图。
- 执行命令binding-sid label-value,配置SR Policy的Binding SID。label-value取值需要在local-block begin-value end-value命令定义的范围内。
五、BGP EPE SID
- 执行命令system-view,进入系统视图。
- 执行命令segment-routing,使能Segment Routing能力。
- 执行命令quit,退回系统视图。
- 执行命令bgp { as-number-plain | as-number-dot },使能BGP能力,并进入BGP视图。
- 执行命令peer ipv4-address as-number { as-number-plain | as-number-dot },创建BGP对等体。
- 执行命令peer ipv4-address egress-engineering [ label static-label ],使能BGP EPE功能。
- 执行命令egress-engineering peer-set peer-set-name [ label static-label ],创建BGP Peer Set。
- 执行命令peer ipv4-address peer-set name peer-set-name,配置将对等体加入BGP Peer Set。
- 执行命令commit,提交配置。
SR MPLS SID相关的PAF
以NE40E为例,介绍SR MPLS的SID相关的PAF,注意不同设备的PAF值可能存在不同,以实际取值为准。
首先是MPLS相关PAF,可以使用命令查询,例如:
<HUAWEI> display paf | include GRESM Info: It will take a long time if the content you search is too much or the string you input is too long, you can press CTRL_C to break. ---------------------------------------------------------------------------------------------------------------------- PafName PafValue Description ---------------------------------------------------------------------------------------------------------------------- SPEC_RES_GRESM_MIN_LABEL 32784 Min number for gresm label SPEC_RES_GRESM_MAX_LABEL 331775 Max number for gresm label, the default value defined by product SPEC_RES_GRESM_STATIC_LABEL_MIN 16 Min number for gresm static label, the default value defined by product SPEC_RES_GRESM_STATIC_LABEL_MAX 32783 Max number for gresm static label, the default value defined by product SPEC_FUNC_GRESM_GRACEFUL_RELEASE_ENABLED 1 Whether support gresm graceful release resource feature(0: disable, 1: enable) SPEC_RES_GRESM_BLOCK_LABEL_MIN 368640 Min number for gresm block label, the default value defined by product SPEC_RES_GRESM_BLOCK_LABEL_MAX 394239 Max number for gresm block label, the default value defined by product SPEC_RES_GRESM_LABEL_RESERVE_LEN 10240 The length of reserve label SPEC_RES_GRESM_MIN_LABEL2 524288 Min number for gresm label SPEC_RES_GRESM_MAX_LABEL2 1048575 Max number for gresm label, the default value defined by product ----------------------------------------------------------------------------------------------------------------------
其中,SR MPLS相关的解释如下:
- SPEC_RES_GRESM_MIN_LABEL:动态标签最小值。
- SPEC_RES_GRESM_MAX_LABEL:动态标签最大值。
- SPEC_RES_GRESM_STATIC_LABEL_MIN:静态标签最小值。
- SPEC_RES_GRESM_STATIC_LABEL_MAX:静态标签最大值。
- SPEC_RES_GRESM_LABEL_RESERVE_LEN:静态SR-TE标签段长度。
- SPEC_RES_GRESM_MIN_LABEL2:第2段动态标签最小值。
- SPEC_RES_GRESM_MAX_LABEL2:第2段动态标签最大值。
其次是Segment Routing相关的PAF,包括SEGR模块、SRGB和SRLB,也可以使用命令查询,例如:
<HUAWEI> display paf | include SEGR Info: It will take a long time if the content you search is too much or the string you input is too long, you can press CTRL_C to break. ---------------------------------------------------------------------------------------------------------------------- PafName PafValue Description ---------------------------------------------------------------------------------------------------------------------- SPEC_RES_SEGR_LABEL_STACK_NUM 10 The layer number of the label stack SPEC_RES_SEGR_ADJ_NUM 4000 The max number of the label SPEC_RES_SEGR_MAX_LABEL 331775 The max label value of segment-routing, the default value defined by product ----------------------------------------------------------------------------------------------------------------------
PAF项解释如下:
- SPEC_RES_SEGR_LABEL_STACK_NUM:SR MPLS报文最大SID栈深度MSD(Maximum SID Depth)。
- SPEC_RES_SEGR_ADJ_NUM:邻接SID数量。
- SPEC_RES_SEGR_MAX_LABEL:SR标签最大值,一般和SPEC_RES_GRESM_MAX_LABEL相等。
<HUAWEI> display paf | include SRGB Info: It will take a long time if the content you search is too much or the string you input is too long, you can press CTRL_C to break. ---------------------------------------------------------------------------------------------------------------------- PafName PafValue Description ---------------------------------------------------------------------------------------------------------------------- SPEC_RES_SRGB_LABEL_MIN 16000 The begin value of the SRGB label range range SPEC_RES_SRGB_LABEL_MAX 47999 The end value of the SRGB label range SPEC_RES_OSPF_SRGB_CONFIG_SIZE 65535 The config size of SRGB for OSPF instance SPEC_FUN_ISIS_SRGB_CONFIG_SIZE 65535 The config size of SRGB for ISIS instance SPEC_FUN_SRGB_RESERVE_SIZE 131072 The reserve size of SRGB SPEC_RES_SRGB_CONFIG_BEGIN 16000 The begin value of the SRGB label configuration range ----------------------------------------------------------------------------------------------------------------------
PAF项解释如下:
- SPEC_RES_SRGB_LABEL_MIN:SRGB预留范围最小值。
- SPEC_RES_SRGB_LABEL_MAX:SRGB预留范围最大值。
- SPEC_RES_OSPF_SRGB_CONFIG_SIZE:OSPF单进程支持的最大SRGB长度。
- SPEC_FUN_ISIS_SRGB_CONFIG_SIZE:IS-IS单进程支持的最大SRGB长度。
- SPEC_FUN_SRGB_RESERVE_SIZE:SRGB标签预留长度(V8R11C00版本后此PAF废弃,SRGB的配置范围变为:<SPEC_RES_SRGB_CONFIG_BEGIN, SPEC_RES_GRESM_MAX_LABEL>)。
- SPEC_RES_SRGB_CONFIG_BEGIN:SRGB可配置范围起始值。
<HUAWEI> display paf | include SRLB Info: It will take a long time if the content you search is too much or the string you input is too long, you can press CTRL_C to break. ---------------------------------------------------------------------------------------------------------------------- PafName PafValue Description ---------------------------------------------------------------------------------------------------------------------- SPEC_FUN_SRLB_CONFIG_SIZE 65535 The config size of SRLB for each VR ----------------------------------------------------------------------------------------------------------------------
PAF项解释如下:
SPEC_FUN_SRLB_CONFIG_SIZE:每个系统支持的最大SRLB长度。
上述各个PAF关系如图1-2所示:
从图上可以看出:
- 0~15:MPLS预留的特殊标签范围,例如常用的隐式空标签(Implicit NULL Label)3就在此范围。
- 16~32783:静态标签范围,一些静态CR-LSP和静态LSP会使用此范围标签。BGP EPE的也会使用此范围的标签,例如peer ipv4-address egress-engineering [ label static-label ]和egress-engineering peer-set peer-set-name [ label static-label ]命令。
- 动态标签范围是LDP、RSVP-TE、MP-BGP、IGP等动态信令协议的标签空间。
- 剩余还有一些是其他特性使用的标签。
对于SR MPLS来说,第一段动态SR标签范围占用了一部分静态标签范围和一部分动态标签范围。动态标签范围里剩余部分是静态SR标签范围,例如静态邻接标签会使用此范围,对应命令是ipv4 adjacency local-ip-addr local-ip-address remote-ip-addr remote-ip-address sid sid-value。
两段动态SR标签范围都是SRGB的可配置范围。其中在第一段动态SR标签范围里,存在一个SRGB预留段,在此范围配置SRGB,一般不会冲突。
以下汇总下各类SR MPLS SID的PAF范围:
- 前缀SID(Prefix SID):该值根据SRGB范围偏移计算得到,SRGB范围[SPEC_RES_SRGB_CONFIG_BEGIN, SPEC_RES_SEGR_MAX_LABEL - SPEC_RES_GRESM_LABEL_RESERVE_LEN]。
- 节点SID(Node SID):同前缀SID。
- 邻接SID(Adjacency SID):静态配置由[SPEC_RES_SEGR_MAX_LABEL - SPEC_RES_GRESM_LABEL_RESERVE_LEN + 1, SPEC_RES_SEGR_MAX_LABEL]范围决定。IGP动态分配由[SPEC_RES_SRGB_LABEL_MAX + 1, SPEC_RES_GRESM_MAX_LABEL]范围决定,IS-IS分配的邻接SID可以使用display isis peer verbose命令查看,OSPF分配的邻接SID可以使用display ospf peer neighbor-id命令查看。
- SRMS SID:同前缀SID。
- Binding SID:在SRLB范围配置。SRLB起始值:SPEC_RES_SRGB_LABEL_MAX + 1,长度范围是65535。
- BGP EPE SID:在静态标签范围内配置,由[SPEC_RES_GRESM_STATIC_LABEL_MIN, SPEC_RES_GRESM_STATIC_LABEL_MAX]决定,也即16~32783。
SRGB范围说明
IGP配置segment-routing global-block命令,设置SR MPLS全局标签范围。不配置此命令,SR-BE隧道无法生成。
以路由器设备为例,SRGB范围详细说明如下:
- SRGB范围:由PAF决定:<SPEC_RES_SRGB_CONFIG_BEGIN, SPEC_RES_SEGR_MAX_LABEL - SPEC_RES_GRESM_LABEL_RESERVE_LEN>。其中:
SPEC_RES_SRGB_CONFIG_BEGIN:SRGB可配置的起始值,大部分设备为16000。
SPEC_RES_SEGR_MAX_LABEL:SR MPLS标签最大值。
SPEC_RES_GRESM_LABEL_RESERVE_LEN:预留给SR-TE静态标签的长度。
- SRGB范围:有的设备(如NE40E)还可以有多段选择,第2段可配置的范围为:<SPEC_RES_GRESM_MIN_LABEL2, SPEC_RES_GRESM_MAX_LABEL2>。其中:
SPEC_RES_GRESM_MIN_LABEL2:第2个动态标签段最小值。
SPEC_RES_GRESM_MAX_LABEL2:第2个动态标签段最大值。
- SRGB范围推荐配置[16000, 23999],以便和其他厂商互通。建议所有设备SRGB配置一致,简化网络运维。
- SRGB范围,当前华为设备(除个别形态)优先保证<SPEC_RES_SRGB_LABEL_MIN, SPEC_RES_SRGB_LABEL_MAX>范围标签段不被其他动态协议申请使用。因此,为了减少配置冲突,建议使用这个范围内的标签段,建议所有设备SRGB配置一致,简化网络运维。
SPEC_RES_SRGB_LABEL_MIN:SRGB预留范围最小值,大部分设备为16000。
SPEC_RES_SRGB_LABEL_MAX:SRGB预留范围最大值,大部分设备为47999。
- 如果配置SRGB时提示被占用,可使用display segment-routing dynamic global-block命令查看可配置的范围段,或者删除已经占用该标签的配置,但是需要注意,删除配置会影响原有业务。
# 显示本地为Segment Routing预留的全局动态标签段范围。
<HUAWEI> display segment-routing dynamic global-block 2000 Segment Routing Dynamic Global Block Information -------------------------------------------------- Begin Value End Value Range -------------------------------------------------------------- 153616 156245 2630 156502 284687 128186
- SRGB范围:ISIS/OSPF单进程最大配置长度受PAF(SPEC_FUN_ISIS_SRGB_CONFIG_SIZE/SPEC_RES_OSPF_SRGB_CONFIG_SIZE)控制,一般为65535。
SRLB范围说明
以路由器设备为例,SRLB范围详细说明如下:
- SRLB起始值为SRGB预留范围最大值加1,如果可配的起始值大于SRGB预留范围最大值+1,那么使用可配的起始值。大部分设备都可以认为是从48000开始。
SRLB起始值计算:SPEC_RES_SRGB_LABEL_MAX + 1。
- SRLB可配范围是在SRGB的可配范围内,减去SPEC_RES_SRGB_LABEL_MAX。
- SRLB范围:每个系统支持的最大SRLB长度受PAF(SPEC_FUN_SRLB_CONFIG_SIZE)控制,一般为65535。
- SRGB和SRLB互斥,SRGB配置的范围和SRLB配置的范围不可以有重叠,有重叠提示错误,SRLB配置失败。
- 如果配置SRLB提示被占用,可使用display segment-routing local-block命令查看可配置的范围段,或者删除已经占用该标签的配置,但是需要注意,删除配置会影响原有业务。
SR MPLS的标签冲突解决机制
除了上文提到的单机SID范围限制,实际网络中还存在其他类型的标签冲突,例如前缀SID冲突,需要注意在网络规划时避免。
由于前缀SID通过手工配置生成,不同设备上的配置可能发生标签冲突。标签冲突分为前缀冲突和SID冲突,前缀冲突是指相同的前缀关联了两个不同的SID,SID冲突是指相同的SID关联到不同的前缀。
标签冲突处理原则如下:当冲突产生后,优先处理前缀冲突,之后根据处理结果再进行SID冲突处理,并按如下规则进行优选。
- 前缀掩码更大者优选;
- 前缀更小者优选;
- SID更小者优选。
假如现在有如下四条路由(前缀/掩码 SID):
- a. 1.1.1.1/32 1
- b. 1.1.1.1/32 2
- c. 2.2.2.2/32 3
- d. 3.3.3.3/32 1
使用冲突处理原则后效果如下:
先进行前缀冲突处理,a和b为前缀冲突,根据标签冲突处理原则,a的SID比b的SID小,优选a,则处理后:
- a. 1.1.1.1/32 1
- c. 2.2.2.2/32 3
- d. 3.3.3.3/32 1
再根据上一步处理结果进行SID冲突处理,a和d为SID冲突,根据标签冲突处理原则,a的前缀比d的前缀小,优选a。冲突解决后,最终优选出两条路由:
- a. 1.1.1.1/32 1
- c. 2.2.2.2/32 3
总结
本文主要讲解了如下内容:
- SR MPLS里各类SID的作用,配置方法,取值来源。
- MPLS和SR的PAF对SRGB和SRLB的控制与影响,不同设备的PAF取值不同,使用时需要注意识别。
- IGP单进程的SRGB和单个系统的SRLB的最大长度范围一般都是65535。SRGB建议在[16000, 47999]范围内配置,为了和其他厂商设备互通,建议使用[16000, 23999]。SRLB建议从起始值48000往上配置。
实际部署时,除了本机SID取值合理规划,还需要注意防止不同设之间的前缀SID冲突。配置时,可以关注是否有相关告警或日志产生,例如:OSPF_1.3.6.1.4.1.2011.5.25.353.2.1 hwSrPrefixSidConflict、OSPF/3/hwSrPrefixSidConflict_active和ISIS/4/IS_PREFIX_SID_CONFLICT等。如果存在,需要参考告警和日志的处理建议及时解决冲突。
相关信息
如果您想了解Segment Routing MPLS的更多信息及配置方法,可参考以下产品文档: