BFD基础概述:
BFD即双向转发检测,是一种检测两个转发点之间故障的网络协议。它提供一种轻量级的,快速检测链路或者路径故障的机制。
在网络检测中遇到的问题:
1.某些应用通过Hello报文进行泛洪检测邻居的故障,那么到达邻居的链路不可达的时候,也不会切换路径,但是流量还是会往故障链路去发送,所以在没有检查到邻居故障,会持续的断网,这个时间超过1s,会导致数据的大量的流失
2.在三层网络中,静态路由本身没有链路检测的机制,不支持Hello报文的检测
为何要使用此网络协议,BFD提供一个标准化的,通用的,协议无关的优点:
对相邻转发引擎之间的通道提供轻符合,快速的故障检测
用单一的机制对任何介质,任何协议层进行实时检测
BFD实际原理:
bfd是一个简单的“hello"协议,两个系统之间建立BFD会话通道,并周期性发送BFD检测报文,如果某个系统在规定时间内没有收到对端的检测报文,则认为该通道的某个部分发生了故障。
BFD的应用场景:
1.OSPF和与接口状态的联动
2.BFD与了路由协议的联动(opsf,bgp)
3.动态与静态的BFD会话
4.BFD的单臂回声
5.BFD的单跳和多跳的检测
由于同一个数据路径上只建立一个BFD会话,如果不同的应用使用的BFD参数不一致,则应该配置一个能满足所有应用的BFD参数
BFD的工作原理:
BFD的会话的建立:
1.静态建立:
由管理员手工去配置本地标识符和远端标识符,适用于没有hello机制的协议,比如静态路由等路由器的本地标识符和远端标识符需要一一对应
2.动态建立:
动态分配本地和远端标识符
比如igp
BFD的会话的状态:
1.DOWN
BFD的初始的状态
如果在这个状态收到down,那么就会进入init
2.INIT
初始化
收到init包,那么就会进入up
3.UP
建立
如果定时器超时,那么就会进入down
4.admin down
下面是会话状态一个示例图:
其中BFD状态机的建立和拆除都采用三次握手机制
BFD的检测模式:
两个系统建立BFD会话,并验证它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径发生了故障。
其中BFD的检测模式有异步模式和查询模式两种
异步模式:系统之间相互周期性的发送BFD控制包,如果某个系统在检测时间内没有收到对端的发来的BFD控制报文,就会宣告会话为down
查询模式:在需要验证连接性的情况下,系统会连续发送多个BFD控制包,如果在检测时间内没有收到返回的报文就会宣告会话为down
他们的本质区别:
检测位置不同 ,异步模式下本端按一定的发送周期发送BFD控制报文。检测位置为远端,远端检测本端是否周期性的发送BFD控制报文
查询模式下本端检测自身发送的BFD控制报文是否得到了回应
BFD的检测时间:
BFD会话检测时长由TX,RX,DM三个参数决定。BFD报文实际发送时间间隔,实际接受间隔由BFD会话协商决定
本地BFD报文的实际发送时间间隔=MAX{本地配置的发送时间间隔,对端配置的接受时间间隔}
本地BFD报文的实际接受时间间隔=MAX{对端配置的发送时间间隔,本端配置的接受时间间隔}
本地BFD报文实际检测时间:
异步模式:本地BFD报文实际检测时间=本地BFD报文实际接受时间间隔 x 对端配置的BFD检测倍数
查询模式:本地BFD报文实际检测时间=本地BFD报文实际接受时间间隔 x 本地配置的BFD检测倍数
BFD缺省时间参数:
bfd报文发送的时间间隔默认1000ms,接受时间间隔默认1000ms,本地检测倍数3倍
bfd会话等待恢复时间0秒,会话延迟up时间0秒
检测超时倍数,用于检测方计算检测超时时间
查询模式:本地检测倍数
异步模式:对端检测倍数
BFD ECHO功能:
单臂回声
适用于对端路由器不支持BFD的场景
目的地址是自己,这个BFD的控制报文在链路正常的情况下,会弹回来,如果链路或者其他的一些原因导致网络不通,这个BFD的控制报文就不会弹回,路由器在一定的时间内,收不到自己的BFD控制的报文则认为对端失效
ENSP的配置实例
基本的配置
bfd //使能bfd功能
bfd session 1 bind peer-Ip <对端IP地址> interface <出接口>
discriminator local <本地标识符>
discriminator remote <对端标识符>
//创建bfd会话,并绑定信息,并进入bfd会话
<对端IP地址>:指定与之建立BFD会话的对端设备的IP地址。
<出接口>:指定用于发送BFD报文的本地接口。
<本地标识符>和<对端标识符>:用于区分不同BFD会话的标识符,必须确保双方标识符匹配才能建立BFD会话。
bfd session 1 min-tx-interval <最小发送间隔> max-retry-interval <最大重试间隔> detection-mode <检测模式> //可选 bfd检测参数
<最小发送间隔>:设置BFD报文发送的最小时间间隔。
<最大重试间隔>:设置BFD报文在未收到对端响应时的最大重试时间间隔。
<检测模式>:设置BFD的检测模式,如单跳检测、多跳检测等。
commit //保存
静态路由与bfd联动配置
实验要求:
在R1上配置到达R4的Loopback0: 4.4.4.4/32网段的浮动静态路由,正常情况下通过R2访问R4,当R2故障时,自动选路通过R3访问R4的Loopback0;
在R1与R2之间建立BFD会话,并与静态路由绑定,实现故障快速检测和路径快速收敛
R1
根据上面的基本的配置可以做下面的指令
R2
做相同的指令,实现对端的建立
在R1上配置静态路由并绑定BFD会话
其中4.4.4.4/32 是r4 的回环接口
同样的基础的配置不再展示
最后看bfd 表
可以看出配置的城呈现如上
ospf与bfd联动配置
实验要求
▫R1、R2、R3运行OSPF协议,且都属于Area 0;
▫配置OSPF与BFD联动,通过设置所有OSPF接口的BFD会话参数进一步提高链路状态变化时OSPF的收敛速度;
▫将BFD会话的最大发送间隔和最大接受间隔都设置为100ms,检测次数默认不变。
R5
在配置过程中使用基本配置的可选内容,实现高速收敛
其他几个路由器如上图一样配置