双向转发检测及其设计实现

2019-08-30 03:32周三友李吉良周玉娟
无线电通信技术 2019年5期
关键词:连通性会话解码

周三友,李吉良,周玉娟

(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)

0 引言

为了减小设备故障对业务的影响,提高网络的可用性,需要对设备之间通信的连通性进行检测,以便能够及时采取措施,持续向用户提供服务。

传统的连通性检测方法主要有2种:① 硬件信号检测方式通过检测线路中的信号状态进行连通性检测,例如SDH网络中的信号丢失、帧失步等。这种方式的响应速度很快,但仅有一部分物理链路具有这一功能,并且只能检测底层故障,链路层以上的故障无法检测。② 软件握手检测方式通过定时交互握手消息来检测连通性,例如路由协议中的Hello报文机制。这种方式能够检测到网络层的故障,但响应时间较慢,通常在秒级以上。

为了解决传统连通性检测方式存在的问题,IETF提出了BFD,希望通过一种统一的机制提供快速连通性检测。

1 双向转发检测

1.1 工作原理

IETF在2010年6月正式发布了RFC5880[1],详细描述了BFD的基本原理以及BFD协议的使用场景。随后,又发布了一系列补充协议文档,包括RFC5881[2],RFC5882[3],RFC5883[4],RFC5884[5],RFC5885[6]等,扩展了BFD的应用范围。BFD是一种通用、介质无关、协议无关的快速连通性检测机制,可以应用到多种不同的场景中[7-10],实现毫秒级的故障检测,因此很快被各大通信设备厂商采纳,成为通信设备的一项重要功能。文献表明BFD已经在多种网络中得到了应用,取得了良好的效果。

BFD通过快速、周期性地发送BFD包来进行连通性检测,包括2种工作模式:

① 异步模式:系统周期性地向对端发送BFD控制报文,如果对端没有收到一定数量的报文则会话状态为DOWN。

② 按需模式:一旦BFD会话建立后,系统可以要求远端停止发送BFD控制报文,只有当系统需要验证连通性时才与远端系统短暂地交互一系列BFD控制报文,然后远端系统重新处于静默。

还有一种和上述工作模式结合使用的功能——回声功能。当使用回声功能时,系统发送BFD回声报文到远端系统,然后由远端将报文环回。如果系统没有收到一定数量环回的回声报文,就认为会话结束(DOWN)。

1.2 报文格式

BFD报文必须封装在目的端口为3 784的UDP报文中,源端口必须在49 152~65 535之间。

BFD报文格式如图1所示。

图1 BFD报文格式

各字段含义如下:

Vers:版本,目前为1。

Diag:诊断码,指示本地系统最近的会话状态变化的原因。

Sta:发送系统记录的当前BFD会话状态。

Flag:包括P(Poll),F(Final),C,A,D,M等控制位,实现报文交互过程的控制功能。

DetectMult:检测时间倍数。在异步模式中,协商的发送间隔乘以此倍数,即接收系统的检测时间。

Length:BFD控制报文长度(Byte)。

My Discriminator:发送端BFD会话标识。

Your Discriminator:接收端BFD会话标识。

Desired Min TX Interval:本地系统发送BFD控制报文的最小时间间隔(ms)。

Required Min RX Interval:系统接收BFD控制报文的最小时间间隔(ms)。

Required Min Echo RX Interval:系统接收回声报文的最小时间间隔(ms)。

此外,根据需要还可以对BFD包增加认证字段。

2 双向转发检测设计实现

2.1 总体架构

常见的路由交换设备一般包括控制交换板和线路接口板2种板卡。根据BFD功能分布位置不同可以将BFD的设计实现分为2种:集中式BFD和分布式BFD[11]。

集中式BFD将BFD会话的维护管理、BFD包的收发等所有工作全部放在控制交换板上进行。这种方法的优点是实现简单,缺点是BFD会话较多时可能造成控制交换板CPU过载。分布式BFD将BFD的功能分解到不同的板卡上进行,控制交换板负责BFD会话的创建、维护和管理,线路接口卡负责BFD包的发送、接收和检测。分布式BFD的优点是降低了控制交换板的开销,缺点是实现相对复杂。

为了避免大量BFD包对控制交换板CPU的冲击,提高设备的稳定性,本项目选择分布式BFD方式。其中,BFD会话管理在控制交换板的CPU上实现。BFD会话创建完毕进入“UP”状态后,BFD包的发送、接收和监控在线路接口板上实现。在具体的实现上,可以采用通用CPU实现[12],也可以采用多核处理器[13]或ASIC实现[14],但总体来看基于CPU的软件实现会占用较多的CPU资源,ASIC实现的灵活性比较差。

