当前位置:文档之家› BFD技术白皮书(迈普)

BFD技术白皮书(迈普)

BFD技术白皮书本文档介绍了双向转发检测(BFD)技术的原理及应用,BFD是一套用来快速检测的国际标准协议,提供了一种轻负荷,短周期的故障检测。

迈普公司已在高端网络产品上实现了BFD技术,可以为用户提供完整的解决方案,从而能够大幅提高网络的服务质量。

目录1概述 (3)2 技术简介 (3)2.1BFD技术原理 (3)2.2 术语 (4)3 关键技术 (4)3.1 报文格式 (4)3.2 协议状态机 (6)3.3工作模式 (7)3.4会话的建立 (8)4 典型应用 (11)4.1 BFD加快路由协议收敛 (11)4.2 BFD加快VRRP协议收敛 (12)1概述众所周知,IP网络并不具备秒级以下的间歇性故障修复功能,而传统路由架构在对实时应用(如语音)进行准确故障检测方面能力有限。

随着VoIP应用的激增,实现快速网络故障检测和修复越发显得必要。

网络设备的一个日益重要的特色就是可以迅速的检测到临近系统之间的通信故障,以便更快的建立或切换到备用路径。

在某些环境中由于数据链路硬件的作用可以使故障检测相当的迅速(例如SDH)。

但是很多媒介并没有提供这种能力(例如以太),还有一些无法实现端到端的路径检测。

如果硬件不能够对故障检测提供帮助时,网络中将使用缓慢的Hello机制来进行故障检测,这一般是由路由协议来提供。

而目前存在的路由协议所能够提供的可以检测到网络故障的最快时间基本都是秒级的,这对于某些应用来说实在是太长了,并且当网络业务达到吉比特时,秒级的故障检测速度将会导致大量数据的丢失。

此外,路由协议所提供的Hello机制只有当该路由协议被使用时才有效,并且路由协议所提供的检测含义略有不同——它们检测的是两个路由协议引擎之间路径上的故障。

双向转发检测(Bidirectional Forwarding Detection ,BFD)能大大提高网络的故障检测速度。

IETF草案标准BFD提供了一种简单、轻量和抽象的方法,对网络链接能力和系统通信转发功能进行检测。

BFD的目标之一就是在临近的转发引擎之间的路径上提供低耗费、短周期的故障检测。

而另一个目标则是提供一种专门的机制用于存活检测,适用于任何媒介、任何协议,并为检测周期和耗费提供较宽的选择范围,以避免不同检测方式的重叠。

BFD协议的出现,为上述问题提出了一种解决方案,BFD能够在系统之间的任何类型通道上进行故障检测,这些通道包括直连的物理链路,虚电路,隧道,MPLS LSP,多跳路由通道,以及非直连的通道。

同时正是由于BFD实现故障检测的简单、单一性,致使BFD能够专注于转发故障的快速检测,使故障检测时间提高到毫秒级。

BFD功能实现简单,是针对通信转发故障检测的最好方案。

2 技术简介2.1BFD技术原理BFD是一种高速的独立Hello协议,可以用于检测一对邻近系统之间任何类型的路径故障。

BFD在一对邻近系统间进行对等会话,一对邻近系统在它们之间建立会话的通道上周期性或间歇性的发送检测报文,如果某个系统在足够长的时间内没有收到对端的检测报文,则认为本系统到相邻系统的双向通道的某个部分发生了故障。

在某些条件下,为了减少负荷,系统之间的发送和接收速率需要协商。

每个系统都会估计自己可以接受的发送和接收报文的速率,以便和邻居协商故障检测的频率。

这种协商机制可以随时改变参数以适应不同的环境。

当一对相同的系统之间存在多条路径时,在它们之间也可以建立多条BFD会话。

在建立BFD会话时,BFD状态机实现了三次握手,以确保双方都知道状态的变化。

BFD可以被提取为一种简单的服务。

BFD所提供的基本服务就是建立、销毁、修改一条会话。

当会话Up或Down时BFD都会通知它的客户端。

BFD没有自己的发现机制,由具体的应用触发邻居的发现和BFD会话的建立。

2.2 术语MPLS:多协议标签交换(Multiprotocol Label Switching)。

OSPF:开放最短路径优先(Open Shortest Path First)是一种基于链路状态的动态路由协议。

VRRP:虚拟路由冗余协议(Virtual Router Redundancy Protocol)。

Master:VRRP的一个状态,活动路由器处于该状态,且保证相关IP报文的转发。

Backup:VRRP的一个状态,备份路由器处于该状态,且保证在活动路由器失效时及时切换。

Track:容纳多个监控对象并将这些监控对象的综合状态统一展现给外部模块的对象。

BFD:双向转发检测(Bidirectional Forwarding Detection)。

DMTI:期望最小发送间隔(Desired Min TX Interval)。

RMRI:需求最小接收间隔(Required Min RX Interval)。

DetectMult:检测倍数。

3 关键技术3.1 报文格式BFD发送的检测报文是UDP报文,定义两种类型的报文,控制报文和回声报文。

控制报文有必选字段部分和可选字段部分,所使用的UDP目的端口号为3784,源端口号在49152到65535的范围内,回声报文的格式没有定义,3.2 协议状态机BFD session存在四种状态:Init、Up、Down、AdminDown。

