39

SRv6技术课堂:SRv6可靠性方案(一)

 4 years ago
source link: https://www.sdnlab.com/23781.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

作者简介:
胡志波,华为SR与IGP高级协议专家。负责华为的SR与IGP协议规划和创新工作。目前主要从事SR/SRv6协议以及5G切片相关技术的研究。自2017年起积极参与IETF标准创新工作,主导和参与SRv6可靠性保护,SRv6 Yang, 5G 切片,IGP协议等相关标准。致力于通过SRv6协议创新支撑网络向5G,云化的演进。
李振斌,华为首席协议专家/IETF互联网架构委员会(IAB)委员。负责华为的IP协议研究和标准推动工作。自2009年起积极参与IETF标准创新工作,主导和参与了大量IETF RFC/草案。在过去六年内持续推动了SDN演进的BGP/PCEP/Netconf/YANG的协议创新和标准化,当前研究的重点包括SRv6、网络智能、Telemetry、5G承载等。2019年当选IETF互联网架构委员会(IAB)委员,承担2019 - 2021年的互联网架构管理工作。

1 传统网络可靠性方案的问题

交互式多媒体服务的应用,例如,VoIP对网络丢包非常敏感,通常只能容忍数十ms的网络丢包,而网络中链路或路由器发生故障时,路由器硬收敛时间通常为数百ms甚至达到秒级。为最大程度地减少流量损失,路由器预先安装一条备份路径,当故障发生的时候,由邻近故障点的路由器(PLR:Point of Local Repair,本地修复节点)快速切换到备份路径,从而最大限度减少网络故障的丢包,提升收敛性能。这种机制称为FRR(Fast reroute)。

11SRv6668.jpg

传统FRR技术受限于保护范围以及场景限制,通常会配合多跳BFD实现端到端保护,例如:BFD + HSB实现TE的端到端保护,BFD + VPN FRR实现PE故障的保护,但是,依赖BFD实现端到端存在一系列问题:
1)层次化BFD依赖不同的BFD发包间隔分层切换,无法满足50ms切换性能(比如北京到广州的时延至少30多ms)。
2) BFD容量限制会限制网络和业务部署(比如支持4K VPN的PE设备需要支持4K BFD连接,这是一般设备做不到的)。
3)部署复杂,需要逐连接的部署多跳BFD。

通过SRv6可以实现任意故障以及任意场景的端到端50ms保护,针对任意故障点都采用本地保护技术,这使得网络可以彻底消除多跳BFD的部署,以及任意故障点的50ms保护。SRv6端到端50ms技术针对不同的故障场景包含一系列的保护技术:SRv6 Ti-LFA(Topology-Independent Loop-free Alternate,拓扑无关的无环路备份路径),SRv6 Endpoint保护(TE情况下中间节点保护),SRv6尾节点保护(PE节点保护),SRv6 防微环(IP网络分布式无序收敛过程中的环路防护)。这里将分三期介绍这四种技术。第一期介绍SRv6 Ti-LFA,第二期介绍SRv6 EndPoint保护、SRv6尾节点保护,第三期介绍SRv6防微环技术。

2 SRv6 Ti-LFA技术介绍

传统LFA技术及面临的问题

在了解Ti-LFA之前,我们先介绍下传统的FRR技术。最早出现的FRR技术是LFA(Loop-Free Alternate).

SRv61-1.png

图1-1 LFA保护原理

LFA的原理是,找到一个非主下一跳的邻居节点,如果这个邻居节点到目的节点的最短路径不经过源节点(计算节点),则这个邻居节点为无环备份下一跳。满足如下公式的为无环下一跳:(其中,N为邻居节点,D为目的节点,S为运行LFA计算的源节点):
Distance_opt(N, D) < Distance_opt(N, S) +Distance_opt(S, D)

如果邻居节点满足上述公式,则该邻居满足链路保护条件。若该邻居节点同时满足下述公式,则该邻居满足节点保护条件:(其中,N为邻居节点,D为目的节点,E为运主下一跳节点):
Distance_opt(N, D) < Distance_opt(N, E) + Distance_opt(E, D)

如上图所示,结点1要访问结点4,初始路径为1->3->4,结点1的主下一跳为结点3,使用LFA算法计算备份下一跳,由于只有一个可用的备份下一跳为结点2,使用结点2进行上述两个公式的计算,计算结果是均能满足上述公式,所以,结点2是满足节点保护的无环下一跳。结点1将备份下一跳预安装到Fib表,当主下一跳故障的时候,结点1在转发面直接切换到备份下一跳,而不需要控制面收敛。

LFA遇到的问题是由于拓扑规划的问题,很多场景下,无法找到合适的备份下一跳,LFA也就是无法形成了。RFC 6571数据统计LFA场景覆盖率为80%~90%。

RLFA:传统LFA技术的改进及面临的问题

LFA在网格状拓扑中通常能够获得较好的覆盖范围,但是,针对环网,LFA的覆盖范围很低。为了提升保护范围,RFC7490定义了一种RLFA(Remote Loop Free Alternate,远端无环路备份路径)技术,用于提升FRR保护范围。RLFA的基本原理是找到一个不会经过故障节点的中间结点(通常称PQ结点),方式如下:

