目录
技术背景
故障检测需求及主要方法
为了减小设备故障对业务的影响、提高网络的可用性,设备需要能够尽快检测到与相邻设备间的通信故障,以便能 够及时采取措施,从而保证业务继续进行。
检测方式
|
备注
|
硬件检测
|
例如通过SDH(Synchronous Digital Hierarchy,同步数字体系)告警检测链路故障
优点是可以很快发现故障,但并
不是所有介质都能提供硬件检测
|
慢Hello机制
|
通常处采用路由协议中的Hello报文机制
这种机制检测到故障所需时间为
秒级。对于高速数据传输,例如吉比特速率级,超过1秒的检测时间将导致大量数据丢失;对于时延敏感的业务,例如语音业务,超过1秒的延迟也是不能接受的
|
其他检测机制
|
不同的协议有时会提供专用的检测机制,但在系统间互联互通时,这样的专用检测机制通常难以部署
|
BFD
Bidirectional Forwarding Detection ,
双向转发检测
-
解决了上述监测机制的不足
-
通用、标准化、介质无关、协议无关,为上层协议服务
-
全网统一的检测机制,用于快速检测、监控网络中链路或路由的转发连通状况
-
保证邻居之间能够快速检测到通信故障,从而快速建立起备用通道恢复通信
BFD工作机制
-
本身没有发现机制,靠上层协议通知
-
建立BFD会话,周期性 发送BFD控制报文进行检测
-
检测到故障后,再通知上层协议
下图解释(以OSPF协议为例):
-
上层协议通过自己的Hello机制发现邻居并建立连接;
-
上层协议在建立了新的邻居关系时,将邻居的参数及检测参数(包括目的地址和原地址等)都通告给BFD;
-
BFD根据收到的参数进行计算并建立邻居
![](https://img-blog.csdnimg.cn/20200728190447125.png)
当链路出现故障时:
-
链路出现故障
-
BFD检测到链路出现故障
-
BFD通知上层协议(OSPF)链路出现故障
-
OSPF将出现故障的邻居Down掉
-
切换到备用链路(如果有的话)
![](https://img-blog.csdnimg.cn/20200728190446605.png)
BFD状态机制
状态
|
备注
|
Down
|
绘画处于Down状态或刚刚创建
|
Init
|
|
UP
|
会话已经建立成功
|
AdminDown
|
会话处于管理型Down状态
|
BFD状态机的建立和拆除都采用三次握手,以确保两端系统都能知道状态的变化
状态迁移规则:对端状态变化、检测定时器超时
![](https://img-blog.csdnimg.cn/20200728190446740.png)
BFD会话工作方式
控制报文方式
|
链路两端会话通过控制报文交互检测链路状态
|
Echo报文方式 |
链路某一端通过发送Echo报文由另一端转发回来,实现对链路的双向监测
|
BFD报文格式
使用组播地址 224.0.0.184,封装在UDP后
控制报文
|
|
Echo报文
|
UDP目的端口号为3785
|
![](https://img-blog.csdnimg.cn/20200728190447123.png)
BFD运行模式
会话建立前模式
主动模式
|
主动发送BFD控制报文,不管是否收到对端发来的BFD控制报文
|
被动模式
|
不会主动发送BFD控制报文,直到收到对端发来的BFD控制报文
|
备注:至少要有一个运行在主动模式才能成功建立起会话
|
会话建立后模式
异步模式
|
周期性地发送BFD控制报文,如果在检测时间内没有收到BFD控制报文则将会话Down
|
查询模式
|
一旦BFD会话建立,不再周期性发送BFD控制报文,而是通过其他机制检测连通性,减少大量BFD会话带来的开销
|
BFD应用场景
-
检测IP链路(如非直连链路)
-
BFD单臂回声功能(即echo,如有一端不支持,可配置单臂回声)
-
与接口状态联动
-
与静态路由联动
-
与RIP联动
-
与OSPF联动
-
与IS-IS联动
-
与BGP联动
-
与MPLS联动
-
与IPv6联动
-
与Smart Link联动
-
与VRRP联动
BFD检测IP链路
在IP链路上建立BFD会话,利用BFD检测机制快速检测故障。BFD检测IP链路支持单跳检测和多跳检测
单跳检测
|
检测直连系统进行IP连通性,"单跳"就是IP的一跳
绑定接口
![]() |
多跳检测
|
检测两个系统间的任意路径,可能跨越很多跳,也可能在发生重叠
绑定IP,而不是绑定接口
![]() |
BFD单臂回声功能
对于有一端不支持BFD的环境,通过BFD报文的环回操作检测转发链路的连通性。
备注:单臂回声功能只适用于单跳BFD会话中
![](https://img-blog.csdnimg.cn/20200728190447123.png)
BFD与其他协议联动
BFD与接口状态联动
关联接口状态,提高了接口感应链路故障的灵敏度,减少了
非直连链路故障导致的问题
![](https://img-blog.csdnimg.cn/20200728190447122.png)
BFD与静态路由联动
与动态路由协议不同,
静态路由本身没有检测机制,所以当网络发生故障的时候,需要管理员介入。BFD为静态路由绑定会话,检测链路故障(由UP转为Down)后,BFD会将故障上报路由管理系统,由路由管理模块将这条路由设置为“非激活”状态(此条路由不可用,从IP路由表中删除)。
BFD与OSPF联动
将BFD和OSPF关联起来,通过BFD对链路故障的快速感应进而通知OSPF协议,从而加快OSPF协议对于网络拓扑变化的感应
是否绑定BFD
|
链路故障检测机制
|
收敛速度
|
未绑定BFD
|
OSPF HELLO Keepalive定时器超时
|
秒级
|
绑定BFD
|
BFD会话Down
|
毫秒级
|
![](https://img-blog.csdnimg.cn/20200728190447124.png)
BFD与BGP联动
BGP协议通过周期性的想对等体(邻居)发送Keepalive报文来实现邻居检测机制,但这种机制检测到故障所需时间比较长,超过1秒钟。当数据达到吉比特速率级别时,将会导致大量的数据丢失。利用BFD的快速检测机制,迅速发现BGP对等体间链路的故障,并报告给BGP协议,从而实现BGP路由的快速收敛
是否绑定BFD
|
链路故障检测机制
|
收敛速度
|
未绑定BFD
|
Keepalive报文机制
|
秒级
|
绑定BFD
|
BFD会话Down
|
毫秒级
|
![](https://img-blog.csdnimg.cn/20200728190447123.png)
BFD与VRRP联动
将BFD应用于Backup对Master的检测,VRRP通过监视BFD会话状态实现主备快速切换,切换实践控制在50ms以内
![](https://img-blog.csdnimg.cn/20200728190446800.png)
配置
命令 | 备注 |
bfd | 开启BFD功能,默认关闭 |
bfd 1 bind peer-ip default-ip int g0/0/0 | 创建二层端口检测(单跳) |
bfd 1 bind peer-ip 12.0.0.2 [int vlanif 1] | 创建三层接口检测(多跳) |
discriminator local / remote 10 /20 | 配置本地标识符和远端标识符 |
commit | 提交BFD会话配置 |
min-tx-interval 100 min-rx-interval 100 | 配置BFD报文发送和接收间隔 默认为1000ms |
detect-multiplier 3 | 配置本地检测倍数,默认为3 |
检测实践公式 | 本端检测间隔(接收)=对端检测倍数 * max (对端发送间隔,本端接收间隔) |
display bfd session all verbose | 验证BFD会话状态 |
process-interface-status | 配置与接口状态联动 |
vrrp vrid 1 track bfd-session 10 | 配置与VRRP联动,后面的“10”表示本地标识符 |
bfd all0interfaces enable | 配置与OSPF联动 |
peer X.X.X.X bfd enable | 配置与BFD联动 |
ip route-static X.X.X.X X.X.X.X track bfd-session 1 | 配置与静态路由联动 |