BFD理論基礎

BFD理論基礎

定義:
雙向轉發檢測BFD(Bidirectional Forwarding Detection)是一種全網統一的檢測機制,用於快速檢測、監控網絡中鏈路或者IP路由的轉發連通狀況。 (注:可以實現快速檢測並監控網絡中鏈路或IP路由的轉發連通狀態,改善網絡性能。相鄰系統之間通過快速檢測發現通信故障,可以更快地幫助用戶建立起備份通道以便恢復通信,保證網絡可靠性。)


BFD會話建立方式:
1、靜態建立BFD會話:

靜態建立BFD會話是指通過命令行手工配置BFD會話參數,包括配置本地標識符和遠端標識符等,然後手工下發BFD會話建立請求。
2、動態建立BFD會話:
1)、動態分配本地標識符:
當應用程序觸發動態創建BFD會話時,系統分配屬於動態會話標識符區域的值作爲BFD會話的本地標識符。然後向對端發送Remote Discriminator的值爲0的BFD控制報文,進行會話協商。
2)、自學習遠端標識符:
當BFD會話的一端收到Remote Discriminator的值爲0的BFD控制報文時,判斷該報文是否與本地BFD會話匹配,如果匹配,則學習接收到的BFD報文中Local Discriminator的值,獲取遠端標識符。


BFD會話管理:
1、 BFD會話有四種狀態:Down、Init、Up和AdminDown。
2、 BFD狀態機的建立和拆除都採用三次握手機制,以確保兩端系統都能知道狀態的變化。以BFD會話建立爲例:
BFD理論基礎
1)、SwitchA和SwitchB各自啓動BFD狀態機,初始狀態爲Down,發送狀態爲Down的BFD報文。對於靜態配置BFD會話,報文中的Remote Discriminator的值是用戶指定的;對於動態創建BFD會話,Remote Discriminator的值是0;
2)、SwitchB收到狀態爲Down的BFD報文後,狀態切換至Init,併發送狀態爲Init的BFD報文;
3)、SwitchB本地BFD狀態爲Init後,不再處理接收到的狀態爲Down的報文;
4)、SwitchA的BFD狀態變化同SwitchB;
5)、SwitchB收到狀態爲Init的BFD報文後,本地狀態切換至Up;
6)、SwitchA的BFD狀態變化同SwitchB。


BFD特殊應用場景:
1、BFD for Perlink:(ETH-TRUNK透傳二層VLAN場景)
背景:兩臺設備通過Eth-Trunk鏈路直連,Eth-Trunk加入VLAN,如果使用BFD for IP單跳會話綁定VLANIF口檢測鏈路故障,BFD會選擇Eth-Trunk的一條成員鏈路作爲檢測路徑,如果這條成員鏈路故障,而別的成員鏈路正常,BFD會話會檢測Down,所以BFD for IP單跳會話檢測Eth-Trunk鏈路可能會出現BFD誤報的情況。
原理:BFD for Perlink會話綁定VLANIF口後,BFD會創建一條管理會話,同時還會基於Eth-Trunk的每個成員口創建一條單播動態BFD子會話。管理會話不進行協商和檢測,只負責處理子會話上報的狀態,並上報上層應用。BFD子會話獨立地進行協商和檢測,並將檢測狀態上報到管理會話。只有當所有子會話的狀態是Down的時候,管理會話的狀態纔會Down。 (注:目前設備支持以單臂回聲模式實現BFD子會話的鏈路檢測; 單臂回聲報文:以本端的VLANIF口的IP地址爲目的地址,以對端vlanif所在設備的MAC爲目的MAC地址,會話的本地標識符和遠端標識符均動態創建。)

2、BFD for Link-bundle:(ETH-TRUNK爲三層口場景)
背景及原理與BFD for Perlink一樣;
BFD for Link-bundle會話由一個主會話以及多個子會話組成,•主會話負責爲Eth-Trunk下每一個成員接口創建一個BFD子會話,以及彙總子會話的檢測結果並對Eth-Trunk鏈路的狀態做出最終判斷;只要有一個子會話的狀態爲Up,主會話狀態就爲Up,如果BFD for Link-bundle沒有子會話,則主會話狀態爲Down,通告給上層應用的狀態爲Unknown。

