1.BFD简介
BFD(Bidirectional Forwarding Detection,双向转发检测)是一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于检测IP 网络中链路的连通状况,保证设备之间能够快速检测到通信故障,
以便能够及时采取措施,保证业务持续运行。
BFD 可以为各种上层协议(如路由协议等)快速检测两台设备间双向转发路径的故障。上层协议通常采用Hello 报文机制检测故障,所需时间为秒级,而BFD 可以提供毫秒级检测。实际应用中,BFD 可以用来进行单跳和多跳检测:
• 单跳检测:是指对两个直连设备进行 IP 连通性检测,这里所说的“单跳”是IP 的一跳。
• 多跳检测:BFD 可以检测两个设备间任意路径的链路情况,这些路径可能跨越很多跳。
1)BFD会话的建立与拆除
BFD 本身并没有发现机制,而是靠被服务的上层协议通知来建立会话,具体过程如下:
①上层协议通过自己的Hello 机制发现邻居并建立连接;
②上层协议在建立新的邻居关系后,将邻居的参数及检测参数(包括目的地址和源地址等)通告给BFD;
③ BFD 根据收到的参数建立BFD 会话。
当网络出现故障时:
④ BFD 检测到链路故障后,拆除BFD 会话,通知上层协议邻居不可达;
⑤上层协议中止邻居关系;
⑥如果网络中存在备用路径,设备将选择备用路径进行通信。
2)BFD会话的工作方式和检测模式
BFD 会话通过下面两种报文来实现:
• echo 报文:封装在UDP 报文中传送,其UDP 目的端口号为3785。
• 控制报文:封装在UDP 报文中传送,对于单跳检测其UDP 目的端口号为3784,对于多跳检测其UDP 目的端口号为4784。
① echo报文方式
本端发送 echo 报文建立BFD 会话,对链路进行检测。对端不建立BFD 会话,只需把收到的echo报文转发回本端。
当 BFD 会话工作于echo 报文方式时,仅支持单跳检测,并且不受检测模式的控制。
② 控制报文方式
链路两端通过周期性发送控制报文建立 BFD 会话,对链路进行检测。
3)BFD 会话建立前有两种模式:主动模式和被动模式。
• 主动模式:在建立会话前不管是否收到对端发来的BFD 控制报文,都会主动发送BFD 控制报文;
• 被动模式:在建立会话前不会主动发送 BFD 控制报文,直到收到对端发送来的控制报文。通信双方至少要有一方运行在主动模式才能成功建立起 BFD 会话。
3)BFD 会话建立后有两种模式:异步模式和查询模式。
• 异步模式:设备周期性发送BFD 控制报文,如果在检测时间内没有收到对端发送的BFD 控制报文,则认为会话down。
• 查询模式:设备周期性发送 BFD 控制报文,但是对端(缺省为异步模式)会停止周期性发送BFD 控制报文。如果通信双方都是查询模式,则双方都停止周期性发送BFD 控制报文。当需要验证连接性的时候,
设备会以协商的周期连续发送几个P 比特位置1 的BFD 控制报文。如果在检测时间内没有收到返回的报文,就认为会话down;如果收到对方回应的F 比特位置1的报文,就认为连通,停止发送报文,等待下一次触发查询。
另外,也可以链路两端通过发送控制报文建立和保持BFD 会话,任意一端通过发送echo 报文检测链路状态。
4)BFD会话有四种状态:Down、Init、Up和AdminDown。会话状态变化通过BFD报文的State字段传递,系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变。
BFD状态机的建立和拆除都采用三次握手机制,以确保两端系统都能知道状态的变化。
2. BFD支持的应用
静态路由、RIP、OSPF、IS-IS、BGP、Track、以太网链路聚合、VRRP、VXLAN,上述均可与BFD实行联动。
注:三层聚合接口/子接口和三层以太网子接口不支持与BFD 功能联动。
3.配置命令
bfd echo-source-ip x.x.x.x:配置echo报文源IP地址,为了避免对端发送大量的ICMP重定向报文造成网络拥塞,建议不要将echo报文的源IP地址配置为属于该设备任何一个接口所在网段。
注:在实验环境中,若不配置此命令,则bfd仍一直处于DOWN状态。
端口下,bfd min-echo-receive-interval xx:配置接收echo报文的最小时间间隔。缺省情况下,接收echo报文的最小时间间隔为400毫秒。
端口下,bfd detect-multiplier xx:配置单跳BFD检测时间倍数。缺省情况下,单跳BFD检测时间倍数为5。
display bfd session:显示BFD会话信息 display bfd statistics:查看BFD全局统计信息
reset bfd session statistics:清除BFD会话统计信息