定义P空间:源节点使用最短路径访P节点不会经过故障链路,满足该条件的P节点的集合称为P空间。至少存在一个非主下一跳的邻居节点,满足如下公式,则P节点属于P空间:
Distance_opt(N, P) < Distance_opt(N, S) + Distance_opt(S, P)

定义Q空间:Q节点到目的节点的最短路径不经过故障链路,满足该条件的Q节点的集合成为Q空间。满足如下公式:
Distance_opt(Q, D) < Distance_opt(Q, S) + Distance_opt(S, D)
则Q节点属于Q空间。

PQ结点则为P空间和Q空间的交集。

SRv61-2.png

图1-2 RLFA保护原理

如上图所示,结点1要访问结点3,最短路径为1->3,如果结点1通过LFA计算到节点3的备份路径,则无法计算出备份路径,因为节点2不满足LFA 无环备份下一跳的条件。节点2到节点3的最短路径经过源结点1,也就是说如果结点1将报文送给节点2,节点2还会将报文送回给1。所以,节点2无法作为备份下一跳。

我们来看看RLFA如何解决这个问题的,通过上文中提到的PQ节点计算公式,我们可以计算出结点4满足PQ结点的条件,则我们可以在节点1到节点4之间建立一条隧道(例如:LDP隧道),同时指定该隧道的下一跳为结点2。我们可以把这条隧道作为虚拟的LFA备份下一跳预安装在转发表,当主下一跳故障的时候,快速切换到备份下一跳,从而实现FRR。

但是RLFA对网络拓扑还是有要求的,如果全网节点都找不到满足PQ条件的结点,尤其对于环网中,存在一条Cost特别大的链路,通常就无法计算出PQ结点。

SRv6 TI-LFA方案

有没有一种算法可以做到不依赖拓扑,或者说与拓扑无关,可以做到100%的故障保护?答案是肯定的。下面我们就介绍SR技术中一项非常重要的故障保护技术:TI-LFA(Topology-Independent Loop-free Alternate,拓扑无关的无环路备份路径)。TI-LFA主要是利用SR的源路由的机制,这使得源节点可以指定一条显示路径,不经过故障链路。但是为了减少Segment List的层数,Ti-LFA也使用了计算PQ节点的算法。

SRv61-3.png

图1-3 SRv6 TI-LFA保护原理

下面采用上图完整地说明一下SRv6 TI-LFA的工作原理。如图所示:节点A到节点F的最短路径为 A->B->E->F,节点B需要计算到节点F的备份路径。

1)排除主下一跳(Link B->E)计算收敛后的最短路径:B->C->D->E->F。
2)计算P空间:按照RLFA介绍的方法计算P空间。如图1-11所示:节点B(源节点永远满足P空间的条件)和节点C为P空间。
3)计算Q空间:按照RLFA介绍的方法计算Q空间。如图1-11所示:节点F(目的节点永远满足Q空间的条件),节点E,节点D为Q空间。
4)计算修复路径:这样我们可以把任意路径表示为:源节点 –>P节点 -> Q节点 -> 目的节点。其中源节点到P节点是无环路径,Q节点到目的节点是无环路径。P节点到Q节点使用严格显式路径来表达,严格显示路径一定是无环的。这样,整条路径就是无环路径。

如图所示:为了简化修复路径,我们选取离源节点最远的P节点以及最近的Q节点,由于SRv6 Sid本身就携带路由信息,所以,SRv6计算备份路径只需要指定P到Q的显示路径即可。节点B到节点F的备份路径为。

如下表所示,节点B根据TI-LFA计算结果预先安装备份转发表,用于主下一跳故障的时候激活备份下一跳,修改到节点F的可达性。

表1-1TI-LFA备份转发表

SRv61-4.png

当Link B->E故障:
1)节点B收到目的地址为6::的报文,根据6::查找转发表,主出接口为Intf1。
2)节点B查询到Intf1接口状态为Down,使用备份表项转发,备份出接口为Intf2,并使用T.Insert的方式封装Segment List 3::1, 新增1个SRH扩展头,将用于修复故障的Segment List和目的地址封装在SRH扩展头。SL初始化为1。
3)节点C收到报文,SL—,将6::0替换为外层IPv6地址,POP SRH扩展头,并按3::1关联的下一跳沿着Link C->D转发到节点D(不查路由表,根据报文头封装3::1指定的出接口转发)。

节点D根据6::0查路由表沿着最短路径转发到目的地址F。

根据上面的工作原理描述可以看到,TI-LFA可以真正做到与拓扑无关,满足100%拓扑覆盖的故障保护。不仅如此,它还具有如下优势:

备份路径和收敛后最短路径大多数情况下是一致的,这减少了路径切换的次数。TI-LFA算法是基于收敛后最短路径计算的,只有少数链路故障和节点故障收敛后路径不一致的情况下才会出现备份路径和收敛后路径不一致的情况。

不需要额外的协议以及维护额外的状态。TI-LFA备份路径依赖IGP SR实现,这样减少了为部署可靠性技术引入的额外协议的部署。
(未完待续)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK