定义 双向转发检测BFD(Bidirectional Forwarding Detection)提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。 背景 故障检测方法: 硬件检测(如SDH告警)→快速发现故障→通用性差(并不是所有的介质都能够提供硬件检测) Hello包检测→1s以上→收敛慢,依赖路由协议 为了减小链路、设备故障对业务的影响,提高网络的可靠性,网络设备需要快速检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。还得具有通用性,于是产生了BFD。 BFD会话建立方式 两种方式:(1)静态建立BFD会话,(2)动态建立BFD会话。 主要区别:本地标识符(Local Discriminator)和远端标识符(Remote Discriminator)的配置方式不同。
(1)静态建立BFD会话: 命令行手工配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。 (2)动态建立BFD会话: 动态分配本地标识符:当应用程序触发动态创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向对端发送Remote Discriminator的值为0的BFD控制报文,进行会话协商。 自学习远端标识符:当BFD会话的一端收到Remote Discriminator的值为0的BFD控制报文时,判断该报文是否与本地BFD会话匹配,如果匹配,则学习接收到的BFD报文中Local Discriminator的值,获取远端标识符。
BFD检测机制 周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为此BFD会话的状态是Down。 BFD会话管理 BFD会话四种状态:Down、Init、Up和AdminDown。会话状态变化通过BFD报文的State字段传递,系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变。
1. 1、SwitchA和SwitchB各自启动BFD状态机,初始状态为Down,发送状态为Down的BFD报文。 2. SwitchB收到状态为Down的BFD报文后,状态切换至Init,并发送状态为Init的BFD报文。 3. SwitchB本地BFD状态为Init后,不再处理接收到的状态为Down的报文。 4. SwitchA的BFD状态变化同SwitchB。 5. SwitchB收到状态为Init的BFD报文后,本地状态切换至Up。 6. SwitchA的BFD状态变化同SwitchB。 BFD工作流程 Ospf邻居建立→bfd会话建立 链路故障→bfd会话down→ospf邻居关系中断
|