与CPU,ASIC相比,网络处理器既能进行灵活的编程,也具有较高的处理性能,因此在网络设备中得到了大量的应用[15-17]。本文采用网络处理器NPX进行BFD处理,它具有以下特点:双向20 G包处理能力;集成流量管理模块,支持QoS;编程方式简单。

按照包的处理顺序划分,NPX主要由解码、查找I、分析、查找II、修改五个模块组成[17],如图2所示。

图2 NPX的模块组成

每个模块都有多个独立的微引擎,执行特定的微码程序。一般来说,解码模块主要根据接收数据包的特征字段进行分类,提取包中特定的信息组成查找键和消息发送给查找I模块。查找I/II两个模块可以进行线性表、Hash表、二叉树和最长匹配等不同形式的查表。分析模块分析查找I模块的查表结果,必要时可要求查找II模块可以进行二次查表。修改模块根据包中携带的信息及查表结果修改包中的内容,并发送到指定的端口。

为了实现BFD等OAM功能,NPX内部集成了一个OAM模块,可以实现大量BFD会话的数据包产生和监测功能[18]。

由于网络处理器具有实现灵活、性能高的特点,因此本项目使用网络处理器进行BFD设计。

2.2 BFD会话管理

每个BFD会话可能处于3个状态:DOWN,INIT,UP。BFD会话的当前状态和接收BFD包中的Sta字段决定了BFD会话的下一状态。

当BFD会话刚被创建时,处于DOWN状态,此时开始周期性地发送BFD包,并监测对方发送的BFD包。如果接收BFD包表示对端处于DOWN状态,则本端迁移到INIT态。如果接收BFD包表示对端处于INIT状态,则本端直接迁移到UP态。

当BFD会话处于INIT状态时,如果规定时间内未收到对端BFD包,则转入DOWN状态。如果接收BFD包表示对端处于INIT或者UP状态,则本端迁移到UP态。

当BFD会话处于UP状态时,如果规定时间内未收到对端BFD包,或者接收BFD包表示对端处于DOWN状态,则本端迁移到DOWN态。

BFD会话的状态转移过程如图3所示。

图3 BFD会话状态转移图

2.3 BFD包发送

NPX通过OAM模块的专用定时器(RTC)定时产生BFD包,发送过程如图4所示。产生的BFD包携带着定时器ID发送到解码模块。

图4 BFD包的产生

解码模块首先对包进行预处理,通过硬件解码器进行数据包分类,并将分类结果存储在在特定的硬件寄存器中。解码模块的微码程序提取随BFD包一起收到的定时器ID,形成查找Key,发送到查找模块I。

查找模块I根据定时器ID查找发送BFD会话表,查找结果中包含My Discriminator,Your Discriminator等信息,这些信息被发送给分析模块。

分析模块基本不做处理,直接通过查找II模块将查表结果传递给修改模块。修改模块将查表结果中的信息填写到BFD包的对应字段中,发送到指定的输出端口。

2.4 接收BFD包处理

接收BFD包的处理如图5所示。

解码模块首先根据目的IP、目的端口等信息识别到接收包为BFD包,然后提取包中的My Discriminator,Your Discriminator作为查找键传递给查找模块I。

查找模块I查找接收BFD会话表,得到对应的看门狗定时器ID,发送到分析模块。分析模块将该定时器清零,然后丢弃该BFD包。如果查找失败,该BFD包将会被转发到控制交换板进行处理。

2.5 BFD包监控

NPX为每一个BFD会话分配一个专用的看门狗定时器。如果在规定的检测周期内从接收端口收到了本会话的BFD包,微码程序将复位该定时器。

如果在规定的检测周内没有收到BFD包,则会产生定时器溢出事件发送给解码模块。解码模块收到该事件后,通过消息的方式通知到控制交换板,由控制交换板进行进一步的处理。

3 结束语

BFD是一种简单、快速、通用的连通性检测方法。本文采用一种分布式处理的方式设计实现了BFD,通过控制交换板的CPU进行BFD会话管理,利用线路接口板的网络处理器进行BFD包的快速发送、接收和故障检测,避免了大量BFD包对控制交换板CPU的冲击,提高设备的稳定性。

猜你喜欢
连通性会话解码
植被覆盖度和降雨侵蚀力变化对小流域泥沙连通性的影响
中国自然保护地连通性的重要意义与关键议题
改进连通性保持的二阶多智能体编队控制
QQ和微信会话话轮及话轮转换特点浅析
闸坝对抚河流域连通性的影响研究
文化解码
解码eUCP2.0
文化 解码
文明 解码
用绘画导入英语教学