09-BFD配置
本章節下載: 09-BFD配置 (482.78 KB)
1.4.3 通過bfd static命令手工創建靜態BFD會話
1.5.5 通過bfd static命令手工創建靜態BFD會話
1.5.9 配置BFD會話無法建立時,通知上層協議BFD會話down的超時時間
BFD(Bidirectional Forwarding Detection,雙向轉發檢測)是一個通用的、標準化的、介質無關和協議無關的快速故障檢測機製,用於檢測轉發路徑的連通狀況,保證設備之間能夠快速檢測到通信故障,以便能夠及時采取措施,保證業務持續運行。BFD可以為各種上層協議(如路由協議)快速檢測兩台設備間雙向轉發路徑的故障。上層協議通常采用Hello報文機製檢測故障,所需時間為秒級,而BFD可以提供毫秒級檢測。
BFD在兩台網絡設備上建立會話,用來檢測網絡設備間的雙向轉發路徑,為上層應用服務。BFD本身並沒有發現機製,而是靠被服務的上層協議通知來建立會話。具體機製如下:
(1) 上層協議在建立新的鄰居關係後,將鄰居的參數及檢測參數(包括目的地址和源地址等)通告給BFD。
(2) BFD根據收到的參數建立BFD會話。
會話建立後會周期性地快速發送BFD報文,如果在檢測時間內沒有收到BFD報文,則認為該雙向轉發路徑發生了故障,並將故障信息通知給該會話所服務的上層應用,由上層應用采取相應的措施。下麵以OSPF與BFD聯動為例,簡單介紹BFD的工作流程。
如圖1-1所示,OSPF與BFD聯動觸發建立會話的流程為:
(1) OSPF通過自己的Hello機製發現鄰居並建立連接。
(2) OSPF在建立了新的鄰居關係後,將鄰居信息(包括目的地址和源地址等)通告給BFD。
(3) BFD根據收到的鄰居信息建立會話。
(4) 會話建立後,BFD開始周期性檢測鏈路。
圖1-1 BFD會話建立流程圖
BFD檢測到鏈路故障通知OSPF的流程為:
(1) 被檢測鏈路出現故障。
(2) BFD檢測到鏈路故障,BFD會話狀態變為Down。
(3) BFD通知本地OSPF進程BFD鄰居不可達。
(4) 本地OSPF進程中斷OSPF鄰居關係。
圖1-2 BFD故障發現處理流程圖
BFD可以用來進行單跳和多跳檢測:
· 單跳檢測:是指對兩個直連設備進行IP連通性檢測,這裏所說的“單跳”是IP的一跳。例如,如圖1-3所示,使用BFD檢測Device A和Device B之間的IP單跳路徑。
圖1-3 單跳檢測
· 多跳檢測:BFD可以檢測兩個設備間任意路徑的鏈路情況,這些路徑可能跨越很多跳。例如,如圖1-4所示,使用BFD檢測Device A和Device B之間的IP多跳路徑。
圖1-4 多跳檢測
BFD會話有四種狀態,分別為:DOWN、ADMIN DOWN、INIT和UP。各會話狀態表示的含義如下:
· DOWN:本端會話已經關閉或剛剛創建。DOWN狀態表示轉發路徑不可用,與BFD會話聯動的上層應用需要采取適當的措施,例如主備路徑切換等。
· ADMIN DOWN:通過管理手段阻止本端係統建立BFD會話時,BFD會話狀態為ADMIN DOWN。會話處於ADMIN DOWN時,不代表轉發路徑不可用,與BFD會話聯動的上層應用不需要采取措施。
· INIT:本端已經可以與對端通信,且本端希望會話進入UP狀態。
· UP:本端會話已經建立成功。UP狀態表示轉發路徑可用。
BFD會話通過echo報文和控製報文實現。
echo報文封裝在UDP報文中傳送,該報文IP頭中的源IP和目的IP均為本端設備的IP地址,其UDP目的端口號為3785。
本端發送echo報文建立BFD會話,對鏈路進行檢測。對端不建立BFD會話,隻需把收到的echo報文轉發回本端。如果在檢測時間內沒有收到對端轉發回的echo報文,則認為會話down。
echo報文方式的BFD會話不需要雙方均支持BFD功能,不支持BFD功能的設備接收到echo報文後,直接將該報文環回,從而達到快速檢測的目的。
控製報文封裝在UDP報文中傳送,對於單跳檢測其UDP目的端口號為3784,對於多跳檢測其UDP目的端口號為4784。鏈路兩端的設備通過控製報文中攜帶的參數(會話標識符、期望的收發報文最小時間間隔、本端BFD會話狀態等)協商建立BFD會話。
控製報文方式的BFD會話的狀態機遷移機製如圖1-5所示。在狀態機中ADMIN DOWN也是DOWN狀態。
圖1-5 BFD會話狀態機遷移機製
BFD控製協議報文的格式如圖1-6所示,BFD控製報文包括強製必選部分和可選認證部分。
圖1-6 BFD控製報文
BFD控製報文各字段含義如表1-1所示。
表1-1 BFD控製報文字段含義
字段 |
長度 |
含義 |
Vers (Version) |
3 bits |
BFD協議版本號,目前版本號為1 |
Diag (Diagnostic) |
5bits |
診斷碼,表明發送方最近一次會話Down的原因。包括: · 0:表示無診斷信息 · 1:表示Ctrl會話本端檢測時間超時,會話down · 2:表示Echo會話本端檢測時間超時或echo報文的源IP地址被刪除,會話down · 3:表示對端檢測超時通知本端BFD會話down · 7:表示本端係統阻止BFD會話的建立 · 31:表示收到對端發送的狀態為AdminDown的報文 |
Sta (State) |
2 bits |
發送方BFD會話當前狀態,取值為: · 0:代表AdminDown · 1:代表Down · 2:代表Init · 3:代表Up |
P (Poll) |
1 bit |
會話參數變化時,發送方發送的BFD報文中將P位置位,接收方必須立即響應該報文 · 0:表示發送方不請求確認 · 1:表示發送方請求進行連接確認,或者發送方請求對參數的改變進行確認 |
F (Final) |
1 bit |
F標誌位的置位狀態決定了BFD是否在收到P位置位的報文時發送響應報文 · 0:表示發送係統不響應P位置位的報文 · 1:表示發送係統響應接收到的P位置位的報文 |
C (Control Plane Independent) |
1 bit |
轉發/控製分離標誌位。該字段置位表明BFD的實現是獨立於控製平麵的,即控製平麵的變化不影響BFD檢測。例如,控製平麵為IS-IS,當IS-IS平滑重啟(GR)時,BFD可以繼續檢測鏈路狀態。 · 1:表示發送係統的BFD實現不依賴於控製平麵。即:BFD報文在轉發平麵傳輸,即使控製平麵失效,BFD仍然能夠對鏈路進行檢測 · 0:表示BFD報文在控製平麵傳輸 |
A (Authentication Present) |
1 bit |
該字段置位表明報文包含認證部分,會話需要進行認證 |
D (Demand) |
1 bit |
該字段置位表明發送方希望以查詢模式運行,不置位表明不希望以查詢模式運行或不支持查詢模式 |
M (Multipoint) |
1 bit |
保留位,發送時設為0,接收時忽略該字段 |
Detect Mult |
8 bits |
檢測時間倍數,用於檢測方計算檢測時間間隔 |
Length |
8 bits |
BFD控製報文長度,單位為字節 |
My Discriminator |
32 bits |
BFD會話的本地標識符。發送方產生的一個唯一非0值,用來標識不同的BFD會話 |
Your Discriminator |
32 bits |
BFD會話的遠端標識符。如果已經收到會話鄰居發送的BFD控製報文則該值為收到報文中的My Discriminator,否則為0 |
Desired Min TX Interval |
32 bits |
本地係統在發送BFD控製報文時希望使用的最小時間間隔,單位為微秒 |
Required Min RX Interval |
32 bits |
本地係統能夠支持的最小BFD控製報文接收間隔,單位為微秒 |
Required Min Echo RX Interval |
32 bits |
本地係統支持的發最小BFD echo報文接收時間間隔,單位為微秒。為0表示不支持回聲功能 |
Auth Type |
8 bits |
認證類型 |
Auth Len |
8 bits |
可選認證部分長度,包括Auth Type和Auth Len字段,單位為字節 |
Authentication Data |
Variable |
認證數據區 |
BFD會話建立前,通過改變BFD會話的運行模式可以控製發送BFD控製報文的方式:
· 主動模式:在建立會話前不管是否收到對端發來的BFD控製報文,都會主動發送BFD控製報文。
· 被動模式:在建立會話前不會主動發送BFD控製報文,直到收到對端發送來的控製報文。
通信雙方至少要有一方運行在主動模式才能成功建立起BFD會話。
BFD使用三次握手的機製來建立會話,發送方在發送BFD控製報文時會在Sta字段填入本地當前的會話狀態,接收方根據收到的BFD控製報文的Sta字段以及本地當前會話狀態來進行狀態機的遷移,建立會話。
圖1-7 BFD會話建立過程
控製報文方式的BFD會話建立後,兩端通過周期性發送控製報文對鏈路進行檢測。
控製報文方式的BFD支持兩種檢測模式:
· 異步模式:設備周期性發送BFD控製報文,如果在檢測時間內沒有收到對端發送的BFD控製報文,則認為會話DOWN。缺省情況下,BFD會話為異步模式。
· 查詢模式:當係統中的BFD會話數量較多時,采用查詢模式可防止周期性發送BFD控製報文的開銷對係統的正常運行造成影響。當檢測模式為查詢模式時,建議開啟BFD回聲功能。
¡ 本端的BFD會話工作在查詢模式時,本端設備會向對端發送D比特位置1的BFD控製報文,對端(缺省為異步模式)收到該報文後將停止周期性發送BFD控製報文。
¡ 如果BFD會話兩端都是查詢模式,則雙方在BFD會話建立後停止周期性發送BFD控製報文。僅當需要驗證連通性的時候,設備會連續發送P比特位置1的BFD控製報文。如果在檢測時間內沒有收到對端回應的F比特位置1的報文,就認為會話DOWN;如果在檢測時間內收到對端回應的F比特位置1的報文,就認為鏈路連通,停止發送報文,等待下一次觸發查詢。
使用異步模式的BFD會話檢測直連網段的連通性時,可以使用BFD回聲功能輔助進行故障檢測。使能BFD回聲功能後,會話的一端周期性地發送echo報文,同時自動降低控製報文的接收速率,減少對帶寬資源的消耗。對端不對echo報文進行處理,隻將此報文轉發回發送端。如果發送端連續幾個echo報文都沒有接收到,會話狀態將變為DOWN。
僅單跳檢測支持回聲功能。
BFD會話的建立方式有兩種,即靜態建立BFD會話和動態建立BFD會話。
控製報文方式的BFD通過本地標識符和遠端標識符來區分不同的會話。靜態創建BFD會話和動態建立BFD會話的主要區別在於本地標識符和遠端標識符的獲取方式不同:
· 靜態BFD會話的本地標識符和遠端標識符由用戶手工配置。
· 動態BFD會話的本端標識符由本端設備自動分配,遠端標識符在BFD會話協商建立過程中獲取。
BFD檢測到鏈路故障時,會拆除BFD會話,並通知上層協議鄰居不可達。當上層協議重新建立鄰居關係後,BFD會話重新up。當鏈路頻繁發生故障並故障恢複時,將導致BFD會話震蕩,引發設備不斷執行上述操作,這會占用大量的係統資源並影響網絡的穩定性。BFD會話震蕩抑製功能用於解決上述問題。
本功能通過懲罰機製對BFD會話震蕩進行抑製,根據BFD會話的down次數設置不同的抑製時間間隔,在抑製時間間隔內,不允許重新建立BFD會話。BFD會話down次數越多,抑製時間越長,從而抑製BFD會話的震蕩次數。
軟件BFD是指BFD檢測過程中的報文收發、BFD會話狀態機的維護完全依賴CPU來處理。軟件BFD會極大的消耗CPU能力。同時,受CPU性能影響,能夠支持的BFD會話規格較小,無法用於大規格BFD會話需求的應用場景。
硬件BFD把過度消耗CPU資源的會話處理轉移到芯片,這樣CPU可以及時處理其他重要任務。硬件BFD會話處理的性能不受限於CPU的性能。相較於軟件BFD,硬件BFD能夠支持大規格的BFD會話。
用戶通過display bfd session verbose命令顯示信息中的Hardware mode字段能夠判斷會話由軟件維護還是由硬件維護:Hardware mode字段取值為Disabled,說明會話由軟件維護;Hardware mode字段取值為Enabled,說明會話由硬件維護。
對於由硬件維護的BFD會話,觸發會話切換為軟件維護的常見操作包括:
· 配置硬件BFD不支持的命令
· 拔出支持硬件BFD的單板
由硬件維護的BFD會話切換為軟件維護時,可能會導致會話震蕩,請謹慎配置。
BFD可以和路由協議等聯合使用,具體如表1-2所示。
表1-2 BFD支持的應用
應用 |
參見信息 |
鏈路聚合與BFD聯動 |
“二層技術-以太網交換配置指導”中的“以太網鏈路聚合” |
IPv4靜態路由與BFD聯動 |
“三層技術-IP路由配置指導”中的“靜態路由” |
IPv6靜態路由與BFD聯動 |
“三層技術-IP路由配置指導”中的“IPv6靜態路由” |
RIP與BFD聯動 |
“三層技術-IP路由配置指導”中的“RIP” |
OSPF與BFD聯動 |
“三層技術-IP路由配置指導”中的“OSPF” |
OSPFv3與BFD聯動 |
“三層技術-IP路由配置指導”中的“OSPFv3” |
IS-IS與BFD聯動 |
“三層技術-IP路由配置指導”中的“IS-IS” |
BGP與BFD聯動 |
“三層技術-IP路由配置指導”中的“BGP” |
PIM與BFD聯動 |
“IP組播配置指導”中的“PIM” |
IPv6 PIM與BFD聯動 |
“IP組播配置指導”中的“IPv6 PIM” |
Track與BFD聯動 |
“可靠性配置指導”中的“Track” |
BFD能夠檢測多種類型的鏈路的連通性,具體如表1-3所示。
表1-3 BFD檢測的鏈路類型
BFD檢測的鏈路類型 |
具體鏈路類型 |
說明 |
以太網聚合鏈路 |
· 二層以太網聚合鏈路 · 二層以太網聚合鏈路的成員鏈路 · 三層以太網聚合鏈路 · 三層以太網聚合鏈路的成員鏈路 |
檢測Trunk成員口與檢測Trunk口的BFD會話相互獨立,但不建議同時使用 |
BFD具有以下技術優點:
· 對網絡設備間任意類型的雙向轉發路徑進行故障檢測,路徑可以是物理鏈路,也可以是邏輯鏈路。
· 可以為不同的上層應用服務,並且提供統一的檢測機製。
· 提供毫秒級的檢測速度,從而加快網絡收斂速度,減少應用中斷時間,提高網絡的可靠性。
與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 5885:Bidirectional Forwarding Detection (BFD) for the Pseudowire Virtual Circuit Connectivity Verification (VCCV)
· 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會話震蕩的情況。
本節中的所有配置均為可選,請根據實際情況選擇配置。
(1) 配置echo報文方式的BFD
(2) 配置控製報文方式的BFD
¡ 配置BFD會話無法建立時,通知上層協議BFD會話down的超時時間
(3) 開啟BFD會話震蕩抑製功能
(4) 配置BFD模板
(5) 配置BFD日誌和告警功能
建立echo報文方式的BFD會話的方式有兩種:
· 通過bfd static命令手工創建。
· 應用程序與BFD聯動時動態創建。
在已配置uRPF功能的設備上不要配置echo報文方式的BFD,否則可能導致echo報文被丟棄。關於uRPF功能的詳細介紹請參見“安全配置指導”中的“uRPF”。
創建的靜態BFD會話可以用來進行echo報文方式的BFD單跳檢測和多跳檢測。
使用echo報文方式的靜態BFD會話進行檢測時,僅需在本端創建靜態BFD會話。
首次創建靜態BFD會話時,必須指定靜態BFD會話的對端IPv4或IPv6地址。係統僅檢查IP地址的形式,不檢查其正確性。指定錯誤的對端IP地址或源IP地址均會導致靜態BFD會話無法建立。
不同的靜態BFD會話的本地標識符不能相同。
如果創建靜態BFD會話時未指定source-ip/source-ipv6參數,將使用bfd echo-source-ip/bfd echo-source-ipv6命令指定的IPv4/IPv6地址作為echo報文的源IPv4/IPv6地址。如果創建靜態BFD會話時指定了source-ip/source-ipv6參數,將使用該參數的地址作為echo報文的源IPv4/IPv6地址。建議用戶創建echo報文方式的靜態BFD會話時指定source-ip/source-ipv6參數。
(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) 創建靜態BFD會話,並進入靜態BFD會話視圖。
(IPv4網絡)
bfd static session-name [ peer-ip ipv4-address interface interface-type interface-number destination-ip ipv4-address [ source-ip ipv4-address ] one-arm-echo [ discriminator { auto | local local-value } ] ]
(IPv6網絡)
bfd static session-name [ peer-ipv6 ipv6-address interface interface-type interface-number destination-ipv6 ipv6-address [ source-ipv6 ipv6-address ] one-arm-echo [ discriminator { auto | local local-value } ] ]
(4) (可選)指定靜態BFD會話的本地標識符。
discriminator local local-value
缺省情況下,未指定靜態BFD會話的本地標識符。
本命令僅用於創建靜態BFD會話時未指定靜態BFD會話標識符的場景。
(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) 創建靜態BFD會話,並進入靜態BFD會話視圖。
(IPv4網絡)
bfd static session-name [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] destination-ip ipv4-address [ source-ip ipv4-address ] one-arm-echo[ discriminator { auto | local local-value } ] ]
(IPv6網絡)
bfd static session-name [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] destination-ipv6 ipv6-address [ source-ipv6 ipv6-address ] one-arm-echo [ discriminator { auto | local local-value } ] ]
(4) (可選)指定靜態BFD會話的本地標識符。
discriminator local local-value
缺省情況下,未指定靜態BFD會話的本地標識符。
本命令僅用於創建靜態BFD會話時未指定靜態BFD會話標識符的場景。
在建立echo報文方式的BFD會話時,用戶可以根據網絡狀況和性能需求,調整設備接收echo報文的時間間隔、檢測時間倍數。
多個上層應用關聯同一個BFD會話,即會話的“源IP地址+目的IP地址+會話所在的接口+VPN+目的端口號”信息完全相同,檢測時間參數的優選順序如下:
(1) 靜態BFD會話視圖下設置的檢測時間參數、上層應用引用的BFD模板設置的檢測時間參數、上層應用單獨設置的檢測時間參數中的最小值。
(2) 接口視圖或係統視圖下設置的檢測時間參數。
(3) 缺省值。
一個BFD會話僅被一個上層應用關聯,檢測時間參數的優選順序如下:
(1) 上層應用是否支持引用BFD模板、是否支持單獨設置檢測時間參數會影響檢測時間參數的優選順序,具體如下:
¡ 如果上層應用既支持引用BFD模板,也支持單獨設置檢測時間參數,則上層應用既引用了BFD模板、又單獨設置了檢測時間參數時,上層協議優先使用引用的BFD模板中的檢測時間參數。
¡ 如果上層應用支持引用BFD模板、不支持單獨設置檢測時間參數,則上層應用引用BFD模板後,使用該BFD模板中的檢測時間參數。
¡ 如果上層協議支持單獨設置檢測時間參數、不支持引用BFD模板,則上層應用單獨設置檢測時間參數後,使用這些單獨設置的檢測時間參數。
(2) 接口視圖或係統視圖下設置的檢測時間參數。
(3) 缺省值。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖或靜態BFD會話視圖。
¡ 進入接口視圖。
interface interface-type interface-number
¡ 進入靜態BFD會話視圖。
bfd static session-name
靜態BFD會話必須已經存在。
配置靜態BFD會話的參數時,需要進入靜態BFD會話視圖。
(3) 配置接收echo報文的最小時間間隔。
bfd min-echo-receive-interval interval
缺省情況下,接收echo報文的最小時間間隔為400毫秒。
(4) 配置單跳檢測的BFD檢測時間倍數。
bfd detect-multiplier interval
缺省情況下,BFD檢測時間倍數為5。
(1) 進入係統視圖。
system-view
(2) (可選)進入靜態BFD會話視圖。
bfd static session-name
配置靜態BFD會話的參數時,需要進入靜態BFD會話視圖。
(3) 配置接收多跳echo報文的最小時間間隔。
bfd multi-hop min-echo-receive-interval interval
缺省情況下,接收echo報文的最小時間間隔為400毫秒。
(4) 配置多跳檢測的BFD檢測時間倍數。
bfd multi-hop detect-multiplier value
缺省情況下,BFD檢測時間倍數為5。
建立控製報文方式的BFD會話有兩種方式:靜態創建BFD會話和動態建立BFD會話。
BFD通過控製報文中的本地標識符和遠端標識符來區分不同的會話。靜態創建BFD會話和動態建立BFD會話的主要區別在於本地標識符和遠端標識符的獲取方式不同:
· 靜態BFD會話的本地標識符和遠端標識符由用戶手工配置。手工指定會話的本地標識符和遠端標識符方法包括:
¡ 通過bfd static命令手工創建。
¡ 應用程序與BFD聯動時,由用戶手工指定會話的本地標識符和遠端標識符。
· 動態BFD會話的本端標識符由本端設備自動分配,遠端標識符在BFD會話協商建立過程中獲取。本端設備自動分配本地標識符的方法包括:
¡ 通過bfd static命令的auto方式為本端自動分配會話的本地標識符。
¡ 應用程序與BFD聯動時,如果用戶未指定會話的本地標識符和遠端標識符,則由本端設備自動分配會話的本地標識符。
配置被服務的上層協議支持BFD功能後,無需執行本配置,設備上會自動創建控製報文方式的BFD會話。
BFD版本0不支持以下命令,配置不生效。
· bfd session init-mode
· bfd authentication-mode
· bfd demand enable
· bfd echo enable
BFD會話建立前有兩種模式:主動模式和被動模式。
· 主動模式:在建立會話前不管是否收到對端發來的BFD控製報文,都會主動發送BFD控製報文。
· 被動模式:在建立會話前不會主動發送BFD控製報文,直到收到對端發送來的控製報文。
通信雙方至少要有一方運行在主動模式才能成功建立起BFD會話。
(1) 進入係統視圖。
system-view
(2) 配置BFD會話建立前的運行模式。
bfd session init-mode { active | passive }
缺省情況下,BFD會話建立前的運行模式為主動模式。
BFD會話建立後有兩種模式:異步模式和查詢模式。
· 異步模式:設備周期性發送BFD控製報文,如果在檢測時間內沒有收到對端發送的BFD控製報文,則認為會話DOWN。缺省情況下,BFD會話為異步模式。
· 查詢模式:當係統中的BFD會話數量較多時,采用查詢模式可防止周期性發送BFD控製報文的開銷對係統的正常運行造成影響。
¡ 本端的BFD會話工作在查詢模式時,本端設備會向對端發送D比特位置1的BFD控製報文,對端(缺省為異步模式)收到該報文後將停止周期性發送BFD控製報文。這種情況下,僅對本端到對端的鏈路進行檢測,即當對端設備在檢測時間內未收到BFD控製報文時,則認為鏈路故障,將BFD會話狀態置為DOWN。
¡ 如果通信雙方的BFD會話均工作在查詢模式,則雙方都停止周期性發送BFD控製報文。這種情況下,係統將通過其他與BFD無關的機製對鏈路進行檢測(比如Hello報文機製、硬件檢測機製等)。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 配置BFD會話為查詢模式。
bfd demand enable
缺省情況下,BFD會話為異步模式。
創建的靜態BFD會話可以用來進行控製報文方式的BFD單跳檢測和多跳檢測,通過與Track配合可為對鏈路故障響應速度要求較高的業務提供故障檢測服務。關於Track與BFD聯動的詳細介紹,請參見“可靠性配置指導”中的“Track”。
如果對端創建了靜態BFD會話,那麼本端必須創建靜態BFD會話。
首次創建靜態BFD會話時,必須指定靜態BFD會話的對端IPv4或IPv6地址。係統僅檢查IP地址的形式,不檢查其正確性。指定錯誤的對端IP地址或源IP地址均會導致靜態BFD會話無法建立。
不同的靜態BFD會話的本地標識符不能相同。
(1) 進入係統視圖。
system-view
(2) 創建靜態BFD會話,並進入靜態BFD會話視圖。
(IPv4網絡)
bfd static session-name peer-ip ipv4-address interface interface-type interface-number source-ip ipv4-address [ discriminator { auto | local local-value remote remote-value } ]
需要保證指定的peer-ip為對端靜態BFD會話所在的接口的IP地址,source-ip為本端靜態BFD會話所在的接口的IP地址,否則無法建立靜態BFD會話。
(IPv6網絡)
bfd static session-name peer-ipv6 ipv6-address interface interface-type interface-number source-ipv6 ipv6-address [ discriminator { auto | local local-value remote remote-value } ]
需要保證指定的peer-ipv6為對端靜態BFD會話所在的接口的IPv6地址,source-ipv6為本端靜態BFD會話所在的接口的IPv6地址,否則無法建立靜態BFD會話。
(3) (可選)指定靜態BFD會話的本地標識符和遠端標識符。
discriminator { local local-value | remote remote-value }
缺省情況下,未指定靜態BFD會話的本地標識符和遠端標識符。
本命令僅用於創建靜態BFD會話時未指定靜態BFD會話標識符的場景。
(1) 進入係統視圖。
system-view
(2) 創建靜態BFD會話,並進入靜態BFD會話視圖。
(IPv4網絡)
bfd static session-name peer-ip ipv4-address [ vpn-instance vpn-instance-name ] source-ip ipv4-address [ discriminator { auto | local local-value remote remote-value } ] [ track-interface interface-type interface-number ]
(IPv6網絡)
bfd static session-name peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] source-ipv6 ipv6-address [ discriminator { auto | local local-value remote remote-value } ] [ track-interface interface-type interface-number ]
(3) (可選)指定靜態BFD會話的本地標識符和遠端標識符。
discriminator { local local-value | remote remote-value }
缺省情況下,未指定靜態BFD會話的本地標識符和遠端標識符。
本命令僅用於創建靜態BFD會話時未指定靜態BFD會話標識符的場景。
在建立控製報文方式的BFD會話時,用戶可以根據網絡狀況和性能需求,調整設備接收控製報文的時間間隔、發送控製報文的時間間隔以及檢測時間倍數。
多個上層應用關聯同一個BFD會話,即會話的“源IP地址+目的IP地址+會話所在的接口+VPN+目的端口號”信息完全相同,檢測時間參數的優選順序如下:
(1) 靜態BFD會話視圖下設置的檢測時間參數、上層應用引用的BFD模板設置的檢測時間參數、上層應用單獨設置的檢測時間參數中的最小值。
(2) 接口視圖或係統視圖下設置的檢測時間參數。
(3) 缺省值。
一個BFD會話僅被一個上層應用關聯,檢測時間參數的優選順序如下:
(1) 上層應用是否支持引用BFD模板、是否支持單獨設置檢測時間參數會影響檢測時間參數的優選順序,具體如下:
¡ 如果上層應用既支持引用BFD模板,也支持單獨設置檢測時間參數,則上層應用既引用了BFD模板、又單獨設置了檢測時間參數時,上層協議優先使用引用的BFD模板中的檢測時間參數。
¡ 如果上層應用支持引用BFD模板、不支持單獨設置檢測時間參數,則上層應用引用BFD模板後,使用該BFD模板中的檢測時間參數。
¡ 如果上層協議支持單獨設置檢測時間參數、不支持引用BFD模板,則上層應用單獨設置檢測時間參數後,使用這些單獨設置的檢測時間參數。
(2) 接口視圖或係統視圖下設置的檢測時間參數。
(3) 缺省值。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖或靜態BFD會話視圖。
¡ 進入接口視圖。
interface interface-type interface-number
¡ 進入靜態BFD會話視圖。
bfd static session-name
配置靜態BFD的單跳檢測會話參數時,需要進入相應的BFD會話視圖。
(3) 配置接收echo報文的最小時間間隔。
bfd min-echo-receive-interval interval
缺省情況下,接收echo報文的最小時間間隔為400毫秒。
(4) 配置發送和接收單跳BFD控製報文的最小時間間隔。
¡ 配置發送單跳BFD控製報文的最小時間間隔。
bfd min-transmit-interval interval
缺省情況下,發送單跳BFD控製報文的最小時間間隔為400毫秒。
¡ 配置接收單跳BFD控製報文的最小時間間隔。
bfd min-receive-interval interval
缺省情況下,接收單跳BFD控製報文的最小時間間隔為400毫秒。
(5) 配置單跳檢測的BFD檢測時間倍數。
bfd detect-multiplier interval
缺省情況下,BFD檢測時間倍數為5。
(1) 進入係統視圖。
system-view
(2) (可選)進入靜態BFD會話視圖。
bfd static session-name
配置靜態BFD的多跳檢測會話參數時,需要進入相應的BFD會話視圖。
(3) 配置多跳檢測的BFD檢測時間倍數。
bfd multi-hop detect-multiplier value
缺省情況下,BFD檢測時間倍數為5。
(4) 配置發送和接收多跳BFD控製報文的最小時間間隔。(僅部分產品支持)
¡ 配置發送多跳BFD控製報文的最小時間間隔。
bfd multi-hop min-transmit-interval interval
缺省情況下,發送多跳BFD控製報文的最小時間間隔為400毫秒。
¡ 配置接收多跳BFD控製報文的最小時間間隔。
bfd multi-hop min-receive-interval interval
缺省情況下,接收多跳BFD控製報文的最小時間間隔為400毫秒。
通過配置BFD會話認證信息,包括認證算法、認證密鑰,提高BFD會話的安全性。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖或靜態BFD會話視圖。
¡ 進入接口視圖。
interface interface-type interface-number
¡ 進入靜態BFD會話視圖。
bfd static session-name
靜態BFD會話必須已經存在。
配置靜態BFD會話的參數時,需要進入靜態BFD會話視圖。
(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控製報文不進行認證。
(1) 進入係統視圖。
system-view
(2) (可選)進入靜態BFD會話視圖。
bfd static session-name
靜態BFD會話必須已經存在。
配置靜態BFD會話的參數時,需要進入靜態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控製報文不進行認證。
IANA(Internet Assigned Numbers Authority,互聯網編號分配委員會)將端口號4784分配給BFD,用於BFD控製報文多跳檢測。缺省情況下,H3C設備多跳BFD控製報文的目的端口號為4784。與多跳BFD控製報文目的端口號為3784的其他廠商設備互通時,建議兩端使用相同的多跳BFD控製報文端口號,否則可能會導致BFD會話協商失敗。
配置本功能後,隻有此後新創建的控製報文方式的多跳BFD會話,才會使用本功能設置的端口塊作為發送報文的目的端口號。對於配置本功能前已經Up的控製報文方式的多跳BFD會話,不會使用本功能設置的端口號作為發送報文的目的端口號。
(1) 進入係統視圖。
system-view
(2) 配置多跳BFD控製報文的目的端口號。
bfd multi-hop destination-port port-number
缺省情況下,多跳BFD控製報文的目的端口號為4784。
缺省情況下,控製報文工作方式的BFD會話無法建立時,不會通知上層協議BFD會話down。某些情況下,需要將BFD會話無法建立的消息通知給上層協議,以使上層協議作出正確的處理。比如在聚合鏈路中,由於鏈路故障等原因,BFD會話無法進入up狀態,從而導致聚合模塊無法及時將成員端口的選中狀態修改為非選中狀態,配置本命令可避免上述情況的發生。
本功能對echo報文方式的BFD會話無效。
(1) 進入係統視圖。
system-view
(2) (可選)配置BFD會話無法建立時,通知上層協議BFD會話down的超時時間。
bfd init-fail-timer seconds
缺省情況下,BFD會話無法建立時,不會通知上層協議BFD會話down。
配置本命令後,對於由於配置原因(比如對端設備沒有使能BFD,或者兩端的BFD認證配置不一致等)造成BFD會話無法進入up狀態的情況,如果配置了本定時器,會導致上層協議作出錯誤的處理,所以,請謹慎使用本命令。
配置接口狀態與BFD聯動後,係統將通過發送BFD控製報文來協商建立單跳檢測的BFD會話,實現對鏈路的快速檢測。當檢測到鏈路故障時,將接口鏈路層協議狀態置為“DOWN(BFD)”,從而幫助依賴接口鏈路層協議狀態的應用快速收斂。係統發送的BFD控製報文中的源地址為用戶手工指定的IP地址,目的地址固定為224.0.0.184。對於有IP地址的接口,建議將源地址指定為該接口的IP地址;如果接口沒有IP地址,建議將源地址指定為0.0.0.0以外的單播地址。
支持與BFD聯動的接口類型為:
· 二層以太網接口
· 加入聚合組的二層以太網接口
· VLAN接口
· 二層聚合口
回聲功能對接口狀態與BFD聯動的會話無效。
(1) 進入係統視圖。
system-view
(2) 進入接口視圖。
interface interface-type interface-number
(3) 配置接口狀態與BFD聯動。
bfd detect-interface source-ip ip-address [ discriminator local local-value remote remote-value ] [ template template-name ]
當對端設備不支持通過自動協商的方式獲取BFD會話的標識符時,必須指定discriminator參數,且兩端都需要指定該參數,否則,BFD會話無法up。
(4) (可選)配置首次建立檢測接口狀態的BFD會話失敗時,通知數據鏈路層BFD會話down的超時時間。
bfd detect-interface first-fail-timer seconds
缺省情況下,首次建立檢測接口狀態的BFD會話失敗時,不會通知數據鏈路層BFD會話down。
(5) (可選)開啟對檢測接口狀態的BFD會話進行特殊處理的功能。
bfd detect-interface special-processing [ admin-down | authentication-change | session-up ] *
缺省情況下,對檢測接口狀態的BFD會話進行特殊處理的功能處於關閉狀態。
H3C設備與其他廠商設備互通時,如果BFD會話兩端設備上BFD報文的TTL值不同,則可能會導致BFD會話協商失敗。使用本功能將本端發送BFD報文的TTL值調整為和對端一致,可以解決上述問題。
配置本功能後,當設備接收到對端發送的BFD報文時,如果BFD報文中攜帶的狀態字段取值為DOWN或INIT,則本端會檢查報文中的TTL值,具體機製如下:
· 對於單跳BFD會話,如果本端接收到的BFD報文的TTL值與通過bfd ttl命令設置的ttl-value不同,本端將丟棄該報文。
· 對於多跳BFD會話,如果本端接收到的BFD報文的TTL值大於通過bfd ttl命令設置的ttl-value,本端將丟棄該報文。
如果在配置本功能前BFD會話已經協商UP,配置本功能後,本端將BFD會話的狀態置為AdminDown,觸發BFD會話重新協商。
使用bfd ttl命令設置BFD報文的TTL值時,需要注意:
· bfd ttl命令對echo報文方式的BFD會話不生效,不會改變此類會話報文的TTL值。
· bfd ttl命令不會改變SBFD報文的TTL值。設備也不會檢查SBFD會話報文中的TTL值。
· 如果bfd ttl命令指定的多個IPv4或IPv6地址範圍中都包括某個IPv4地址或IPv6地址,則設備使用最長匹配方式為該IPv4或IPv6地址的BFD會話報文選擇TTL值。
· 對於同一個IPv4網段或IPv6網段,配置的單跳BFD報文TTL值必須大於多跳BFD報文TTL值。
(1) 進入係統視圖。
system-view
(2) 配置BFD報文的TTL值。
bfd { peer-ip ipv4-address mask-length | peer-ipv6 ipv6-address prefix-length } ttl { single-hop | multi-hop } ttl-value
缺省情況下,單跳BFD報文TTL值為255,多跳BFD報文TTL值為64。
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全局多跳可以配置,但是缺乏靈活性。通過BFD模板可以對參數進行靈活配置,LSP以及PW的BFD檢測關聯到BFD模板即可指定會話參數。
對於檢測接口狀態的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事件的日誌信息,幫助用戶定位BFD會話狀態異常的原因。
· BFD會話Down事件
· 驅動上送報文事件
(1) 進入係統視圖。
system-view
(2) 開啟BFD事件的日誌信息功能。
bfd event-log enable { down [ log-size ] | driver-packet [ detection-abnormal-autostop ] }
缺省情況下,BFD事件日誌功能處於關閉狀態。
多次執行本命令可以修改記錄BFD會話Down事件日誌信息的最大個數,但是修改配置後設備會清除已記錄的日誌信息。
設備最多可記錄8192條信息驅動上送報文事件的日誌信息。
開啟BFD模塊的告警功能後,該模塊會生成告警信息,用於報告該模塊的重要事件。生成的告警信息將發送到設備的SNMP模塊,通過設置SNMP中告警信息的發送參數,來決定告警信息輸出的相關屬性。(有關告警信息的詳細介紹,請參見“網絡管理和監控配置指導”中的“SNMP”。)
(1) 進入係統視圖。
system-view
(2) 開啟BFD的告警功能。
snmp-agent trap enable bfd
缺省情況下,BFD的告警功能處於開啟狀態。
在完成上述配置後,在任意視圖下執行display命令可以顯示配置後BFD的運行情況,通過查看顯示信息驗證配置的效果。
在用戶視圖下執行reset命令可以清除BFD會話的統計信息。
表1-4 BFD顯示和維護
操作 |
命令 |
顯示BFD會話信息 |
display bfd session [ discriminator local local-value | static session-name | verbose ] display bfd session [ [ dynamic ] [ control | echo ] [ ip ] [ state { down | admin-down | init | up } ] [ discriminator remote remote-value ] [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] ] [ verbose ] ] display bfd session [ [ dynamic ] [ control | echo ] [ ipv6 ] [ state { down | admin-down | init | up } ] [ discriminator remote remote-value ] [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] ] [ verbose ] ] display bfd session [ [ dynamic ] [ control | echo ] [ lsp | te | pw ] [ state { down | admin-down | init | up } ] [ discriminator remote remote-value ] [ [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] ] | [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] ] ] [ verbose ] ] display bfd session [ [ static ] [ ip ] [ state { down | admin-down | init | up } ] [ discriminator remote remote-value ] [ peer-ip ipv4-address [ vpn-instance vpn-instance-name ] ] [ verbose ] display bfd session [ [ static ] [ ipv6 ] [ state { down | admin-down | init | up } ] [ discriminator remote remote-value ] [ peer-ipv6 ipv6-address [ vpn-instance vpn-instance-name ] ] [ verbose ] |
顯示檢測三層聚合接口對應的聚合鏈路及其成員鏈路的靜態BFD會話信息 |
display bfd session route-aggregation [ interface interface-type interface-number ] |
顯示BFD報文TTL值的配置信息 |
display bfd ttl |
清除BFD會話統計信息 |
reset bfd session statistics |
不同款型規格的資料略有差異, 詳細信息請向具體銷售和400谘詢。H3C保留在沒有任何通知或提示的情況下對資料內容進行修改的權利!