BFD檢視原始碼討論檢視歷史
BFD |
BFD是Bidirectional Forwarding Detection的縮寫,它是一個用於檢測兩個轉發點之間故障的網絡協議,在RFC 5880有詳細的描述。BFD是一種雙向轉發檢測機制,可以提供毫秒級的檢測,可以實現鏈路的快速檢測,BFD通過與上層路由協議聯動,可以實現路由的快速收斂,確保業務的永續性。BFD Echo報文採用UDP封裝,目的端口號為3784,源端口號在49152到65535的範圍內。目的IP地址為發送接口的地址,源IP地址由配置產生(配置的源IP地址要避免產生ICMP重定向)
簡介
現有的故障檢測方法主要包括以下幾種:硬件檢測:例如通過SDH(Synchronous Digital Hierarchy,同步數字體系)告警檢測鏈路故障。硬件檢測的優點是可以很快發現故障,但並不是所有介質都能提供硬件檢測。慢Hello機制:通常採用路由協議中的Hello報文機制。這種機制檢測到故障所需時間為秒級。對於高速數據傳輸,例如吉比特速率級,超過1秒的檢測時間將導致大量數據丟失;對於時延敏感的業務,例如語音業務,超過1秒的延遲也是不能接受的。並且,這種機制依賴於路由協議。其他檢測機制:不同的協議有時會提供專用的檢測機制,但在系統間互聯互通時,這樣的專用檢測機制通常難以部署。雙向轉發檢測(BFD)的新協議將幫助解決這個問題,提高故障檢測與恢復速度。作為一項IETF草案標準,BFD提供一種檢測鏈路或系統轉發傳輸流能力的簡單方法。BFD是從基礎傳輸技術中經過逐步發展而來的,因此它可以檢測網絡各層的故障。它可以用以太網、多協議標籤交換(MPLS)路徑、普通路由封裝以及IPSec隧道在內的多種類型的傳輸正確性。從本質上講,BFD是一種高速的獨立HELLO協議(類似於那些在路由協議中使用的協議,如開放最短路徑優先協議(OSPF),或可以與鏈路、接口、隧道、路由或其他網絡轉發部件建立聯繫的中間系統到中間系統協議)。
評價
BFD庫是一個GNU項目,它的目標就是希望通過一種統一的接口來處理不同的目標文件。BFD這個項目本身是binutils項目的一個子項目。BFD把目標文件抽象成一個統一的模型,比如在這個抽象的目標文件模型中,最開始有一個描述整個目標文件總體信息的"文件頭",就跟我們實際的ELF文件一樣,文件頭後面是一系列的段,每個段都有名字、屬性和段的內容,同時還抽象了符號表、定位表、字符串表等類似的概念,使得BFD庫的程序只要通過這個抽象的目標文件模型就可以實現操作所有BFD支持的目標文件格式。GCC(更具體地講是GNU匯編器GAS,GNU Assembler)、連接器ld、調試器GDB及binutils的其他工具都通過BFD庫來處理目標文件,而不是直接操作目標文件。這樣做的最大的好處是將編譯器和連接器本身同具體的目標文件格式隔離開來,一旦我們需要支持一種新的目標文件格式,只須要在BFD庫裡面添加一種格式就可以了,而不需要修改編譯器和連接器。到目前為止,BFD庫支持大約25種處理平台,將近50種目標文件格式。[1]