注:
1、V200R002C50及之後版本,配置BFD與傳輸設備對接時,建議配置port-status fast-detect enable命令使能芯片快速感知接口物理狀態變化功能,同時BFD檢測間隔建議配置爲500ms4、1000ms3或者更大值。
2、缺省情況下,BFD使用組播IP地址224.0.0.184。


BFD聯動功能:
1、 配置BFD與接口狀態聯動:(該功能針對綁定出接口且使用缺省組播地址進行檢測的單跳BFD會話)
背景:當直連鏈路中間存在傳輸設備時,與接口本身的鏈路協議故障檢測機制相比,BFD能夠更快地檢測到鏈路故障。 爲了將BFD檢測結果更快地通告到應用程序,在設備接口管理模塊中,爲每個接口增加了一個屬性,即BFD狀態,指的是與該接口綁定的BFD會話的狀態,系統根據接口的鏈路狀態、協議狀態和BFD狀態決定接口的狀態,並將結果通告給應用程序。

1)、system-view,進入系統視圖;
2)、bfd,使能全局BFD功能並進入BFD視圖(默認未使能);
3)、(可選)default-ip-address ip-address,配置BFD缺省組播IP地址(缺省爲224.0.0.184);
4)、quit,返回系統視圖
5)、bfd** session-name bind peer-ip default-ip interface interface-type interface-number [ source-ip ip-address ],建立BFD會話‘
6)、
discriminator local discr-value,配置BFD會話的本地標識符;
7)、
discriminator remote discr-value,配置BFD會話的遠端標識符;
8)、
process-interface-status,配置當前BFD會話與其綁定接口狀態聯動(缺省情況下,BFD會話不與綁定的接口狀態聯動,即BFD會話狀態的變化不修改接口狀態);
9)、
commit,提交配置。
注:當配置文件中存在
process-interface-status命令時,在整機重啓後,考慮到接口的初始狀態一定是Down,所以配置了process-interface-status**命令的BFD會上報一個Down狀態給接口。

2、 配置BFD與接口聯動(觸發與BFD聯動的接口物理狀態變爲Down):
1)、system-view,進入系統視圖;
2)、oam-mgr,進入OAM管理視圖;
3)、oam-bind ingress bfd-session session-name session-name trigger if-down egress interface interface-type interface-number,配置BFD會話向接口單向傳遞故障消息功能(當BFD會話檢測到故障後,與BFD會話綁定的接口物理狀態變爲Down);
4)、commit,提交配置。


調整BFD參數:
1、 調整bfd檢測時間:
1)、bfd session-name,進入BFD會話視圖;
2)、min-tx-interval interval,配置BFD報文的發送間隔;(默認1000ms)
3)、min-rx-interval interval,配置BFD報文的接收間隔;(默認1000ms)
4)、detect-multiplier multiplier,配置本地檢測倍數;(默認爲3)
注:配置BFD與傳輸設備對接時,建議配置port-status fast-detect enable命令使能芯片快速感知接口物理狀態變化功能。

2、 bfd等待恢復時間:
1)、bfd session-name,進入BFD會話視圖;
2)、wtr wtr-value,配置BFD會話的等待恢復時間;(即BFD會話從狀態Down變爲狀態Up時,BFD等待WTR超時後纔將這個變化通知給上層應用;默認wtr爲0)
3)、commit,提交配置。

3、 bfd會話延遲up時間:
1)、bfd,對本節點使能全局BFD功能並進入BFD視圖;
2)、delay-up time,使能延遲BFD會話Up的功能;(默認爲0)
3)、commit,提交配置。
注:該時間是爲了彌補路由協議Up晚於接口Up的時間差,避免流量回切時查不到路由。

4、 bfd會話震盪抑制:
1)、bfd,進入BFD會話視圖;
2)、dampening timer-interval maximum maximum-milliseconds initial** initial-milliseconds secondary secondary-milliseconds,配置BFD會話的震盪抑制時間(缺省已開啓,時間:第一次6000ms、第二次10000ms,最大缺省值爲20000ms);
3)、(可選,針對BFD for Link-bundle會話)
dampening timer-interval bundle-member maximum bundle-maximum-milliseconds initial bundle-initial-milliseconds secondary bundle-secondary-milliseconds ,配置BFD for Link-bundle的震盪抑制時間(缺省開啓,時間:第一次16000ms、第二次20000ms,最大缺省值爲60000ms**)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章