BFD原理

bfd会话建立过程:

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

/**************************************************************************************/
* 检测范围包括接口、数据链路以及转发引擎本身。

* bfd控制报文采用udp封装,目的端口号3784,源端口号在49152到65535的范围内。

bfd回声报文(echo)采用udp封装,目的端口号为3785,目的ip地址为发送接口的ip地址(本端
ip),源ip地址由配置产生。



BFD原理







* bfd报文结构
BFD原理
BFD原理
BFD原理
BFD原理
BFD原理
BFD原理

* bfd有两种工作模式和一种辅助功能

异步模式:交互bfd控制包,检测时间内收不到则宣布down;

查询模式:协议沉默,除非系统显式验证连续性,会发一个短系列的bfd控制包,在检测时间内收
到则继续沉默,收不到则宣布down;

回声功能:本地发送一系列的bfd回声报文,远端系统通过它的转发通道将它们环回回来,如果本
地连续几个回声报文没有收到,会话就会宣布down。


* bfd状态机
BFD原理
BFD原理

* bfd慢启动

协商过程中bfd下dpm动作有三次:第一次是创建会话时候下dpm获得yid,第二次是会话up的时候下dpm更新bfd状态,up后处于慢协商状态,1s钟一个包,第三次是up后5秒钟下dpm更新时间参数,此时fpga发包间隔从1s钟改为10ms(或者业务配置的发包间隔)

* bfd反向会话

对于一些单向的场景(我司lsp tunnel),bfd的控制报文第一个封装在ping包中(icmp的tlv)发出去,对端收到后创建反向会话,并发协商报文,然后两端走正常的协商流程。