3
1、MPLS LDP 与RSVP TE在实际部署会存在一些问题,
请问相较于SR、MPLS LDP与RSVP TE在部署时会出现什么问题?
答:相比与SR部署MPLS LDP时会出现如下问题:
1、MPLS LDP需要IGP的支持以在动态生成LSP的过程中实现基于目的前缀的FEC分类和FEC标签的发布
以及标签信息的管理和维护,设备在控制层面需要运行IGP和LDP,并实现IGP和LDP的交互,导致设备
控制层面较为复杂,增加维护成本。一条链路上需要分配多个标签,标签资源占用多,标签转发表维护工作量大。
2、LDP和IGP的同步问题。IGP收敛较快,网络故障后切换路径,新路径上LDP可能还未建立会话,
导致MPLS VPN业务中断,为解决LDP和IGP同步问题,增加了运维难度。
3、IGP和LDP的LSP都是基于最短路径转发报文,网络易出现链路利用率不均的问题,拥塞控制能力差,
通过修改链路开销无法满足所有业务的选路需求。
4、设备为中心的网络模型中,每个网元独立计算拓扑,路径只能实现以自身为根的局部最优,无全局路径视角,
采用最短路径的路由机制无法实现源节点规划路径的源路由机制,进而无法实现路径规划和流量工程。
5、每个网元都要发送协议报文独立建立和维护IGP、LDP的邻居和会话关系,同时维护LSP的状态,
均会在一定程度上消耗链路带宽资源和设备资源。
相比于SR,部署RSVP TE时会存在一下问题:
1、RSVP TE的实现机制复杂,控制层面需要运行IGP、LDP、RSVP协议,
并且IGP协议需要处理RSVP-TE的泛洪及其链路状态信息,通过约束信息配置、传递、收集,
最后基于约束的CSPF算法计算拓扑,根据算路结果,通过RSVP TE协议建立LSP,检查和预留资源,
设备信令开些非常大,拓扑变更时泛洪的信息较多。
2、RSVP-TE仍采用分布式架构,虽实现了源节点路径规划功能,但需要RSVP协议进行预留确认,
RSVP TE类似于SDH管道,不支持ECMP,故实现网络的负载均衡需建立多个隧道增加了复杂度。
正常业务调整还是故障场景下被动路径调整,都需要逐节点下发配置。
3、RSVP TE配置和维护复杂,通过隧道引流来引导流量进行转发,N个节点互联需要N*(N-1)个隧道配置。
中间的P节点需要维护所有经过他的隧道状态,对设备性能压力较大,无法大量部署。
2、在部署FRR功能时需要使用LFA、RLFA、Ti-LFA功能,确保FRR不会发生环路,
请问为什么FRR会有潜在的环路?
答:当IGP网络在拓扑变化时会向其它网络节点发送拓扑变更的信息,
网络节点收到变更信息之后会独立进行计算拓扑及更新转发表。在这段时间内,每个网络节点收到拓扑的变更信息,
以及进行拓扑计算并更新转发表的时间是不一致的。网络中可能会存在诸多的因素影响着每个节点的
路由同步与转发表的更新速度。
比如:
1、在网络中拓扑变化引入了时延,拓扑变化通知到节点的时间取决于拓扑变化处到该节点的距离。
2、每个节点更新转发表中前缀的顺序不能保证是相同的。
3、控制平面和数据平面的更新速度有差异,与CPU、平台架构等相关。
上述情况会导致数据包在转发时出现A 根据最新收敛的路由信息将数据包转发给了B,而B设备此时路由尚未收敛完成,
认为去往目的地的下一跳仍为A设备,从而导致临时环路产生,这种环路存在时间较短,故称之为微环。
在FRR中,不论是采用LFA、RLFA、还是TI-LFA,都会有可能存在上述微环的风险存在。
LFA的工作机制:
LFA的原理是找到一个非主下一跳(非最短转发路径上的下一跳)的邻居节点,
如果这个邻居节点到目的节点的最短路径不经过源节点,则这个邻居节点为无环备份下一跳。
LFA分为链路保护与节点保护两种场景。
LFA链路保护公式:
Distance_opt(N,D)<Distance_opt(N,S)+Distance_opt(S,D)
公式意思为:从邻居节点N到目的节点D的距离比从邻居节点N到S然后到节点D的距离短,
这样才能保护源节点S到目的节点D之间的最短链路故障之后,切换到邻居节点N转发数据时,
邻居节点不会将流量重新发回S节点的情况。
当发生节点故障时,流量需要从最短路径上S的下一跳节点绕行,所以如果邻居节点同时满足下述公式,
则该邻居节点满足保护条件。
LFA节点保护场景公式:
Distance_opt(N,D)>Distance_opt(N。S)+Distance_opt(S,D)
Distance_opt(N,D)>Distance_opt(N,E)+Distance_opt(E,D)
以上公式意思为:从邻居节点N到达目的节点D的距离比先到主下一跳节点E然后在从E到目的节点D的距离短,
也即从邻居节点N到目的节点D的最短路径不会经过故障节点E,这种情况下,
邻居节点N可以作为节点故障时的LFA节点。邻居节点满足上述两个公式,则可以作为对应设备的保护节点。
但LFA的问题在于它不能覆盖所有场景,在有些拓扑下,LFA无法计算备份下一跳,
如整张网络拓扑的开销无法满足上述任何保护公式的情况下,则会导致无法通过LFA计算出备份路径,
从而只能靠路由协议进行收敛,导致最初的微环问题发生。
R-LFA工作原理:R-LFA是对LFA机制进一步优化的体现,它将LFA节点的计算扩大到了远端节点,
而不仅限于邻居节点,从而提高了LFA计算的成功概率。但实质上还是存在LFA中遗留的问题,
就是可能存在拓扑开销无法满足保护公式时从而造成R-LFA失效的情况。
在RLFA中,也存在着两个保护公式:
RLFA的链路保护公式:
Distance_opt(N,P)<Distance_opt(N,S)+Distance_opt(S,P)
Distance_opt(Q,D)<Distance_opt(Q,S)+Distance_opt(S,D)
RLFA的节点保护机制:
Distance_opt(N,P)<Distance_opt(N,E)+Distance_opt(E,P)
Distance_opt(Q,D)<Distance_opt(Q,E)+Distance_opt(E,D)
以上公式中,N为源节点的邻居节点,D为源节点的目的节点,P为源节点的扩展空间,
Q为末端节点的扩展空间。通过以上公式计算出属于P与Q空间的设备,PQ空间中重叠的设备即为PQ节点设备,
该设备为一个去往源和目的均不会产生环路的设备。PQ节点通过与源节点建立一条隧道,
这条隧道将作为虚拟的RLFA备份路径添加到FIB表中,当源节点的下一跳故障之后,
将快速切换到这条RLFA备份路径上进行转发流量。
因为RLFA本质上还是依靠开销去选出PQ节点,所以还是会存在开销不符合公式的情况下时,
造成RLFA失效的情况。同时建立RLFA隧道的设备还需要维护隧道的状态,故在一定程度上增加了设备的压力。
TI-LFA的原理:
在SR路由协议基础上,TI-LFA可以有效的解决RLFA中存在的问题。虽然也继承了RLFA的算法,
但TI-LFA为避免出现无法计算出PQ节点从而造成TI-LFA失效的情况不仅会计算出扩展P空间、Q空间,
还会去计算主节点故障收敛后的最短路径树、备份出接口与repair-list。TI-LFA继承RLFA算法,
虽然还是会根据RLFA去计算出P空间与Q空间的设备,但不再依靠开销计算的路由去转发数据包,
而是通过repair-list对数据包进行转发。通过Repair-List进行数据包的封装,
设备在转发报文时就不需要去查找路由表,只需要按照报文中的标签信息进行转发即可,
故避免了设备因为路由收敛速度不一致导致环路的问题。华为设备在计算TI-LFA备份路径时,也默认计算扩展P空间。
但TI-LFA仍然存在由于主设备收敛完成导致repair-list失效,
进而重新携带正确主用路径的标签转发信息,
由于收敛时间的不一致导致的本地及远端正切微环和回切微环问题。
综上所述,在使用FRR时, LFA、RLFA、TI-LFA均可能产生微环路。
在Ti-LFA中当设备感知到其他设备还未完成收敛时,
本设备继续使用repair-list内的标签信息进行数据包的封装及转发,
只有当设备感知到其他设备收敛完成之后,才会将repair-list内的标签信息清除掉,
恢复成正常的转发标签信息,以此避免正切微环、本地回切防微环和远端微环的产生。