资源描述
BFD 技术白皮书
华为技术有限公司
Huawei Technologies Co., Ltd.
BFD技术白皮书
目 录
1 BFD技术应用定位 1
2 BFD技术介绍 1
2.1 协议概述 1
2.2 报文格式 2
2.3 检测模式 3
2.4 发送周期及检测时间 4
2.5 参数修改 5
2.6 会话建立 5
2.6.1 会话初始化过程 5
2.6.2 会话建立过程 6
3 BFD的标准化 8
4 华为BFD进展情况及典型应用 9
4.1 应用于快速重路由 9
4.2 应用于媒体网关与核心网的可靠连接 11
5 结束语 11
附录A 参考资料 12
附录B 缩略语 12
Copyright ©2007 华为技术有限公司 版权所有,侵权必究
12
BFD技术白皮书
BFD技术白皮书
【摘要】BFD(双向转发检测)是一套用来实现快速检测的国际标准协议,提供一种轻负荷、持续时间短的检测。与以往的其他”HELLO”检测机制相比,具有许多独到的优势。华为公司已经在高端网络产品上实现了BFD技术,并将提供整套解决方案。
【关键字】BFD、快速检测
1 BFD技术应用定位
网络设备一个越来越重要的特征是,要求对相邻系统之间通信故障进行快速检测,这样在出现故障时可以更快的建立起替代通道或倒换到其他链路。目前,一些硬件如SDH等可以提供这个功能,但是对于很多硬件或者软件无法提供这个功能,比如以太网。还有一些无法实现路径检测,比如转发引擎或者接口等,无法实现端到端的检测,在目前的网络一般采用慢Hello机制,尤其在路由协议中,在没有硬件帮助下,检测时间会很长(例如:OSPF需要2秒的检测时间,ISIS需要1秒的检测时间),这对某些应用来说时间太长了,当数据速率到吉比特时,缺陷感应时间长代表着大量数据的丢失,并且对于不允许路由协议的节点没有办法检测链路的状态。同时,在现有的IP网络中并不具备秒以下的间歇性故障修复功能,而传统路由架构在对实时应用(如语音)进行准确故障检测方面能力有限。伴随着VoIP应用的激增,实现快速网络故障检测和修复越发显得必要。
BFD协议的出现,为上述问题提出了一种解决方案,BFD能够在系统之间的任何类型通道上进行故障检测,这些通道包括直接的物理链路,虚电路,隧道,MPLS LSP,多跳路由通道,以及非直接的通道。同时正是由于BFD实现故障检测的简单、单一性,致使BFD能够专注于转发故障的快速检测,帮助网络以良好QoS实现语音、视频及其它点播业务的传输,从而帮助服务提供商基于IP网的实现,为客户提供所需的高可靠性、高适用性VoIP及其它实时业务。
2 BFD技术介绍
2.1 协议概述
BFD是一个简单的“Hello”协议,在很多方面,它与那些著名的路由协议的邻居检测部分相似。一对系统在它们之间的所建立会话的通道上周期性的发送检测报文,如果某个系统在足够长的时间内没有收到对端的检测报文,则认为在这条到相邻系统的双向通道的某个部分发生了故障。在某些条件下,为了减少负荷,系统之间的发送和接收速率需要协商。
2.2 报文格式
BFD发送的检测报文是UDP报文,定义两种类型的报文
² 控制报文
其格式如下:
l Vers:BFD协议版本号,目前为1
l Diag:诊断字,标明本地BFD系统最近一次会话状态发生变化的原因
l Sta:BFD本地状态
l P:参数发生改变时,发送方在BFD报文中置该标志,接收方必须立即响应该报文
l F:响应P标志置位的回应报文中必须将F标志置位
l C:转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测,如:控制平面为ISIS,当ISIS重启/GR时,BFD可以继续监测链路状态
l A:认证标识,置位代表会话需要进行验证
l D:查询请求,置位代表发送方期望采用查询模式对链路进行监测
l R:预留位
l Detect Mult:检测超时倍数,用于检测方计算检测超时时间
l Length:报文长度
l My Discreaminator:BFD会话连接本地标识符
l Your Discreaminator:BFD会话连接远端标识符
l Desired Min Tx Interval:本地支持的最小BFD报文发送间隔
l Required Min RX Interval:本地支持的最小BFD接收间隔
l Required Min Echo RX Interval:本地支持的最小Echo报文接收间隔(如果本地不支持Echo功能,则设置0)
l Auth Type:认证类型,目前协议提供有
n Simple Password
n Keyed MD5
n Meticulous Keyed MD5
n Keyed SHA1
n Meticulous Keyed SHA1
l Auth Length:认证数据长度
l Authentication Data:认证数据区
其中认证部分为可选部分,可以在报文中选择使用,其中认证方式可以有:Simple Password、Keyed MD5、Meticulous Keyed MD5、Keyed SHA1、Meticulous Keyed SHA1。协议定义了控制报文所使用的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会话建立过程中的初始化阶段,两端是主动角色还是被动角色是由应用来决定的,但是至少有一端为主动角色,所以对于初始化阶段可以分为两种方式。
² 两端都为主动方
当两端都为主动角色时,两端的系统都要向对端发送Your Discriminator 为0的BFD控制报文,直到两端学到对端的Discriminator,然后开始建立会话(例如:由OSPF或者ISIS建立的BFD会话可以是两端都为主动角色)。
当两端都为主动方时,由于Your Discriminator字段为0,依据BFD协议无法分离到相应的会话上,所以对于初始化报文需要其它的方法:
Ø 对于1hop:
第一个报文的分离依据接收报文的接口(无论是物理链路还是逻辑链路),同时收到报文TTL必须为255。
Ø 对于multihop:
ü 方法1:
限制配置在单一BFD会话上的(源地址,目的地址)对唯一。在OSPF的虚链路上建立BFD会话时可以使用这种方法。
ü 方法2:
在会话建立之前先用带外的方式得到对端的Discriminator。在MPLS的LSP上建立会话时可以使用这种方法。
ü 方法3:
使用两条单向链路,初始化报文的分离类似1hop,对其中的一条单向链路来说,会话在建立前一个为主动方、一个被动方,被动方根据接收报文的接口来分离Your Discriminator 为0的BFD控制报文。
² 一端主动方、一端被动方
一端为主动角色、一端为被动角色时,是由应用来决定谁是主动角色、谁是被动角色的,主动方首先发送报文,然后由应用把对端的Discriminator携带回来给主动方,被动方在收到主动方的报文后也开始发送报文,以后主动方和被动方发送的报文中Your Discriminator都不为零,每端都依据相应的Discriminator把控制报文分离到本端相应的会话上(例如:由LSP-Ping建立的BFD会话)。
2.6.2 会话建立过程
会话建立过程是一个三次握手的过程,经过此过程后两端的会话变为Up状态,在此过程中同时协商好相应的参数,以后的状态变化就是根据缺陷的检测结果来进行,并做相应的处理。其状态机迁移如下:
图1 BFD状态迁移图
以BFD会话连接建立过程为例,简要介绍状态机迁移过程:
图2 BFD会话连接建立
l A、B两站启动BFD,各自初始状态为“down”,发送BFD报文携带状态为“down”
l B站收到状态为“down”的BFD报文,本地状态切换至“init”,发送BFD报文携带状态为“init”
l B站本地BFD状态为“init”后,再接收到状态为“down”的报文不做处理
l A站BFD状态变化过程同上
l B站收到状态为“init”的BFD报文,本地状态切换至“up”
l A站BFD状态变化过程同上
l A、B两站在发生“down => init”变化后,会启动一个超时定时器,该定时器的作用是防止本地状态阻塞在“init”(有可能AB连接此时断连,会话不能正常建立),如果在规定的时间内仍未收到状态为“init/up”的BFD报文,则状态自动切换回“down”
l 本地状态UP标志会话建立成功
3 BFD的标准化
自从2004年7月推出BFD标准的第一个草案起,ietf开始了BFD协议的讨论修订,至今已经从draft base-00发展到draft base-03,在这期间经历了一次版本的变化,从版本0升级为版本1。下图是BFD的发展进程示意图:
BFD协议已经被整个业界所接受和认可。虽然BFD技术标准是一个新的协议标准,但是在大量厂商参与的情况下,我们相信BFD技术将更加完善和成熟。以后必将形成一个技术成熟,众多厂商支持,得到广泛应用的国际标准技术。
4 华为BFD进展情况及典型应用
华为公司是一家从事通信技术和产品的研究、开发、生产、销售的电信设备制造商,开发的产品涵盖固定网络通信产品、移动通信产品、数据通信产品、光网络产品等各个领域,其中数据通信产品只是华为公司的主力产品之一。并且华为公司在数据通信IP技术上有长期的积累和浑厚的实力,同时华为公司还是最早致力于BFD标准化工作的重要成员之一。
华为公司作为ietf的成员之一,一直积在极参与BFD标准的制定和讨论,跟随最新BFD的进展,在IETF BFD工作组成立之前,华为公司就已经提出的APDP,作为BFD的原型APDP的作用与BFD相同,是华为公司对BFD协议发展的一个重要贡献。在产品发展上,华为将完善接入层、汇聚层和核心层的BFD产品,并在路由器、交换机、媒体网关和传输设备等设备上全面支持BFD。
根据BFD的检测特点,可以说它是针对通信转发故障检测的最好方案,其典型应用如下:
4.1 应用于快速重路由
随着NGN、IPTV的发展,IP网络向多业务发展,同时承载多种业务,对可靠性、安全提出了更高的要求。目前,很多国外运营商倾向于使用MPLS VPN来隔离不同的业务,这样做的优点:首先,提高了安全性,将来可能还做到资源隔离;其次,网络规划清晰,便于管理和维护。
图3 NGN组网方案
语音业务对承载网的要求之一:出现故障时,要求在几百毫秒内实现倒换,最好达到50ms。结合VPN,语音业务从一端到另一端,包括的环节有:NGN设备->PE->承载网核心网->PE-> NGN设备,其中任何一个环节(包括链路和设备)无法达到上述的要求,对语音就会有影响。其中包括P节点故障以及PE节点故障。
当P接点故障时,一般采用快速重路由技术,这包括了传统的TE FRR,以及最新的LDP FRR。这两种技术都为主用的LSP提供备份的LSP进行保护,当主用LSP故障时,在故障的前一个节点,切换到备用LSP上。
BFD可以为P节点提供快速检测相邻节点或链路故障的能力,在BFD检测到这种故障时,触发FRR机制,完成切换工作,从而保证用户数据业务损失降低到最小。
当PE发生故障时,则采用MPLS VPN FRR解决原来PE发生故障后不能迅速的倒换到备用PE上的问题。目的就是要求VPN业务能够快速的倒换到备用隧道和备用PE,从而保证流量在很短的时间内可以恢复。MPLS VPN FRR的主要实现手段就是在主隧道可用时,把备份隧道的转发信息同时提供给转发引擎,当转发引擎感知到主隧道不可用时,能够不依赖控制平面的收敛直接使用备份隧道转发信息。
BFD可以为MPLS VPN FRR提供到对端PE的快速检测功能,当BFD检测到对端PE连接断后通知MPLS VPN FRR,由MPLS VPN FRR完成切换动作,从而保证用户数据业务损失降低到最小。
4.2 应用于媒体网关与核心网的可靠连接
图4 BFD应用媒体网关解决方案
对于VoIP媒体网关通过可交换以太网连接到IP核心网这类网络架构中的通信传输,在传统上面临两大困难:首先,现行媒体网关不能在IP层保持对等会话关系,因而整个网络“不可见”,也就无法实现媒体网关与IP边缘路由器间的故障检测;其次,当交换网的某远端部分发生故障时,以太网不具备有效的方式通知主机或路由器。虽然高速链接失败检测工具对高适用性VoIP的实现起到很大作用,但却难以快速检测到在主机与路由器间有交换机介入时的网络故障情况。
此时,BFD协议完全可以融入媒体网关平台中,这时它用于保持网关与边缘路由器间的连接。BFD能检测到介入以太网段或独立网段的故障,它在网关与路由器间交替构建冗余路径,一旦检测到故障并确认得到确认,BFD便可以在所有路由、传输及隧道系统中触发相应倒换机制,保证网络的可靠。
5 结束语
BFD的定位是更多的绑定到转发平面,从而脱离具体的网络协议,使快速检测缺陷、实现电信级倒换成为可能;加上BFD处理的低开销使得BFD具有很好的扩展性和更广的适用性。BFD必将成为IP网络电信化一支重要的推动力量。
附录A 参考资料
List of reference 参考资料清单:
Katz, D., and Ward, D., "Bidirectional Forwarding Detection", draft-ietf-bfd-base-02.txt, March, 2005.
Katz, D., and Ward, D., "BFD for IPv4 and IPv6 (Single Hop)", draft-ietf-bfd-v4v6-1hop-02.txt, March, 2005.
Aggarwal, R., and Kompella, K., "BFD for MPLS LSPs", draft-ietf-bfd-mpls-01.txt, March, 2005.
Katz, D., and Ward, D., "BFD for Multihop Paths", draft-ietf-bfd-multihop-02.txt, February, 2005.
附录B 缩略语
缩略语
英语解释
中文解释
BFD
Bidirectional Forwarding Detection
双向转发检测
IP
Internet Protocol
网际协议
UDP
User Datagram Protocol,
用户数据报协议
DMTI
Desired Min TX Interval
期望的最小发送间隔
RMRI
Required Min RX Interval
需要的最小发送间隔
DM
Detect Mult
检测倍数
FRR
Fast ReRoute
快速重路由
展开阅读全文