一、BFD概述
雙向轉(zhuǎn)發(fā)檢測(cè)BFD(Bidirectional Forwarding Detection)是一種全網(wǎng)統(tǒng)一的、與介質(zhì)和協(xié)議無(wú)關(guān)的快速鏈路故障檢測(cè)機(jī)制,用于快速檢測(cè)、監(jiān)控網(wǎng)絡(luò)中鏈路或者IP路由的轉(zhuǎn)發(fā)連通狀況,若出現(xiàn)故障可通知上層應(yīng)用。BFD由IETF的RFC 5880定義。
BFD是一種提高網(wǎng)絡(luò)可靠性的非常重要的技術(shù),能實(shí)現(xiàn)與接口狀態(tài)、靜態(tài)路由、RIP路由、IS-IS路由、OSPF路由和BGP路由、VRRP等的聯(lián)動(dòng)。(即根據(jù)BFD會(huì)話狀態(tài)實(shí)現(xiàn)接口狀態(tài)改變、路由收斂和VRRP主備切換等。)
二、BFD檢測(cè)原理
原先的故障檢測(cè)方法有SDH告警、慢Hello機(jī)制等。SDH告警是通過(guò)硬件檢測(cè)來(lái)發(fā)現(xiàn)故障的,雖然發(fā)現(xiàn)速度快,但并不是所有介質(zhì)都能提供硬件檢測(cè);慢Hello機(jī)制檢測(cè)到故障所需時(shí)間為秒級(jí),對(duì)于高速數(shù)據(jù)傳輸,超過(guò)1秒的檢測(cè)時(shí)間將導(dǎo)致大量數(shù)據(jù)丟失,并且慢Hello機(jī)制依賴于路由協(xié)議,若網(wǎng)絡(luò)中沒(méi)有部署路由協(xié)議則無(wú)法使用慢Hello機(jī)制。
BFD可解決上述機(jī)制的不足,BFD可在兩臺(tái)網(wǎng)絡(luò)設(shè)備間建立用來(lái)檢測(cè)設(shè)備間雙向轉(zhuǎn)發(fā)路徑的BFD會(huì)話,為上層應(yīng)用服務(wù)。會(huì)話建立后會(huì)周期性地快速發(fā)送BFD報(bào)文,如果在檢測(cè)時(shí)間內(nèi)沒(méi)有收到BFD報(bào)文,則認(rèn)為該雙向轉(zhuǎn)發(fā)路徑發(fā)生了故障,通知被服務(wù)的上層應(yīng)用進(jìn)行相應(yīng)的處理。
三、BFD會(huì)話建立與管理
1.BFD的會(huì)話建立
BFD會(huì)話的主要區(qū)別在于本地標(biāo)識(shí)符和遠(yuǎn)端標(biāo)識(shí)符,BFD通過(guò)控制報(bào)文中的本地標(biāo)識(shí)符和遠(yuǎn)端標(biāo)識(shí)符來(lái)區(qū)別不同的BFD會(huì)話。
BFD會(huì)話有兩種建立方式,即靜態(tài)建立BFD會(huì)話和動(dòng)態(tài)建立BFD會(huì)話。
a)靜態(tài)建立BFD會(huì)話
靜態(tài)建立BFD會(huì)話是指通過(guò)命令行手工配置BFD會(huì)話參數(shù),包括配置本地標(biāo)識(shí)符和遠(yuǎn)端標(biāo)識(shí)符等,然后手工下發(fā)BFD會(huì)話建立請(qǐng)求。建立靜態(tài)BFD會(huì)話又可包括兩種方式:手動(dòng)指定標(biāo)識(shí)符的靜態(tài)BFD會(huì)話、標(biāo)識(shí)符自協(xié)商的靜態(tài)BFD會(huì)話。
b)動(dòng)態(tài)建立BFD會(huì)話
動(dòng)態(tài)BFD聯(lián)動(dòng)會(huì)話主要是由各種路由協(xié)議觸發(fā),如RIP、OSPF等。在建立動(dòng)態(tài)BFD會(huì)話時(shí),系統(tǒng)對(duì)本地標(biāo)識(shí)符和遠(yuǎn)端標(biāo)識(shí)符所采用的方式不同:動(dòng)態(tài)分配本地標(biāo)識(shí)符、自動(dòng)學(xué)習(xí)遠(yuǎn)端標(biāo)識(shí)符。
2.BFD的檢測(cè)機(jī)制
BFD的檢測(cè)機(jī)制是先在兩個(gè)系統(tǒng)間建立BFD會(huì)話,然后沿它們之間的路徑周期性發(fā)送BFD控制報(bào)文,如果一方在既定的時(shí)間內(nèi)沒(méi)有收到對(duì)方發(fā)來(lái)的BFD控制報(bào)文或者自己發(fā)送的BFD報(bào)文返回(配置單臂回聲功能時(shí)發(fā)送的報(bào)文,下文的BFD應(yīng)用會(huì)介紹),則認(rèn)為路徑上發(fā)生了故障。BFD提供了兩種檢測(cè)模式,分別是異步模式、查詢模式。
異步模式:BFD的主要操作模式為異步模式。在這種模式下,系統(tǒng)之間相互周期性地單獨(dú)發(fā)送BFD控制報(bào)文,如果某個(gè)系統(tǒng)在既定的時(shí)間內(nèi)沒(méi)有接收到對(duì)方發(fā)送過(guò)來(lái)的BFD報(bào)文,就認(rèn)為BFD會(huì)話的狀態(tài)是Down。
查詢模式:當(dāng)一個(gè)系統(tǒng)中存在大量BFD會(huì)話時(shí),為防止周期性發(fā)送BFD控制報(bào)文的開(kāi)銷影響到系統(tǒng)的正常運(yùn)行,可以采用查詢模式。在查詢模式下,一旦BFD會(huì)話建立,系統(tǒng)就不再周期性發(fā)送BFD控制報(bào)文,而是通過(guò)其他與BFD無(wú)關(guān)的機(jī)制檢測(cè)連通性(比如路由協(xié)議的Hello機(jī)制、硬件檢測(cè)機(jī)制等),從而減少BFD會(huì)話帶來(lái)的開(kāi)銷。
3.BFD的會(huì)話管理
BFD會(huì)話有四種狀態(tài):Down、Init、Up和AdminDown。會(huì)話狀態(tài)的變化通過(guò)BFD報(bào)文的State字段傳遞,系統(tǒng)根據(jù)自己本地的會(huì)話狀態(tài)和接收到的對(duì)端BFD報(bào)文驅(qū)動(dòng)狀態(tài)改變。BFD狀態(tài)機(jī)的建立和拆除都采用三次握手機(jī)制,以確保兩端系統(tǒng)都能知道狀態(tài)的變化。

