BFD 协议实现方案的探讨*

2020-11-20 03:13
通信技术 2020年11期
关键词:状态机集中式报文

(中国电子科技集团公司第三十研究所,四川 成都 610041)

关键字:BFD 协议;分布式技术;集中式技术;多核技术;高性能

0 引言

BFD(Bidirectional Forward Detection,双向转发检测)是一项实现链路故障快速检测的技术[1]。其目的是当网络无法避免故障时,对相邻设备之间的通信故障能够快速检测,从而快速地切换到备用链路上。该技术对应的BFD 协议是在2004 年7 月由IETF 提出,且很快被各大路由交换厂商所采纳,当前已经是路由器或交换机的一项核心指标。

BFD 协议可以采用软件或硬件方式实现。软件BFD 采用的技术有集中式[2]、分布式[3]、多核技术[4],硬件BFD[5]则是基于支持硬件BFD 的芯片或FPGA来实现。通过不同技术实现BFD 协议,直接影响BFD 协议的两个关键指征:最短检测时间和最大会话数。最短检测时间决定了业务是否能快速切换到备用链路,最大BFD 会话数则决定设备检测链路故障的最大能力。

本文通过介绍BFD 协议原理,详细分析不同技术的BFD 实现方案和流程,给出各方案的特点和适用设备类型,以指导后续路由交换设备硬件选型和BFD 软件设计。

1 BFD 协议原理

介绍BFD报文格式、BFD标准协议以及关键参数。

1.1 BFD 报文格式

BFD 报文分为控制报文和回声报文,均采用UDP 封装。其中,控制报文的UDP 端口号为3784和4784,端口号3784 表示单跳检测,端口号4784表示多跳检测。回声报文是一种不依赖于控制报文的故障检测方式,UDP 端口号为3785。

BFD 报文格式如图1 所示,报文分为强制部分和非强制部分。

非强制部分包含Auth Type、Auth Len和Authentication Data 字段,实现BFD 的加密认证,传统支持Simple、MD5 和SHA1,且可扩展。

强制部分是BFD 报文的固定要求,必须填充。关键参数说明如下:

Vers 代表协议版本,当前主要采用版本1,Diag 表示诊断码,Sta 表示BFD 状态机所处状态,P 和F 是用于参数变化时的请求与确认,A 用于标识是否需要认证,DM(Detect Multi)表示检测超倍数,MY discriminator 和Your Discriminator 分布表示本地会话标识和远端会话标识,Tx(Desired Min Tx Interval)、Rx(Required Min Rx Interval) 和Echo Rx(Required Min Echo Rx Interval)分别代表本端期望的控制报文发送间隔、控制报文接收间隔和回声报文发送间隔。

图1 BFD 报文格式

1.2 BFD 协议原理

BFD 协议是通过在两个对等体设备之间建立会话,并沿着对等体之间的路径周期性发送 BFD 控制报文。如果一端在设定的时间内没有收到 BFD 控制报文,则认为路径上发生了故障,便告知上层应用协议,将业务快速倒换到其他链路。

BFD 会话有 4 种状态:AdminDown、Down、Init、Up。

(1)AdminDown:表示会话处于管理性Down状态。

(2)Down:表示会话未建立,或刚刚创建。

(3)Init:表示中间状态。当本端已向对端发送请求建立会话的控制报文,但还未收到响应的回复报文,处理等待状态。

(4)Up:表示BFD 会话建立成功。

在会话状态变成Up 前,协议协商过程是慢速发送。当状态变为Up 后,会按照配置的参数开始快速检测。

BFD 会话的状态迁移关系如图 2 所示。其中,圆框表示本地系统的状态,箭头表示状态迁移方向,箭头上的文字表示引起状态迁移的事件,Down、Init、Up、AdminDown 表示接收到的对端 BFD 控制报文状态字段的值。引起状态迁移的事件包括对端状态变化和检测定时器超时。

图2 BFD 状态机

在协商建立BFD 会话时,根据两端配置的期望发送间隔、期望接收间隔、检测超时次数协商出实际发送报文的间隔和检测超时时间。协商规则如下:

(1)本端实际发送间隔=MAX(本端期望发送间隔、对端期望接收间隔)

(2)本端检测超时时间=本端检测超时次数×对端实际发送间隔。

会话建立后,可以对这三个参数进行修改,本端向对端发送P 置位报文,当收到对端回应的F 置位报文时,表明对方设备已得知该参数发生变化。

BFD 协议状态机的目的是通过单跳检测、多跳检测和双向检测,实现直连对等体、跨网络对等体均能检测链路状态。

1.3 BFD 与其他应用协议的关系

BFD 协议能够检测链路故障,但并不直接切换业务链路,是通知各种上层应用协议来进行业务的切换。BFD 作为关键的链路故障检测协议,常常用来通知EFM、CFM、ARP、RIP、OSPF、BGP、ISIS、VRRP、MPLS 等应用协议,也可以根据设备的特殊需求通知其他应用协议。

2 BFD 协议实现方案分析及对比

