技术介绍:
BFD(Bidirectional Forwarding Detection)双向转发检测,其原理和ip-link类似,都是用于快速检测系统之间的通信故障,并在出现故障时通知上层协议。
该协议有两种模式,异步或同步,在本文中不过多讨论。其技术原理是在两个设备间互相周期性地发送报文,A发B,B发A。一旦出现故障导致链路断开,报文没有回应,BFD协议就会将故障通知上层协议。
和ip-link的区别在于,ip-link只需在一台设备上配置,而BFD需要在两个设备上同时配置。
其他的异同可以参考下面的表格:
BFD的响应速度会比ip-link要快很多,联动的应用场景也更多。
会话的建立方式:
通过控制报文中的本地标识符(Local Discriminator)和远端标识符(Remote Discriminator)来区分不同的会话。
比如A设备,它的标识符是:
- Local Discriminator(本端): a
- Remote Discriminator(远端): b
B设备的标识符就对应为:
- Local Discriminator(本端): b
- Remote Discriminator(远端): a
本端a和远端b是一个会话,本端b和远端a是另一个会话,两者互相对称。
会话状态:
BFD会话有4种状态:Down、Init、Up和AdminDown。
- Down:会话处于断开状态或刚刚被创建,尚未开始通信。
- Init:已经能够与对端系统通信,本端希望会话进入Up状态(这通常是一个中间状态)。
- Up:会话已成功建立,双方可以正常通信。
- AdminDown:会话被管理性地置于Down状态,即使物理链路可能仍然正常。
发送方在BFD控制报文的STA(State)字段会填入本地当前的会话状态。接收方根据接收到的BFD控制报文以及本端当前的会话状态来进行状态机的迁移。
会话的建立过程可以参考下图:
应用场景:可用于双机热备的场景,由VGMP管理组进行调用。
实验目标:在FWA上配置bfd会话1,配置对端ip地址,并设定本地、远端标识符,并绑定在ospf协议上进行测试。
实验拓扑如上图。
1、防火墙基础配置:
FWA:
int g1/0/0
ip add 1.1.1.1 24
service-man all permit //配置ip地址,允许端口接收、回复协议报文。
quit
firewall zone trust
add int g1/0/0 //将端口加入trust区域。
quit
security-policy
rule name test
source-zone local
destination-zone trust
action permit//配置路由策略
quit
FWB上的配置正好相反:
int g1/0/0
ip add 1.1.1.2 24
service-man all permit
quit
firewall zone trust
add int g1/0/0
quit
security-policy
rule name test
source-zone local
destination-zone trust
action permit
quit
配置好之后测试路由是否联通:
2、进行BFD配置:
FWA:
bfd
bfd 1 bind peer-ip 1.1.1.2
discriminator local 10
discriminator remote 20
commit//配置开启bfd、对端ip、本地;远端标识符。
FWB:
bfd
bfd 1 bind peer-ip 1.1.1.1
discriminator local 20
discriminator remote 10
commit
查看命令可以用display bfd configuration all来进行查看。
抓包如上图。
3、尝试在ospf协议上绑定BFD:
3.1、首先取消步骤2的BFD配置,并进行ospf配置:
FWA:
undo bfd
y
bfd //取消bfd配置,确认,并重新开启bfd功能
quit
ospf 1
area 0
network 1.1.1.1 0.0.0.0
quit
FWB:
undo bfd
y
bfd
quit
ospf 1
area 0
network 1.1.1.2 0.0.0.0
quit
等待两台设备ospf邻居握手成功。
状态成为full。
抓包可以看到ospf报文。
3.2、在ospf中配置bfd
[FWA-ospf-1]bfd all-interfaces enable
bfd all-interfaces min-rx-interval 100 min-tx-interval 100 detect-multiplier 3 //开启bfd,最小间隔,最大间隔均设置为100,认证次数设置为3。
此时已经可以抓包到BFD控制报文,且因为对端尚未配置,state状态为down。
对端配置完成后,快速完成init和up的状态。
在防火墙上通过disp bfd session all也可以进行端口状态查看。
实验成功。