每个系统都通过BFD控制报文的Sta字段来通告它的当前session状态,接收到对端的session状态和本端的session的状态结合起来将驱动状态机。

Down:表明session是down掉的(或者刚刚才被创建)。

Init:表明正在和对端系统通信中,本地系统希望使session up起来,但远端系统还没有意识到这种改变。

Up:表明BFD session已经成功建立起来了,系统之间的连接工作正常。

AdminDown:表明session被管理者强制down掉,这将会使远端系统进入并保持在Down 状态。

下图3概括了BFD的状态机:会话建立过程是一个三次握手的过程,经过此过程后两端的会话变为Up状态,在此过程中同时协商好相应的参数,以后的状态变化就是根据缺陷的检测结果来进行,并做相应的处理。

下图概括了BFD的状态机运转情况:图3 BFD状态机3.3工作模式BFD提供了两种工作模式,还有一种附加的回声功能可以和两种模式结合使用。

3.3.1异步模式BFD基本的工作模式是异步模式。

在这种模式下,系统之间周期性的互相发送BFD控制报文,如果在一段时间内没有收到对方的BFD控制报文,则这个相应的会话就宣告失败。

3.3.2查询模式查询模式通过双方系统设置BFD控制报文的D位来进行协商,只有当双方系统都请求查询模式才能够被启用。

在查询模式下需要使用其他的机制来维持两个系统之间的连通性。

这种机制可能是从远端系统收到流量;另外也可以是使用Echo功能。

当一条BFD session Up之后,如果查询模式被启用,则双方系统都将停止发送BFD控制报文,而依靠其他手段来维持连通性。

当某个系统希望验证连通性的时候,它将发起一个Poll序列。

它将以协商好的发送速率周期性的发送设置了Poll位的BFD控制报文。

而收到这样一个报文的系统将立即回复一个设置了Final位的BFD控制报文。

收到对一个Poll系列的响应报文将中止Poll序列的发送。

如果一直没有收到对Poll的响应,Poll将重复发送直到检测周期超时,这时将宣布session Down掉。

在查询模式下,检测周期的计算和异步模式不同,此时将基于本地系统的发送速率,而不是远端系统的发送速率。

注意这种机制还需要协商的检测周期必须大于两个系统之间的来回时间,否则Poll机制将总是失败的。

查询模式可以在任何时刻通过设置或清除BFD控制报文中的D位来启用或禁用,而这并不会影响到BFD session的状态。

3.3.3Echo回声功能Echo回声功能是一种附加的回声功能。

当使用Echo回声功能时,一组BFD Echo 回声报文流将被发送给其它系统并被其它系统环回回来。

如果这组回声数据流中的许多报文没有收到,则认为会话Down掉。

Echo回声功能可以和异步或查询模式结合使用,这时Echo回声功能将处理检测任务,因此周期性发送控制报文的速率将被减小(异步模式下)或完全不发送(查询模式下)。

Echo回声功能可以独立运行在一对系统之间的任一方向上。

系统可以通告它愿意接收环回Echo回声报文,但却可能不希望发送任何Echo回声报文。

当系统启用Echo回声功能时,有利于选择一个缓慢的控制报文接收速率,因为此时存活检测己经由Echo 回声报文来处理。

3.4会话的建立BFD在一对邻近系统之间建立会话,用来监测邻近系统间的双向转发路径,为上层协议服务。

BFD在进行检测前,需要在通道两端建立对等会话,会话建立以后以协商后的速率各自向对端发送BFD的控制报文来实现故障检测。

其会话检测的路径可以是标记交换路径,也可以是其它类型的隧道或是可交换以太网。

3.4.1会话的初始化过程BFD会话建立过程中的初始化阶段,两端可以分为主动方和被动方,也可以同时是主动方,但是至少有一端为主动角色。

主动方在建立对话前不管是否收到对端发来的BFD控制报文,都会主动发送BFD控制报文。

被动方在建立对话前不会主动发送BFD控制报文,直到收到对端发送来的控制报文。

初始化阶段的两种方式:一、两端都为主动方当两端都为主动角色时,两端的系统都要向对端发送Your Discriminator为0的BFD 控制报文,直到两端学到对端的辨别值,然后开始建立会话(例如:由OSPF或者ISIS建立的BFD会话可以是两端都为主动角色)。

当两端都为主动方时,由于Your Discriminator字段为0,依据BFD协议无法分离到相应的会话上,所以对于初始化报文需要其它的方法:1)对于单跳:根据接收报文的接口进行区分不同的BFD会话,但要求接收的报文TTL必须为255。

2)对于多跳:1 强制规定对于一对源地址和目的地址只能建立一对会话,这样系统在收到BFD多跳的初始化会话后,可以首先根据IP报文头中的目的地址和源地址区分这属于哪个BFD会话。

2 使用非BFD报文来区分不同的BFD多跳会话,一对系统使用这种方法在建立BFD会话之前就己经了解到了对方的Discriminator是多少,这样系统之间发出的BFD报文中的Your Discriminator字段从一开始就是对端的Discriminator的值。

二、一端主动方另一端被动方具体应用根据检测的需要来决定谁是主动方、谁是被动方,主动方首先发送报文,被动方在收到主动方的报文后开始发送控制报文,以后主动方和被动方发送的报文中Your Discriminator都不为零,每端都依据相应的Discriminator把控制报文分离到相应的会话上。

相关主题