随着网络应用的广泛部署,网络发生故障极大可能导致业务异常。为了减小链路、设备故障对业务的影响,提高网络的可靠性,网络设备需要尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务正常进行。 BFD(Bidirectional Forwarding Detection,双向转发检测)提供了一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状态。 下面小编主要介绍BFD工作原理以及常见的应用场景。 一.BFD概述 网络故障检测遇到的问题 在无法通过硬件信号检测故障的系统中,应用通常采用上层协议本身的Hello报文机制检测网络故障。 常用路由协议的Hello报文机制检测时间较长,检测时间超过1秒钟。当应用在网络中传输的数据超过GB/s时,秒级的检测时间将会导致应用传输的数据大量丢失。 在三层网络中,静态路由本身没有故障检查机制。 BFD概述 BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,有以下两大优点:
BFD是一个简单的“Hello”协议。两个系统之间建立BFD会话通道,并周期性发送BFD检测报文,如果某个系统在规定的时间内没有收到对端的检测报文,则认为该通道的某个部分发生了故障。 由于同一个数据路径上只建立一个BFD会话,如果不同的应用使用的BFD参数不一致,则应该配置一个能满足所有应用要求的BFD参数。 二.BFD工作原理 BFD报文结构 BFD检测是通过维护在两个系统之间建立的BFD会话来实现的,系统通过发送BFD报文建立会话。 BFD控制报文根据场景不同封装不同,报文结构由强制部分和可选的认证字段组成。 1.Sta:BFD本地状态。 2.Detect Mult:检测超时倍数,用于检测方计算检测超时时间。 3.My Discriminator:BFD会话连接本地标识符(Local Discriminator) 。发送系统产生的一个唯一的、非0鉴别值,用来区分一个系统的多个BFD会话。 4.Your Discriminator:BFD会话连接远端标识符(Remote Discriminator) 。从远端系统接收到的鉴别值,这个域直接返回接收到的“My Discriminator”,如果不知道这个值就返回0。 5.Desired Min TX Interval:本地支持的最小BFD报文发送间隔。 6.Required Min RX Interval:本地支持的最小BFD报文接收间隔。 7.Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔,单位为微秒(如果本地不支持Echo功能,则设置0)。 Ver:BFD协议版本号,目前为1。 Diag:诊断字,标明本地BFD系统最近一次会话状态发生变化的原因。 P:参数发生改变时,发送方在BFD报文中置该标志,接收方必须立即响应该报文。 F:响应P标志置位的回应报文中必须将F标志置位。 C:转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测。 A:认证标识,置1代表会话需要进行验证。 D:查询请求,置位代表发送方期望采用查询模式对链路进行监测。 M:为BFD将来支持点对多点扩展而设的预留位。Length:报文长度,单位为字节。 BFD会话建立 BFD会话的建立有两种方式,即静态建立BFD会话和动态建立BFD会话。BFD通过控制报文中的本地标识符和远端标识符区分不同的会话。静态和动态创建BFD会话的主要区别在于Local Discriminator和Remote Discriminator的配置方式不同。 动态建立BFD会话时,系统对本地标识符和远端标识符的处理方式如下:
BFD会话状态 BFD会话有四种状态:Down、Init、Up和AdminDown。会话状态变化通过BFD报文的State字段传递,系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变,如左下图所示。BFD状态机的建立和拆除都采用三次握手机制,如右下图所示,以确保两端系统都能知道状态的变化。
BFD检测模式 BFD的检测机制:两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障。BFD的检测模式有异步模式和查询模式两种。 异步模式和查询模式的本质区别:检测的位置不同,异步模式下本端按一定的发送周期发送BFD控制报文,检测位置为远端,远端检测本端是否周期性发送BFD控制报文;查询模式下本端检测自身发送的BFD控制报文是否得到了回应。 BFD检测时间 BFD会话检测时长由TX(Desired Min TX Interval),RX(Required Min RX Interval),DM(Detect Multi)三个参数决定。BFD报文的实际发送时间间隔,实际接受时间间隔由BFD会话协商决定。
BFD缺省时间参数
检测超时倍数,用于检测方计算检测超时时间。
BFD Echo功能 BFD Echo功能
三.BFD应用场景 联动功能简介 联动功能由检测模块、Track和应用模块三部分组成。
静态路由与BFD联动
OSPF与BFD联动
BFD会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。
四.BFD基本配置 BFD配置命令介绍 1.创建BFD会话绑定信息,并进入BFD会话视图 [Huawei] bfd session-name bind peer-ip ip-address [ vpn-instance vpn-name ] interface interface-type interface-number [ source-ip ip-address ] 缺省情况下,未创建BFD会话。在第一次创建单跳BFD会话时,必须绑定对端IP地址和本端相应接口,且创建后不可修改。如果需要修改,则只能删除后重新创建。 2.创建使用组播地址作为对端地址的BFD会话,并进入BFD会话视图。 [Huawei] bfd session-name bind peer-ip default-ip interface interface-type interface-number [ source-ip ip-address ] 3.创建BFD for IPv6的绑定信息,并进入BFD会话视图。 [Huawei] bfd session-name bind peer-ipv6 ip-address [ vpn-instance vpn-name ] interface interface-type interface-number [ source-ipv6 ip-address ] 在第一次创建单跳BFD6会话时,必须绑定对端IPv6地址和本端相应接口,且创建后不可修改。 4.创建静态标识符自协商BFD会话 [Huawei] bfd session-name bind peer-ip ip-address [ vpn-instance vpn-name ] interface interface-type interface-number [ source-ip ip-address ] auto 5.创建单臂Echo功能的BFD会话 [Huawei] bfd session-name bind peer-ip ip-address [ vpn-instance vpn-name ] interface interface-type interface-number [ source-ip ip-address ] one-arm-echo 6.配置BFD会话的本地标识符 [Huawei-bfd-session-test] discriminator local discr-value 此处假设BFD Session名称是test。 7.配置BFD会话的远端标识符 [Huawei-bfd-session-test] discriminator remote discr-value 配置标识符时,本端的本地标识符与对端的远端标识符必需相同,否则BFD会话无法正确建立。并且,本地标识符和远端标识符配置成功后不可修改。 配置编辑完成后,用户可以执行commit提交配置,使新的配置数据在当前的系统运行配置中生效。 静态路由与BFD联动配置 实验要求:
BFD会话配置验证 OSPF与BFD联动配置 实验要求:
BFD检测配置验证 |
|