1、BFD协议介绍
BFD(Bidirectional Forwarding Detection,双向转发检测)是一种网络协议,用于快速检测网络设备之间的双向路径是否存在故障。它是一种轻量级的Hello协议,使用简单的控制报文来快速检测通信故障,并在检测到故障时及时通知上层应用。
如果你对通信技术感兴趣:欢迎关注公众号:通信行业搬砖工!
BFD协议的主要目标是提供一个轻量级的、简单而高效的检测机制,用于在两个网络节点之间的路径上快速发现转发故障。它可以在各种媒质、各种网络层协议和各种传输层协议上运行,为各种上层协议(如路由协议、信令协议等)提供故障检测服务。
BFD协议通过建立BFD会话,在两个系统之间的通道上周期性地发送BFD报文,以检测链路的连通性。如果一方在协商的检测时间内没有接收到BFD报文,则认为这条双向通道上发生了故障。一旦检测到故障,BFD会立即通知上层协议,以便它们能够采取相应的恢复措施。
BFD协议的主要优点包括快速故障检测、灵活性和可配置性。它可以与多种网络层协议集成,并根据网络环境和需求进行调整,以实现最佳的故障检测性能。BFD协议在网络中扮演着重要的角色,帮助网络设备在出现故障时迅速做出反应,从而提高网络的可靠性和性能。
总的来说,BFD协议是一种用于快速检测网络设备之间双向路径故障的网络协议,它通过简单的控制报文交换来监测链路的连通性,并在检测到故障时及时通知上层应用,以便进行故障恢复。
2、为什么需要BFD协议
在现有网络中,有些链路通过硬件检测信号检测链路故障,如SDH(Synchronous Digital Hierarchy,同步数字体系)告警,但并不是所有的介质都能提供硬件检测。此时,应用就要依靠上层协议自身的Hello报文机制来进行故障检测。上层协议的检测时间通常在秒级,当数据传输速率达到GB级时,秒级检测时间内,大量数据将会丢失。在三层网络中,Hello报文检测机制无法针对所有路由来检测故障,如静态路由。这对系统间互联互通定位故障造成困难。BFD协议就是在这种背景下产生的,BFD提供了一个通用的标准化的介质无关和协议无关的快速故障检测机制。在现网中需要BFD协议的原因主要有以下几点:
快速故障检测:BFD协议能够在毫秒级的时间内快速检测到网络设备之间的故障。这对于现代高速网络来说至关重要,因为任何短暂的故障都可能导致大量数据的丢失。通过BFD协议,网络管理员可以迅速发现并解决网络中的问题,从而确保网络的持续稳定性和高可用性。 提升网络可靠性:BFD协议通过快速检测链路故障,可以及时发现并隔离故障点,减少故障对网络的影响。这种快速的故障检测和恢复能力可以显著提升网络的可靠性,确保关键业务和应用的连续性。 广泛适用性:BFD协议是一个通用的故障检测机制,不依赖于特定的物理介质或网络层协议。这意味着它可以与各种网络技术和协议一起使用,如以太网、MPLS、IPSec隧道等,为现网提供了极大的灵活性和兼容性。 减轻上层协议负担:许多网络协议都有自己的故障检测机制,但这些机制可能相对较慢且效率不高。BFD协议可以为上层协议提供高效的故障检测服务,使上层协议能够更专注于其核心功能,而无需自己实现复杂的检测逻辑。 易于集成和部署:BFD协议设计的简单性和通用性使得它易于集成到现有的网络设备和系统中。此外,由于其轻量级特性,BFD协议对系统资源的消耗相对较低,使得它适合在各种规模和类型的网络环境中部署。
综上所述,BFD协议在现网中的应用可以显著提升网络的可靠性、可用性和性能,同时简化网络管理和维护工作。因此,现网中需要BFD协议来确保网络的稳定运行和高效管理。
3、BFD工作原理
BFD的检测机制是两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD报文,如果一方在既定的时间内没有收到BFD报文,BFD会话状态变为Down,则认为路径上发生了故障。
下面从BFD故障检测机制、BFD会话建立流程、BFD会话建立方式三个方面介绍BFD是如何工作的。
4、BFD故障检测机制
BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话。会话建立后会周期性地快速发送BFD报文,如果设备在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。
会话建立:BFD在两台网络设备之间建立会话,用于检测网络设备间的双向转发路径。这个会话是由上层应用通知其邻居信息以建立的。 周期性报文发送:会话建立后,BFD会周期性地快速发送BFD报文。 故障检测:如果一方在既定的检测时间内没有收到BFD报文,则认为该双向转发路径上发生了故障。 通知上层应用:一旦检测到故障,BFD会通知被服务的上层应用进行相应的处理。
5、BFD会话建立流程
BFD会话有以下四种状态,会话状态变化通过BFD报文的State字段传递,系统根据本地会话状态和接收到对端BFD报文驱动状态改变。
Down:会话处于Down或刚刚创建状态。 Init:已经能够与对端系统通信,本端希望使会话进入Up状态。 Up:会话已经建立成功。 AdminDown:会话处于管理性Down状态。 BFD状态机的建立和拆除都采用三次握手机制,以确保两端系统都能知道状态的变化。以BFD会话建立为例,简单介绍状态机的迁移过程。
SwitchA和SwitchB各自启动BFD状态机,初始状态为Down,发送状态为Down的BFD报文。对于静态配置BFD会话,报文中Remote Discriminator的值是用户指定的;对于动态创建BFD会话,Remote Discriminator的值是0。 SwitchB收到状态为Down的BFD报文后,状态切换至Init,并发送状态为Init的BFD报文。 SwitchB本地BFD状态为Init后,不再处理接收到的状态为Down的报文。 SwitchA的BFD状态变化同SwitchB。 SwitchB收到状态为Init的BFD报文后,本地状态切换至Up。 SwitchA的BFD状态变化同SwitchB。
6、BFD会话建立方式
BFD有两种会话建立方式,即静态方式和动态方式。静态和动态创建BFD会话的主要区别在于本地标识符(Local Discriminator)和远端标识符(Remote Discriminator)的配置方式不同。BFD通过控制报文中的Local Discriminator和Remote Discriminator区分不同的会话。 静态建立BFD会话
静态建立BFD会话是指通过命令行手工配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。 动态建立BFD会话
动态建立BFD会话时,系统对本地标识符和远端标识符的处理方式如下:动态分配本地标识符
当应用程序触发动态创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向对端发送Remote Discriminator的值为0的BFD报文,进行会话协商。 自学习远端标识符
当BFD会话的一端收到Remote Discriminator的值为0的BFD报文时,判断该报文是否与本地BFD会话匹配,如果匹配,则学习接收到的BFD报文中Local Discriminator的值,获取远端标识符。 总的来说,BFD通过快速发送和接收BFD报文来检测网络设备间的双向转发路径是否畅通。一旦检测到故障,它会迅速通知上层应用以便及时采取措施恢复网络连通性。这种机制大大提高了网络的可靠性和故障恢复速度。