四、BFD的報(bào)文格式

(強(qiáng)制部分的格式)
Vers:Version,BFD協(xié)議版本號(hào),目前版本號(hào)為1。
Diag:Diagnostic診斷碼,表明發(fā)送方最近一次會(huì)話Down的原因。
Sta:State狀態(tài)碼,表示發(fā)送方BFD會(huì)話當(dāng)前狀態(tài),0表示AdminDown,1表示Down,2表示Init,3表示Up。
P:Poll,會(huì)話參數(shù)變化時(shí)置位,發(fā)送方在BFD報(bào)文中置該標(biāo)志,接收方必須立即響應(yīng)該報(bào)文。1表示發(fā)送系統(tǒng)請(qǐng)求進(jìn)行連接確認(rèn),或者發(fā)送請(qǐng)求參數(shù)改變的確認(rèn)。0表示發(fā)送系統(tǒng)不請(qǐng)求確認(rèn)。
F:Final,響應(yīng)P標(biāo)志置位的回應(yīng)報(bào)文中必須將F標(biāo)志置位。1表示發(fā)送系統(tǒng)響應(yīng)一個(gè)接收到P比特為1的BFD包。0表示發(fā)送系統(tǒng)不響應(yīng)一個(gè)P比特為1的包。
C:Control Plane Independent控制/轉(zhuǎn)發(fā)分離標(biāo)志,1表示BFD報(bào)文在轉(zhuǎn)發(fā)平面?zhèn)鬏敚词箍刂破矫媸В珺FD仍然能夠起作用。0表示BFD報(bào)文在控制平面?zhèn)鬏敗?/span>
A:Authentication,認(rèn)證標(biāo)識(shí),置1代表會(huì)話需要進(jìn)行驗(yàn)證。
D:Demand,查詢請(qǐng)求,置1表示發(fā)送系統(tǒng)希望工作在查詢模式。置0表示發(fā)送系統(tǒng)不希望、或不能工作在查詢模式。
M:Multipoint,為BFD將來(lái)支持點(diǎn)對(duì)多點(diǎn)擴(kuò)展而設(shè)的預(yù)留位。
Detect Mult:檢測(cè)超時(shí)倍數(shù),用于檢測(cè)方計(jì)算檢測(cè)超時(shí)時(shí)間。
Length:報(bào)文長(zhǎng)度,單位為字節(jié)。
My Discriminator:BFD會(huì)話連接本地標(biāo)識(shí)符。發(fā)送系統(tǒng)產(chǎn)生的一個(gè)唯一的、非0鑒別值,用來(lái)區(qū)分一個(gè)系統(tǒng)的多個(gè)BFD會(huì)話。
Your Discriminator:BFD會(huì)話連接遠(yuǎn)端標(biāo)識(shí)符。從遠(yuǎn)端系統(tǒng)接收到的鑒別值,這個(gè)域直接返回接收到的“My Discriminator”,如果不知道這個(gè)值就返回0。
Desired Min TX Interval:本地支持的最小BFD報(bào)文發(fā)送間隔,單位為微秒。
Required Min RX Interval:本地支持的最小BFD報(bào)文接收間隔,單位為微秒。
Required Min Echo RX Interval:本地支持的最小Echo報(bào)文接收間隔,單位為微秒(如果本地不支持Echo功能,則設(shè)置0)。

