09-BFD配置
本章節下載: 09-BFD配置 (252.67 KB)
BFD(Bidirectional Forwarding Detection,雙向轉發檢測)是一個通用的、標準化的、介質無關和協議無關的快速故障檢測機製,用於檢測IP網絡中鏈路的連通狀況,保證設備之間能夠快速檢測到通信故障,以便能夠及時采取措施,保證業務持續運行。BFD可以為各種上層協議(如路由協議)快速檢測兩台設備間雙向轉發路徑的故障。上層協議通常采用Hello報文機製檢測故障,所需時間為秒級,而BFD可以提供毫秒級檢測。
BFD本身並沒有發現機製,而是靠被服務的上層協議通知來建立會話。上層協議在建立新的鄰居關係後,將鄰居的參數及檢測參數(包括目的地址和源地址等)通告給BFD;BFD根據收到的參數建立BFD會話。
當網絡出現故障時:
(1) BFD檢測到鏈路故障後,拆除BFD會話,通知上層協議鄰居不可達;
(2) 上層協議中止鄰居關係;
(3) 如果網絡中存在備用路徑,設備將選擇備用路徑進行通信。
BFD可以用來進行單跳和多跳檢測:
· 單跳檢測:是指對兩個直連設備進行IP連通性檢測,這裏所說的“單跳”是IP的一跳。
· 多跳檢測:BFD可以檢測兩個設備間任意路徑的鏈路情況,這些路徑可能跨越很多跳。
BFD會話通過echo報文和控製報文實現。
echo報文封裝在UDP報文中傳送,其UDP目的端口號為3785。
本端發送echo報文建立BFD會話,對鏈路進行檢測。對端不建立BFD會話,隻需把收到的echo報文轉發回本端。如果在檢測時間內沒有收到對端轉發回的echo報文,則認為會話down。
當BFD會話工作於echo報文方式時,僅支持單跳檢測,且不受檢測模式的控製。
控製報文封裝在UDP報文中傳送,對於單跳檢測其UDP目的端口號為3784,對於多跳檢測其UDP目的端口號為4784。
鏈路兩端通過周期性發送控製報文建立BFD會話,對鏈路進行檢測。
BFD會話建立前有兩種模式:主動模式和被動模式。
· 主動模式:在建立會話前不管是否收到對端發來的BFD控製報文,都會主動發送BFD控製報文;
· 被動模式:在建立會話前不會主動發送BFD控製報文,直到收到對端發送來的控製報文。
通信雙方至少要有一方運行在主動模式才能成功建立起BFD會話。
BFD會話建立後有兩種模式:異步模式和查詢模式。
· 異步模式:設備周期性發送BFD控製報文,如果在檢測時間內沒有收到對端發送的BFD控製報文,則認為會話down。
· 查詢模式:設備周期性發送BFD控製報文,但是對端(缺省為異步模式)會停止周期性發送BFD控製報文。如果通信雙方都是查詢模式,則雙方都停止周期性發送BFD控製報文。當需要驗證連接性的時候,設備會以協商的周期連續發送幾個P比特位置1的BFD控製報文。如果在檢測時間內沒有收到返回的報文,就認為會話down;如果收到對方回應的F比特位置1的報文,就認為連通,停止發送報文,等待下一次觸發查詢。
表1-1 BFD支持的應用
應用 |
參見信息 |
靜態路由 IS-IS OSPF RIP BGP IP快速重路由 |
“三層技術-IP路由配置指導” |
IPv6靜態路由 OSPFv3 |
“三層技術-IP路由配置指導” |
PIM |
“IP組播配置指導” |
Track |
“可靠性配置指導” |
以太網鏈路聚合 |
“二層技術-以太網交換配置指導” |
與BFD相關的協議規範有:
· RFC 5880:Bidirectional Forwarding Detection (BFD)
· RFC 5881:Bidirectional Forwarding Detection (BFD) for IPv4 and IPv6 (Single Hop)
· RFC 5882:Generic Application of Bidirectional Forwarding Detection (BFD)
· RFC 5883:Bidirectional Forwarding Detection (BFD) for Multihop Paths
· RFC 7130:Bidirectional Forwarding Detection (BFD) on Link Aggregation Group (LAG) Interfaces
缺省BFD運行版本1,同時兼容版本0。不能通過命令行配置修改為版本0,當對端設備運行版本0會話時,本端自動會切換到版本0。
BFD會話建立後,可以動態協商BFD的相關參數(例如最小發送間隔、最小接收間隔、初始模式、報文認證等),兩端協議通過發送相應的協商報文後采用新的參數,不影響會話的當前狀態。
對於建立在跨成員設備的聚合接口上的BFD會話,當負責收發BFD報文的主設備異常重啟時,從設備接替收發BFD報文的工作需要一定的時間,如果BFD會話檢測時間較短或者會話數量較多,可能會出現BFD會話震蕩的情況。
在IRF組網下,跨成員設備聚合(包括二層聚合端口或三層聚合端口)端口建立BFD會話連接的場景中,需要注意以下問題:
· BFD會話的維護實際建立在跨成員設備聚合端口的其中一個堆疊成員設備上。
· 當對端向跨成員設備聚合端口發送BFD報文時,如果報文的目的設備不是上述的堆疊成員設備,或者該堆疊成員設備的端口發生振蕩,則會導致聚合BFD發生振蕩。
在已配置uRPF功能的設備上不要配置echo報文方式的BFD,否則可能導致echo報文被丟棄。關於uRPF功能的詳細介紹請參見“安全配置指導”中的“uRPF”。
(1) 進入係統視圖。
system-view
(2) 配置echo報文源IP地址。請至少選擇以下一項進行配置。
¡ 配置echo報文源IPv4地址。
bfd echo-source-ip ip-address
缺省情況下,未配置echo報文的源IPv4地址。
為了避免對端發送大量的ICMP重定向報文造成網絡擁塞,建議不要將echo報文的源IPv4地址配置為屬於該設備任何一個接口所在網段。
¡ 配置echo報文源IPv6地址。
bfd echo-source-ipv6 ipv6-address
缺省情況下,未配置echo報文的源IPv6地址。
echo報文源IPv6地址僅支持全球單播地址。
(3) (可選)配置echo報文方式的BFD參數。
a. 進入接口視圖。
interface interface-type interface-number
b. 配置接收echo報文的最小時間間隔。
bfd min-echo-receive-interval interval
缺省情況下,接收echo報文的最小時間間隔為400毫秒。
c. 配置BFD檢測時間倍數。
bfd detect-multiplier interval
缺省情況下,BFD檢測時間倍數為5。
配置被服務的上層協議支持BFD功能後,無需執行本配置,設備上會自動創建控製報文方式的BFD會話。
BFD版本0不支持以下命令,配置不生效。
· bfd session init-mode
· bfd authentication-mode
· bfd demand enable
· bfd echo enable
(1) 進入係統視圖。
system-view
(2) 配置BFD會話建立前的運行模式。
bfd session init-mode { active | passive }
缺省情況下,BFD會話建立前的運行模式為主動模式。
(3) 進入接口視圖。
interface interface-type interface-number
(4) (可選)配置單跳BFD控製報文進行認證的方式。
bfd authentication-mode { hmac-md5 | hmac-mmd5 | hmac-msha1 | hmac-sha1 | m-md5 | m-sha1 | md5 | sha1 | simple } key-id { cipher cipher-string | plain plain-string }
缺省情況下,單跳BFD控製報文不進行認證。
(5) 配置BFD會話為查詢模式。
bfd demand enable
缺省情況下,BFD會話為異步模式。
(6) (可選)使能echo功能。
bfd echo [ receive | send ] enable
缺省情況下,echo功能處於關閉狀態。
使能echo功能並且會話up後,設備周期性發送echo報文檢測鏈路連通性,同時降低控製報文的接收速率。
(7) 配置發送和接收單跳BFD控製報文的最小時間間隔。
¡ 配置發送單跳BFD控製報文的最小時間間隔。
bfd min-transmit-interval interval
缺省情況下,發送單跳BFD控製報文的最小時間間隔為400毫秒。
¡ 配置接收單跳BFD控製報文的最小時間間隔。
bfd min-receive-interval interval
缺省情況下,接收單跳BFD控製報文的最小時間間隔為400毫秒。
(8) 配置單跳檢測的BFD檢測時間倍數。
bfd detect-multiplier interval
缺省情況下,單跳檢測的BFD檢測時間倍數為5。
(9) (可選)創建一個檢測本接口狀態的BFD會話。
bfd detect-interface source-ip ip-address [ discriminator local local-value remote remote-value ] [ template template-name ]
缺省情況下,不存在檢測本接口狀態的BFD會話。
本功能實現了接口狀態與BFD會話狀態的快速聯動。當檢測到鏈路故障時,將接口鏈路層協議狀態置為“DOWN(BFD)”,從而幫助依賴接口鏈路層協議狀態的應用快速收斂。
(10) (可選)配置首次建立檢測接口狀態的BFD會話失敗時,通知數據鏈路層BFD會話down的超時時間。
bfd detect-interface first-fail-timer seconds
缺省情況下,首次建立檢測接口狀態的BFD會話失敗時,不會通知數據鏈路層BFD會話down。
(11) (可選)開啟對檢測接口狀態的BFD會話進行特殊處理的功能。
bfd detect-interface special-processing [ admin-down | authentication-change | session-up ] *
缺省情況下,對檢測接口狀態的BFD會話進行特殊處理的功能處於關閉狀態。
(1) 進入係統視圖。
system-view
(2) 配置BFD會話建立前的運行模式。
bfd session init-mode { active | passive }
缺省情況下,BFD會話建立前的運行模式為主動模式。
(3) (可選)配置多跳BFD控製報文進行認證的方式。
bfd multi-hop authentication-mode { hmac-md5 | hmac-mmd5 | hmac-msha1 | hmac-sha1 | m-md5 | m-sha1 | md5 | sha1 | simple } key-id { cipher cipher-string | plain plain-string }
缺省情況下,多跳BFD控製報文不進行認證。
(4) 配置多跳BFD控製報文的目的端口號。
bfd multi-hop destination-port port-number
缺省情況下,多跳BFD控製報文的目的端口號為4784。
(5) 配置多跳檢測的BFD檢測時間倍數。
bfd multi-hop detect-multiplier value
缺省情況下,多跳檢測的BFD檢測時間倍數為5。
(6) 配置發送和接收多跳BFD控製報文的最小時間間隔。
¡ 配置發送多跳BFD控製報文的最小時間間隔。
bfd multi-hop min-transmit-interval interval
缺省情況下,發送多跳BFD控製報文的最小時間間隔為400毫秒。
¡ 配置接收多跳BFD控製報文的最小時間間隔。
bfd multi-hop min-receive-interval interval
缺省情況下,接收多跳BFD控製報文的最小時間間隔為400毫秒。
BFD檢測到鏈路故障時,會拆除BFD會話,並通知上層協議鄰居不可達。當上層協議重新建立鄰居關係後,BFD會話重新up。當鏈路頻繁發生故障並故障恢複時,將導致BFD會話震蕩,引發設備不斷執行上述操作,這會占用大量的係統資源並影響網絡的穩定性。可配置本功能通過如下懲罰機製對BFD會話震蕩進行抑製。
BFD會話震蕩的懲罰機製通過initial-interval、secondary-interval、maximum-interval參數來進行抑製:
· 在抑製時間間隔內,不允許建立BFD會話;在抑製時間間隔超時後,允許建立BFD會話。抑製時間最大不超過maximum-interval。
· BFD會話第二次down後,在initial-interval時間間隔內,不允許重新建立BFD會話。
· BFD會話第三次down後,在secondary-interval時間間隔內,不允許重新建立BFD會話。
· BFD會話第四次或更多次down後,按照如下規則抑製BFD會話的建立:
¡ secondary-interval×2n-3(n為BFD會話震蕩的次數,初始值為4)小於或等於maximum-interval時,在secondary-interval×2n-3時間間隔內,不允許重新建立BFD會話。
¡ secondary-interval×2n-3(n為BFD會話震蕩的次數,初始值為4)大於maximum-interval時,在maximum-interval時間間隔內,不允許重新建立BFD會話。
(1) 進入係統視圖。
system-view
(2) 開啟BFD會話震蕩抑製功能。
bfd dampening [ maximum maximum-interval initial initial-interval secondary secondary-interval ]
缺省情況下,不會對BFD會話的建立進行抑製。
initial-interval和secondary-interval配置值不允許大於maximum-interval。
對於檢測接口狀態的BFD會話,可以通過BFD模板靈活調整會話參數。
(1) 進入係統視圖。
system-view
(2) 創建BFD模板,並進入BFD模板視圖。
bfd template template-name
(3) (可選)配置BFD控製報文進行認證的方式。
bfd authentication-mode { hmac-md5 | hmac-mmd5 | hmac-msha1 | hmac-sha1 | m-md5 | m-sha1 | md5 | sha1 | simple } key-id { cipher cipher-string | plain plain-string }
缺省情況下,BFD控製報文不進行認證。
BFD版本0不支持本命令,配置不生效。
(4) 配置BFD檢測時間倍數。
bfd detect-multiplier value
缺省情況下,BFD檢測時間倍數為5。
(5) 配置發送和接收BFD控製報文的最小時間間隔。
¡ 配置發送BFD控製報文的最小時間間隔。
bfd min-transmit-interval interval
缺省情況下,發送單跳BFD控製報文的最小時間間隔為400毫秒。
¡ 配置接收BFD控製報文的最小時間間隔。
bfd min-receive-interval interval
缺省情況下,接收單跳BFD控製報文的最小時間間隔為400毫秒。
開啟BFD模塊的告警功能後,該模塊會生成告警信息,用於報告該模塊的重要事件。生成的告警信息將發送到設備的SNMP模塊,通過設置SNMP中告警信息的發送參數,來決定告警信息輸出的相關屬性。(有關告警信息的詳細介紹,請參見“網絡管理和監控配置指導”中的“SNMP”。)
(1) 進入係統視圖。
system-view
(2) 開啟BFD的告警功能。
snmp-agent trap enable bfd
缺省情況下,BFD的告警功能處於開啟狀態。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後BFD的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下執行reset命令可以清除BFD會話的統計信息。
表1-2 BFD顯示和維護
操作 |
命令 |
顯示BFD會話信息 |
display bfd session [ discriminator value | verbose ] |
清除BFD會話統計信息 |
reset bfd session statistics |
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!