BFD技术白皮书Word下载.docx
《BFD技术白皮书Word下载.docx》由会员分享,可在线阅读,更多相关《BFD技术白皮书Word下载.docx(10页珍藏版)》请在冰豆网上搜索。
同时,在现有的IP网络中不具备秒以下的间歇性故障修复功能,而传统路由架构在对实时应用(如语音)进行准确故障检测方面能力有限,伴随着VoIP应用的激增,实现快速网络故障检测和修复越发显得必要。
BFD协议的出现,为上述问题提出了一种解决方案,BFD能够在系统之间的任何类型通道上进行故障检测,这些通道包括直接的物理链路,虚电路,隧道,MPLSLSP,多跳路由通道,以及非直接的通道。
同时正是由于BFD实现故障检测的简单、单一性,致使BFD能够专注于转发故障的快速检测,帮助网络以良好QoS实现语音、视频及其它点播业务的传输,从而帮助服务提供商基于IP网的实现,为客户提供所需的高可靠性、高适用性VoIP及其它实时业务。
2技术介绍
2.1协议概述
BFD是一个简单的“Hello”协议,在很多方面,它与那些著名的路由协议的邻居检测部分相似。
一对系统在它们之间的所建立会话的通道上周期性的发送检测报文,如果某个系统在一定的时间内没有收到对端的检测报文,则认为在这条到相邻系统的双向通道的某个部分发生了故障。
在某些条件下,为了减少负荷,系统之间的发送和接收速率需要协商。
2.2报文格式
BFD发送的检测报文是UDP报文,定义两种类型的报文
✧控制报文
其格式如下:
●Vers:
BFD协议版本号,目前为1
●Diag:
诊断字,标明本地BFD系统最近一次会话状态发生变化的原因
●Sta:
BFD本地状态
●P:
参数发生改变时,发送方在BFD报文中置该标志,接收方必须立即响应该报文
●F:
响应P标志置位的回应报文中必须将F标志置位
●C:
转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测,如:
控制平面为ISIS,当ISIS重启/GR时,BFD可以继续监测链路状态
●A:
认证标识,置位代表会话需要进行验证
●D:
查询请求,置位代表发送方期望采用查询模式对链路进行监测
●R:
预留位
●DetectMult:
检测超时倍数,用于检测方计算检测超时时间
●Length:
报文长度
●MyDiscreaminator:
BFD会话连接本地标识符
●YourDiscreaminator:
BFD会话连接远端标识符
●DesiredMinTxInterval:
本地支持的最小BFD报文发送间隔
●RequiredMinRXInterval:
本地支持的最小BFD接收间隔
●RequiredMinEchoRXInterval:
本地支持的最小Echo报文接收间隔(如果本地不支持Echo功能,则设置0)
●AuthType:
认证类型,目前协议提供有
⏹SimplePassword
⏹KeyedMD5
⏹MeticulousKeyedMD5
⏹KeyedSHA1
⏹MeticulousKeyedSHA1
●AuthLength:
认证数据长度
●AuthenticationData:
认证数据区
其中认证部分为可选部分,可以在报文中选择使用,其中认证方式可以有:
SimplePassword、KeyedMD5、MeticulousKeyedMD5、KeyedSHA1、MeticulousKeyedSHA1。
协议定义了控制报文所使用的UDP目的端口号为3784。
✧回声报文(ECHO)
BFD协议并未定义回声报文的格式,但是对于回声报文,其格式只是与本地相关,远端只需把此报文在反向通道上返回,对于本地系统必须能够根据报文中相应的内容分离到相应的会话上(所以对于回声包的发送,及其接收处理在协议中都没有定义)。
协议定义了回声包所使用的UDP目的端口号为3785。
2.3检测模式
BFD协议描述了实现双向检测的机制,可分为两种:
异步模式、查询模式,另外还有一种辅助功能回声功能,它可以与这两种模式结合起来使用。
异步模式和查询模式的本质区别在于检测的位置不同,异步模式下本端按一定的发送周期发送BFD控制报文,需要在远端检测本端系统发送的BFD控制报文;
而在查询模式下检测本端发送的BFD控制报文是在本端系统进行的。
✧异步模式
在异步模式下,系统之间相互周期性地发送BFD控制包,如果某个系统在检测时间内没有收到对端发来的BFD控制报文,就宣布会话为Down。
✧查询模式
在查询模式下,假定每个系统都有一个独立的方法用来确认它连接到其他系统。
这样一旦一个BFD会话建立起来以后,系统停止发送BFD控制报文,除非某个系统需要显式地验证连接性,在需要显式验证连接性的情况下,系统发送一个短系列的BFD控制包,如果在检测时间内没有收到返回的报文就宣布会话为Down,如果收到对端的回应报文,协议再次保持沉默。
✧回声功能
本地发送一系列BFD回声报文,远端系统通过它的转发通道将它们环回回来。
如果本地系统连续几个回声报文都没有接收到,会话就被宣布为Down。
回声功能可以和上述两种检测模式一起使用,可以使用回声功能来代替BFD控制报文的检测的任务,这样可以降低控制报文的发送周期(异步模式下)或者完全取消BFD控制报文(查询模式下)。
2.4发送周期及检测时间
对于发送周期的计算与检测模式无关,无论在那种检测模式下,由于要考虑到链路的抖动,需要一个允许的范围,其具体的计算发送如下所述:
如果DetectMulti为1,发送周期=(90%~70%)*max(bfd.DMTI,接收的RMRI);
否则,发送周期=(100%~75%)*max(bfd.DMTI,接收的RMRI)。
对于检测时间,由于BFD存在两种检测模式,所以对于这两种检测模式下相应检测时间的计算并不完全相同。
由于两种检测模式下都可以使用回声功能,对于回声包的检测时间的计算草案中并没有给出,任何一种可以检测回声包丢失的机制都可以。
在异步模式下,由于检测的位置是在对端,所以对端计算检测时间时需要用到本端的检测倍数,公式如下:
检测时间=接收的远端DM*max(bfd.RMRI,接收到的DMTI)。
在查询模式下,由于检测的位置是在本端,所以本端计算检测时间时只需用本端的检测倍数,公式如下:
检测时间=bfd.DM*max(bfd.RMRI,接收到的DMTI)。
2.5参数修改
BFD的各种参数在会话建立起来以后都可以动态的改变,但是不影响会话的当前状态,其中可以动态改变的参数有:
DMTI、RMRI、使能去使能ECHO功能、使能去使能查询功能、使能去使能认证等。
对于DMTI增加时,本地实际的发送间隔不能改变直到接收一个F比特为1的BFD控制报文,这是为了保证远端系统在本地发送间隔增加时更新了它的检测时间;
对于RMRI减少时,远端计算的检测时间必须不能改变,直到接收到一个F比特(参见报文格式字段解释)为1的BFD控制报文。
这是为了保证在减少检测时间之前,远端系统已经按照较高的速率发送BFD控制报文。
2.6会话建立
BFD在检测前,需要在通道两端建立对等会话,会话建立以后以协商后的速率各自向对端发送BFD的控制报文来实现故障检测。
其会话检测的路径可以是标记交换路径,也可以是其它类型的隧道或是可交换以太网。
2.6.1会话初始化过程
对于BFD会话建立过程中的初始化阶段,两端是主动角色还是被动角色是由应用来决定的,但是至少有一端为主动角色,所以对于初始化阶段可以分为两种方式。
✧两端都为主动方
当两端都为主动角色时,两端的系统都要向对端发送YourDiscriminator为0的BFD控制报文,直到两端学到对端的Discriminator,然后开始建立会话(例如:
由OSPF或者ISIS建立的BFD会话可以是两端都为主动角色)。
当两端都为主动方时,由于YourDiscriminator字段为0,依据BFD协议无法分离到相应的会话上,所以对于初始化报文需要其它的方法:
Ø
对于1hop:
第一个报文的分离依据接收报文的接口(无论是物理链路还是逻辑链路),同时收到报文TTL必须为255。
对于multihop:
✓方法1:
限制配置在单一BFD会话上的(源地址,目的地址)对唯一。
在OSPF的虚链路上建立BFD会话时可以使用这种方法。
✓方法2:
在会话建立之前先用带外的方式得到对端的Discriminator。
在MPLS的LSP上建立会话时可以使用这种方法。
✓方法3:
使用两条单向链路,初始化报文的分离类似1hop,对其中的一条单向链路来说,会话在建立前一个为主动方、一个被动方,被动方根据接收报文的接口来分离YourDiscriminator为0的BFD控制报文。
✧一端主动方、一端被动方
一端为主动角色、一端为被动角色时,是由应用来决定谁是主动角色、谁是被动角色的,主动方首先发送报文,然后由应用把对端的Discriminator携带回来给主动方,被动方在收到主动方的报文后也开始发送报文,以后主动方和被动方发送的报文中YourDiscriminator都不为零,每端都依据相应的Discriminator把控制报文分离到本端相应的会话上(例如:
由LSP-Ping建立的BFD会话)。
2.6.2会话建立过程
会话建立过程是一个三次握手的过程,经过此过程后两端的会话变为Up状态,在此过程中同时协商好相应的参数,以后的状态变化就是根据缺陷的检测结果来进行,并做相应的处理。
其状态机迁移如下:
BFD状态迁移图
以BFD会话连接建立过程为例,简要介绍状态机迁移过程:
BFD会话连接建立
●A、B两站启动BFD,各自初始状态为“down”,发送BFD报文携带状态为“down”
●B站收到状态为“down”的BFD报文,本地状态切换至“init”,发送BFD报文携带状态为“init”
●B站本地BFD状态为“init”后,再接收到状态为“down”的报文不做处理
●A站BFD状态变化过程同上
●B站收到状态为“init”的BFD报文,本地状态切换至“up”
●A、B两站在发生“down=>
init”变化后,会启动一个超时定时器,该定时器的作用是防止本地状态阻塞在“init”(有可能AB连接此时断连,会话不能正常建立),如果在规定的时间内仍未收到状态为“init/up”的BFD报文,则状态自动切换回“down”
●本地状态UP标志会话建立成功
3BFD的标准化
自从2004年7月推出BFD标准的第一个草案起,IETF开始了BFD协议的讨论修订,至今已经从Draftbase-00