BFD技术详解

BFD定义

Bidirectional Forwarding Detection,是一个用于侦测两个转送引擎之间数据链路错误的网络协议。BFD可做到全程路径的侦测,不管中间经过多少交换器。它为不支援任何错误侦测类型的实体媒介(如:以太网路、虚电路(Virtual Circuits)、穿隧协议(Tunnel)和MPLS LSP)提供一种低成本的侦测错误事件的能力。主要的监测方法有硬件监测、慢hello机制和其他检测机制,是毫秒级的检测。

BFD报文

    BFD基于UDP协议3784,报文有两种类型,分别为BFD控制报文和BFD回声报文。

控制报文

BFD控制报文封装在UDP报文中传送,其UDP目的端口号为3784,如果一方在既定的时间内没有收到BFD控制报文,则认为路径发生了故障。会话开始阶段,双方系统通过控制报文中携带的参数(会话标示符、期望的收发报文最小时间间隔、本端BFD会话状态等)进行协商。协商成功后,以协商的报文收发时间在彼此之间的路径上定时发送BFD控制报文。

回声报文(不回复)

BFD回声报文(echo)提供了一种不依赖于BFD控制报文的故障检测方法。本端发送本端接收,远端不对报文进行处理,而只是将此报文在反向通道上返回。因此BFD协议并没有对BFD回声报文的格式进行定义,唯一的要求是发送方能够通过报文内容区分会话

BFD回声报文采用UDP封装,目的端口号为3784,目的IP地址为发送接口的地址,源IP地址由配置产生

检测原理

BFD的检测机制是两个系统建立BFD会话,并沿它们之间的路径周期性发送。

BFD控制报文封装在UDP报文中传送。为满足快速检测的需求,BFD协议规定发送间隔和接收间隔单位是微秒。但限于目前的设备处理能力,大部分厂商的设备配置BFD时只能达到毫秒级,在进行内部处理时再转换到微秒。

BFD与OSPF联动

    网络上的链路故障或拓扑变化都会导致路由器重新进行路由计算,要提高网络的可用性,缩短路由协议的收敛时间非常重要。由于链路故障无法完全避免,因此,加快故障感知速度并将故障快速通告给路由协议是一种可行的方案。

    BFD与OSPF联动就是将BFD和OSPF协议关联起来,通过BFD对链路故障的快速感应进而通知OSPF协议,从而加快OSPF协议对于网络拓扑变化的响应。

有无BFD链路故障检测机制收敛速度
OSPF Hello Keepalive定时器超时秒级
BFD会话DOWN毫秒级

(ospf hello keepalive、p2p、broadcast网络)10s、p2mp网络30s

BFD与DHCP联动

    在双上行链路组网下,如果要实现主备链路替换,则主链路应该配置高优先级的路由(路由优先级数值越小表示路由优先级越高)。

    设备作为DHCP客户端时,从DHCP服务器获得的默认路由的优先级为245,在双上行链路组网中,如果主链路是DHCP接入方式,备份链路是3G等接入方式,则备份链路的路由优先级数值应该大于245。这样,DHCP通过与BFD联动,当BFD发现DHCP客户端链路故障后,系统会将DHCP链路失效,从而将流量切换到备份链路上。

BFD的其他联动

1、与静态路由联动   

    静态路由是一种需要管理员对某一已知路径手工配置特殊路由。与动态路由不同,静态路由本身没有检测机制,当网络故障时需要管理员介入。

    BFD与静态路由联动就是将静态路由绑定静态BFD会话,可以使静态路由的状态随着BFD会话的状态更新

2、与策略路由联动

    配置策略路由与BFD联动,只需要在启用策略路由功能的设备上配置(特例),无需在BFD会话的两端设备上同时配置。一条策略路由规则只能与IP-Link或BFD中的一种进行联动。

    配置策略路由与BFD联动后,如果远端设备删除BFD会话,则策略路由与BFD联动功能失效,但在这种情况下本端设备仍可进行策略路由的转发行为。

3、与双机热备协议联动

    双机热备功能可以保证网络中主用设备出现故障时,备用设备能够平衡地接替主用设备的工作,从而实现业务的不间断运行VGMP管理组是双机热备的核心,它决定了设备的主备状态。

    BFD与双机热备联动就是通过VGMP管理组监控静态BFD会话,使VGMP管理组优先级随着BFD会话的状态而变化,从而引起设备的主备状态切换。

BFD检测模式

异步模式:

    在异步模式下,系统之间会按照协商好的周期发送BFD控制报文,如果其某个系统在检测时间内没有收到对端发来的BFD控制报文,就宣告BFD会话的状态为DOWN。异步模式是最常用的BFD检测模式

查询模式:

    在查询模式下,一旦BFD会话建立,系统就不再周期性发送BFD控制报文,而是通过其他与BFD无关的机制检测连通性(比如路由协议的Hello机制、硬件检测机制等),从而减少BFD会话带来的开销。在查询模式下,系统存在一个查询定时器,当查询定时器到期后,系统会发送一个短序列的查询报文检查链路,如果没有收到返回的报文就宣布会话的状态为DOWN。

    两种模式的一个辅助功能是回声功能。当回声功能激活时,一个BFD控制报文按照如下方式发送:本地发送一个BFD控制报文,远端控制报文,远端系统通过它的转发通道将它们环回回来。如果连续几个回声包都没有接收到,会话状态就被宣布为DOWN。回声功能可以与异步模式或者查询模式一起使用。

会话建立过程

  BFD使用三路握手的机制来建立会话,发送方在发送BFD控制报文时会在Sta字段填入本地当前的会话状态,接收方根据收到的BFD控制报文的Sta字段以及本端当前会话状态来进行状态机的迁移,建立会话下图以BFD会话建立为例,简单介绍状态机的迁移过程BFD会话连接建立。

Router_A和Rourer_B发生“DOWN=>INIT"的状态迁移后,会启动一个超时定时器。如果定时器超时仍未收到状态为Init或up的BFD控制报文,则本地状态自动切换回DOWN

第一步

Router_A和Router_B的BFD收到上层应用的通知后,发送状态为DOWN的BFD控制报文。

第二步

Router_B收到状态为Down的BFD控制报文后,本地状态切换至Init,并发送状态为Init的BFD控制报文。Router_A的BFD状态变化同Router_B

第三步

Router_B收到状态为Init的BFD控制报文后,本地状态切换至up,并发送状态为up的BFD控制报文。Router_A的BFD状态变化同Router_B。

第四步

Router_A和Router_B双向状态都为UP,会话成功建立并开始检测链路状态
Router_A和Rourer_B发生“DOWN=>INIT"的状态迁移后,会启动一个超时定时器。如果定时器超时仍未收到状态为Init或up的BFD控制报文,则本地状态自动切换回DOWN

    对于手工指定标识符的静态BFD会话,报文中的You Discrimimnator的值是用户指定的;

而对于标识符自协商的静态BFD会话,报文中的Your Discriminatior的值由双方协商而定;

对于动态创建BFD会话,报文中Your Discriminator的值是0

留下评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

富强民主文明和谐