BFD,Bidirectional Forwarding Detection,双向转发检测,是一种快速故障检测机制,主要用于加快检测发现网络中的故障,从而可以尽快解决故障,恢复网络的正常业务转发。
那么,第一个问题?为什么需要BFD,网络中就没有其它协议可以检测故障的吗?
答案是否定的,某些协议是可以通过Keepalive机制来检测网络中的连接是否还正常的,比如OSPF,它就可以通过周期性的发送Hello报文来发现链路中的故障从而自动切换链路,但提到这里,就不得不提OSPF发现故障的检测时间,首先OSPF的周期性发送是每隔10S发送一次Hello报文,然后要等到4倍HelloTime,也就是40S,一直没有收到邻居路由器发送的Hello报文后,才会认为网络中发生了故障,再开始切换报文转发路径。所以,在这40S的时间里,本路由器发送的报文永远是无法到达邻居路由器,也就无法通信。而这个40S的时间太长了,所以我们需要一个机制来更快的发现故障,这个机制就是BFD,所以,BFD的主要作用不是检测故障,而是加快检测。
BFD检测的大概过程就是在两个系统之间建立BFD会话通道,然后周期性发送BFD检测报文,当某方系统在规定时间内没有收到对方的检测报文,就认为链路故障了。和OSPF的Hello检测机制比较类似,实质上,BFD就是一个简单的Hello协议,不过它检测故障的用时更短而已。
那么接下来,我们就认识一下BFD究竟是怎么工作的?
不过在这之前,我们有一点不得不提及了,因为BFD是一个与协议无关的检测机制,所以它是不能独立运行的,一般是作为辅助与其它路由协议联动使用,比如静态路由、OSPF、ISIS、BGP等,本章中主要讲述静态路由和OSPF。
前面提过BFD是需要建立BFD会话通道的,那么BFD建立会话主要有两种方式:
一是静态建立BFD会话,静态建立就是由管理员手工配置本地标识符和远端标识符来建立BFD会话,适用于没有Hello机制的协议当中,比如静态路由。
本地标识符和远端标识符就是系统间用来建立和区分不同的BFD会话的。本地标识符是标识本地路由器上某个会话的,而远端标识符是标识远端路由器的某个会话的,路由器之间只有在发现本地标识符和远端标识符匹配无误之后,才可以建立起BFD会话。