SRv6技術課堂:SRv6可靠性方案(一)

本文爲《SRv6可靠性方案》第一篇,第二篇詳見《SRv6技術課堂:SRv6可靠性方案(二)》。

1 傳統網絡可靠性方案的問題

交互式多媒體服務的應用,例如,VoIP對網絡丟包非常敏感,通常只能容忍數十ms的網絡丟包,而網絡中鏈路或路由器發生故障時,路由器硬收斂時間通常爲數百ms甚至達到秒級。爲最大程度地減少流量損失,路由器預先安裝一條備份路徑,當故障發生的時候,由鄰近故障點的路由器(PLR:Point of Local Repair,本地修復節點)快速切換到備份路徑,從而最大限度減少網絡故障的丟包,提升收斂性能。這種機制稱爲FRR(Fast reroute)。

傳統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).

圖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空間的交集。

圖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節點的算法。

圖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的備份路徑爲<3::1>。

如下表所示,節點B根據TI-LFA計算結果預先安裝備份轉發表,用於主下一跳故障的時候激活備份下一跳,修改到節點F的可達性。

表1-1TI-LFA備份轉發表

當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實現,這樣減少了爲部署可靠性技術引入的額外協議的部署。
(未完待續)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章