Segment Routing MPLS介绍

时间:2024-04-04 17:39:36

术语

术语

解释

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 MPLS介绍

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分类

表1 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

Segment Routing MPLS介绍

通俗的理解,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的转发路径

Segment Routing MPLS介绍

如果网络中存在等价路径,则可以实现负载分担(ECMP);如果存在不等价路径,则可以形成链路备份。由此可见,基于Prefix Segment的转发路径并不是一条固定路径,头节点也无法控制报文的整条转发路径。

Adjacency Segment

图3所示,通过给网络中每个邻接分配一个Adjacency Segment,然后在头节点定义一个包含多个Adjacency Segment的Segment List,就可以严格指定任意一条显式路径(Strict Explicit)。这种方式可以更好的配合实现SDN。

图3 基于Adjacency Segment的转发路径

Segment Routing MPLS介绍

Adjacency Segment + Node Segment

图4所示,这种方式是将Adjacency Segment和Node Segment结合,通过Adjacency Segment,可以强制整条路径包含某一个邻接。而对于Node Segment,节点可以使用SPF算法计算最短路径,也可以负载分担。这种方式的路径并不是严格固定,所以也称作松散路径(Loose Explicit)。

图4 基于Adjacency Segment + Node Segment的转发路径

Segment Routing MPLS介绍

SR转发机制

SR可以直接应用在MPLS架构,转发机制没有变化。代表段的SID被编码为MPLS标签。段序列被编码为标签栈。要处理的段位于栈顶。一个段处理完成后,相关标签从标签栈中弹出。

SR标签冲突处理原则

由于Prefix Segment通过手工配置生成,不同设备上的配置可能发生标签冲突。标签冲突分为前缀冲突和SID冲突,前缀冲突是指相同的前缀关联了两个不同的SID,SID冲突是指相同的SID关联到不同的前缀。

标签冲突处理原则:当冲突产生后,优先处理前缀冲突,之后根据处理结果再进行SID冲突处理,并按如下规则进行优选。

  1. 前缀掩码更大者优选;
  2. 前缀更小者优选;
  3. 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

使用冲突处理原则后效果如下:

  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
  2. 再根据上一步处理结果进行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创建

Segment Routing MPLS介绍

图1所示,基于前缀标签的LSP创建过程可以概括为表1

表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 基于前缀标签的数据转发

Segment Routing MPLS介绍

基于图2,数据转发过程可以概括为表2

表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

表3 PHP与MPLS QoS、TTL

标签方式

意义

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节点根据标签区分业务,可以使用该方式。