BFD引入原因:OSPF VRRP等各类数据协议都是用秒为单位的,当一个dhcp,或者ospf 如下设备down掉会等待4*hello 40s才会失效,会造成数据包丢弃,信息差,vrrp因为没提前检测已经发送的数据会造成路由重计数导致次优路径等问题(如下AR1-LSW1 DOWN 线路蓝色次优路径 ospf非直连down掉造成40s老化才能检测到设备故障)。
BFD(双向转发检测机制):充分解决了上面协议响应上检测机制的不足之处(介质无关,协议无关为上层服务协议)BFD本身没有发现机制,依靠上层协议通知,建立BFD会话周期性发送BFD报文,如双方在检测时间内未收到报文,则发生了故障。(可到微秒 1秒=1000毫秒=1000000微秒)组播地址224.0.0.184
建立和拆除BFD的变化:双方开始启动的时候初始状态为down ,当我收到down的报文后状态变成init并不再处理接收down的报文,并发送init报文,对方收到我的down的报文同理,发送init,当我收到对方的init报文的时候状态为up稳定状态。(如果一直没收到检测定时器超时机制)
BFD建立会话有两种形式:静态BFD会话,动态BFD会话。两者的不同点为静态BFD是手工指定的本端远端的标识符。动态是相互学习,仅标识本端,远端标识为0,进行动态学习后获取远端标识符。两者配置不同。bfd代码:
BFD 先全局模式下敲BFD,开启bfd
bfd 1 bind peer-ip default-ip int g0/0/0 开启二层端口检测
bfd 1 bind peer-ip 12.0.0.2/ int vlanif 1 创建三层接口检测
discriminator local/remote 10/20 建立本地或者远端标识符
commit 提交BFD会话
min-tx-interval/min-rx-interval 100 配置发送/接收间隔
detect-multiplier 3 配置本地检测倍数默认是3
检测公式:本端检测间隔=对端检测倍数*max(发送,接收间隔)
display BFD session all verbose 验证BFD会话状态
vrrp vrid 1 track bfd-session 10 配置与vrrp联动10为本地标识符
bfd all-interfaces enable 配置与ospf 联动
peer x.x.x.x bfd enable 配置ospf与bfd联动
ip route-static x.x.x.x x.x.x.x track bfd-session 1 配置静态路由联动
BFD两种会话工作方式:控制报文方式(链路会话,交互链路状态。单跳UDP目的端口3748,多跳为4784)echo报文方式(单项发送报文由另一边转发回来实现双方检测,单臂回声。UDP目的端口为3785)
BFD会话建立前运行模式:主动模式(主动发送报文,无论收到与否),被动模式(不会主动发送报文,直到收到为止) 至少一个为主动模式才能建立会话。
BFD会话建立后运行模式:异步模式(周期性发送BFD报文,在检测时间内没收到则会话down)查询模式(一旦会话建立不再周期性发送报文,而是用其他方式检测连通性,减少BFD会话开销)
接受间隔和发送间隔计算(bfd快慢设置):
举例:sw1 最小发送间隔300ms 最小接受间隔500ms 本地检测倍数 5 sw2 最小发送间隔200ms 最小接受间隔600ms 本地检测倍数 2
sw2最终时间:sw1发送300ms接收600 只能600ms接收的最大值 则600*对端检测倍数5=3000
sw1 最 终时间 :sw2 发送200ms接收500只能500ms最大接收 则500*2=1000ms
应用场景:
1.检测ip链路(检测直连:单跳绑定接口,非直连:多跳绑定IP检测)
2.BFD单臂回声(一方支持BFD的情况)
3.与接口状态联动(检测非直连故障接口状态)
4.与静态路由联动(静态本身没检测机制)
5.与RIP,OSPF,ISIS,MPLS,IPV6,vrrp联动(ospf等各类协议都是秒级)
6.与smart link联动
案例1(上篇的vrrp,ospf做bfd)
1.先做vrrp 监听上行接口,避免上层接口down造成次优路由(lsw 10)
interface vlan 8
vrrp vrid 1 track interface GigabitEthernet 0/0/4 reduced 101
--当上层链路down掉vlanif 8 的优先级200会减去101 变成 99让 lsw11变成主
lsw 11同理
interface vlan 9
vrrp vrid 2 track interface GigabitEthernet 0/0/4 reduced 101
LSW10的上层链路AR6 1.1.1.1的接口 DOWN掉 pc5仍然可以访问如下(次优路径)
命令配置后LSW10优先级如下
2.做bfd当中间链路发生故障(检测两个ip是否能通不能通自动变成主)
LSW 10
interface vlanif 8
bfd 1 bind peer-ip 192.168.8.253 source-ip 192.168.8.252 auto
vrrp vrid 1 track bfd-session session-name 1 reduced 101
--当主和备bfd down掉主的优先级减去101变成99
LSW 11
bfd 1 bind peer-ip 192.168.8.252 source-ip 192.168.8.253 auto
vrrp vrid 1 track bfd-session session-name 1 increased 101
---利用两个ip互通检测,当主不能通,我的优先级加上101变成201
LSW 10
interface vlanif 9
bfd 1 bind peer-ip 192.168.9.252 source-ip 192.168.9.253 auto
vrrp vrid 2 track bfd-session session-name 1 reduced 101
---利用两个ip互通检测,当主不能通,我的优先级加上101变成201
LSW 11
interface vlanif 9
bfd 1 bind peer-ip 192.168.9.253 source-ip 192.168.9.252 auto
vrrp vrid 2 track bfd-session session-name 1 increased 101
--当主和备bfd down掉主的优先级减去101变成99
1.非直连OSPF 做bfd(拓扑如下,当非直连断开,AR7和AR8的ospf需要等待40s判定断开)
AR6,AR8 的ospf进程里面打上所有接口全部宣告BFD
ospf 1
BFD all-interfaces enable
当ospf断开后(BFD先告知down掉了,bfd告知ospf立即down掉)