(控制報(bào)文可選部分的格式)
Auth Type:認(rèn)證類型。
Auth Len:認(rèn)證字段的長(zhǎng)度。
Authentication Data:認(rèn)證字段凈荷。
五、BFD的應(yīng)用場(chǎng)景
1.BFD檢測(cè)IP鏈路
在IP鏈路上建立BFD會(huì)話,可以利用BFD檢測(cè)機(jī)制快速檢測(cè)故障。BFD檢測(cè)IP鏈路支持單跳檢測(cè)和多跳檢測(cè)。
單跳檢測(cè):是指對(duì)兩個(gè)直連系統(tǒng)進(jìn)行IP連通性檢測(cè)。
多跳檢測(cè):是指BFD可以檢測(cè)兩個(gè)系統(tǒng)間的任意路徑,這些路徑可能跨越很多跳,也可能在某些部分發(fā)生重疊。
2.BFD單臂回聲
單臂回聲功能是指通過(guò)BFD報(bào)文的環(huán)回來(lái)檢測(cè)轉(zhuǎn)發(fā)鏈路的連通性,主要應(yīng)用于兩臺(tái)直連設(shè)備中只有一臺(tái)支持BFD功能的情況,具體的機(jī)制是:在支持BFD功能的設(shè)備上配置單臂回聲功能,向?qū)Χ酥鲃?dòng)發(fā)起回聲請(qǐng)求,對(duì)端不支持BFD功能的設(shè)備收到請(qǐng)求報(bào)文后直接將其環(huán)回(即只作環(huán)回轉(zhuǎn)發(fā),不作其他任何處理),從而實(shí)現(xiàn)轉(zhuǎn)發(fā)鏈路的連通性檢測(cè)功能。
3.BFD與各種路由的聯(lián)動(dòng)
BFD可以與靜態(tài)路由、RIP路由、OSPF路由、IS-IS路由、BGP路由等進(jìn)行聯(lián)動(dòng)(聯(lián)動(dòng)指的是互相快速響應(yīng)、配合工作)。
a)BFD與靜態(tài)路由聯(lián)動(dòng)
BFD與靜態(tài)路由聯(lián)動(dòng)特性可為公網(wǎng)靜態(tài)路由綁定BFD會(huì)話,利用BFD會(huì)話來(lái)檢測(cè)靜態(tài)路由所在鏈路的狀態(tài)。
b)BFD與OSPF聯(lián)動(dòng)
BFD與OSPF聯(lián)動(dòng)是通過(guò)BFD對(duì)鏈路故障的快速感應(yīng)來(lái)通知OSPF協(xié)議,從而加快OSPF協(xié)議對(duì)于網(wǎng)絡(luò)拓?fù)渥兓捻憫?yīng)。(BFD相對(duì)于OSPF的快速檢測(cè)體現(xiàn)在BFD的檢測(cè)速度是毫秒級(jí)的,OSPF只是秒級(jí),IS-IS、BGP等都是秒級(jí)。)
c)BFD與IS-IS聯(lián)動(dòng)
BFD與IS-IS聯(lián)動(dòng)是指BFD會(huì)話由IS-IS協(xié)議動(dòng)態(tài)創(chuàng)建,不再依靠手動(dòng)配置。當(dāng)BFD檢測(cè)到有故障時(shí),通過(guò)路由管理模塊通知IS-IS協(xié)議,由協(xié)議進(jìn)行相應(yīng)鄰居Down處理,快速更新LSP信息和重新進(jìn)行路由計(jì)算,從而實(shí)現(xiàn)IS-IS路由的快速收斂。
d)BFD與BGP聯(lián)動(dòng)
BGP傳輸?shù)乃俾蕰?huì)比較大,當(dāng)發(fā)生故障時(shí)會(huì)導(dǎo)致大量數(shù)據(jù)丟失,所以通過(guò)BFD的快速檢測(cè)可迅速發(fā)現(xiàn)BGP對(duì)等體間鏈路的故障,從而實(shí)現(xiàn)BGP路由的快速收斂。