新聞資訊 NEWS CENTER
在HCIE-Routing&Switching學(xué)習(xí)中,我們經(jīng)常會遇到有關(guān)MPLS LDP的知識點,MPLS建立外層隧道的方式有很多,一般我們使用LDP的方式,今天讓我們討論一下在LDP方式下當(dāng)發(fā)生路徑切換時如何減少被丟棄流量的產(chǎn)生。
通過LDP方式構(gòu)建外層隧道的MPLS網(wǎng)絡(luò)中,可能會因為某個節(jié)點或者鏈路出現(xiàn)故障,LSP隧道重新建立發(fā)生了路徑切換,從而產(chǎn)生丟包,這種情況是控制平面+轉(zhuǎn)發(fā)平面都出現(xiàn)了問題。還有一種情況是控制層面故障了,但是轉(zhuǎn)發(fā)層面是沒問題的。今天讓我們一下來看一下,在不同場景下,如何減少被丟棄流量的產(chǎn)生,主要通過如下兩種方式:
1、故障檢測:加快故障檢測速度,保證故障時候能夠盡快使用故障保護技術(shù)。
2、流量保護技術(shù):
即控制平面+轉(zhuǎn)發(fā)平面出現(xiàn)問題;
控制平面出問題,轉(zhuǎn)發(fā)平面沒問題。
接下來我們先來講講LDP中的故障檢測技術(shù),以如下拓撲為例:
前提條件:該環(huán)境中底層已經(jīng)全部部署IGP,并將互聯(lián)接口全部宣告進IGP。
正常情況下,R1訪問R4走如下路徑:R1->R2->R3(主LSP),當(dāng)主LSP出現(xiàn)問題時會切換到備LSP:R1->R4->R2->R3
如果R1---R2的鏈路掉了,LDP需要多久才能知道我跟鄰居失效了?有計時器對不對,LDP的Hello包5s一次,15s沒收到認(rèn)為鄰居失效。當(dāng)然在上圖的場景,接口掉線,設(shè)備會立即知曉,物理層會告訴LDP;但是如果R1--R2中有二層設(shè)備,這個時候R1、R2感知到LDP鄰居關(guān)系出現(xiàn)問題均需要15s的時間,這會極大影響業(yè)務(wù)的正常運行。
有什么辦法可以解決該問題,加速路徑切換呢?我們可以使用BFD聯(lián)動LDP,實現(xiàn)快速感知LDP鄰居故障,從而將主LSP切換到備LSP,縮短業(yè)務(wù)故障時間。
R1的配置命令:
FEC-list R1toR3 //創(chuàng)建一個FEC列表
FEC-node 3.3.3.3 //Fec為3.3.3.3
Mpls//進入Mpls視圖
Mpls bfd-trigger fec-list R1toR3 //指定檢測R1--R3的路徑
Mpls bfd enable //使能BFD檢測mpls
Mpls bfd min-tx-interval 150 min-rx-interval 150
//指定每個包的發(fā)送時間,單位為毫秒ms
R3的配置命令:
BFD
Mpls-passive//在R3上配置被動使能BFD for LSP能力
在R1、R3上完成以上配置之后,R1會通過BFD協(xié)議定期檢測前往R3(3.3.3.3)的連通性,如果R1前往R3的中間鏈路出現(xiàn)問題,則無需等待15s的定時器,BFD模塊會直接通知LDP模塊進行重新收斂。
現(xiàn)在通過部署B(yǎng)FD,LDP能夠?qū)崿F(xiàn)快速收斂,但該收斂需要多久完成呢?讓我們繼續(xù)分析。
還是這個場景,R1---R2鏈路出現(xiàn)問題,R1與R2之間的鏈路出現(xiàn)故障,LDP在感知到故障之后,重新計算IGP路由、LSP,但此時若存在流量經(jīng)由R1前往R3,由于IGP、LDP收斂還未完成,R1無法對流量執(zhí)行轉(zhuǎn)發(fā)操作,流量將會被丟棄。
是否存在某種方式無需重新進行IGP收斂?
我們可以使用IP FRR技術(shù)。
R1的配置:
router-policy XXX //創(chuàng)建一個策略
Apply backup-interface XXX//設(shè)備備份出接口
Apply backup-nexthop XXX//設(shè)置備份下一跳
Ip frr router-policy XXX//使能IP FRR功能
R1與R2之間的鏈路出現(xiàn)問題,備份路由將會直接生效,IP FRR跳過了IGP收斂過程。IGP路由切換之后,,LDP也需要建立鄰居發(fā)布標(biāo)簽了。此時LDP等IGP收斂完畢后,開始重新建立鄰居,發(fā)布標(biāo)簽,那如果在LDP分配標(biāo)簽的這個時候來了流量,是不是又會丟包?為了解決這個問題,有一種技術(shù)叫LDP FRR,依舊使用之前的Topo為例,當(dāng)主LSP出現(xiàn)問題的時候,備LSP立即生效用于指導(dǎo)報文轉(zhuǎn)發(fā)。這就是LDP FRR的作用,一起來看看配置:
手工模式(Manual LDP FRR)
直接在R1主LSP的接口下,也就是G0/0/1口下,
配置:
mpls ldp frr nexthop 4.4.4.4//配置備份LSP的下一跳
自動模式
在底層IGP中,直接配置
loop-free-alternate //開啟自動模式的LDP FRR
在mpls視圖下
Lsp trigger all //為所有路由分配標(biāo)簽(保證每個FEC都可以有備份)
配置完IP FRR、LDP FRR之后,當(dāng)發(fā)生鏈路故障時流量可以快速從主LSP切換到備LSP,接下來再分析…..
接下來再分析一個細節(jié)問題,如果現(xiàn)在流量已經(jīng)快速切換到了備LSP,此時,主LSP恢復(fù)正常了,會出現(xiàn)什么樣的情況?
1、流量通過備LSP走。
2、主LSP鏈路故障消失恢復(fù),流量按照備LSP轉(zhuǎn)發(fā),此時IGP、LDP會再次進行重新計算,此時我們的LDP FRR和IP FRR會生效嗎?不會的,因為我們設(shè)置的是當(dāng)主LSP故障,切換到備LSP。這樣的過程我們稱回切故障,流量重新切換回主LSP的過程我們成為回切,那么在回切過程中會產(chǎn)生什么問題呢:由于IGP的收斂速度快于LDP的速度,因此當(dāng)IGP收斂完畢后,R1去往R3的下一跳已經(jīng)切換到了主LSP,可是,標(biāo)簽還沒分發(fā)完,此時訪問就會造成丟包現(xiàn)象,所以我們設(shè)定了一個定時器:Hold-down-timer,該定時器指定了接口不建立OSPF鄰居而等待LDP會話建立的時間間隔,在接口Up之后等待一段時間,在該時間內(nèi)LDP鄰居先完成了建立。
這個是回切故障需要注意的一個點。
3、再來一種情況,主LSP的鏈路正常,LDP故障了,那么此時我們可以設(shè)置一個定時器---Hold-max-cost(用來配置OSPF在本地設(shè)備的LSA中保持通告最大開銷值的時間),當(dāng)主LSP的LDP出現(xiàn)故障,但是IGP運行正常,此時R1的下一跳肯定還是R2,不是R4,可是R1--R2的LDP出現(xiàn)了問題,此時流量過來,就無法走MPLS轉(zhuǎn)發(fā)了,那么我們用這個定時器,當(dāng)LDP會話出現(xiàn)問題時,把R1---R2的cost改到最大持續(xù)一段時間,那么R1此時的下一跳就是R4了,走備份LSP即可,等LDP會話恢復(fù),Cost值不再維持最大開銷,則又可以通過主LSP轉(zhuǎn)發(fā)了。
現(xiàn)在來看下這兩個命令:
ospf timer ldp-sync hold-down 8 //Hold-down-timer為8s
ospf timer ldp-sync hold-max-cost 9 //cost改為9
現(xiàn)在看最后一種情況,在MPLS網(wǎng)絡(luò)中,設(shè)備協(xié)議重啟或主備倒換時,設(shè)備會刪除轉(zhuǎn)發(fā)平面上的標(biāo)簽轉(zhuǎn)發(fā)表項,導(dǎo)致數(shù)據(jù)轉(zhuǎn)發(fā)中斷。也就是我們開頭說的,控制平面某個節(jié)點出現(xiàn)問題,但是轉(zhuǎn)發(fā)平面沒問題。比如設(shè)備重啟了,我們希望設(shè)備在重啟的過程中流量依然能夠正常轉(zhuǎn)發(fā),那么就得用到LDP GR技術(shù)。我們來分析一下LDP GR是怎么保證設(shè)備重啟或主備倒換時候,做到保證數(shù)據(jù)轉(zhuǎn)發(fā)不中斷的。還是以一開始的拓撲作為例子。
假如我們要保證R2設(shè)備重啟,流量不中斷,那么我們定義R2為GR Restarter,R1作為GR Helper。
1、R1---R2之間先建立LDP會話然后協(xié)商GR能力
2、R1時重啟,立即啟動一個計時器--MPLS轉(zhuǎn)發(fā)狀態(tài)定時器,在這個定時器存在的時間內(nèi),R1保留原有的MPLS轉(zhuǎn)發(fā)表項,并且發(fā)送LDP Init消息給R2,R2收到后,嘗試和R1建立LDP發(fā)現(xiàn)失敗,意識到R1在重啟,R2就保留有關(guān)R1的MPLS轉(zhuǎn)發(fā)表項,這樣就可以保證R1重啟時,轉(zhuǎn)發(fā)不中斷!
3、等R1重啟后,重新和R2建立LDP會話,R2幫助R1恢復(fù)MPLS轉(zhuǎn)發(fā)表項。
配置命令:
在MPLS LDP視圖下
執(zhí)行 graceful-restart命令即可
補充:GR的全稱:Graceful-restart(平滑重啟)