请输入您要查询的百科知识:

 

词条 bfd
释义

BFD简介为了减小设备故障对业务的影响、提高网络的可用性,设备需要能够尽快检测到与相邻设备间的通信故障,以便能够及时采取措施,从而保证业务继续进行。

现有的故障检测方法主要包括以下几种:

硬件检测:例如通过SDH(Synchronous Digital Hierarchy,同步数字体系)告警检测链路故障。硬件检测的优点是可以很快发现故障,但并不是所有介质都能提供硬件检测。

慢Hello机制:通常采用路由协议中的Hello报文机制。这种机制检测到故障所需时间为秒级。对于高速数据传输,例如吉比特速率级,超过1秒的检测时间将导致大量数据丢失;对于时延敏感的业务,例如语音业务,超过1秒的延迟也是不能接受的。并且,这种机制依赖于路由协议。

其他检测机制:不同的协议有时会提供专用的检测机制,但在系统间互联互通时,这样的专用检测机制通常难以部署。

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

双向转发检测(BFD)的新协议将帮助解决这个问题,提高故障检测与恢复速度。作为一项IETF草案标准,BFD提供一种检测链路或系统转发传输流能力的简单方法。

BFD是从基础传输技术中经过逐步发展而来的,因此它可以检测网络各层的故障。它可以用以太网、多协议标记交换(MPLS)路径、普通路由封装以及IPSec隧道在内的多种类型的传输正确性。

从本质上讲,BFD是一种高速的独立HELLO协议(类似于那些在路由协议中使用的协议,如开放最短路径优先协议(OSPF),或可以与链路、接口、隧道、路由或其他网络转发部件建立联系的中间系统到中间系统协议)。

BFD能够与相邻系统建立对等关系,然后,每个系统以协商的速率监测来自其他系统的BFD速率。监测速率能够以毫秒级增量设定。当对等系统没有接到预先设定数量的数据包时,它推断BFD保护的软件或硬件基础设施发生故障,不管基础设施是标记交换路径、其他类型的隧道还是交换以太网络。BFD部署在路由器和其他系统的控制平面上。BFD检测到的网络故障可以由转发平面恢复或由控制平面恢复

BFD库(Binary File Descriptor library)

BFD库是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件。BFD这个项目本身是binutils项目的一个子项目。BFD把目标文件抽象成一个统一的模型,比如在这个抽象的目标文件模型中,最开始有一个描述整个目标文件总体信息的"文件头",就跟我们实际的ELF文件一样,文件头后面是一系列的段,每个段都有名字、属性和段的内容,同时还抽象了符号表、定位表、字符串表等类似的概念,使得BFD库的程序只要通过这个抽象的目标文件模型就可以实现操作所有BFD支持的目标文件格式。

现在GCC(更具体地讲是GNU汇编器GAS,GNU Assembler)、连接器ld、调试器GDB及binutils的其他工具都通过BFD库来处理目标文件,而不是直接操作目标文件。这样做的最大的好处是将编译器和连接器本身同具体的目标文件格式隔离开来,一旦我们需要支持一种新的目标文件格式,只须要在BFD库里面添加一种格式就可以了,而不需要修改编译器和连接器。到目前为止,BFD库支持大约25种处理平台,将近50种目标文件格式。

当我们安装了BFD开发库以后(在我的ubuntu下,包括BFD开发库的软件包的名字叫binutils-dev),我们就可以在程序中使用它。

引自:《程序员的自我修养---链接、装载与库》

How to use BFD

在使用时,要包含bfd.h这个头文件

#include<stdio.h>

#include"bfd.h"

int main()

{

const char **t = bfd_target_list();

while(*t)

{

printf("%s\",*t);

t++;

}

}

保存为target.c

在linux下编译时:gcc -o target target.c -lbfd -liberty

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/2/26 20:32:41