BFD会话
一、BFD介绍
BFD(Bidirectional Forwarding Detection)会话,即为双向转发检测会话。通过不断给对方发包来进行监控,主要用于检测网络设备间的双向转发路径的连通性。
BFD其实就是一个双向的保活机制,可以和很多其他的协议进行联动,让那些没有保活机制的协议拥有保活机制,让那些本身就有保活机制的协议,拥有更快的保活机制(BFD可以做到毫秒级的保活)
二、BFD会话的建立
在BFD协议中,本地标识符和远端标识符是用于唯一标识BFD会话的两个关键字段,确保会话的正确建立和维护。
-
Local Discriminator:本地标识符
-
Remote Discriminator:远端标识符
在BFD协议中,会话的建立分为静态会话和动态会话两种模式,它们在标识符分配、配置方式及适用场景上有显著差异。
-
静态会话:本地/远端标识符需要手工配置完成
-
动态会话:有系统自动分配这两个标识符
BFD会话的状态主要分为:Down、Init、Up、AdminDown(由管理员手动关闭),其会话建立的过程如下:
1、A和B启动BFD配置,之后的初始状态为Down,发送的数据包中包含Down状态;
2、B收到状态为Down的BFD报文后,则进入到Init状态,之后发送的报文中包含Init状态;
3、A的变化和B相同;
4、B收到状态为Init的BFD报文后,则进入到Up状态,之后发送的数据包中包含Up状态;
5、A的变化和B相同。
不同状态接收到不同数据包的处理方法:
Down状态:
-
收到Down状态的数据包:状态切换为Init
-
收到Init状态的数据包:状态切换为Up
-
收到Up状态的数据包:状态不发生变化
Iint状态:
-
收到Down状态的数据包:状态不发生变化
-
收到Init状态的数据包:状态切换为Up
-
收到Up状态的数据包:状态切换为Up
Up状态:
-
只有在用户手工关闭或者链路出现故障时,状态切换为Down,收到其余数据包时不发生变化。
三、BFD的配置
在BFD中,单挑检测和多跳检测是两种典型的应用场景,分别针对不同网络范围内的链路或路径故障检测。这里配置配置单跳检测和多跳检测时,分别使用静态会话和动态会话来做示例。
1、单挑检测(采用静态会话)
实验拓扑:
(1)基础配置
划分好对于的IP地址即可。
(2)激活BFD功能
R1上:
[r1]bfd
[r1-bfd]qR2上:
[r2]bfd
[r2-bfd]q
(3)创建BFD会话
R1上:
[r1]bfd aa bind peer-ip default-ip interface g0/0/0
R2上:
[r2]bfd aa bind peer-ip default-ip interface g0/0/0
(4)配置BFD会话
R1上:
[r1-bfd-session-aa]discriminator local 1
[r1-bfd-session-aa]discriminator remote 2
[r1-bfd-session-aa]commit
R2上:
[r2-bfd-session-aa]discriminator local 2
[r2-bfd-session-aa]discriminator remote 1
[r2-bfd-session-aa]commit
(5)查看BFD会话状态
[r1]dis bfd session all
2、多跳检测(采用动态会话)
实验拓扑:
(1)基础配置
完成IP地址划分,并配置好对应静态路由,实现各设备互通。
(2)激活BFD功能
R1上:
[r1]bfd
[r1-bfd]q
R3上:
[r3]bfd
[r3-bfd]q
(3)创建BFD会话(动态会话)
R1上:
[r1]bfd aa bind peer-ip 23.0.0.2 source-ip 12.0.0.1 auto
R2上:
[r3]bfd aa bind peer-ip 12.0.0.1 source-ip 23.0.0.2 auto
(4)查看BFD会话状态
[r1]dis bfd session all
四、BFD报文
抓包单挑检测场景的BFD进行分析:
五、BFD的回声模式
上面的配置为BFD的异步模式,也就是默认的模式,基于两台设备的双向检测。
回声模式中,发送的不再是普通的BFD报文,而是BFD ECHO报文。目标IP地址时自己本地的IP地址,目标MAC地址是对端的MAC地址(只能用于单跳检测的环境)。
-
被动回声:在两台设备启动异步模式的基础上,将发送的报文替换成为ECHO报文。
-
单臂回声:仅一台设备激活BFD,另一台设备不激活。
六、BFD和其它协议的联动
1、BFD和静态路由
静态路由无法感知路径故障,默认依赖接口状态(物理层Down)触发撤销,但某些场景会导致流量黑洞。还可以通过BFD检测主路径状态,故障时立即切换到备用静态路由。
其主要配置命令:
# 将该路由绑定到BFD会话中
[r1]ip route-static 0.0.0.0 0 12.0.0.2 track bfd-session aa
2、BFD和OSPF
OSPF默认依赖Hello报文检测邻居(Dead Timer通常为40秒),BFD可将故障检测时间缩短至毫秒级。
其主要配置命令:
# 对OSPF中的所有接口开启BFD会话,在建立邻居过程中自动完成BFD会话的建立
[r1-ospf-1]bfd all-interfaces enable
3、BFD和VRRP
默认VRRP依赖Advertisement报文(默认3秒),BFD可实现主备快速切换(毫秒级)。还可以通过BFD检测上行链路状态,确保主设备仅在链路完好时接管流量。
其主要配置命令:
# 将VRRP绑定到BFD会话中
[SW1-GigabitEthernet0/0/1]vrrp vrid 1 track bfd-session aa