BFD,Bidirectional Forwarding Detection,雙向轉發檢測,是一種快速故障檢測機制,主要用于加快檢測發現網絡中的故障,從而可以盡快解決故障,恢復網絡的正常業務轉發。
那么,第一個問題?為什么需要BFD,網絡中就沒有其它協議可以檢測故障的嗎?
答案是否定的,某些協議是可以通過Keepalive機制來檢測網絡中的連接是否還正常的,比如OSPF,它就可以通過周期性的發送Hello報文來發現鏈路中的故障從而自動切換鏈路,但提到這里,就不得不提OSPF發現故障的檢測時間,首先OSPF的周期性發送是每隔10S發送一次Hello報文,然后要等到4倍HelloTime,也就是40S,一直沒有收到鄰居路由器發送的Hello報文后,才會認為網絡中發生了故障,再開始切換報文轉發路徑。所以,在這40S的時間里,本路由器發送的報文永遠是無法到達鄰居路由器,也就無法通信。而這個40S的時間太長了,所以我們需要一個機制來更快的發現故障,這個機制就是BFD,所以,BFD的主要作用不是檢測故障,而是加快檢測。
BFD檢測的大概過程就是在兩個系統之間建立BFD會話通道,然后周期性發送BFD檢測報文,當某方系統在規定時間內沒有收到對方的檢測報文,就認為鏈路故障了。和OSPF的Hello檢測機制比較類似,實質上,BFD就是一個簡單的Hello協議,不過它檢測故障的用時更短而已。
那么接下來,我們就認識一下BFD究竟是怎么工作的?
不過在這之前,我們有一點不得不提及了,因為BFD是一個與協議無關的檢測機制,所以它是不能獨立運行的,一般是作為輔助與其它路由協議聯動使用,比如靜態路由、OSPF、ISIS、BGP等,本章中主要講述靜態路由和OSPF。
前面提過BFD是需要建立BFD會話通道的,那么BFD建立會話主要有兩種方式:
一是靜態建立BFD會話,靜態建立就是由管理員手工配置本地標識符和遠端標識符來建立BFD會話,適用于沒有Hello機制的協議當中,比如靜態路由。
本地標識符和遠端標識符就是系統間用來建立和區分不同的BFD會話的。本地標識符是標識本地路由器上某個會話的,而遠端標識符是標識遠端路由器的某個會話的,路由器之間只有在發現本地標識符和遠端標識符匹配無誤之后,才可以建立起BFD會話。