术语
术语 |
解释 |
---|---|
SR-MPLS BE |
SR-MPLS BE(Segment Routing MPLS Best Effort)是指IGP使用最短路径算法计算得到的最优SRLSP。 |
SR-MPLS TE |
SR-MPLS TE(Segment Routing MPLS Traffic Engineering)是指基于TE的约束属性,利用SR协议创建的隧道。 |
缩略语
缩略语 |
英文全称 |
中文全称 |
---|---|---|
BGP-LS |
BGP Link-State |
BGP链路状态 |
FRR |
Fast Re-Route |
快速重路由 |
NETCONF |
Network Configuration Protocol |
网络配置协议 |
PCE |
Path Computation Element |
路径计算单元 |
PCEP |
Path Computation Element Communication Protocol |
路径计算单元通信协议 |
SID |
Segment ID |
段ID |
SR |
Segment Routing |
段路由 |
SRGB |
Segment Routing Global Block |
SR全局标签块 |
TE |
Traffic Engineering |
流量工程 |
TI-LFA FRR |
Topology-Independent Loop-free Alternate FRR |
拓扑无关无环备份FRR |
定义
段路由SR(Segment Routing)是基于源路由理念而设计的在网络上转发数据包的一种协议。Segment Routing MPLS是指基于MPLS转发平面的Segment Routing,下文简称为Segment Routing。Segment Routing将网络路径分成一个个段,并且为这些段和网络中的转发节点分配段标识ID。通过对段和网络节点进行有序排列(Segment List),就可以得到一条转发路径。
Segment Routing将代表转发路径的段序列编码在数据包头部,随数据包传输。接收端收到数据包后,对段序列进行解析,如果段序列的顶部段标识是本节点时,则弹出该标识,然后进行下一步处理;如果不是本节点,则使用ECMP(Equal Cost Multiple Path)方式将数据包转发到下一节点。
目的
随着时代的进步,网络业务种类越来越多,不同类型业务对网络的要求不尽相同,例如,实时的UC&C应用程序通常更喜欢低时延,低抖动的路径,而大数据应用则更喜欢低丢包率的高带宽通道。如果仍旧按照网络适配业务的思路,则不仅无法匹配业务的快速发展,而且会使网络部署越来越复杂,变的难以维护。
解决思路就是业务驱动网络,由业务来定义网络的架构。具体说来,就是由应用提出需求(时延、带宽、丢包率等),控制器收集网络拓扑、带宽利用率、时延等信息,根据业务需求计算显式路径。
图1 业务驱动网络示意图
Segment Routing正是在此背景下产生的。通过Segment Routing可以简易的定义一条显式路径,网络中的节点只需要维护Segment Routing信息,即可应对业务的实时快速发展。Segment Routing具有如下特点:
- 通过对现有协议(例如IGP)进行扩展,能使现有网络更好的平滑演进。
- 同时支持控制器的集中控制模式和转发器的分布控制模式,提供集中控制和分布控制之间的平衡。
- 采用源路由技术,提供网络和上层应用快速交互的能力。
受益
使用Segment Routing技术,将带来明显的受益:
-
简化MPLS网络的控制平面。
Segment Routing使用控制器或者IGP集中算路和分发标签,不再需要RSVP-TE,LDP等隧道协议。Segment Routing可以直接应用于MPLS架构,转发平面没有变化。
-
提供高效TI-LFA(Topology-Independent Loop-free Alternate) FRR保护,实现路径故障的快速恢复。
在Segment Routing技术的基础上结合RLFA(Remote Loop-free Alternate) FRR算法,形成高效的TI-LFA FRR算法。TI-LFA FRR支持任意拓扑的节点和链路保护,能够弥补传统隧道保护技术的不足。
-
Segment Routing技术更具有网络容量扩展能力。
传统MPLS TE是一种面向连接的技术,为了维护连接状态,节点间需要发送和处理大量Keepalive报文,设备控制层面压力大。Segment Routing仅在头节点对报文进行标签操作即可任意控制业务路径,中间节点不需要维护路径信息,设备控制层面压力小。
此外,Segment Routing技术的标签数量是:全网节点数+本地邻接数,只和网络规模相关,与隧道数量和业务规模无关。
-
更好的向SDN网络平滑演进。
Segment Routing技术基于源路由理念而设计,通过源节点即可控制数据包在网络中的转发路径。配合集中算路模块,即可灵活简便的实现路径控制与调整。
Segment Routing同时支持传统网络和SDN网络,兼容现有设备,保障现有网络平滑演进到SDN网络,而不是颠覆现有网络。
基本概念
SR特性涉及的概念如下:
-
SR域(Segment Routing Domain):SR节点的集合。
-
SID:即Segment ID,用来标识唯一的段。在转发层面,可以映射为MPLS标签。
-
SRGB(Segment Routing Global Block):用户指定的为Segment Routing预留的本地标签集合。
Segment分类
标签 |
生成方式 |
作用 |
---|---|---|
Prefix Segment(前缀段) |
手工配置。 |
Prefix Segment用于标识网络中的某个目的地址前缀(Prefix)。 Prefix Segment通过IGP协议扩散到其他网元,全局可见,全局有效。 Prefix Segment通过Prefix Segment ID(SID)标识。Prefix SID是源端发布的SRGB范围内的偏移值,接收端会根据自己的SRGB计算实际标签值用于生成MPLS转发表项。 |
Adjacency Segment(邻接段) |
源节点通过协议动态分配。也可以手工配置。 |
Adjacency Segment用于标识网络中的某个邻接。 Adjacency Segment通过IGP协议扩散到其他网元,全局可见,本地有效。 Adjacency Segment通过Adjacency Segment ID(SID)标识。Adjacency SID为SRGB范围外的本地SID。 |
Node Segment(节点段) |
手工配置。 |
Node Segment是特殊的Prefix Segment,用于标识特定的节点(Node)。在节点的Loopback接口下配置IP地址作为前缀,这个节点的Prefix SID实际就是Node SID。 |
Prefix SID、Adjacency SID和Node SID的示例如图1所示。
图1 Prefix SID、Adjacency SID和Node SID
通俗的理解,Prefix Segment代表目的地址,Adjacency Segment代表数据包的外发链路,可以分别类似于传统IP转发中的目的IP地址和出接口。在IGP区域内,网元设备使用扩展IGP消息将自身的Node SID以及Adjacency SID进行泛洪,这样任意一个网元都可以获得其他网元的信息。
通过按序组合前缀(节点)SID和邻接SID,可以构建出网络内的任何路径。在路径中的每一跳,使用栈顶段信息区分下一跳。段信息按照顺序堆叠在数据头的顶部。当栈顶段信息包含另一个节点的标识时,接收节点使用等价多路径(ECMP)将数据包转发到下一跳。当栈顶段信息是本节点的标识时,接收节点弹出顶部段并执行下一个段所需的任务。
实际应用中Prefix Segment、Adjacency Segment、Node Segment可以单独使用,也可以结合使用。主要有如下三种情况。
Prefix Segment
基于Prefix Segment的转发路径是由IGP通过最短路径算法(SPF)计算得出。如图2所示,以节点Z为目的节点,其Prefix SID是100,通过IGP扩散之后,整个IGP域的所有设备学习到节点Z的Prefix SID,之后都会使用SPF算法得出一条到节点Z的最短路径(Shortest Path),也即开销最小路径。
图2 基于Prefix Segment的转发路径
如果网络中存在等价路径,则可以实现负载分担(ECMP);如果存在不等价路径,则可以形成链路备份。由此可见,基于Prefix Segment的转发路径并不是一条固定路径,头节点也无法控制报文的整条转发路径。
Adjacency Segment
如图3所示,通过给网络中每个邻接分配一个Adjacency Segment,然后在头节点定义一个包含多个Adjacency Segment的Segment List,就可以严格指定任意一条显式路径(Strict Explicit)。这种方式可以更好的配合实现SDN。
图3 基于Adjacency Segment的转发路径
Adjacency Segment + Node Segment
如图4所示,这种方式是将Adjacency Segment和Node Segment结合,通过Adjacency Segment,可以强制整条路径包含某一个邻接。而对于Node Segment,节点可以使用SPF算法计算最短路径,也可以负载分担。这种方式的路径并不是严格固定,所以也称作松散路径(Loose Explicit)。
图4 基于Adjacency Segment + Node Segment的转发路径
SR转发机制
SR可以直接应用在MPLS架构,转发机制没有变化。代表段的SID被编码为MPLS标签。段序列被编码为标签栈。要处理的段位于栈顶。一个段处理完成后,相关标签从标签栈中弹出。
SR标签冲突处理原则
由于Prefix Segment通过手工配置生成,不同设备上的配置可能发生标签冲突。标签冲突分为前缀冲突和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 BE
SR LSP是指使用Segment Routing技术建立的标签转发路径,由一个Prefix Segment或Node Segment指导数据包转发。SR-MPLS BE(Segment Routing-MPLS Best Effort)是指IGP使用最短路径算法计算得到的最优SR LSP。
SR LSP的创建过程和数据转发与LDP LSP类似。这种LSP不存在Tunnel接口。
SR LSP创建
SR LSP创建需要完成以下动作:
-
网络拓扑上报(仅在基于控制器创建LSP时需要)/标签分配。
-
路径计算。
对于SR LSP,主要基于前缀标签创建。目的节点通过IGP协议发布Prefix SID,转发器解析Prefix SID,并根据自己的SRGB计算标签值。此后各节点使用IGP协议收集的拓扑信息,根据最短路径算法计算标签转发路径,并将计算的下一跳及出标签(OuterLabel)信息下发转发表,指导数据报文转发。
图1 基于前缀标签的LSP创建
步骤 |
设备 |
操作 |
---|---|---|
1 |
D |
在D上配置SRGB,在D的Loopback口配置Prefix SID,生成转发表项并下发。之后D将SRGB和Prefix SID封装到LSP报文(如包含SR-Capabilities Sub-TLV的IS-IS Router Capability TLV-242),并将LSP报文通过IGP向全网扩散。 网络中其他设备接收到LSP报文后,解析D发布的Prefix SID,根据自己的SRGB计算标签值,同时根据下一跳节点发布的SRGB计算出标签值(OuterLabel)。使用IGP拓扑计算标签转发路径,然后生成转发表项。 |
2 |
C |
解析D发布的Prefix SID,根据自己的SRGB=[36000–65535]计算标签值,计算公式是:Label=SRGB的起始值+Prefix SID值,所以Label=36000+100=36100。 使用IS-IS拓扑计算出标签(OuterLabel),计算公式是:OuterLabel=下一跳设备发布的SRGB的起始值+Prefix SID值,在本例中,下一跳设备为D,D发布的SRGB范围是[16000–65535],所以OuterLabel=16000+100=16100。 |
3 |
B |
计算过程与C类似,Label=26000+100=26100,OuterLabel=36000+100=36100。 |
4 |
A |
计算过程与C类似,Label=20000+100=20100,OuterLabel=26000+100=26100。 |
数据转发
SR的标签操作类型和MPLS相同,包括标签栈压入(Push)、标签栈交换(Swap)和标签弹出(Pop)。
-
Push:当报文进入SR LSP时,入节点设备在报文二层首部和IP首部之间插入一个标签;或者根据需要,在报文标签栈的栈顶增加一个新的标签。
-
Swap:当报文在SR域内转发时,根据标签转发表,用下一跳分配的标签,替换SR报文的栈顶标签。
-
Pop:当报文在离开SR域时,根据栈顶的标签查找转发出接口之后,将SR报文的栈顶的标签剥掉。
图2 基于前缀标签的数据转发
步骤 |
设备 |
操作 |
---|---|---|
1 |
A |
A节点收到数据报文,添加标签值26100并转发。 |
2 |
B |
B节点收到该标签报文,进行标签交换,将标签26100弹出,换成标签36100。 |
3 |
C |
C节点收到该标签报文,进行标签交换,将标签36100弹出,换成标签16100。 |
4 |
D |
标签16100弹出,继续查路由转发。 |
PHP与MPLS QoS、TTL
倒数第二跳弹出PHP(Penultimate Hop Popping),是指在最后一跳节点(Egress节点),标签已经没有使用价值。这种情况下,可以利用PHP在倒数第二跳节点处将标签弹出,减少最后一跳的负担。最后一跳节点直接进行IP转发或者下一层标签转发。
PHP在Egress节点上配置。在图2中,未启用PHP特性,所以即使网元C是SR隧道的倒数第二跳,网元C仍旧使用了到达网元D的真实标签。如果启用了PHP特性,则网元C发往网元D的报文不会携带SR标签。
如果启用PHP特性,则对Egress节点的MPLS QoS和TTL特性都有影响,具体请参考表3。
标签方式 |
意义 |
Egress节点的MPLS EXP(QoS) |
Egress节点的MPLS TTL |
场景 |
---|---|---|---|---|
显式空标签(explicit-null) |
不支持PHP特性,Egress节点向倒数第二跳分配显式空标签。IPv4的显式空标签值为0。 |
MPLS EXP字段保留,支持QoS。 |
MPLS TTL正常。 |
节省Egress节点的标签资源。当端到端业务有QoS属性,需要携带在标签EXP中时,可以使用该方式。 |
隐式空标签(implicit-null) |
支持PHP特性,Egress节点向倒数第二跳分配隐式空标签。隐式空标签的值为3。 当一个网元发现自己被分配了隐式空标签时,它并不用这个值替代栈顶原来的标签,而是直接执行Pop操作。Egress节点直接进行IP转发或下一层标签转发。 |
Egress节点的报文无MPLS EXP字段,不支持QoS。 |
Egress节点的报文无MPLS TTL,也不能复制到IP TTL。 |
减少Egress节点的转发压力,提高转发效率。 |
非空标签(non-null) |
不支持PHP特性,Egress节点向倒数第二跳正常分配标签。 |
MPLS EXP字段保留,支持QoS。 |
MPLS TTL正常。 |
这种方式对Egress节点的资源消耗较大,不推荐使用。如果用户想要在Egress节点根据标签区分业务,可以使用该方式。 |