1. 背景
双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。
为了保护关键应用,网络中会设计有一定的冗余备份链路,网络发生故障时就要求网络设备能够快速检测出故障并将流量切换至备份链路以加快网络收敛速度。
目前有些链路具备硬件检测机制来快速故障检测,但某些链路(如以太网链路)不具备这样的检测功能。这种情况下就需要上层协议自身的机制来进行故障检测。但大部分协议如OSPF,BGP等检测链路故障的速度都很慢,最快也需要1s的时间,而且这些功能只针对本协议有效,无法为其他的协议或者应用提供快速检测机制。这对于某些实时性较高的上层应用如音频,视频等是不能接受的。
BFD就是在这种背景下产生的,它提供了一个通用的标准化的介质无关和协议无关的检测机制。
2. 工作原理
BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。
BFD协议本身没有邻居发现机制,BFD邻居的创建依赖于上层的应用。根据BFD会话建立过程可以将其分为动态BFD和静态BFD。
3. BFD报文结构
3.1BFD控制报文
BFD控制报文包括两部分:强制部分和可选认证部分。
强制部分的报文格式是固定的,如下图所示:
可选认证部分根据认证的类型的不同而异,如下图所示:
BFD控制协议各字段代表的意义如下:
3.2BFD Echo报文
BFD Echo报文提供了一种不依赖于BFD控制报文的故障检测方法。本端发送本端接收,远端不对报文进行处理,而只是将此此报文在反向通道上返回。因此BFD协议并没有对BFD Echo报文的格式进行定义,唯一的要求是发送方能够通过报文内容区分会话。
BFD Echo报文采用UDP封装,目的端口号为3785,目的IP地址为发送接口的地址,源IP地址由配置产生(配置的源IP地址要避免产生ICMP重定向)。
4. BFD会话建立过程
BFD共有4种类型的控制报文维持BFD状态,分别为:
#define BSM_AdminDown 0
#define BSM_Down 1
#define BSM_Init 2
#define BSM_Up 3
<< · Back Index ·>>