BFD (双向转发检测) 协议简介与开发
???????? 之前開發的BFD協議,正好有空介紹一下協議基礎內容以及開發時候的注意事項。內容分為如下
1. BFD背景簡介
2. BFD特點
3. BFD報文格式
4. BFD 狀態機處理
5. 開發注意事項
?
一. BFD背景簡介
????????? 為了保護關鍵應用,網絡中會設計有一定的冗余備份鏈路,網絡發生故障時就要求網絡設備能夠快速檢測出故障并將流量切換至備份鏈路以加快網絡收斂速度,減少故障時間。
二. BFD的特點
1. 提供了一種通用的標準化的介質無關和協議無關的協議,能夠在網絡設備間任意類型的雙向轉發路徑進行故障檢測。
2. 可以為不同的上層應用服務,提供一致的快速故障檢測時間。
3. 微秒級的鏈路檢測精度,減少應用中斷時間,提高網絡的可靠性。
三. BFD報文格式
各字段含義如下圖:
?BFD報文
?如果報文加密的話,加密字段格式定義如下:
四. BFD 狀態機處理
BFD協議狀態機如下圖:
初始建立會話前采用三次握手的方式:
5. 開發注意事項
1. BFD會話建立前BFD控制報文以1秒的時間間隔周期發送以減小報文流量。在會話建立后則以協商的時間間隔發送BFD控制報文以實現快速檢測。在BFD會話建立的同時,BFD控制報文發送時間間隔以及檢測時間也會通過報文交互協商確定。在BFD會話有效期間,這些定時器可以隨時協商修改而不影響會話狀態。BFD會話不同方向的定時器協商是分別獨立進行的,雙向定時器時間可以不同。
2. BFD控制報文發送時間間隔為本端Desired Min TX Interval與對端Required Min RX Interval之中的最大值,也就是說比較慢的一方決定了發送頻率。
3.?檢測時間為對端BFD控制報文中的Detect Mult乘以經過協商的對端BFD控制報文發送時間間隔。
4. 如果加大本端Desired Min TX Interval,那么本端實際發送BFD控制報文的時間間隔必須要等收到對端F字段置位的報文后才能改變,這是為了確保在本端加大BFD控制報文發送時間間隔前對端已經加大了檢測時間,否則可能導致對端檢測定時器錯誤超時。BFD控制報文發送時間間隔為本端Desired Min TX Interval與對端Required Min RX Interval之中的最大值,也就是說比較慢的一方決定了發送頻率。
5. 如果減小本端Required Min RX Interval,那么本端檢測時間必須要等收到對端F字段置位的報文后才能改變,這是為了確保在本端減小檢測時間前對端已經減小了BFD控制報文發送間隔時間,否則可能導致本端檢測定時器錯誤超時。
6. 如果減小Desired Min TX Interval,本端BFD控制報文發送時間間隔將會立即減小;加大Required Min RX Interval,本端檢測時間將會立即加大。
?
參考資料:
1. rfc 5880
2. kbfd(BFD的內核實現)
3. OpenBFDD(開源的BFD實現,可以直接在Linux上編譯運行,測試對接)
4. OpenBFDD的安裝與使用
またね!
=============================================================================================
Linux應用程序、內核、驅動、后臺開發交流討論群(745510310),感興趣的同學可以加群討論、交流、資料查找等,前進的道路上,你不是一個人奧^_^。
總結
以上是生活随笔為你收集整理的BFD (双向转发检测) 协议简介与开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 钱站上征信吗(钱站上征信)
- 下一篇: Linux 内核抓包功能实现基础(四)