【交换机】配置BFD的功能原理是什么?

发布时间: 2013-11-16 点击量:8216 打印 字体:

BFD:(Bidirectional Forwarding Detection,双向转发检测)协议提供一种轻负载、快速检测两台邻接路由器/交换机之间转发路径连通状态的方法,它是一个简单的“Hello”协议,在很多方面,它与那些著名的路由协议的邻居检测部分相似。一对系统在它们之间的所建立会话的通道上周期性的发送检测报文,如果某个系统在足够长的时间内没有收到对端的检测报文,则认为在这条到相邻系统的双向通道的某个部分发生了故障协议邻居通过该方式可以快速检测到转发路径的连通故障,加快启用备份转发路径,提升现有网络性能。
BFD 提供的检测机制与所应用的接口介质类型、封装格式、以及关联的上层协议如 OSPF、BGP、RIP 等无关。BFD 在两台路由器之间建立会话,通过快速发送检测故障消息给正在运行的路由协议,以触发路由协议重新计算路由表,大大减少整个网络的收敛时间。BFD 本身没有发现邻居的能力,需要上层协议通知与哪个邻居建立会话。
   
BFD报文格式
BFD发送的检测报文是UDP报文,定义两种类型的报文
建立BFD会话时缺省采用版本1,如果收到对端系统发送的是版本0的报文,将自动切换到版本0。可以通过show bfd neighbors命令查看采用的版本。
1)控制报文
其格式如下:


 
Vers:BFD协议版本号,目前为1
Diag:诊断字,标明本地BFD系统最近一次会话状态发生变化的原因
Sta:BFD本地状态
P:参数发生改变时,发送方在BFD报文中置该标志,接收方必须立即响应该报文
F:响应P标志置位的回应报文中必须将F标志置位
C:转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测,如:控制平面为ISIS,当ISIS重启/GR时,BFD可以继续监测链路状态
A:认证标识,置位代表会话需要进行验证
D:查询请求,置位代表发送方期望采用查询模式对链路进行监测
R:预留位
Detect Mult:检测超时倍数,用于检测方计算检测超时时间
Length:报文长度
My Discreaminator:BFD会话连接本地标识符
Your Discreaminator:BFD会话连接远端标识符
Desired Min Tx Interval:本地支持的最小BFD报文发送间隔
Required Min RX Interval:本地支持的最小BFD接收间隔
Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔(如果本地不支持Echo功能,则设置0)
Auth Type:认证类型,目前协议提供有
 Simple Password
 Keyed MD5
 Meticulous Keyed MD5
 Keyed SHA1
 Meticulous Keyed SHA1
 Auth Length:认证数据长度
Authentication Data:认证数据区
其中认证部分为可选部分,可以在报文中选择使用,其中认证方式可以有:Simple Password、Keyed MD5、Meticulous Keyed MD5、Keyed SHA1、Meticulous Keyed SHA1。协议定义了控制报文所使用的UDP目的端口号为3784。
2)回声报文(ECHO)
BFD协议并未定义回声报文的格式,但是对于回声报文,其格式只是与本地相关,远端只需把此报文在反向通道上返回,回声报文的源目的IP相同。


会话建立
BFD在检测前,需要在通道两端建立对等会话,会话建立以后以协商后的速率各自向对端发送BFD的控制报文来实现故障检测。其会话检测的路径可以是标记交换路径,也可以是其它类型的隧道或是可交换以太网。
1)会话初始化过程
对于BFD会话建立过程中的初始化阶段,两端是主动角色还是被动角色是由应用来决定的,但是至少有一端为主动角色。
2)会话建立过程
会话建立过程是一个三次握手的过程,经过此过程后两端的会话变为Up状态,在此过程中同时协商好相应的参数,以后的状态变化就是根据缺陷的检测结果来进行,并做相应的处理。其状态机迁移如下:


 
以BFD会话连接建立过程为例,简要介绍状态机迁移过程:


 
A、B两站启动BFD,各自初始状态为“down”,发送BFD报文携带状态为“down”
B站收到状态为“down”的BFD报文,本地状态切换至“init”,发送BFD报文携带状态为“init”
B站本地BFD状态为“init”后,再接收到状态为“down”的报文不做处理
A站BFD状态变化过程同上
B站收到状态为“init”的BFD报文,本地状态切换至“up”
A站BFD状态变化过程同上
A、B两站在发生“down => init”变化后,会启动一个超时定时器,该定时器的作用是防止本地状态阻塞在“init”(有可能AB连接此时断连,会话不能正常建立),如果在规定的时间内仍未收到状态为“init/up”的BFD报文,则状态自动切换回“down”
本地状态UP标志会话建立成功

 

00 分享 纠错
相关条目