MPLS TE FRR技术分析
文/苏艳梅
1 MPLS TE FRR技术概述
FRR是快速重路由(Fast ReRoute)的简称,TE FRR是MPLS TE网络中实现局部修复的一种技术。在使能MPLS TE FRR功能之后,当被保护的LSP经过的某条链路或者某个节点失效时,流量会被PLR切换到保护隧道上,流量转发不中断或者仅有少量丢包。RFC 4090详细介绍了MPLS TE FRR技术。本文结合H3C设备实现,介绍了MPLS TE FRR的原理。在详细介绍MPLS TE FRR实现原理之前,先介绍几个MPLS TE FRR技术中涉及的术语。
主LSP:被保护的LSP。
Bypass LSP:旁路LSP,保护主LSP的LSP。
PLR(Point of Local Repair,本地修复节点):Bypass LSP的头节点,必须在主LSP的路径上,并且不能是主LSP的尾节点。
MP(Merge Point,汇聚点):Bypass LSP的尾节点,必须在主LSP的路径上,并且不能是主LSP的头节点。
2 MPLS TE FRR实现原理
2.1 MPLS TE FRR的实现方式
MPLS TE FRR包括两种方式,一种是One-to-One方式,另一种是Facility方式。
One-to-One方式的FRR是指PLR节点为每一条主LSP都创建一条旁路LSP,是一对一的保护方式。当有多条主LSP通过PLR节点时,会创建多条旁路LSP分别保护每条主LSP。
Facility方式的FRR是指PLR节点为多条主LSP只创建一条旁路LSP,是一对多的保护方式。H3C的设备默认采用Facility的实现方式。
图1 Facility方式FRR说明图
Facility方式MPLS TE FRR举例说明如下:
假设有三条LSP通过节点R2,分别是
Protected LSP 1: [R1->R2->R3->R4->R5]
Protected LSP 2: [R8->R2->R3->R4]
Protected LSP 3: [R2->R3->R4->R5]
在节点R2(也就是PLR节点)上建立旁路LSP[ R2->R6->R7->R4]隧道,用来保护主LSP1、LSP2、LSP3三条隧道,当节点R3或者链路[R2->R3]出现故障时,通过主LSP转发的流量会切换到旁路LSP隧道内转发。
Facility方式的MPLS TE FRR有两种实现方式,一种是手工方式,就是在PLR节点上主LSP对应的出接口上配置保护隧道;另一种是自动方式,如果主LSP使能了FRR能力,且在PLR节点上配置TE Auto FRR能力,PLR节点会自动建立保护隧道。本文主要介绍了手工方式的MPLS TE FRR实现原理。
2.2 Facility 方式RSVP TE FRR实现原理
2.2.1 Facility 方式的RSVP TE FRR用到的标志位
RSVP-TE协议是RSVP(Resource Reservation Protocol)协议的扩展,用于TE隧道的建立和维护。RSVP-TE的工作是通告和维护网络中的保留资源。RSVP-TE协议通过不同类型消息对象来实现不同的功能。而实现TE FRR功能用到了SESSION_ATTRIBUTE对象、RRO对象中的标志位。头节点使能FRR之后,SESSION_ATTRIBUTE对象中的Local Protection desired、label recording desired、SE Style desired标志位都要置1,RSVP消息SESSION_ATTRIBUTE对象具体格式如下:
图2 RSVP消息SESSION_ATTRIBUTE对象
当PLR节点FRR生效绑定成功之后,Path、Resv消息中的RRO对象对应的IPv4子对象以及Label子对象中的标志位也会相应置位,IPv4子对象中报文格式如下:
图3 IPv4子对象报文格式
图4 Label子对象
2.2.2 Facility 方式TE FRR协议流程
Facility方式的TE FRR实现主要是由头节点、PLR节点、MP节点完成的。FRR能力实现可以分为两个阶段,第一阶段是FRR切换之前,第二阶段是FRR切换之后。
FRR切换之前,头节点、PLR节点、MP节点各需要完成那些工作?
FRR能力是由LSP头节点决定的。在使能FRR能力时,必须使能Label record能力,同时资源预留样式必须是SE类型。头节点在使能FRR之后,其后续发送Path消息,SESSION_ATTRIBUTE对象中的Local Protection desired、label recording desired、SE Style desired标志位都要置位。
主LSP经过的所有LSR节点(尾节点除外)都可能成为PLR节点,根据网络规划,最后由用户配置决定PLR节点的位置。PLR节点通过SESSION_ATTRIBUTE对象中的Flag标志位来确定LSP是否需要本地保护,如果是需要本地保护的LSP,PLR节点需要查找符合条件的Bypass LSP,如果能够找合适的Bypass LSP,向上游节点发送Resv消息以及向下游节点发送Path消息时,其RRO对象中的Label子对象、IPv4子对象中的Local protection available标志位置1;同时生成主LSP和Bypass LSP的保护关系,并下刷LSP表项以及MPLS转发表项。这时候,PLR才算正式具备了FRR能力。
MP节点是主LSP、Bypass LSP的汇聚点,一定是Bypass LSP的尾节点,当然也可以是主LSP的尾节点。在FRR切换之前,MP节点和普通节点功能相同,不需要做特殊处理。
FRR切换之后,头节点、PLR节点、MP节点各需要完成那些工作?
在FRR切换之后,头节点在收到PLR节点发送的Path Error消息之后,重新进行CSPF计算,建立新隧道LSP。在新的LSP建立之前,老的LSP不会删除。当新的LSP建立之后,头节点发送Path Tear消息拆除老的LSP。如果新的LSP和旧的LSP部分路径相同,则在这些路径上需要重复为新旧CRLSP预留带宽,造成带宽资源的浪费。为此提出了make-before-break机制,它是一种在尽可能不丢失数据,也不占用额外带宽的前提下改变MPLS TE隧道的机制。RSVP-TE协议在建立LSP隧道时,有两种资源预留方式。一种是为每个发送者单独预留资源,同一会话中的不同发送者不能共享资源,该资源预留方式称为Fixed-Filter。另外一种方式是为同一个会话中的不同发送者预留同一个资源,不同发送者之间可以共享资源,该资源预留方式称为Shared-Explicit。make-before-break机制就是通过Shared-Explicit资源预留方式实现的。
在FRR切换之后,PLR要做协议层、转发层两方面的工作。PLR检测链路或者节点故障后进行FRR切换,首先会通知MPLS转发层面,把数据流量切换到Bypass隧道上,协议报文也要通过Bypass隧道转发到MP节点。接着通知协议层向上游节点发送Path Error消息,通知头节点重新建立新隧道LSP,同时更新LSP对应的PSB和RSB信息,Path消息中的Local Protection In Use标志位置位。当新的主LSP建立之后,PLR节点才把数据流量以及协议报文重新切换到主LSP隧道上,并且清除相应的标志位。
FRR切换之后,MP节点收到Path消息的入接口和Hop地址发生了变化,直接更新本地PSB中的Hop地址和入接口,Hop地址为PLR发送Path消息的出接口地址。
2.2.3 举例说明
举例说明:
图5 TE FRR 举例组网图
如上组网图中建立两条隧道:
主隧道路径为R1->R2->R3
保护隧道路径为R2->R4->R3,其中R2为PLR节点,R3为MP节点
R1_RouterID:1.1.1.1 R2_RouterID:1.1.1.2
R4_RouterID:1.1.1.4 R3_RouterID:1.1.1.3
PLR节点是TE FRR功能的关键节点,大部分工作是由PLR节点完成的。
Ø 在主备隧道绑定之后,FRR切换之前,PLR节点发送的协议报文
PLR节点向上游节点R1发送Resv消息,其RRO对象中的Label子对象以及IPv4子对象中的Local Protection Available标志位置1。具体信息如下:
图6 FRR切换之前,Resv消息中的RRO对象
PLR节点向下游节点R3发送Path消息,其RRO对象中的IPv4子对象以及Label子对象中的Local Protection Available标志位置1。具体信息如下:
图7 FRR切换之前,Path消息中的RRO对象
在PLR节点上,Bypass LSP和普通LSP一样,不需要特殊处理。
Ø FRR切换之后,PLR节点的FRR处理过程
当R2和R3之间发生链路路障时,PLR节点就会响应FRR切换事件,把数据流量,协议报文切换到旁路LSP上,同时向PLR节点向上游节点发送Path Error消息,通知头节点重新建立新隧道LSP。PLR节点会继续向下游节点发送Path消息,Path消息是通过Bypass LSP 标签转发到MP节点,其RRO对象中IPv4子对象中的Local Protection In Use标志位置1。PLR节点向下游节点发送的Path消息报文如下:
图8 FRR切换之后,PLR节点向下游节点发送的Path消息
在PLR节点上,对比FRR切换前后LSP信息,Bypass In Use标志位由Not Used变为In Use。
图9 PLR节点上,FRR切换前后LSP详细信息对比图
在PLR节点上,对比FRR切换前后PSB信息块,Next Hop地址、出接口发生了变化。Next Hop地址变为实际发送物理接口地址,出接口变为Bypass隧道,同时增加了PLR In used信息。
图10 PLR节点上,FRR切换前后PSB信息对比图
在PLR节点上,对比FRR切换前后RSB信息块,只有RRO-IPAddress地址发生了变化。
图11 PLR节点上,FRR切换前后RSB信息对比图
在MP节点上,对比FRR切换前后PSB信息块,其Previous Hop、入接口发生了变化。
图12 MP节点上,FRR切换前后PSB信息对比图
头节点收到Path Error消息之后,重新进行CSPF计算,建立新隧道LSP,在新的LSP建立之前,老的LSP不会删除。这段期间,头节点会发送分别对应新老LSP的两条Path消息,同样下游节点会逐跳向上游节点发送Resv消息,由于新、老LSP其实是一个隧道,就用一条Resv消息回应两条Path消息,具体内容如下:
图13 FRR切换之后,PLR节点发送的Resv消息
LSP ID等于5对应的是老LSP,LSP ID等于6对应的是新LSP。头节点当新的LSP建立之后,数据报文就通过新的LSP隧道进行转发,同时发送Path Tear消息删除老LSP。PLR节点从新LSP隧道收到的数据报文从新LSP隧道转发,从老的LSP隧道收到的数据报文从备份隧道转发。PLR节点收到Path Tear消息之后,先通过备份LSP向下游发送Path Tear消息,然后去绑定老LSP和备份LSP之间的绑定关系,同时拆除老的LSP,后续不再通过备份LSP隧道转发数据,TE FRR回切过程完成。
2.3 链路保护和节点保护
TE FRR根据保护对象不同又可以分为链路保护和节点保护。
如下图所示,当PLR节点和MP节点之间有直接链路连接,当这条链路失效之后,PLR节点把流量切换到备份LSP,这种组网方式称为链路保护。
图14 链路保护
如下图所示,当PLR节点和MP节点之间有一台设备连接,当该设备失效时,PLR节点把流量切换到备份LSP,这种组网方式称为节点保护。
图15 节点保护
在头节点使能FRR能力之后,下游节点向上游节点发送的RESV消息中的RRO对象中包含所有下游节点对应的Label子对象,其Local Protection Available标志位置1。图16是图15中PLR节点收到的下游节点1.1.1.11发送的RRO对象,从该RRO对象可知,PLR节点的直连节点是1.1.1.11,出标签是69249,非直连的下一跳节点是1.1.1.10,出标签是2287。当在PLR节点上主LSP经过的出接口上配置备份隧道时,PLR节点根据备份隧道的目的地址来确定MP节点,再根据MP节点找到FRR切换后的内层标签。如果MP节点是1.1.1.11,即直连下一跳节点,FRR切换需使用的内层标签是其分配的标签69249,这种情况属于链路保护;如果MP节点是1.1.1.10,是非直连下一跳节点,FRR切换需使用的内层标签是其分配的标签2287,这种情况属于节点保护。最后,在PLR节点上,主备LSP形成绑定关系,下刷控制平面和数据平面,为主LSP链路故障或者节点故障进行TE FRR切换做好了准备工作。
图16 RRO对象
我们可以将链路保护看成一种特殊的节点保护,所以不管节点保护还是链路保护,它们的实现原理是一样的,而在PLR节点上的配置也没有区别,就是在PLR节点主LSP出接口上手工配置保护隧道。主隧道和保护隧道能否形成主备关系,还需要判断保护隧道可用带宽,如果保护隧道的可用带宽大于等于主隧道带宽,主隧道和保护隧道形成主备关系,否则主隧道和保护隧道不能形成主备关系。
2.4 TE FRR切换之后,新LSP建立之前数据转发过程
TE FRR不管是链路保护还是节点保护都需要结合BFD检测机制或者RSVP Hello机制对主LSP进行故障检测,来达到TE FRR的快速切换。PLR节点检测到主LSP发生故障之后,会直接把流量切换到备份隧道转发,尽可能的减少数据丢包。
以 TE FRR节点保护方式举例说明TE FRR切换之后,新LSP建立之前的数据转发过程。
图17 TE FRR切换之后,新LSP建立之前的数据转发过程
FRR切换之前,数据报文通过主LSP进行转发,转发路径是5.5.5.5->1.1.1.12->1.1.1.11->1.1.1.10。在PLR节点上,出方向的数据报文只需封装一层MPLS标签,标签值就是下游节点1.1.1.11向上游PLR节点分配的标签1060。当BFD或者RSVP Hello机制检测到节点故障后,PLR节点进入TE FRR节点保护流程,把主LSP上的MPLS数据报文以及协议报文在BypassSP隧道内转发。如图17所示,主备LSP会合节点即MP节点是PLR节点的非直连下一跳节点是节点保护方式,此时,PLR节点转发报文有两层标签,其内层标签是MP节点1.1.1.10向上游节点1.1.1.11分配的标签1040,外层标签是备份LSP对应的出标签1142。
从头节点5.5.5.5上指定源地址7.1.1.1 Ping MP节点上的loopback地址58.4.0.1,FRR切换之后,PLR节点在出接口G0/1转发的报文截图如下:
图18 FRR切换之后,PLR节点转发的报文截图
3 MPLS TE FRR小结
本文详细讲解了Facility方式的TE FRR实现细节,再重新总结一下PLR节点在FRR切换前后的主要变化:
主备LSP绑定之后,FRR切换前:
在PLR节点上,主备LSP已经形成了绑定关系,并在控制平面,数据平面下刷主备LSP绑定关系以及相关数据信息。此时,PLR节点发送数据报文通过主LSP发送,封装一层MPLS标签。
当链路故障或者节点故障导致FRR切换后:
在PLR节点上,主LSP控制平面信息保持不变,只是其Path消息走Bypass LSP进行转发,同时Path消息中Hop地址变为实际发送的物理接口地址,且RRO本地出接口HOP的Flag中Local Protection in use位置1。此时,PLR节点通过备份隧道发送数据报文,封装双层MPLS标签,其内层标签是主LSP对应的出标签,外层标签是Bypass LSP对应的出标签。