簡介BFD協議基本原理

BFD是一個簡單的“Hello”協議,和路由協議的鄰居檢測部分相似,一對系統在它們之間所建立會話的通道上週期性的發送檢測報文,如果某個系統在足夠長的時間內未收到對端的檢測報文,則認為在這條到相鄰系統的雙向通道的某個部分發生了故障。BFD 協議可以分為鄰居協商階段和故障探測兩個階段,在學習BFD協議過程中一般有下面幾個關注點。

BFD是如何識別同一個session的?這個是通過BFD 中的discriminator 來識別不同BFD session 的discriminator 分為remote 和local兩個,當這兩個值匹配的話,就存在了建立一個BFD session 的可能性下圖MD = local discriminator,YD = remote discriminator。

BFD session 是如何進行探測時間協商的?系統將較大的間隔(較慢的速率)確定為傳送間隔,也即實際的發送間隔為本端期望的發送間隔和對端期望的接收間隔中的較大一方,通俗的說協商的結果,總是要滿足能力弱的一方的要求-同情弱者。協商過程可以入下圖所示。


簡介BFD協議基本原理

BFD session是如何協商的?BFD不同類型的session 類型其協商過程也是不同的。

BFD for IP session 協商過程,用戶通過配置或者APP下發 BFD session請求,判斷Peer ip是否存在路由,如果路由存在,則下發BFD配置信息,啟動發送定時器準備發送協商報文,如果協商報文正常,則session 協商成功,BFD 進入探測階段。

BFD for LSP 場景需要分為靜態配置協商過程和通過上層應用APP(一般情況下是LSPM模塊或TNLM模塊)觸發建立session。靜態配置的BFD for LSP ,BFD模塊在收到配置信息後,檢察需要綁定的LSP是否UP,如果UP在下發配置表項,啟動一個定時器(一般是10-15s之間的一個隨即定時器)準備發送協商報文,初始化協商報文攜帶BFD down信息。所有協商報文可以通過IP轉發也可以通過MPLS轉發。一旦協商成功BFD進入探測階段。在通過上層APP進行下發配置觸發建立BFD for LSP session的場景下,主動發起端會首先向遠端發送一個LSP ping request 報文在這個報文中攜帶BFD協商所需要信息包括MY 、YD等等協商信息。遠端收到LSP ping request報文後,解析發現存在BFD協商信息,則上送BFD 模塊處理,這時遠端BFD 會創建會話,併發送BFD 協商報文。本端收到遠端的BFD 報文後才啟動定時器,發送參數協商報文進行BFD session 協商,協商成功BFD 進入探測階段。

BFD for 默認組播 session 當前只能通過靜態配置來建立BFD session ,在配置過程中只有綁定接口能夠處理BFD default 組播,則下發BFD 表項,然後通過組播地址定時發送組播協商報文,原端收到協商報文後也會發送組播的BFD session 報文。協商成功後,進入探測階段。

BFD是如何完成探測的?BFD 探測報文一般是通過NP直接發送的。一個BFD session創建成功後,NP會以10ms為單位,循環查詢BFD session狀態,一旦發現有UP的BFD session,則啟動首包發送定時器,收到對端的首包後,開始正常檢測,按照協商好的發送間隔發送檢測報文。微碼下行收到BFD報文後,查詢到下行接收表,進行狀態機的處理。微碼只有兩個狀態:Up/Down。Up狀態收到Up報文,則檢測記數器復原,等待下一次輪詢再次進行測試;Up狀態收到Down報文、或者配置週期內沒有收到報文都會使底層狀態變Down。底層狀態Down後,則會通過廣播全局索引到各單板進行狀態表項的操作,如果是for lsp類型的會話,可能放置的是LSP Token、Tunnel Index、PW Index等。

在故障通告的過程中,微碼還會將故障消息上送給適配,適配再上送給接口板BFD模塊,BFD模塊然後再上送接口板應用、主控板BFD模塊、主控板應用APP(應用APP可能VRRP、IGP、BGP、PIM、RSVP、LSPM、L2VPN等等)。


分享到:


相關文章: