BFD:
vrrp vrid 1 track interface GigabitEthernet0/0/0 reduced 15
vrrp vrid 1 track interface GigabitEthernet2/0/1 reduced 15
BFD使用组播IP地址224.0.0.184
(1)概念:
双向转发检测BFD是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况,和IGP等结合使用,默认1000毫秒发送一次报文,如果没收到对方的报文会默认发送三次
(2)目的:
为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务继续进行。在现有网络中,有些链路通常通过硬件检测信号,如sdh告警,检测链路故障,但并不是所有的介质都能够提供硬件检测。此时,应用就要依靠上层协议自身的hello报文机制来进行故障检测。上层协议的检测时间都在1秒以上,这样的故障检测时间对某些应用来说是不能容忍的。同时,在一些小型三层网络中,如果没有部署路由协议,则无法使用路由协议的hello报文机制来检测故障。
(3)bfd原理:
bfd在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。bfd本身并没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话。会话建立后会周期性地快速发送bfd报文,如果在检测时间内没有收到bfd报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。
①“bfd检测的时候是检测的是对方的地址”利用自己的快速的“helllo”包快速感知
②特殊:
单臂回声功能:一般是和运营商连接的时候配置的,源是自己,目的也是自己,字节发出的报文。能够回来就说明链路是没问题的
(4)bfd模式:
bfd会话建立后有两种模式:异步模式和查询模式
1、异步模式:设备周期性发送bfd控制报文,如果在检测时间内没有收到对端发送的bfd控制报文,则认为会话down。
2、查询模式:设备周期性发送bfd控制报文,但是对端(缺省为异步模式)会停止周期性发送bfd控制报文。如果通信双方都是查询模式,则双方都停止周期性发送bfd控制报文。当需要验证连接性的时候,设备会以协商的周期连续发送几个p比特位置1的bfd控制报文。如果在检测时间内没有收到返回的报文,就认为会话down;如果收到对方回应的f比特位置1的报文,就认为连通,停止发送报文,等待下一次触发查询。
3、另外,也可以链路两端通过发送控制报文建立和保持bfd会话,任意一端通过发送echo报文检测链路状态
(5)bfd优点:
轻负荷、快速检测故障、对任何介质、任何协议层进行实时检测
(6)bfd会话建立示意图举例:
两台设备上同时配置了ospf与bfd,bfd会话建立过程如下所示:
①ospf通过自己的hello机制发现邻居并建立连接。
②ospf在建立了新的邻居关系后,将邻居信息(包括目的地址和源地址等)通告给bfd。
③ bfd根据收到的邻居信息建立会话。
④会话建立以后,bfd开始检测链路故障,并做出快速反应。
(7)bfd故障发现:
被检测链路出现故障。
①bfd快速检测到链路故障,bfd会话状态变为down。
②bfd通知本地ospf进程bfd邻居不可达。
③本地ospf进程中断ospf邻居关系。
(8)bfd会话建立方式:
1、静态建立bfd会话:本地标识符(local discriminator)
①静态建立bfd:通过命令行手工配置bfd会话参数,包括配置本地标识符和远端标识符等,然后手工下发bfd会话建立请求。
配置:
bfd dtoa bind peer-ip 10.1.1.1
discriminator local 20
discriminator remote 10
ip route-static 10.1.2.0 255.255.255.0 10.1.1.2 track bfd-session atod
②bfd自动会话配置:
bfd 1 bind peer-ip 10.2.128.1 source-ip 10.2.128.2 auto
③bfd和接口的联动:
bfd btoa bind peer-ip default-ip interface g 1/0/1
④bfd和track的联动:
创建和BFD会话关联的Track项1,检测Router B是否可以与静态路由的下一跳Router A互通。
track 1 bfd echo interface gigabitethernet 2/0/1 remote ip 10.2.1.1 local ip 10.2.1.2
博客:
https://blog.csdn.net/pgl608/article/details/82893265
2、动态建立bfd会话:远端标识符(remote discriminator)
“bfd通过控制报文中的local discriminator和remote discriminator区分不同的会话”
①动态建立bfd会话时:系统对本地标识符和远端标识符的处理方式如下:
动态分配本地标识符
②当应用程序触发动态创建bfd会话时,系统分配属于动态会话标识符区域的值作为bfd会话的本地标识符。然后向对端发送remote discriminator的值为0的bfd控制报文,进行会话协商
自学习远端标识符
③当bfd会话的一端收到remote discriminator的值为0的bfd控制报文时,判断该报文是否与本地bfd会话匹配,如果匹配,则学习接收到的bfd报文中local discriminator的值,获取远端标识符。
(9)bfd检测机制:
①bfd的检测机制是两个系统建立bfd会话,并沿它们之间的路径周期性发送bfd控制报文,如果一方在既定的时间内没有收到bfd控制报文,则认为路径上发生了故障。
②bfd提供异步检测模式。在这种模式下,系统之间相互周期性地发送bfd控制报文,如果某个系统连续几个报文都没有接收到,就认为此bfd会话的状态是down。
(10)bfd会话过程:
bfd会话有四种状态:down、init、up和admindown。会话状态变化通过bfd报文的state字段传递,系统根据自己本地的会话状态和接收到的对端bfd报文驱动状态改变。bfd状态机的建立和拆除都采用三次握手机制,以确保两端系统都能知道状态的变化。
①routera和routerb各自启动bfd状态机,初始状态为down,发送状态为down的bfd报文。对于静态配置bfd会话,报文中的remote discriminator的值是用户指定的;对于动态创建bfd会话,remote discriminator的值是0。
②routerb收到状态为down的bfd报文后,状态切换至init,并发送状态为init的bfd报文。
③routerb本地bfd状态为init后,不再处理接收到的状态为down的报文。
④routera的bfd状态变化同routerb。
⑤routerb收到状态为init的bfd报文后,本地状态切换至up。
⑥routera的bfd状态变化同routerb。
⑦双方up,周期性发hello包
(10)bfd的联动应用:
1、bfd与静态路由联动:
①静态路由自身没有检测机制,当网络发生故障的时候,需要管理员介入。bfd与静态路由联动特性可为公网静态路由绑定bfd会话,利用bfd会话来检测静态路由所在链路的状态。
②bfd与静态路由联动可为每条静态路由绑定一个bfd会话,当这条静态路由上绑定的bfd会话检测到链路故障(由up转为down)后,bfd会将故障上报路由管理系统,由路由管理模块将这条路由设置为“非激活”状态(此条路由不可用,从ip路由表中删除)。当这条静态路由上绑定的bfd会话成功建立或者从故障状态恢复后(由down转为up),bfd会上报路由管理模块,由路由管理模块将这条路由设置为“激活”状态(此路由可用,加入ip路由表)
2、bfd与ospf联动:
bfd与ospf联动就是将bfd和ospf协议关联起来,通过bfd对链路故障的快速感应进而通知ospf协议,从而加快ospf协议对于网络拓扑变化的响应。
3、bfd与is-is联动:
①is-is设定发送hello报文的时间间隔为10秒钟,相邻设备失效的时间一般配置为hello报文间隔的3倍。若在相邻设备失效时间内没有收到邻居发来的hello报文,将会删除邻居。设备能感知到邻居故障的时间最小也是秒级。
②bfd与is-is联动是指bfd会话由is-is协议动态创建,当bfd检测到故障时,通过路由管理通知is-is协议,由协议进行相应邻居down处理,快速更新lsp信息和进行增量路由计算,从而实现is-is路由的快速收敛。使用bfd并不是代替is-is协议本身的hello机制,而是配合is-is协议更快的发现邻居方面出现的故障,并及时通知is-is重新计算相关路由以便正确指导报文的转发。
③各设备上使能了is-is功能,在routera和routerb上配置了bfd与is-is联动。当routera和routerb之间的链路故障时,bfd能够快速检测到故障并通告给is-is协议,is-is down掉此接口的邻居,从而触发拓扑计算,同时更新lsp使得其他邻居(如routerb的邻居routerc)及时收到routerb的更新lsp,实现了网络拓扑的快速收敛。