分别介绍集中式软件BFD 协议、分布式软件BFD 协议、多核技术软件BFD 协议和硬件BFD 协议的实现架构与流程,并对几种方案进行比较与分析。

2.1 集中式软件BFD 协议

集中式软件BFD 协议的叫法是为了和后面分布式软件BFD 协议进行区分,其基本思想是在一个处理器上实现BFD 协议的控制管理和协议运行,完成整个会话协商和逻辑控制。

依据标准BFD 协议的需求,参看图3,集中式软件BFD 协议放在整个设备架构的控制平面,由整机管理平面的配置管理单元负责给BFD 协议下发参数,BFD 协议收到后进行相应的处理。图中BFDd 表示BFD 协议为一个独立的进程,实现BFD协议的完整流程,其协议细节分为以下几个模块:

BFD 会话管理:接收来自配置管理单元的BFD参数配置,负责BFD 会话数、BFD 参数和状态等的管理;

链路信息变化处理模块:负责将BFD 会话状态通告给关联的上层应用协议;

BFD 调试管理:调试打印的模块,方便用户或开发人员调试查找问题,一般作为库文件的方式加入BFDd 进程;

定时器模块:负责根据BFD 协议参数调整收发包速率;

BFD 状态机:负责BFD 协议状态的运转;

构包发包模块:负责构造BFD 报文,并发出;

收包处理模块:负责接收来自对等体设备的BFD 协议报文,然后送给BFD 状态机。

数据平面收到来自BFDd 进程发包模块的BFD协议包后,只负责根据参数信息发送给对等体,收到来自对等体的BFD 协议包则直接发送给BFDd 进程的收包处理模块。

图3 集中式软件BFD 协议系统架构

在集中式软件BFD 协议实现架构中,BFD 协议的处理流程如图4 所示。首先,配置管理模块将BFD 参数信息直接下发给BFD 会话管理模块,BFD会话管理模块将BFD 参数发送给BFD 定时器,由定时器交给BFD 状态机,定时通过发包模块发送BFD 协议报文。当收包模块收到协议报文时,会通过收包模块发给BFD 状态机,进行状态维持和处理。当BFD 状态机检测到会话状态时,会通过链路变化通告给其他注册关联的上层应用协议,同时会告诉BFD 会话管理模块。若需要打开BFD 调试管理,则由配置管理模块下发给BFD 会话模块,由BFD会话模块操作调试管理模块,实现调试管理的级别。

图4 集中式软件BFD 协议处理流程

集中式软件BFD 最大的优势是集中管理,信息同步简单。局限性是最短检测时间受处理器性能影响,一般只能达到百毫秒以上。同时BFD 会话数非常有限。随着BFD 会话数的增加,会加重BFD协议状态机的负荷,从而加重整机处理器的处理负担,导致整个处理器CPU 占用率高,甚至会影响其他应用程序的正常运行。

2.2 分布式软件BFD 协议

分布式软件BFD 协议是在集中式软件BFD 协议的基础上,为增加BFD 会话数和缩短BFD 最短检测时间,在框式设备(框式设备:至少有一张控制板和多张业务板的设备,且控制板和业务板上均有处理器)上将BFD 分为两种进程。控制板上的BFDd 进程负责管理、调试和管理关联其他应用协议,主要包括BFD 会话管理、链路状态处理和BFD 调试管理三个模块。业务板上的BFDd 进程负责协议状态机的运行,包括定时器模块、BFD 会话管理、BFD 调试管理、BFD 状态机、构包发包模块和收包模块,如图5 所示。

在分布式软件BFD 架构中,各业务板BFDd 进程负责协议状态的处理,协议内部处理流程与集中式软件BFD 一样,如图6 所示。分布式软件BFD与集中式软件BFD 的流程区别主要体现在BFD 会话管理、链路通告所处位置不一样,如图6 虚框中所示。在分布式软件BFD 中,由控制板的配置管理模块下发参数给控制板的BFD 会话管理模块,控制板的BFD 管理模块再将信息通过板间通信发送给业务板的BFD 会话管理。

分布式BFD 协议通过将BFD 协议状态机运行到各业务板的处理器上,减少控制板处理器负荷,可以有效提高BFD 会话数,不影响主控制板的处理器上其他应用程序的运行,但由于业务板的处理器一般性能不会太高,所以分布式软件BFD 方案不能有效缩短链路检测时间。

分布式BFD 协议不仅可以用于多处理器的框式设备,也可以用于有多个处理器的盒式设备,这就需要盒式设备有多个处理器,至少有一个非主控制处理器专门用于运行BFD 协议。

图5 分布式软件BFD 系统架构

图6 分布式软件BFD 协议处理流程

2.3 多核技术软件BFD 协议

基于多核技术的软件BFD 协议的灵感源于分布式软件BFD 将控制与管理分离的思想,解决分布式软件BFD 必须在多个处理器上才能实现的局限性,通过多核处理器划分不同模式的方式,实现BFD 协议。

