定义
双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。
目的
为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。在现有网络中,有些链路通常通过硬件检测信号,如SDH告警,检测链路故障,但并不是所有的介质都能够提供硬件检测。此时,应用就要依靠上层协议自身的Hello报文机制来进行故障检测。上层协议的检测时间都在1秒以上,这样的故障检测时间对某些应用来说是不能容忍的。在三层网络中,Hello报文检测机制无法针对所有路由来检测故障,如:静态路由。这对系统间互联互通定位故障造成困难。
BFD协议就是在这种背景下产生的,BFD提供了一个通用的标准化的介质无关和协议无关的快速故障检测机制。具有以下优点:
-
对相邻转发引擎之间的通道提供轻负荷、快速故障检测。这些故障包括接口、数据链路,甚至有可能是转发引擎本身。
-
用单一的机制对任何介质、任何协议层进行实时检测。
组网需求
如下图所示,SwitchA和SwitchC为非直连设备,通过配置静态路由互通。用户希望可以实现对设备间链路故障的快速检测。
配置思路
采用如下思路配置BFD多跳检测:
在SwitchA和SwitchC上分别配置BFD会话,实现SwitchA到SwitchC间多跳路径的检测。
操作步骤
(1)配置设备间的网络互连
配置设备各接口的IP地址,以SwitchA为例。SwitchB和SwitchC的配置与SwitchA类似,详见配置文件。
cpp
<Huawei>system-view
[Huawei]sysname SwitchA
[SwitchA]vlan batch 10
[SwitchA]interface GigabitEthernet 0/0/1
[SwitchA-GigabitEthernet0/0/1]port link-type hybrid
[SwitchA-GigabitEthernet0/0/1]port hybrid pvid vlan 10
[SwitchA-GigabitEthernet0/0/1]port hybrid untagged vlan 10
[SwitchA-GigabitEthernet0/0/1]quit
[SwitchA]interface Vlanif 10
[SwitchA-Vlanif10]ip address 10.1.1.1 24
[SwitchA-Vlanif10]quit
(2)配置静态路由,使SwitchA、SwitchC之间有可达路由
SwitchC的配置与SwitchA类似,具体配置过程略,详见配置文件。
cpp
[SwitchA]ip route-static 10.2.1.0 24 10.1.1.2
(3)配置多跳BFD检测
在SwitchA上配置与SwitchC之间的BFD会话。
cpp
[SwitchA]bfd
[SwitchA-bfd]quit
[SwitchA]bfd atoc bind peer-ip 10.2.1.2
[SwitchA-bfd-session-atoc]discriminator local 10
[SwitchA-bfd-session-atoc]discriminator remote 20
[SwitchA-bfd-session-atoc]commit
[SwitchA-bfd-session-atoc]quit
在SwitchC上配置与SwitchA之间的BFD会话。
cpp
[SwitchC]bfd
[SwitchC-bfd]quit
[SwitchC]bfd ctoa bind peer-ip 10.1.1.1
[SwitchC-bfd-session-ctoa]discriminator local 20
[SwitchC-bfd-session-ctoa]discriminator remote 10
[SwitchC-bfd-session-ctoa]commit
[SwitchC-bfd-session-ctoa]quit
(4)验证配置结果
配置完成后,在SwitchA和SwitchC上执行display bfd session all verbose命令,可以看到建立了一个BFD会话,且状态为Up。以SwitchA上的显示为例:
cpp
[SwitchA]display bfd session all verbose
--------------------------------------------------------------------------------
Session MIndex : 256 (Multi Hop) State : Up Name : atoc
--------------------------------------------------------------------------------
Local Discriminator : 10 Remote Discriminator : 20
Session Detect Mode : Asynchronous Mode Without Echo Function
BFD Bind Type : Peer IP Address
Bind Session Type : Static
Bind Peer IP Address : 10.2.1.2
Bind Interface : -
Track Interface : -
FSM Board Id : 0 TOS-EXP : 7
Min Tx Interval (ms) : 1000 Min Rx Interval (ms) : 1000
Actual Tx Interval (ms): 1000 Actual Rx Interval (ms): 1000
Local Detect Multi : 3 Detect Interval (ms) : 3000
Echo Passive : Disable Acl Number : -
Destination Port : 3784 TTL : 254
Proc Interface Status : Disable
WTR Interval (ms) : -
Active Multi : 3
Last Local Diagnostic : No Diagnostic
Bind Application : No Application Bind
Session TX TmrID : 1039 Session Detect TmrID : 1040
Session Init TmrID : - Session WTR TmrID : -
Session Echo Tx TmrID : -
PDT Index : FSM-0 | RCV-0 | IF-0 | TOKEN-0
Session Description : -
--------------------------------------------------------------------------------
Total UP/DOWN Session Number : 1/0
对SwitchA的GE0/0/1接口执行shutdown操作,模拟链路故障。
cpp
[SwitchA]interface GigabitEthernet 0/0/1
[SwitchA-GigabitEthernet0/0/1]shutdown
[SwitchA-GigabitEthernet0/0/1]quit
配置完成后,在SwitchA和SwitchC上执行display bfd session all verbose命令,可以看到建立了一个多跳检测的BFD会话,且会话状态为Down。以SwitchA上的显示为例:
cpp
[SwitchA]display bfd session all verbose
--------------------------------------------------------------------------------
Session MIndex : 256 (Multi Hop) State : Down Name : atoc
--------------------------------------------------------------------------------
Local Discriminator : 10 Remote Discriminator : 20
Session Detect Mode : Asynchronous Mode Without Echo Function
BFD Bind Type : Peer IP Address
Bind Session Type : Static
Bind Peer IP Address : 10.2.1.2
Bind Interface : -
Track Interface : -
FSM Board Id : 0 TOS-EXP : 7
Min Tx Interval (ms) : 1000 Min Rx Interval (ms) : 1000
Actual Tx Interval (ms): 2200 Actual Rx Interval (ms): 2200
Local Detect Multi : 3 Detect Interval (ms) : -
Echo Passive : Disable Acl Number : -
Destination Port : 3784 TTL : 254
Proc Interface Status : Disable
WTR Interval (ms) : -
Active Multi : 3
Last Local Diagnostic : Control Detection Time Expired
Bind Application : No Application Bind
Session TX TmrID : 1039 Session Detect TmrID : -
Session Init TmrID : - Session WTR TmrID : -
Session Echo Tx TmrID : -
PDT Index : FSM-0 | RCV-0 | IF-0 | TOKEN-0
Session Description : -
--------------------------------------------------------------------------------
Total UP/DOWN Session Number : 0/1
配置文件
- SwitchA的配置文件
cpp
#
sysname SwitchA
#
vlan batch 10
#
bfd
#
interface Vlanif10
ip address 10.1.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type hybrid
port hybrid pvid vlan 10
port hybrid untagged vlan 10
#
bfd atoc bind peer-ip 10.2.1.2
discriminator local 10
discriminator remote 20
commit
#
ip route-static 10.2.1.0 255.255.255.0 10.1.1.2
#
return
- SwitchB的配置文件
cpp
#
sysname SwitchB
#
vlan batch 10 20
#
interface Vlanif10
ip address 10.1.1.2 255.255.255.0
#
interface Vlanif20
ip address 10.2.1.1 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type hybrid
port hybrid pvid vlan 10
port hybrid untagged vlan 10
#
interface GigabitEthernet0/0/2
port link-type hybrid
port hybrid pvid vlan 20
port hybrid untagged vlan 20
#
return
- SwitchC的配置文件
cpp
#
sysname SwitchC
#
vlan batch 20
#
bfd
#
interface Vlanif20
ip address 10.2.1.2 255.255.255.0
#
interface GigabitEthernet0/0/1
port link-type hybrid
port hybrid pvid vlan 20
port hybrid untagged vlan 20
#
bfd ctoa bind peer-ip 10.1.1.1
discriminator local 20
discriminator remote 10
commit
#
ip route-static 10.1.1.0 255.255.255.0 10.2.1.1
#
return