定义
双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。
目的
为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。在现有网络中,有些链路通常通过硬件检测信号,如SDH告警,检测链路故障,但并不是所有的介质都能够提供硬件检测。此时,应用就要依靠上层协议自身的Hello报文机制来进行故障检测。上层协议的检测时间都在1秒以上,这样的故障检测时间对某些应用来说是不能容忍的。同时,在一些小型三层网络中,如果没有部署路由协议,则无法使用路由协议的Hello报文机制来检测故障。
BFD协议就是在这种背景下产生的,BFD提供了一个通用的标准化的介质无关和协议无关的快速故障检测机制。具有以下优点:
-
对相邻转发引擎之间的通道提供轻负荷、快速故障检测。这些故障包括接口、数据链路,甚至有可能是转发引擎本身。
-
用单一的机制对任何介质、任何协议层进行实时检测。
受益
BFD可以实现快速检测并监控网络中链路或IP路由的转发连通状态,改善网络性能。相邻系统之间通过快速检测发现通信故障,可以更快地帮助用户建立起备份通道以便恢复通信,保证网络可靠性。
原理简介
BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。下面以OSPF与BFD联动为例,简单介绍会话工作流程。
示例
实验拓扑
AR1配置命令:
<Huawei>sys
[Huawei]sysname AR1
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip add
[AR1-GigabitEthernet0/0/1]ip address 10.1.1.1 24
[AR1-GigabitEthernet0/0/1]q配置静态路由,使AR1、AR3之间有可达路由:
[AR1]ip route-static 10.2.1.0 24 10.1.1.2配置多跳BFD检测
# 在AR1上配置与AR3之间的BFD会话:
[AR1]bfd
[AR1-bfd]q
[AR1]bfd atoc bind peer-ip 10.2.1.2
[AR1-bfd-session-atoc]discriminator local 10
[AR1-bfd-session-atoc]discriminator remote 20
[AR1-bfd-session-atoc]commit
[AR1-bfd-session-atoc]q
AR2配置命令:
<Huawei>sys
[Huawei]sys AR2
[AR2]int g 0/0/1
[AR2-GigabitEthernet0/0/1]ip address 10.1.1.2 24
[AR2-GigabitEthernet0/0/1]int g 0/0/2
[AR2-GigabitEthernet0/0/2]ip address 10.2.1.1 24
[AR2-GigabitEthernet0/0/2]q
AR3配置命令:
<Huawei>sys
[AR3]int g0/0/1
[AR3-GigabitEthernet0/0/1]ip add
[AR3-GigabitEthernet0/0/1]ip address 10.2.1.2 24
[AR3-GigabitEthernet0/0/1]q配置静态路由,使AR1、AR3之间有可达路由:
[AR3]ip route-static 10.1.1.0 24 10.2.1.1配置多跳BFD检测
# 在AR1上配置与AR3之间的BFD会话:
[AR3]bfd
[AR3-bfd]q
[AR3]bfd ctoa bind peer-ip 10.1.1.1
[AR3-bfd-session-ctoa]discriminator local 20
[AR3-bfd-session-ctoa]discriminator remote 10
[AR3-bfd-session-ctoa]commit
[AR3-bfd-session-ctoa]q
配置结果:
配置完成后,在AR1上执行display bfd session all verbose命令,可以看到建立了一个BFD会话,且状态为Up。
对AR1的GE0/0/1接口执行shutdown操作,模拟链路故障。再次执行display bfd session all verbose命令,可以看到建立了一个多跳检测的BFD会话,此时会话状态为Down。