基于多核技术的软件BFD 协议运行在多核处理器之上,将操作系统分为Linux 模式和SE 模式,其中一个核作为Linux 模式,负责BFD 的控制管理部分,即对BFD 的参数配置和会话管理,其他核为SE 模式,负责BFD 协议状态机,如图7 所示。

在多核技术下的软件BFD 协议,分为两部分,SE 模式的BFDd 进程负责协议状态机运作,包含BFD 会话管理、定时器、构包发包模块、收包处理模块、定时器模块和调试管理模块。Linux 模式下的BFDd 进程负责BFD 控制信息,包括BFD 会话管理、链路变化处理和调试管理模块。BFD 的管理配置则通过管理面下发给Linux 模式的BFDd 进程。管理面贯穿控制平面与数据平面,实现参数配置信息、状态查询等,如图8 所示。

图7 基于多核技术的BFD 模块分布架构

图8 基于多核技术的BFD 协议系统架构

BFD 协议状态机的原理与集中式和分布式一样,报文进入数据平面的BFDd 进程后,先经过收包处理模块,将收到的数据包发送给BFD 状态机进行一系列相关处理,然后根据分析结果更新会话表项状态。发包模块会根据会话表项来构造数据包,通过构包发包模块发出报文。定时器模块依据会话表项决定发包模块的发送时间。管理模块与收发包以及定时器模块都有关联。改变模块控制收发包的最小间隔,修改检测次数,增删会话等,同时当数据包处理模块发现链路中断时,会将当前会话状态上报给链路信息处理模块和BFD 会话模块。

基于多核技术的软件BFD 协议通过控制与管理分离,将BFD 协议状态机与管理单元、其他上层应用协议运行到不同的核上,保障其他上层应用程序不受BFD 协议的影响,同时在一定程度上可以增加BFD 会话数,缩短BFD 最短检测时间。如采用高性能的多核处理器,甚至可以达到电信级50ms 以内的链路检测。

2.4 硬件BFD 协议

硬件BFD 协议是通过支持硬件BFD 协议的芯片或FPGA 来实现硬件BFD 协议,软件只负责控制管理和应用协议通告。其典型系统架构如图9 所示。通过配置管理单元将BFD 参数下发BFDd 进程,再由BFDd 进程将参数信息传给驱动适配层,从而下发给芯片或FPGA。芯片/FPGA 进行BFD 协议状态机的协商。因为是硬件收发包,时间最短可以设置到几毫秒,链路检测时间非常短,业务切换可以达到电信级50ms 以内的要求。同时,增加BFD 会话数,几乎不会增加处理器负荷。

从图10 可以看出,硬件BFD 的软件处理非常简单,只进行了配置管理、驱动适配和链路变化通告。

硬件BFD 的软件架构主要分为四大模块:配置与控制模块、下一跳检测、芯片适配和其他路由协议联动模块。

通过配置管理向BFD 会话管理下发参数,由BFD 会话管理操作驱动适配程序,最终下发给芯片或FPGA。软件不关注BFD 协议状态机。当链路发生变化后,芯片会通过驱动适配上送给BFD 会话管理模块,通过链路变化通告给其他上层应用协议。

硬件BFD 协议使软件不再关注BFD 协议状态机,只关注BFD 协议的控制管理,极大地简化了BFD 功能的软件难度,同时还缩短了BFD 最短检测时间,增大BFD 会话数。

2.5 几种方案的对比

四种BFD 方案诞生于不同时期,各有优缺点,可以应用到不同类型、不同场景的路由设备上,详细对比如表1 所示。

图9 硬件BFD 协议系统架构

图10 BFD 软件处理流程

表1 BFD 方案对比

对比这四种BFD 方案,集中式技术一般用在低端接入路由交换设备,分布式技术用在有多个处理器的路由交换设备,多核技术要求设备本身有高性能的多核处理器,硬件BFD 则要求路由交换设备的交换芯片或FPGA 支持硬件BFD 协议。对链路检测时间和BFD 会话数要求不高的设备可以选择集中式软件BFD 协议,需要增加BFD 会话数的可以选择分布式技术或多核技术软件BFD,需要电信级50ms 业务切换需求的设备首选硬件BFD,其次选择高性能多核技术软件BFD。

3 结语

本文通过对多种BFD 协议实现方案的分析、对比和总结,给出不同BFD 协议的优缺点和适用场景,为路由交换设备在选择BFD 方案时提供有力的支撑,同时对路由交换设备在硬件选型和设计时,提供了非常重要的参考。

猜你喜欢
状态机集中式报文
基于J1939 协议多包报文的时序研究及应用
FPGA状态机综合可靠性探究 ①
低轨星座短报文通信中的扩频信号二维快捕优化与实现
CTCS-2级报文数据管理需求分析和实现
集中式小区广播在铁路客运车站中的运用研究
基于有限状态机的交会对接飞行任务规划方法
浅析反驳类报文要点
基于Spring StateMachine的有限状态机应用研究
全新Mentor DRS360 平台借助集中式原始数据融合及直接实时传感技术实现5 级自动驾驶
集中互动式多媒体术前宣教在门诊手术患者中的应用