BFD
BFD |
BFD是Bidirectional Forwarding Detection的缩写,它是一个用于检测两个转发点之间故障的网络协议,在RFC 5880有详细的描述。BFD是一种双向转发检测机制,可以提供毫秒级的检测,可以实现链路的快速检测,BFD通过与上层路由协议联动,可以实现路由的快速收敛,确保业务的永续性。BFD Echo报文采用UDP封装,目的端口号为3784,源端口号在49152到65535的范围内。目的IP地址为发送接口的地址,源IP地址由配置产生(配置的源IP地址要避免产生ICMP重定向)
目录
简介
现有的故障检测方法主要包括以下几种:硬件检测:例如通过SDH(Synchronous Digital Hierarchy,同步数字体系)告警检测链路故障。硬件检测的优点是可以很快发现故障,但并不是所有介质都能提供硬件检测。慢Hello机制:通常采用路由协议中的Hello报文机制。这种机制检测到故障所需时间为秒级。对于高速数据传输,例如吉比特速率级,超过1秒的检测时间将导致大量数据丢失;对于时延敏感的业务,例如语音业务,超过1秒的延迟也是不能接受的。并且,这种机制依赖于路由协议。其他检测机制:不同的协议有时会提供专用的检测机制,但在系统间互联互通时,这样的专用检测机制通常难以部署。双向转发检测(BFD)的新协议将帮助解决这个问题,提高故障检测与恢复速度。作为一项IETF草案标准,BFD提供一种检测链路或系统转发传输流能力的简单方法。BFD是从基础传输技术中经过逐步发展而来的,因此它可以检测网络各层的故障。它可以用以太网、多协议标签交换(MPLS)路径、普通路由封装以及IPSec隧道在内的多种类型的传输正确性。从本质上讲,BFD是一种高速的独立HELLO协议(类似于那些在路由协议中使用的协议,如开放最短路径优先协议(OSPF),或可以与链路、接口、隧道、路由或其他网络转发部件建立联系的中间系统到中间系统协议)。
评价
BFD库是一个GNU项目,它的目标就是希望通过一种统一的接口来处理不同的目标文件。BFD这个项目本身是binutils项目的一个子项目。BFD把目标文件抽象成一个统一的模型,比如在这个抽象的目标文件模型中,最开始有一个描述整个目标文件总体信息的"文件头",就跟我们实际的ELF文件一样,文件头后面是一系列的段,每个段都有名字、属性和段的内容,同时还抽象了符号表、定位表、字符串表等类似的概念,使得BFD库的程序只要通过这个抽象的目标文件模型就可以实现操作所有BFD支持的目标文件格式。GCC(更具体地讲是GNU汇编器GAS,GNU Assembler)、连接器ld、调试器GDB及binutils的其他工具都通过BFD库来处理目标文件,而不是直接操作目标文件。这样做的最大的好处是将编译器和连接器本身同具体的目标文件格式隔离开来,一旦我们需要支持一种新的目标文件格式,只须要在BFD库里面添加一种格式就可以了,而不需要修改编译器和连接器。到目前为止,BFD库支持大约25种处理平台,将近50种目标文件格式。[1]