SR-MPLS技术白皮书
Copyright © 2021 新华三技术有限公司 版权所有,保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传播。
除新华三技术有限公司的商标外,本手册中出现的其它公司的商标、产品标识及商品名称,由各自权利人拥有。
本文中的内容为通用性技术信息,某些信息可能不适用于您所购买的产品。
云计算的发展对广域网提出了新的挑战,要求传统广域网进行变革。SD-WAN作为重构广域网的核心技术,通过自动部署、集中控制、智能调度及可视化等手段,加速网络交付,优化应用体验,提高带宽利用率,简化网络运维,满足了云计算对广域网的需求。
智能调度是新一代广域网的一个关键能力,对应用质量的保障、带宽资源的优化非常重要。现有的MPLS及RSVP-TE等流量工程技术可以满足应用对带宽的差异化保障需求,但存在协议种类多、部署复杂、管理困难、可扩展性差等问题,无法满足新一代广域网所要求的动态部署、灵活调度、快速、可扩展等方面的要求。因此,出现了一种新的协议Segment Routing。
SR(Segment Routing,分段路由)采用源路径选择机制,预先在源节点封装好路径所要经过节点分配的SID(Segment Identifier,段标识),当报文经过SR节点时,该节点根据报文的SID对报文进行转发。除源节点外,其它节点无需维护路径状态。SR-MPLS(Segment Routing with MPLS,MPLS段路由)是指在MPLS网络中使用SR、将标签作为SID对报文进行转发。
SR-MPLS既很好地继承了MPLS技术的优势,又能够适应未来SDN等技术的发展,为SD-WAN网络提供了一种灵活高效的控制手段。SR-MPLS具有使用简单、容易扩展的特点,能够更好地实现流量调度和路径优化,保障关键业务质量、均衡流量分布、提高专线利用率和降低线路成本。
SR-MPLS简单、高效、易扩展,具有很多不可比拟的优势:
· 面向SDN架构设计的协议,融合了设备自主转发和集中编程控制的优势,能够更好地实现应用驱动的网络。同时,可以天然支持传统网络和SDN网络,兼容现有设备,保障网络平滑演进。
· 简化设备控制平面,减少路由协议数量,简化运维管理,降低运营成本。SR-MPLS网络需要维护的标签转发表规模很小,一台设备上维护的转发表数为N(节点标签数量,一般为全网节点数量)+A(邻接标签数据,一般为设备接口数量),而传统MPLS网络则为N2。
· 支持广泛的部署场景,包括骨干网、DCI网络及DC网络等场景。
· 能以更简单的方式实现TE、FRR、OAM等功能,从而简化网络的设计和管理,快速获得网络服务,优化整个网络的性能。
SR-MPLS主要涉及如下概念:
· SR节点:开启SR-MPLS功能的设备通常被称为SR节点。其中,负责为进入SR-MPLS网络的报文添加标签的入口节点称为源节点;负责剥离报文中标签、并将报文转发给目的网络的出口节点称为尾节点。
· SR域:SR节点的集合。
· Segment:段,用来指明节点对入报文所执行的操作。在SR-MPLS中是指对标签的操作,即压入标签、交换标签和弹出标签。
· SID:段标识,在SR-MPLS中为MPLS标签。
· 分段类型:根据SID分配形式不同,SR的分段类型有如下两种:
· Prefix Segment:前缀类型的段,按目的IP地址前缀为网络的节点分配SID并建立转发表项。
· Adjacency Segment:邻接类型的段,为节点的不同邻接链路分别分配SID。
· SRLSP(Segment Routing Label Switched Path,基于段路由的LSP):以标签作为SID对报文进行段路由转发,报文所经过的路径称为SRLSP。
· SRGB(Segment Routing Global Block,分段路由全局标签段):专门用于Prefix Segment的全局标签范围,各个节点的SRGB范围可以不同。SRGB的标签范围由标签段基值和Range确定,其中标签段基值表示SRGB标签段的最小值,Range表示标签数目。
· SRLB(Segment Routing Local Block,分段路由本地标签段):专门用于Adjacency Segment的本地标签范围,各个节点的SRLB范围相同。SRLB的标签范围由标签段基值和Range确定,其中标签段基值表示SRLB标签段的最小值,Range表示标签数目。
SR-MPLS转发基于MPLS架构,转发机制与MPLS相同,使用MPLS标签作为SID对报文进行转发。采用SR-MPLS转发报文前,需要完成以下工作:
(1) 进行SID分配,为报文转发路径中的每个节点和链路规划标签信息。SID根据配置方式分为
¡ 静态SID:手工指定SID。
¡ 动态SID:由IGP/BGP协议动态分配SID,根据路由协议分为IS-IS SR、OSPF SR和BGP SR。
(2) 建立标签转发表项,SR域内的设备根据分配的标签信息形成本地的标签转发表项。
(3) 建立SRLSP,SRLSP可以手工配置,也可以通过IGP/BGP协议动态建立或通过控制器下发。
(4) 完成上述步骤后,SRLSP即可用来转发流量。当源节点接收到用户网络的报文后,会为报文封装所经过路径上的标签信息,并通过SRLSP将报文转发给尾节点;尾节点从SRLSP接收到报文后,会剥离报文中的标签,根据原始报文的目的地址查找路由表进行报文转发。
如果将SRLSP与上层应用关联,如MPLS TE,则可以实现通过SRLSP来转发MPLS TE等流量。
IGP SR是指对IGP协议(如IS-IS、OSPF)进行扩展,在AS自治域内,通过IGP协议报文通告SID,使AS内部所有节点学习到SID信息,并生成各节点的SID转发表项。
通过IGP协议动态分配和通告的SID类型分为Prefix SID和Adjacency SID。
每个SR节点均手工为自己的Loopback地址指定SID,该SID用来标识特定的SR节点。在SR域内通过IGP通告SR节点的Prefix SID,其他节点根据收到的报文自动计算到达该SR节点的Prefix SID。通告的形式有两种:
· 通告绝对值:直接将Prefix SID和本地SRGB标签段通告出去;
· 通告索引值:为每个SR节点分配一个全局唯一的Index,即每个SR节点的前缀与Index一一对应。通过IGP扩展通告各个SR节点的SRGB标签段和段内Index。SR节点的SRGB基值+前缀的Index即为该节点为该前缀分配的Prefix SID。
目前,仅支持以索引值的形式通告Prefix SID。
SR域内的其他设备根据收到的路由信息计算出本地的标签转发表项,入标签为本地SRGB标签段基值+Index,出标签为下一跳的SRGB基值+Index。
图1 根据IGP Prefix SID建立标签转发表项
如图1所示,网络管理员将索引值201分配给Device C上的Loopback地址1.1.1.1/32。Device C通过IGP协议报文将该索引值以及本地SRGB通告出去。运行IGP SR的节点,形成的标签转发表项如下:
(1) Device C上标签转发表项的入标签为16201;
(2) Device B收到该通告后,形成SRLSP标签转发表项,入标签为16201,出标签为16201,下一跳为Device C;
(3) Device A收到该通告后,形成SRLSP标签转发表项,入标签为16201,出标签为16201,下一跳为Device B。
SR域内通过IGP协议为邻接链路分配SID,该SID用来标识本地设备的特定邻接链路。该SID只在本地有效,不同设备上的Adjacency SID可以相同。Adjacency SID分配方式有两种:
· 自动分配Adjacency SID:自动从SRLB中选择标签分配给邻接链路。
· 手工指定Adjacency SID:
¡ 绝对值方式:直接指定Adjacency SID。
¡ 索引值方式:为邻接链路手工指定Index。SR节点的SRLB基值+Index即为该节点为邻接链路分配的Adjacency SID。
图2 根据Adjacency SID建立标签转发表项
如图2所示,设备之间运行IGP协议,当IGP邻居建立后,Device A为与Device B连接的链路分配的标签为203,Device B为与Device C连接的链路分配的标签为202,Device C为与Device D连接的链路分配的标签为201。各设备上形成的标签转发表项如下:
(1) Device A形成标签转发表项的入标签203、下一跳为Device B;
(2) Device B形成标签转发表项的入标签为202、下一跳为Device C;
(3) Device C形成标签转发表项的入标签为201、下一跳为Device D。
为了完成在IGP协议报文通告SID功能,IGP协议报文进行了一些扩展。
· IS-IS协议主要定义了针对SID和网元SR能力的子TLV(Sub-TLV):
¡ Prefix-SID Sub-TLV:用于通告SR的Prefix SID。
¡ Adj-SID Sub-TLV:用于在P2P网络中通告SR的Adjacency SID。
¡ LAN-Adj-SID Sub-TLV:用于在LAN网络中通告SR的Adjacency SID。
¡ SID/Label Sub-TLV:用于通告SR的SID或MPLS Label。
¡ SID/Label Binding TLV:用于通告前缀和SID的映射。
¡ SR-Capabilities Sub-TLV:用于对外通告SR能力。
¡ SR-Algorithm Sub-TLV:用于对外通告使用的算法。
¡ SR Local Block Sub-TLV:用于通告网元为本地SID预留的标签范围。
· OSPF协议主要定义了针对SID和网元SR能力的TLV和子TLV(Sub-TLV):
¡ SR-Algorithm TLV:用于对外通告使用的算法。
¡ SID/Label Range TLV:用于通告SR的SID或MPLS Label范围。
¡ SRMS Preference TLV:用于通告网元做为SR Mapping Server的优先级。
¡ SID/Label Sub-TLV:用于通告SR的SID或MPLS Label。
¡ Prefix SID Sub-TLV:用于通告SR的Prefix SID。
¡ Adj-SID Sub-TLV:用于在P2P网络中通告SR的Adjacency SID。
¡ LAN Adj-SID Sub-TLV:用于在LAN网络中通告SR的Adjacency SID。
BGP SR是指对BGP协议进行扩展,在AS自治域内或AS自治域之间,通过BGP协议报文分配或通告SID。
根据BGP协议分配和通告SID方式不同可以分为Prefix SID和BGP-EPE。在域内或域间发布前缀路由时可以携带发布Prefix SID。BGP-EPE仅能为BGP对等体或域间链路分配Peer SID,但Peer SID仅本地有效,不能传递发布。
BGP协议报文中携带一种新的路由属性BGP Prefix-SID,通过BGP Prefix-SID中定义的TLV携带并发布Prefix SID信息并建立标签转发表项。BGP Prefix-SID路由属性和Prefix SID相关TLV报文结构如图3所示:
图3 BGP Prefix-SID路由属性及TLV结构图
BGP Prefix-SID属性携带在BGP Update报文中,是BGP为支持SR而扩展的一种路由属性:
· 路由属性的Flags字段:长度1字节,标识该属性是可选,可传递的。
· Code属性字段:长度1字节,取值为40,标识路由属性的类型。
· Length字段:长度2字节,表示BGP Prefix-SID属性携带的TLV总长度。
在SR-MPLS转发平面BGP Prefix-SID属性会携带两种TLV:
· Label-Index TLV
¡ Type:长1字节,取值为1。
¡ Length:长2字节,取值为7。
¡ Label-Index:长4字节,表示Prefix SID的标签索引值。
· Originator SRGB TLV
¡ Type:长1字节,取值为3。
¡ Length:长2字节,取值取决于SRGB字段的个数。
¡ SRGB:长6字节,表示通告Prefix SID的BGP对等体本地的SRGB起始值和范围。SRGB字段可能出现多次。
BGP通告Prefix SID支持以下两种分配方式:
· 将IGP路由引入BGP,BGP向对等体通告路由前缀时,使用IGP协议为路由前缀分配的SID。
· 从BGP对等体学习路由时指定路由策略,通过路由策略中配置SID的索引值绑定SID和路由前缀。
对BGP协议进行扩展后,BGP对等体之间可以通过协议报文通告Prefix SID。
BGP为前缀分配Prefix SID后,将路由前缀和SID索引值一同通告给对等体,其他节点根据收到的BGP报文中的索引值和本地SRGB计算到达该SR节点的Prefix SID,入标签为本地SRGB标签段基值+Index,出标签为收到的SID。
通过BGP协议动态分配的Prefix SID信息只能通过IPv4单播路由在BGP对等体间进行交换,通常应用于跨域VPN-Option C方式组网。
图4 根据Prefix SID建立标签转发表项
如图4所示,Device D引入Loopback地址的路由时,为其分配索引值201,并计算SID,然后通过BGP协议报文将该SID以及SID的索引值通告出去。运行BGP SR的节点,形成的标签转发表项如下:
· Device D上标签转发表项的入标签为16201;
· Device C收到该通告后,形成SRLSP标签转发表项,入标签为16201,出标签为16201,下一跳为Device D;
· Device B收到该通告后,形成SRLSP标签转发表项,入标签为16201,出标签为16201,下一跳为Device C。
· Device A收到该通告后,形成SRLSP标签转发表项,入标签为16201,出标签为16201。下一跳为Device B。
BGP-EPE(BGP Egress Peer Engineering,BGP出口对等体工程)功能通过为对等体分配SID来标识指定对等体或者链路,从而控制跨域的流量从指定对等体或链路进行转发。
BGP-EPE为对等体分配SID时可以自动分配,也可以手工指定。如图5所示,BGP-EPE能够针对对等体分配以下SID:
· PeerNode SID:节点类型SID,用于标识一个对等体节点。每一个对等体分配一个PeerNode SID。对于基于Loopback接口建立的EBGP邻居,其对应的物理链路可能有多条,那么针对该邻居的PeerNode SID就会对应多个出接口,转发时可以使用任意一个出接口转发,也可以使用多个出接口负载分担。
· PeerAdj SID:邻接类型SID,用于标识到达对等体的一条链路。对于基于Loopback接口建立的EBGP邻居,其对应的物理链路可能有多条,则每条链路都会分配一个PeerAdj SID,转发时只能使用指定的链路(对应指定的出接口)进行转发。
· PeerSet SID:Set类型SID,用于标识一组对等体。BGP支持将一组对等体规划为一个Set,基于该组分配SID,这个SID称为PeerSet SID。PeerSet SID在转发时可以对应多个出接口。一个PeerSet SID对应多个PeerNode SID和PeerAdj SID。
如图5所示,BGP-EPE的标签分配方式为:
· ASBR 1和ASBR 3间存在两条直连物理链路,二者通过LoopBack接口建立EBGP邻居,BGP-EPE针对对等体分配了PeerNode SID 28001,为物理链路分配了PeerAdj SID 18001和18002。当通过PeerNode SID转发流量时,会在两条链路间负载分担。
· ASBR 1和ASBR 5,ARBR 2和ASBR 4,以及ASBR 2和ASBR 5仅使用直连物理接口建立的EBGP邻居,BGP-EPE为对等体只分配了PeerNode SID 28002,28003和28004。
· ASBR 4、ASBR 5均和ASBR 2建立EBPG邻居关系,BGP-EPE将对等体ASBR 4和ASBR 5加入同一Set组,为其分配PeerSet SID 29001。当通过PeerSet SID转发流量时,会在多个邻居间负载分担。
通过BGP-EPE功能为邻居分配的SID仅具有本地意义,不会向其他设备通告。不同设备的PeerNode SID和PeerAdj SID可以相同。
BGP-EPE目前应用于跨域VPN业务。
通过在边界路由器上配置BGP-EPE功能,为指定对等体/对等体组分配SID。
图6 跨域SR-MPLS TE场景配置BGP-EPE功能建立标签转发表项
如图6所示,以跨域SR-MPLS TE标签转发表项建立过程为例:
· 在Device A上建立从Device A到Device B域内SR-MPLS TE隧道并绑定BSID 4000。BSID的详细内容,请参见“5.1.2 Binding SID”。
· 在Device B上开启BGP-EPE功能,分别为EBGP邻居Device C和Device D分配PeerNode SID,在EBGP邻居关系建立后:
¡ Device B为EBGP邻居Device C分配PeerNode SID 5000,形成SRLSP标签转发表项,入标签5000、下一跳为Device C。
¡ Device B为EBGP邻居Device D分配PeerNode SID 6000,形成SRLSP标签转发表项,入标签6000、下一跳为Device D。
· 在Device C上建立Device C到Device E域内SR-MPLS TE隧道并绑定BSID 7000,类似地建立Device D到Device E域内SR-MPLS TE隧道并绑定BSID 8000。
· 在Device A上通过引用AS域内SR-MPLS TE隧道BSID和Peer SID,建立到Device E的端到端隧道。那么经过Device C到Device E的隧道路径为(4000,5000,7000);经过Device D到Device E的隧道路径为(4000,6000,8000)。
以从Device A经过Device C到Device E的隧道路径为例,报文转发过程如下:
(1) Device A节点上的流量封装SRH扩展头,显式路径为(4000,5000,7000)。根据4000查找标签转发表项,判断该标签对应的是SR-MPLS TE隧道,4000代表的标签栈是(16101,16102),弹出标签4000并压入AS 100域内显式路径的标签(16101,16102),根据域内显式路径(16101,16102)转发到Device B。
(2) Device B弹出AS 100域内显式路径标签后,根据5000查找标签转发表,判断该标签对应的下一跳为Device C,弹出5000标签后,发送给下一个节点Device C。
(3) 中间节点Device C的转发过程与节点Device A类似,通过域内隧道将报文转发给Device E。
报文到达尾节点Device E后,Device E删除报文中的域内标签后,根据报文目的IP地址查找FIB表转发。
在SID标签分配完成,SR域内设备建立标签转发表项后需要计算SRLSP,SRLSP建立方式包括:
· 静态配置:根据转发路径需要,在隧道头节点上指定报文转发时携带的标签栈。标签栈中的每个标签对应一个Prefix SID或Adjacency SID,根据Prefix SID或Adjacency SID可以找到报文的出标签、下一跳等信息。
· 根据IGP/BGP协议动态建立:SR节点通过IGP/BGP协议搜集SR-MPLS网络中的前缀SID信息,并根据该信息及IGP/BGP网络拓扑信息,通过SPF算法计算出到达SR-MPLS网络中各个SR节点的最短路径,并在该路径上建立SRLSP,即SR-MPLS BE(MPLS Segment Routing Best Effort)。
· 控制器算路:由控制器算路并下发算路路径到源节点,在设备上创建SRLSP。该方式的详细介绍请参见控制器相关资料。使用控制器算路建立SRLSP可以实现SR-MPLS TE(MPLS Segment Routing Traffic Engineering),可以通过丰富的链路信息更灵活地选择转发路径。
根据SID分配方式的不同,SR-MPLS报文转发过程主要分为以下几种:
· Prefix方式:在源节点将为尾节点分配的Prefix SID封装到报文中,各中间节点查找标签转发表项进行转发。报文在SRLSP转发中间节点执行的动作是交换标签。
· Adjacency方式:在源节点将所有经过节点为邻接链路分配的Adjacency SID组成的标签栈封装到报文中,各中间节点根据标签栈最外层标签查找下一跳邻居,并在转发报文时删除标签栈最外层标签。报文在SRLSP转发中间节点执行的动作是弹出标签。
· Prefix/Adjacency方式:采用Prefix和Adjacency组合方式进行报文转发。
如图7所示,Device A通过SRLSP将报文转发到Device E时,需要为报文指定出标签为16201。Prefix方式报文转发过程如下:
(1) 在源节点Device A根据16201查找标签转发表项,判断该标签对应的下一跳为Device B,出标签为16201,Device A为报文封装标签16201,发送给中间节点Device B。
(2) 中间节点Device B的入标签为16201,出标签为16201,将16201替换为16201,发送给下一个中间节点Device C继续转发。
(3) 中间节点Device C及Device D的转发过程和Device B类似。
(4) 报文到达尾节点Device E后,Device E删除报文中的标签16201,根据报文目的IP地址查找FIB表转发。
图7 Prefix方式报文转发过程示意图
如图8所示,Device A、Device B、Device C、Deivce D为链路分配的Adjacency SID分别为200、201、202、203。Device A通过SRLSP将报文转发到Device E时,需要为报文指定出标签栈为(200,201,202,203)。Adjacency方式报文转发过程如下:
(1) 在源节点Device A根据栈顶标签200查找标签转发表项,判断该标签对应的下一跳为Device B。Device A为报文封装标签栈(201,202,203)后,将该报文转发给Device B。
(2) 中间节点Device B接收到报文后,根据入标签201查找标签转发表项,判断该标签对应的下一跳为Device C。Device B删除标签栈最外层标签201后,发送给下一个中间节点Device C继续转发。
(3) 中间节点Device C接收到报文后,根据入标签202查找标签转发表项,判断该标签对应的下一跳为Device D。Device C删除标签栈最外层标签202后,发送给下一个中间节点Device D继续转发。
(4) 中间节点Device D接收到报文后,根据入标签203查找标签转发表项,判断该标签对应的下一跳为Device E。Device D删除标签栈最外层标签203后,发送给Device E继续转发。
(5) Device E收到IP报文后,据报文目的IP地址查找FIB表转发。
图8 Adjacency方式报文转发过程示意图
如图9所示,Device C为本节点分配的Prefix SID索引值为1,Device A、Device B、Device C上对应的Prefix SID分别为16001、16001、16001,Device C、Device D为邻接链路分配的Adjacency SID分别为16、17,Device A通过SRLSP将报文转发到Device E时,需要为报文指定出标签栈为(16001,16,17)。
Adjacency/Prefix组合方式报文转发过程如下:
(1) 在源节点Device A根据16001查找标签转发表项,判断该标签对应的下一跳为Device B,出标签为16001,Device A为报文封装标签栈(16001,16,17),发送给中间节点Device B。
(2) 中间节点Device B入标签为16001,出标签为16001,将16001替换为16001,发送给下一个中间节点Device C继续转发。
(3) 中间节点Device C接收到报文后,根据入标签16001和16查找标签转发表项,判断该标签对应的下一跳为Device D。Device C删除标签栈最外层标签(16001,16)后,发送给下一个中间节点Device D继续转发。
(4) 中间节点Device D接收到报文后,根据入标签17查找标签转发表项,判断该标签对应的下一跳为Device E。Device D删除标签栈最外层标签17后,发送给Device E继续转发。
(5) Device E收到IP报文后,据报文目的IP地址查找FIB表转发。
图9 Adjacency/Prefix组合方式报文转发过程示意图
IP报文进入MPLS网络和IP报文离开MPLS网络时,TTL的处理方式分为以下几种:
· 使能TTL复制功能
Ingress节点为IP报文压入标签时,将原IP报文中的TTL值复制到新增加的标签的TTL域。LSR转发标签报文时,对标签的TTL值做减一操作。LSR弹出报文的标签时,将标签的TTL值复制回IP报文。使用这种方式时,MPLS骨干网中的节点对用户网络的报文可见。报文沿着LSP传输的过程中,TTL逐跳递减,Tracert的结果将反映报文实际经过的路径。
图10 使能TTL复制功能时的处理过程
· 未使能TTL复制功能
Ingress节点为IP报文压入标签时,不会将原IP报文中的TTL值复制到新增加的标签的TTL域,标签的TTL取值为255。LSR转发标签报文时,对标签的TTL值做减一操作。LSR弹出标签时,不修改IP TTL的值。使用这种方式时,MPLS骨干网中的节点对用户网络的报文不可见。Tracert的结果不包括MPLS骨干网络中的每一跳,从而隐藏MPLS骨干网络的结构。
图11 未使能TTL复制功能时的处理过程
SR-MPLS BE(MPLS Segment Routing Best Effort)是指IGP使用最短路径算法计算得到的最优SRLSP,由SID指导数据转发过程。SR LSP的创建过程和数据转发与LDP LSP类似。SR-MPLS BE不需要建立隧道接口。
图12 SR-MPLS BE的SRLSP隧道创建
SR-MPLS BE的SRLSP隧道创建与IGP计算收敛过程完全同步,当IGP算路完成时,SR-MPLS BE的SRLSP隧道也同步建立。如图12所示,SR-MPLS BE的SRLSP隧道建立过程如下:
(1) 在Device C上Loopback接口上配置Prefix SID,生成转发表项并通过IGP通告。Device C与Device B建立IGP邻居关系后,开始发布链路状态更新报文LSP(Link State PDU),LSP报文将携带SR的相关信息在IGP网络内部泛洪。域内设备通过ISIS协议互通,ISIS协议在LSP报文中将携带含SR Capabilities Sub-TLV的IS-IS Router Capability TLV-242通告Device C支持SR-MPLS能力,并在Sub-TLV中携带Prefix SID标签信息和Device C的SRGB信息。
(2) Device B接收到Device C发布的LSP报文后,发现本地LSDB中不存在去往1.1.1.1/32的路由,更新本地LSDB。同时去往路由前缀1.1.1.1/32的LSP中携带了Prefix SID,Device B根据Prefix SID信息生成本地的标签转发表项,包括出方向标签=Device C的SRGB+Index,入方向标签= Device B的SRGB+Index。同时Device B将更新后的LSDB通过SNP报文向其他邻居发布。
(3) Device A收到Device B更新后的SNP报文,发现存在新的路由前缀信息,向Device B请求完整的LSP。当Device A收到LSP报文后重复第二步Device B的计算过程并更新自己的LSDB生成本地的标签转发表项。最终达到整个IGP网络链路状态数据库LSDB同步。
SR-MPLS BE的数据转发可以参见“3.5.1 Prefix方式报文转发过程”。
SR-MPLS TE(MPLS Segment Routing Traffic Engineering)是使用SR作为控制协议的一种新型的TE隧道技术。与SR-MPLS BE不同在于SRLSP的建立方式,SR-MPLS TE的隧道可以是由静态手工配置显式路径创建,也可以是通过控制器算路,并将标签栈下发给设备来创建。在SR-MPLS TE隧道的入节点上,需要创建隧道Tunnel接口,设备封装标签栈,控制报文在网络中的传输路径。
标签栈是标签的排序集合,用于标识一条完整的LSP。标签栈中每一个标签标识一个出接口,整个标签栈标识了整条转发路径LSP的所有链路。在报文转发过程中,通过标签栈中的栈顶标签查找对应的标签转发表转发。将标签栈中所有标签弹出后,报文就走完了整条LSP,到达SR-MPLS TE隧道的目的地。
SR-MPLS TE作为一个Tunnel接口,如果为这个接口分配一个Adjacency SID,那么该Adjacency SID可以作为MPLS TE隧道的唯一标识,利用这个Adjacency SID就可以将流量导入SR-MPLS TE隧道。这个标识SR-MPLS TE隧道的Adjacency SID就是Binding SID。
通过Binding SID也可以实现标签粘连的功能。当标签栈深度超过转发器所支持的标签栈深度时,一个标签栈无法携带整条LSP的标签,控制器需要为转发器分配多个标签栈,在合适的节点下发标签栈的同时分配一种特殊的标签,通过该特殊标签将这些标签栈关联起来,实现逐段转发。这种特殊的标签称为粘连标签,这个合适的节点称为粘连节点。
图13 控制器通过NETCONF下发隧道配置信息创建隧道示意图
如图13所示,通过控制器建立SR-MPLS TE隧道过程如下:
(1) 控制器基于MPLS TE的隧道约束属性,通过PCE(Path Computation Element,路径计算单元)计算路径,计算出来的路径根据拓扑和邻接标签,将整条路径的邻接标签整合在一起,生成一个标签栈(即算路结果)。
当标签栈深度超过设备所支持的标签栈深度时,一个标签栈无法携带所有的邻接标签,则控制器需要将整条路径分为多个标签栈携带。
如图13所示,控制器计算出SR-MPLS TE隧道路径为PE 1->P 3->P 1->P 2->P 4->PE 2,对应2个标签栈(2001,2009,2101)和(2305,2601,2689),其中2101为粘连标签,其他为邻接标签。
(2) 控制器通过NETCONF和PCEP分别将隧道配置信息和标签栈下发给设备。
如图13所示,控制器下发标签栈的过程如下:
a. 控制器将标签栈(2305,2601,2689)下发给粘连节点P 1,并分配一个2101的粘连标签与该标签栈关联。
b. 控制器将2101作为PE 1上标签栈的栈底,将标签栈(2001,2009,2101)下发给入节点PE 1。
(3) 设备根据控制器下发的隧道配置和标签栈信息建立SR-MPLS TE隧道。
通过静态手工配置显式路径创建SR-MPLS TE的隧道过程:
(1) 根据规划,手工配置显式路径,指定显式路径中到达目的节点时所经过节点的标签或IP地址。
(2) 创建SR-MPLS TE隧道的Tunnel接口,指定接口的信令协议为Segment Routing。
(3) 通过在SR-MPLS TE隧道的Tunnel接口下引用显式路径静态建立SRLSP。
设备根据承载SR-MPLS TE隧道的LSP对应的标签栈,对报文进行标签操作,并根据栈顶标签逐跳查找转发出接口,指导数据报文转发到隧道目的地址。
图14 SR-MPLS TE数据报文转发示意图
如图14所示,控制器计算出SR-MPLS TE隧道路径为PE 1->P 3->P 1->P 2->P 4->PE 2,对应2个标签栈(2001,2009,2101)和(2305,2601,2689),分别下发给入节点PE 1和粘连节点P 1。其中,2101为粘连标签,与标签栈(2305,2601,2689)相关联,其他为邻接标签。这种方式的SR-MPLS TE数据报文转发过程如下:
(1) 入节点PE 1为数据报文添加标签栈(2001,2009,2101),然后根据栈顶的标签2001匹配标签转发表,找到对应的转发出接口为Interface A2,之后将标签2001弹出。报文携带标签栈(2009,2101),通过Interface A2向下游节点P 3转发。
(2) 中间节点P 3收到报文后,根据栈顶的标签2009匹配标签转发表,找到对应的转发出接口为Interface C3,之后将标签2009弹出。报文携带标签栈(2101),通过Interface C3向下游节点P 1转发。
(3) 粘连节点P 1收到报文后,通过查询粘连标签表项识别出栈顶标签2101为粘连标签,将粘连标签2101交换为与其关联的标签栈(2305,2601,2689),然后根据新的栈顶标签2305匹配标签转发表,找到对应的转发出接口为Interface B2,之后将标签2305弹出。报文携带标签栈(2601,2689),通过Interface B2向下游节点P 2转发。
(4) 节点P 2、P 4收到报文后,转发方式与P 3相同。直到节点P 4弹出最后一个标签2689,将IP报文转发至节点PE 2。
(5) 出节点PE 2收到不带标签的IP报文,根据目的IP地址查找IP路由表转发。
当SR-MPLS BE或SR-MPLS TE隧道建立之后,流量不会自动通过SR-MPLS BE或SR-MPLS TE隧道转发,需要通过如下方法将业务流量引入SR-MPLS BE或SR-MPLS TE隧道。
静态路由是将流量引入SR-MPLS BE或SR-MPLS TE隧道的最简便、直观的方法。
使用静态路由转发流量,是指定义一条通过Tunnel接口到达目的网络地址的静态路由,把流量引入到SR-MPLS BE或SR-MPLS TE隧道上进行转发。
VPN流量通过隧道进行转发时,缺省采用LDP LSP而非SR-MPLS BE或SR-MPLS TE隧道。如果缺省情况不能满足VPN的需求,需要对VPN应用隧道策略,将VPN流量引入到SR-MPLS BE或SR-MPLS TE隧道中。
管理员可以根据业务需求,通过如下隧道策略方式将VPN流量引入到SR-MPLS BE或SR-MPLS TE隧道中:
· 隧道绑定策略:隧道绑定是指将某个目的地址与某条隧道进行绑定,从而使应用了隧道绑定的VPN业务到该目的地址的流量只能承载在该条隧道上。
· 首选隧道策略:该方式为VPN流量显式指定了一条SR-MPLS TE隧道,选择的隧道是明确的、可以预期的,便于网络流量规划。
· 负载分担策略:该策略可以改变VPN选择的隧道类型,按照配置的隧道类型优先级顺序将SR-MPLS BE或SR-MPLS TE隧道选择为VPN的公网隧道。
使用PBR(Policy-based Routing,基于策略的路由)转发流量,是指定义策略路由,在策略路由中将匹配ACL规则的流量的出接口指定为Tunnel接口,并在流量的入接口上应用该策略路由,从而实现将流量引入到MPLS TE隧道上进行转发。
策略路由方式不仅可以根据目的IP地址来匹配需要通过Tunnel接口转发的流量,还可以根据源IP地址、协议类型等来匹配流量。与静态路由方式相比,策略路由方式更加灵活,但是配置比较复杂。
自动路由发布是指将SR-MPLS TE隧道发布到IGP(OSPF或IS-IS)路由中,让SR-MPLS TE隧道参与IGP路由的计算,使得流量可以通过SR-MPLS TE隧道转发。
自动路由发布包括以下两种方式:
· IGP Shortcut:也称为自动路由宣告(AutoRoute Announce),该功能将SR-MPLS TE隧道当作一条直接连接隧道Ingress节点(头节点)和Egress节点(尾节点)的链路,在隧道的Ingress节点上进行IGP路由计算时考虑该SR-MPLS TE隧道。
· 转发邻接:该功能将SR-MPLS TE隧道当作一条直接连接隧道Ingress节点和Egress节点的链路,通过IGP路由协议将该链路发布到网络中,以便网络中的节点在路由计算时使用SR-MPLS TE隧道。
IGP Shortcut和转发邻接功能的区别在于:
· 在隧道的Ingress节点上开启IGP Shortcut功能后,只有Ingress节点计算IGP路由时会考虑SR-MPLS TE隧道。IGP Shortcut功能不会通过IGP路由协议将SR-MPLS TE隧道作为一条链路发布出去。因此,其他设备在路由计算时不会考虑SR-MPLS TE隧道。
· 在隧道的Ingress节点上开启转发邻接功能后,Ingress节点会通过IGP路由协议将SR-MPLS TE隧道作为一条链路发布出去。因此,IGP网络中的所有设备在路由计算时都会考虑SR-MPLS TE隧道。
图15 IGP Shortcut与转发邻接示意图
在图15中,Device D到Device C之间存在一条SR-MPLS TE隧道,IGP Shortcut只能使Ingress节点Device D在计算IGP路由时利用这条隧道,Device A并不能利用这条隧道到达Device C。如果配置了转发邻接功能,则Device A也能够知道这条SR-MPLS TE隧道的存在,从而可以利用该隧道将到Device C的流量转发到Device D上。
在SR-MPLS和LDP共存的网路环境中,需要解决SR网络和LDP网络之间互通的问题。SR与LDP互通是一项让SR协议和LDP协议在同一网络中共同工作的技术。通过此技术可以让SR网络连接到LDP网络中,实现两个网络之间的MPLS转发。
SR与LDP互通包括以下组网方式:
· SR to LDP:数据流量从SR网络转发到LDP网络。
· LDP to SR:数据流量从LDP网络转发到SR网络。
· SR over LDP:SR网络跨越LDP网络交互数据流量。
· LDP over SR:LDP网络跨越SR网络交互数据流量。
如图16所示,LDP网络和SR-MPLS网络的标签分配方式如下:
· 在LDP网络中,设备只要学习到前缀路由,即可为其分配标签,无需特殊处理。例如,对于SR网络中的前缀1.1.1.1/32,LDP网络中的设备只要学习到该路由,就会为其分配标签。
· 在SR-MPLS网络中,设备不仅要学习到前缀路由,还需要接收到该前缀的SID,才会为其分配本地的SID。例如,对于LDP网络中的前缀5.5.5.5/32,SR网络中的设备虽然能够学习到其前缀路由,但由于LDP设备无法发布5.5.5.5/32的前缀SID,因此,SR设备不会为其分配本地的SID。
图16 LDP网络和SR-MPLS网络的标签分配示意图
如图17所示,通过部署SRMS和SRMC,可以解决SR设备无法为LDP网络前缀分配SID的问题。
· SRMS(SR Mapping Server,SR映射服务器):代替LDP网络中的设备设置前缀地址与SID的映射关系,并且发布给SRMC。
· SRMC(SR Mapping Client,SR映射客户端):接收SRMS发布的前缀地址与SID的映射关系,为该前缀地址分配SID,并创建标签转发表。
图17 SR映射示意图
如图18所示,为了实现SR与LDP互通,在同时连接SR网络与LDP网络的设备上,对于如下两种情况需要进行标签映射:
· SR网络到LDP网络的标签连接:Device B运行的LDP自动为从节点Device C学到的主机路由分配出标签,同时Device B作为SRMS为从Device C学到的主机路由分配Prefix SID通告给SR域内的Device A作为入标签。当不存在到达LDP网络设备的有效SR-MPLS出标签时,将有效的LDP出标签作为SR-MPLS出标签。
· LDP网络到SR网络的标签连接:Device B运行的SR从节点Device A学到的主机路由以及SR的出标签Prefix SID,同时Device B将从节点Device A学到的主机路由发布给Device C后,Device C触发LDP为路由自动分配出标签此出标签在Device B上就是入标签,而Device B上不存在有效出标签。当不存在到达SR网络设备的有效LDP出标签时,将有效的SR-MPLS出标签作为LDP出标签。
如图19所示,Device C、Device D和Device E运行LDP协议;Device A、Device B和Device C运行SR-MPLS功能。在Device A、Device B和Device C上部署SRMS和SRMC,为LDP网络内设备分配前缀SID,实现数据流量从SR网络转发到LDP网络。
图19 SR to LDP报文转发过程示意图
SR-MPLS标签与LDP标签关联过程如下:
(1) Device C、Device D和Device E为目的地址5.5.5.5/32分配标签,形成LDP标签转发表项。
(2) Device C作为SRMS,为目的地址5.5.5.5/32分配前缀类型SID索引值5,并将前缀SID索引值发布给Device A和Device B。Device C同时作为SRMC,为目的地址5.5.5.5/32分配SID 16005,形成对应的SR-MPLS标签转发表项,该表项的出标签为无效值。Device C将到达Device E的无效SR-MPLS出标签替换为有效的LDP出标签2110。
(3) Device A和Device B作为SRMC,接收通告信息,为目的地址5.5.5.5/32分配SID 16005,形成各自的SR-MPLS标签转发表项。
如图20所示,Device A、Device B和Device C运行LDP协议;Device C、Device D和Device E运行SR-MPLS功能。要实现LDP to SR的流量转发,不需要部署SRMS和SRMC,LDP标签与SR标签可以自动关联,直接根据标签转发表转发数据报文。
图20 LDP to SR报文转发过程示意图
SR-MPLS标签与LDP标签关联过程如下:
(1) Device E为5.5.5.5/32分配前缀类型SID索引值5,并通过IGP协议将该索引值以及本地SRGB通告出去。同时Device E为目的地址5.5.5.5/32分配SID 16005,形成对应的SR-MPLS标签转发表项。
(2) Device C和Device D接收通告信息后,为目的地址5.5.5.5/32分配SID 16005,形成对应的SR-MPLS标签转发表项。
(3) Device A、Device B和Device C为目的地址5.5.5.5/32分配标签,形成LDP标签转发表项。
(4) Device C将到达Device E的无效LDP出标签替换为有效的SR-MPLS出标签16005。
如图21所示,Device C、Device D和Device E运行LDP协议;Device A、Device B、Device C、Device E、Device F和Device G运行SR-MPLS功能。由于SR网络内的设备可以通过IGP协议跨越LDP网络,将前缀SID发布到另一端的SR网络,所以不需要在SR网络内部署SRMS和SRMC。
图21 SR over LDP网络互通示意图
SR-MPLS标签与LDP标签关联过程如下:
(1) Device G为7.7.7.7/32分配前缀类型SID索引值7,并通过IGP协议将该索引值以及本地SRGB通告出去。同时Device G为目的地址7.7.7.7/32分配SID 16007,形成对应的SR-MPLS标签转发表项。
(2) Device A、Device B、Device C、Device E和Device F接收到通告信息后,为目的地址7.7.7.7/32分配SID 16007,形成对应的SR-MPLS标签转发表项。
(3) Device C、Device D和Device E为目的地址5.5.5.5/32分配标签,形成LDP标签转发表项。
(4) Device C将到达Device G的无效SR-MPLS出标签替换为有效的LDP出标签2112。
(5) Device E将到达Device G的无效LDP出标签替换为有效的SR-MPLS出标签16007。
Device A、Device B、Device C、Device E、Device F和Device G运行LDP协议;Device C、Device D和Device E运行SR-MPLS功能。在LDP over SR组网环境下,需要在SR网络中部署SRMS和SRMC,以便在SR网络中建立到达LDP设备的标签转发表项。
图22 LDP over SR网络互通示意图
SR-MPLS标签与LDP标签关联过程如下:
(1) Device A、Device B、Device C、Device E、Device F和Device G为目的地址7.7.7.7/32分配标签,形成LDP标签转发表项。
(2) Device E作为SRMS,为Device G的7.7.7.7/32分配前缀类型SID索引值7,并将前缀SID索引值发布给Device C和Device D。Device E同时作为SRMC,为目的地址7.7.7.7/32分配SID 16007,形成对应的SR-MPLS标签转发表项,该表项的出标签为无效值。Device E将到达Device G的无效SR-MPLS出标签替换为有效的LDP出标签2165。
(3) Device C和Device D作为SRMC,接收通告信息,为目的地址7.7.7.7/32分配SID 16007,形成各自的SR-MPLS标签转发表项。
(4) Device C将到达Device G的无效LDP出标签替换为有效的SR-MPLS出标签16007。
在跨域的组网场景中,BGP SR可以实现与BGP分配标签的非SR标签转发网络互通,非SR标签转发网络中,BGP标签的外层隧道协议(即公网隧道协议)可以是RSVP-TE、LDP、GRE等。下文以LDP协议为例说明互通机制。
当使用BGP协议通告SID的SR-MPLS网络和公网隧道为LDP隧道的网络共存时,为了实现SR网络与LDP网络互通,LDP网络边缘设备需要支持SR,该设备为LDP网络中不支持SR的BGP邻居建立路由前缀地址、SID和MPLS标签关联关系。因此定义了以下两个角色:
· SRMS:SR网络中代替不支持SR-MPLS的LDP设备发布SID。在SRMS上配置前缀地址与SID的映射关系,并且发布给SRMC。
· SRMC:SR网络中接收SRMS发布的前缀地址与SID的映射关系,创建SR-MPLS标签转发表。
BGP SR与LDP互通包括以下过程:
· SR to LDP:通过BGP将LDP网络的前缀地址映射为SR网络的SID,实现数据流量从SR网络转发到LDP网络。
· LDP to SR:通过BGP协议通告SID,将SID和BGP申请的标签关联,实现数据流量从LDP网络转发到SR网络。
设备通过BGP协议实现SR to LDP时,只能根据本地配置的前缀地址和SID映射关系为LDP网络中不支持SR的节点分配SID,所以同时开启SR-MPLS功能和LDP功能的节点需要同时作为SRMS和SRMC。
如图23所示,Device B、Device C和Device D运行LDP协议,Device A和Device B开启BGP的SR-MPLS功能,标签发布过程如下:
(1) Device C和Device D通过LDP为目的地址3.3.3.3/32分别分发标签20和3(隐式空标签),Device B、Device C和Device D上形成LDP标签转发表项。
(2) Device D向Device B发布带标签1274的BGP路由3.3.3.3/32,此标签由BGP申请,下一跳为Device D。
(3) Device B作为SRMS,为Device D上的Loopback地址3.3.3.3/32分配索引值201。
(4) Device B作为SRMC,根据本地配置的前缀地址和SID映射关系,形成SR-MPLS标签转发表。Device B上建立SRLSP与BGP LSP的映射关系,即在Device B上去往3.3.3.3/32的标签转发表项入标签为SR-MPLS标签16201,出标签为BGP申请的标签1274。
(5) Device B通过BGP协议报文向Device A通告3.3.3.3/32的Prefix SID。Device A根据收到的BGP协议报文建立对应的SR-MPLS标签转发表。
图23 SR to LDP报文转发过程示意图
数据报文从Device A到Device D的转发过程如下:
(1) 源节点Device A为报文封装标签16201,发送给中间节点Device B。
(2) 中间节点Device B根据报文的入标签16201,查找SR-MPLS标签转发表项,发现出标签不存在。此时,设备上存在关于目的地址3.3.3.3/32的有效BGP出标签1274,且下一跳为Device D。因此,Device B将SR-MPLS标签16201替换为BGP出标签1274,并迭代到去往下一跳Device D的LDP LSP,为报文封装外层标签20。Device B将报文发送给下一个中间节点Device C。
(3) Device C收到报文后,根据报文的入标签20查找对应的LDP标签转发表项,倒数第二跳弹出标签,将报文发送给尾节点Device D。
(4) 报文到达尾节点Device D后,Device D弹出内层标签1274,按IP继续转发即可。
如图24所示,Device A、Device B和Device C运行LDP协议,Device C和Device D运行BGP的SR-MPLS功能,标签发布过程如下:
(1) Device A和Device B通过LDP为Device C分别分发标签20和3(隐式空标签),Device A和Device B上形成LDP标签转发表项。
(2) 网络管理员将索引值201分配给Device D上的Loopback地址3.3.3.3/32。Device D与Device C建立EBGP邻居,Device D通过BGP将该索引值通告出去。
(3) Device C收到通告信息后,形成去往3.3.3.3/32的SR-MPLS标签转发表。
(4) Device C为3.3.3.3/32申请标签1280,并向IBGP邻居Device A发布带标签1280的路由3.3.3.3/32。
(5) Device C上SR-MPLS标签与BGP标签关联。
图24 LDP to SR报文转发过程示意图
数据报文从Device A到Device D的转发过程如下:
(1) Device A为报文封装标签1280,下一跳为Device C。Device A需要通过LDP LSP到达Device C,因此Device A为报文封装外层标签20。Device A将封装后的报文转发给Device B。
(2) Device B收到报文后,根据LDP标签转发表项将报文转发给下一跳Device C,出标签为3,即倒数第二跳弹出标签。
(3) Device C接收到携带标签1280的报文,根据SR-MPLS标签与BGP标签1280的映射关系,将出标签替换为SR-MPLS 标签16201,发送报文给尾节点Device D。
(4) 报文到达尾节点Device D后,Device D删除报文中的标签16201,按IP继续转发即可。
SR-MPLS TE Policy(Segment Routing Policy,段路由策略)提供了灵活的转发路径选择方法,满足用户不同的转发需求。当Segment Routing网络的源节点和目的节点之间存在多条路径时,合理利用SR-MPLS TE Policy选择转发路径,不仅可以方便管理员对网络进行管理和规划,还可以有效地减轻网络设备的转发压力。
SR-MPLS TE Policy通过三元组{Headend、Color、Endpoint}来标识:
· Headend:源节点。源节点将报文引入SR-MPLS TE Policy,并由SR-MPLS TE Policy引导报文在选定的路径上转发。
· Color:转发路径的Color属性,用于在相同的源和目的节点之间区分多个SR-MPLS TE Policy。
· End-point:SR-MPLS TE Policy目的节点,可由IP地址标识。
一个SR-MPLS TE Policy由BSID和多条具有不同优先级的Candidate Paths(候选路径)组成,每个候选路径包括由Segment List(SID列表)标识的一条或多条转发路径:
· BSID
Binding SID,SR-MPLS TE Policy对外提供网络服务的接口。报文封装该SID,即将流量引导到该SR-MPLS TE Policy。
· Candidate Paths
Candidate Paths是指SR-MPLS TE Policy的候选路径,即SR-MPLS TE Policy中的转发路径。SR-MPLS TE Policy包含一条或多条候选路径。不同SR-MPLS TE Policy不能共享同一条候选路径。
· Segment List
Segment List(SID列表)是包含报文转发路径信息的列表。SID列表中的SID为转发路径上各个节点到下一跳的SID。候选路径由一个SID列表或者多个带权重的SID列表组成。
SR-MPLS TE Policy配置和应用时还涉及以下概念:
Preference为候选路径的优先级,用于在通过SR-MPLS TE Policy转发流量时,选择候选路径。
每个SID列表对应一个Weight(权重)。SR-MPLS TE Policy选择某条候选路径后,会根据SID列表的Weight,在候选路径的多个SID列表间进行负载分担。
建立SR-MPLS TE Policy后,会自动创建SR-MPLS TE Policy隧道,即从部署SR-MPLS TE Policy的节点到SR-MPLS TE Policy目的节点的一条虚拟点到点连接。SR-MPLS TE Policy隧道由SRLSP构成。
一组SR-MPLS TE Policy的集合。将SR-MPLS TE Policy加入SR-MPLS TE Policy组后,可以实现通过不同的SR-MPLS TE Policy转发不同DSCP(Differentiated Services Code Point,区分服务编码点)的报文。
SR-MPLS TE Policy有效性判断规则如图25所示。
图25 SR-MPLS TE Policy有效性判断示意图
判断SID列表是否有效时,存在以下情况SID列表无效:
· SID列表为空;
· SID列表的权重为0;
· SR节点无法根据SID列表中的栈顶SID找到出接口或下一跳地址。
通过SR-MPLS TE Policy转发流量时选路过程为:
(1) 设备收到栈顶标签为BSID的报文后,根据BSID选择对应的有效SR-MPLS TE Policy转发流量。
(2) 如果BSID匹配到多个有效SR-MPLS TE Policy,则按照配置BSID的顺序选择SR-MPLS TE Policy转发流量。先配置BSID的SR-MPLS TE Policy优先被选择转发流量。
(3) 设备在选中的SR-MPLS TE Policy中选择优先级取值最大的有效候选路径转发流量。
(4) 在优先级取值最大的有效候选路径的各个SID列表间进行WECMP(Weighted ECMP,权重负载分担),即基于权重对通过SR-MPLS TE Policy转发的流量进行负载分担。SR-MPLS TE Policy中有效SID列表转发流量的比例为Weight x/(Weight 1+Weight 2+…+Weight n)。
如所示,根据BSID选择有效的SR-MPLS TE Policy转发流量,再选取优先级取值最大的有效候选路径转发流量。该候选路径中有两个有效的SID列表:SID List 1和SID List 2,其权重分别为20和80。通过该SR-MPLS TE Policy转发流量时,SID List 1和SID List 2转发的流量占比分别为1/5和4/5。
图26 SR-MPLS TE Policy转发流量时选路过程示意图
如图27所示,SR-MPLS TE Policy转发过程为:
(1) Device A收到栈顶标签为16001的报文后,查找LFIB(Label Forwarding Information Base,标签转发信息库)表判断该标签为BSID,需要根据SR-MPLS TE Policy转发该报文。Device A根据LFIB表获取出标签和下一跳(Device B),将BSID弹出并压入SID列表的标签栈(20002,21003,22004),然后将报文发送给Device B。其中,20002为Device A到达Device B的SID;21003为Device B到达Device C的SID;22004为Device C到达Device D的SID。
(2) Device B收到报文后查找LFIB表,根据入标签获取到下一跳为Device C,将报文发送给Device C。
(3) Device C收到报文后查找LFIB表,根据入标签获取到下一跳为Device D,将报文发送给Device D。
(4) Device D收到报文后,如果报文携带标签,则查找LFIB表转发报文;如果报文未携带标签,则查找IP转发表转发报文。
图27 SR-MPLS TE Policy转发过程示意图
可以通过如下方式将数据报文引流到SR-MPLS TE Policy,通过SR-MPLS TE Policy转发该报文:
· 基于BSID引流:如果接收到的报文的栈顶标签为某个SR-MPLS TE Policy的BSID,则通过该SR-MPLS TE Policy转发该报文。
· 基于Color引流:查找是否存在Color和Endpoint地址与BGP路由的Color扩展团体属性和下一跳地址完全相同的SR-MPLS TE policy。若存在,则将该BGP路由迭代到SR-MPLS TE Policy。当设备收到匹配该BGP路由的报文时,会通过SR-MPLS TE Policy转发该报文。
· 基于隧道策略引流:MPLS L3VPN或EVPN L3VPN组网中,通过首选隧道策略或负载分担隧道策略,可以实现用指定SR-MPLS TE Policy的路径作为公网隧道来承载特定VPN实例的私网报文。
· 基于DSCP引流:根据报文的目的地址匹配隧道绑定策略,关联到SR-MPLS TE Policy组后,根据报文的DSCP值查找与其关联的Color属性,再通过Color属性匹配到SR-MPLS TE Policy组中的某个SR-MPLS TE Policy。这样,携带指定DSCP的报文可以通过指定SR-MPLS TE Policy转发。
· 基于静态路由引流:配置静态路由迭代到SR-MPLS TE Policy,如果设备收到匹配该静态路由的报文,则通过指定SR-MPLS TE Policy转发该报文。
· 基于QoS策略引流:通过QoS策略将流量重定向到SR-MPLS TE Policy,如果设备收到匹配该QoS策略流分类规则的报文,则通过指定SR-MPLS TE Policy转发该报文。
· 基于Flowspec引流:通过Flowspec路由将流量重定向到SR-MPLS TE Policy,如果设备收到匹配该Flowspec路由规则的报文,则通过指定SR-MPLS TE Policy转发该报文。
当SR-MPLS TE Policy中存在多条有效候选路径时,设备通过优先级最大的候选路径转发报文。如果该候选路径发生故障,则SR-MPLS TE Policy需要重新选择有效候选路径转发报文。由于选择新的有效候选路径会耗费一些时间,所以在切换转发路径的过程中会造成丢包,影响业务流量转发。
SR-MPLS TE Policy的热备份功能可以解决上述问题。SR-MPLS TE Policy的热备份是指通过备份候选路径对主候选路径进行保护。如果一个SR-MPLS TE Policy下存在多条候选路径,则优先级最高的有效候选路径作为主路径,优先级次高的有效候选路径作为备份路径。如图28所示,如果主路径下所有SID列表对应的转发路径都发生故障,则将流量立即切换到备份候选路径转发,以减少对业务的影响。
图28 SR-MPLS TE Policy热备份示意图
SR-MPLS TE Policy热备份功能和SR-MPLS TE Policy与SBFD联动配合使用时,SBFD可以同时检测SR-MPLS TE Policy中优先级最高和次高的两条候选路径里的所有SID列表对应的转发路径。如果优先级最高的候选路径里所有SID列表对应的转发路径都发生故障,则将流量切换到备份路径。当流量切换到备份路径后,会再次重新计算主备路径。原备份路径将作为主路径,并重新选择一个有效的候选路径作为新的备份路径。当主备路径同时故障时,SR-MPLS TE Policy将重新计算主备路径。
为了支持SR-MPLS TE Policy,MP-BGP定义了新的子地址族——IPv4 SR-MPLS TE Policy地址族,并新增了SR-MPLS TE Policy NLRI(Network Layer Reachability Information,网络层可达性信息),即SR-MPLS TE Policy路由。SR-MPLS TE Policy路由中包含SR-MPLS TE Policy的相关配置,包括BSID、color、Endpoint、Preference和Weight等。设备将SR-MPLS TE Policy路由发布给对等体后,对等体也可以根据SR-MPLS TE Policy转发流量。
设备支持为BGP路由添加Color扩展团体属性,为BGP路由添加Color扩展团体属性后,如果设备收到匹配该路由的报文,则会根据该路由Color扩展团体属性中的Color值查找具有相同Color值的SR-MPLS TE Policy,使设备可以该通过SR-MPLS TE Policy转发报文。如果未查找到具有相同Color值的SR-MPLS TE Policy,则设备通过最优路由转发报文。
Color属性的格式:2位二进制数CO(Color-Only)标记位:32位用户自定义Color值,例如:10:3。
SBFD(Seamless BFD,无缝BFD)是一种单向的故障检测机制,简化了BFD的状态机(SBFD仅支持UP、DOWN两个状态),缩短了会话协商时间,其检测速度比BFD更快速。SBFD适用于仅一端需要进行链路状态检测的情况。
SBFD会话中,节点的角色分为发起端(Initiator)和响应端(Reflector):
· Initiator:SBFD会话的发起者,负责维护SBFD会话的状态。Initiator周期性发送SBFD控制报文。
· Reflector:监听到达本地节点的SBFD控制报文,并判断是否需要生成SBFD响应报文。Reflector无需维护SBFD会话状态。
SBFD的检测机制如下:
(1) Initiator周期性向Reflector发送SBFD控制报文。
(2) Reflector收到Initiator发送的SBFD报文后,检查报文中携带的远端标识符是否与本地节点为Reflector指定的标识符一致。如果一致,Reflector将向Initiator发送SBFD响应报文。如果不一致,Reflector将丢弃收到的SBFD报文。
(3) Initiator在检测时间超时前收到响应报文,则认为链路可达。否则,认为链路不可达。
SR-BE LSP场景下,使用SBFD可以快速检测SR-BE主路径故障。
图29 SBFD检测SR-BE主路径故障示意图
如图29所示,所有设备的SRGB范围都是16000到17000,SBFD检测SR-BE路径过程如下:
(1) 源节点Device A对外发送SBFD报文,SBFD报文迭代到SR-BE隧道并封装下一跳节点SID,根据IGP SPF算路结果优选SR-BE主路径转发,在中间节点B上进行标签交换后继续转发至尾节点Device D。
(2) 尾节点Device D收到SBFD报文后,通过查找IP路由表按照最短路径发送回应报文。
(3) 源节点Device A如果收到SBFD回应报文,则认为SR-BE主路径正常,否则,会认为该SR-BE主路径故障。如果该SR-BE LSP存在备路径,则SBFD触发主备路径切换。
SR-MPLS TE场景下,使用SBFD可以快速检测SR-MPLS TE隧道的故障。
图30 SBFD检测SR-MPLS TE路径故障示意图
SBFD检测SR-MPLS TE路径过程如下:
(1) 源节点Device A对外发送SBFD报文,SBFD报文封装SR-MPLS TE LSP显式路径的SID列表。
(2) 尾节点Device E收到SBFD报文后,通过查找IP路由表按照最短路径发送回应报文。
(3) 源节点Device A如果收到SBFD回应报文,则认为主路径正常;否则,会认为主路径故障。如果SR-MPLS TE存在热备隧道,则SBFD触发主备路径切换。
SR-MPLS TE Policy场景下,使用SBFD可以快速检测SR-MPLS TE Policy路径中所发生的故障。相比SR-MPLS TE场景,SBFD可以检测多个SID列表所代表的显式路径。
缺省情况下,SBFD仅检测SR-MPLS TE Policy中优先级最高的候选路径里的所有SID列表。
图31 SR-MPLS TE Policy与SBFD联动示意图
如图31所示,源节点Device A开启SR-MPLS TE Policy与SBFD联动功能后,将Endpoint地址作为SBFD的远端描述符。当SR-MPLS TE Policy中优先级最高的候选路径里存在多个SID列表时,会建立多个SBFD会话分别用来检测每一个SID列表对应的转发路径,所有SBFD会话的远端描述符均相同。如果一个候选路径下所有Segment List都发生故障,则SBFD触发候选路径切换。
通过SBFD检测SR-MPLS TE Policy路径过程如下:
(1) 源节点Device A对外发送SBFD报文,SBFD报文封装SR-MPLS TE Policy对应的SID列表。
(2) 尾节点Device E收到SBFD报文后,通过查找IP路由表按照最短路径发送回应报文。
(3) 源节点Device A如果收到SBFD回应报文,则认为该SID列表对应的转发路径正常;否则,会认为该SID列表对应转发路径故障。如果一个候选路径下所有SID列表对应的转发路径都发生故障,则SBFD触发候选路径切换。
TI-LFA FRR(Topology-Independent Loop-free Alternate Fast Reroute,拓扑无关无环备份快速重路由)用来为Segment Routing隧道提供链路及节点的保护。当某处链路或节点故障时,流量会快速切换到备份路径,继续转发。从而最大程度上避免流量的丢失。
基于Segment Routing的TI-LFA FRR技术有如下优势:
· 满足IP FRR快速收敛的基本要求。
· 原则上,对流量的保护不受组网环境的限制。
· 算法复杂度适中。
· 选择收敛后的路径作为备份路由转发路径,相比其他FRR技术,转发过程中设备不会有正在收敛的中间态。
TI-LFA FRR主要涉及以下概念:
· P空间:以保护链路源端为根节点建立SPF(Shortest Path First,最短路径优先)树,所有从根节点不经过保护链路可达的节点集合称为P空间。P空间内的节点被称为P节点。
· 扩展P空间:以保护链路源端的所有邻居为根节点分别建立SPF树,所有从根节点不经过保护链路可达的节点集合称为扩展P空间。P空间在扩展P空间范围内。
· Q空间:以目的节点为根节点建立反向SPF树,所有从根节点不经过保护链路可达的节点集合称为Q空间。Q空间内的节点被称为Q节点。
TI-LFA流量保护分为以下两种类型:
· 链路保护:当需要保护的对象是经过特定链路的流量时,流量保护类型为链路保护。
· 节点保护:当需要保护的对象是经过特定设备的流量时,流量保护类型为节点保护。
节点保护优先级高于链路保护。
如图32所示,PE 1为源节点,P 1节点为故障节点,PE 2为目的节点,链路中间的数字表示cost值。假设流量路径为:PE 1->P 1->PE 2,为避免P 1节点故障导致流量丢失,TI-LFA会计算出扩展P空间、Q空间、P 1故障收敛后的SPF树、Repair List和备份出接口,最终生成备份转发表项。
图32 TI-LFA典型组网图
TI-LFA计算备份路径步骤如下:
(1) 计算扩展P空间:至少存在一个邻居节点到P节点的路径不经过故障链路的集合,即P 2。
(2) 计算Q空间:Q节点到目的节点不经过故障链路的集合,即PE 2和P 4。
(3) 计算收敛后的SPF树:计算P 1故障收敛后的SPF树,即P 1故障后的最优转发路径。SPF树为PE 1->P 2->P 4->PE 2。
(4) 计算Repair List:Repair List是一个约束路径,当P空间和Q空间没有交集时,用来指示如何到达最近的Q节点,Repair List由“P节点的标签+P节点到最近的Q节点路径上的邻接标签”组成。在图32中,Repair List为P 2的节点标签16030,加上P 2到P 3的邻接标签2168,以及P 3到P 4的邻接标签2178。
(5) 计算备份出接口:PE 1到P 1链路故障后的下一跳出接口,即PE 1连接P 2的接口。
TI-LFA备份路径计算完成之后,如果主路径发生故障,就可以根据备份路径进行转发,避免流量丢失。
如图33所示,P 2为P节点,P 4和PE 2为Q节点。主下一跳P 1故障时,触发FRR切换到备路径,详细过程如下:
(1) PE 1为报文封装标签栈,包括Repair List和目的节点标签。最外层封装P节点(P 2)的节点标签=P节点的SRGB起始值+P节点前缀SID索引值=16030,然后封装P节点到最近的Q节点的标签,分别为2168和2178,目的节点标签=Q节点的SRGB起始值+目的节点(PE 2)的前缀SID索引值=16010。
(2) P 2收到报文后,根据最外层标签查找标签转发表,弹出2168标签,将报文转发给P 3。
(3) P 3收到报文后,根据最外层标签查找标签转发表,弹出2178标签,将报文转发给P 4。
(4) P 4收到报文后,根据最外层标签查找标签转发表,出标签为16010,下一跳为PE 2。于是将最外层标签替换成16010,报文转发给PE 2,如此按照最短路径的方式将报文转发到目的节点PE 2。
图33 TI-LFA FRR备份路径转发流程图
如图34所示,当Device B故障时,到Device C的流量将切换到TI-LFA计算的备份路径转发。在此之前,需要备份路径上各个设备完成收敛,才能转发流量。在Device A收敛完成后,流量将沿着备份路径转发,此时如果Device D和Device F还没有收敛,仍按照收敛前的路径转发流量,则Device A到Device F之间形成环路,直到Device D和Device F收敛完成。
Device B故障以后,首先流量切换到TI-LFA计算的备份路径,然后Device A延迟一段时间收敛,等待Device D和Device F收敛完成以后,Device A开始收敛,收敛完成以后,流量再通过TI-LFA计算的备份路径转发,从而避免发生环路。
如图35所示,Device B和Device C之间的链路故障恢复前,数据流量沿着备份路径转发。当Device B和Device C之间的链路故障恢复后,如果Device A先于Device B收敛,则Device A会将流量转发给Device B,但是Device B没有收敛,仍旧沿着备份路径转发,这样Device A和Device B之间就会形成环路。
Device A在故障回切以后,会自动计算一条最优路径达到Device C,并按照该路径转发流量,即Device A在转发时为报文添加端到端路径信息(例如Device B到Device C的邻接标签),这样Device B收到报文后,根据报文的路径信息将报文转发给Device C,避免环路的产生。
经过SR防微环延迟时间后,Device B节点完成收敛,Device A去除额外添加的路径信息,按正常转发的方式将报文转发到Device C。
为了提高网络可靠性,可以将几个SR节点作为一组,这些SR节点在网络中发布相同地址和相同SID。在配置前缀SID时可以通过指定n-flag-clear参数将前缀SID标志位置为0,表示该前缀SID代表一组SR节点,即Anycast SR,这个前缀SID是Anycast SID。
通常FRR算法只能利用SPF计算从单一源发布路由的备份下一跳,对于多个源发布相同路由的场景无法支持。在多个源发布相同路由场景下,为了计算前缀SID的备份下一跳,通过部署Anycast SR可以将多个路由发布节点变成单个路由发布节点,再进行计算。
如图36所示,可以将Device D和Device E配置在同一个组里。假设Device A到达Device B的路径经过Device D的路径最优,则经过Device E的路径会作为Anycast SR FRR备份路径。当Device E或去往Device B的下一跳故障时,则Device A到达Device B业务可以通过Device E的备份路径到达Device B。
图36 Anycast SR典型组网示意图
MPLS OAM(Operation,Administration and Maintenance,操作、管理和维护)功能为MPLS网络提供了数据平面连通性检测、数据平面与控制平面一致性校验、故障点定位等多种错误管理(Fault Management)工具。MPLS OAM利用这些错误管理工具对LSP、MPLS TE隧道和MPLS PW进行检测和故障定位,降低了MPLS网络的管理和维护的复杂度,提高了MPLS网络的可用性。
用来对SR-BE隧道、SR-MPLS TE隧道或SR-MPLS TE Policy隧道的连通性进行手工检测。MPLS Ping的工作机制是:在Ingress节点为MPLS Echo Request报文压入待检测隧道对应的标签;经过隧道将该报文转发到Egress节点;Egress节点处理该报文后,回应MPLS Echo Reply报文;如果Ingress节点接收到表示成功的MPLS Echo Reply报文,则说明该隧道可以用于数据转发;如果Ingress节点接收到带有错误码的MPLS Echo Reply报文,则说明该隧道存在故障。
用来查看SR-BE隧道、SR-MPLS TE隧道或SR-MPLS TE Policy隧道从Ingress节点到Egress节点所经过的路径,以便对SR-BE隧道、SR-MPLS TE隧道或SR-MPLS TE Policy隧道的错误点进行定位。MPLS Trace route功能通过沿着隧道连续发送TTL从1到某个值的MPLS Echo Request报文,让隧道经过的每一跳收到该报文后,返回MPLS Echo Reply报文。这样,Ingress节点可以收集到隧道上每一跳的信息,从而定位出故障节点。同时,MPLS Trace route功能还可用于收集整条隧道上每个节点的重要信息,如下游分配的标签等。
如图37所示,SR-MPLS网络被LDP网络隔断,在Device B和Device D上需要完成SR-MPLS和LDP网络间标签的连接,以实现SR-MPLS网络间用户互通。
图37 SR-MPLS over LDP网络互通示意图
热备份(Hot-Standby)是指创建主LSP后随即创建备份LSP,备份LSP始终处于热备状态。热备份LSP提供整条LSP的保护,是一种端到端的流量保护措施。
如图38所示,入节点A上配置Hot-Standby,这样节点A在创建完Primary LSP后,立即创建Hot-Standby LSP,也即一条SR-MPLS TE隧道里包含两条LSP。当首节点感知到Primary LSP故障,会将流量切换到Hot-Standby LSP;如果Primary LSP故障恢复,流量回切到Primary LSP。整个过程中,SR-MPLS TE隧道始终是Up状态。
图38 SR-MPLS TE Hot-Standby保护示意图
如图39所示,数据报文需要从节点A发往节点F。当节点B和节点E之间发生故障后,节点B将数据报文转发给节点C。由于节点C和节点D之间开销是100,且节点C上路由还未收敛,因此节点C认为到达节点F的最优路径的下一跳是节点B。节点C将数据报文重新转回到节点B,形成环路。
图39 TI-LFA应用场景示意图
在SR-MPLS网络中部署TI-LFA,可以解决上述问题。如图40所示,当节点B和节点E之间发生故障后,节点B启用TI-LFA计算的备份路径,为报文指定显式路径B->C->D->E,保证报文可以沿着备份路径转发。
图40 TI-LFA转发示意图
Binding SID作为SR-MPLS TE/SR-MPLS TE Policy隧道的Adjacency SID可以实现标签缝接和引流到隧道功能。
缝接技术主要是解决由于设备标签深度不够,导致头端设备无法指定完整的路径的问题。
如图41所示,建立A->B->C->D->E的严格显式路径,如果各个设备的标签深度足够,直接封装(200,300,400)的标签栈即可。假设设备只支持封装两层标签,则需要将B作为一个粘连节点,引入一个粘连标签2000。节点B预先下发标签转发表<Label_in: 2000, Label_out: (300,400)>;节点A封装标签栈(200,2000),到达节点B后弹出标签栈(200,2000),重新压入标签栈(300,400),从而实现A->B->C->D->E的严格转发路径。
以SR-MPLS TE Policy为例,在Device A上创建BSID为16001的SR-MPLS TE Policy后,如果收到栈顶标签为16001的报文,则根据LFIB(Label Forwarding Information Base,标签转发信息库)表判断报文需要根据SR-MPLS TE Policy转发。Device A根据LFIB表获取出标签和下一跳(Device B),将BSID弹出并压入SID列表的标签栈(20002,21003,22004),然后将报文发送给Device B。其中,20002为Device A到达Device B的SID;21003为Device B到达Device C的SID;22004为Device C到达Device D的SID。
图42 基于BSID引流示意图
如图43所示,使用跨域SR-MPLS TE网络来承载VPN业务,为跨域VPN业务提供数据通道。在自治系统内部署IGP SR,建立域内SR-MPLS TE隧道;AS域间部署BGP-EPE,实现域间SID分配。将AS域内SR-MPLS TE隧道、域间BGP-EPE Peer SID组合为跨域SR-MPLS TE隧道,实现VPN内数据流量跨域转发。
图43 SR-MPLS跨域示意图