BFD

稚 发布于 2024-08-26 36 次阅读


BFD会话建立方式

BFD会话的建立有两种方式,即静态建立BFD会话和动态建立BFD会话。静态和动态创建BFD会话的主要区别在于本地标识符(Local Discriminator)和远端标识符(Remote Discriminator)的配置方式不同。BFD通过控制报文中的Local Discriminator和Remote Discriminator区分不同的会话。

  • 静态建立BFD会话

    静态建立BFD会话是指通过命令行手工配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。

  • 动态建立BFD会话

    动态建立BFD会话时,系统对本地标识符和远端标识符的处理方式如下:

    • 动态分配本地标识符

    当应用程序触发动态创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向对端发送Remote Discriminator的值为0的BFD控制报文,进行会话协商。

    • 自学习远端标识符

    当BFD会话的一端收到Remote Discriminator的值为0的BFD控制报文时,判断该报文是否与本地BFD会话匹配,如果匹配,则学习接收到的BFD报文中Local Discriminator的值,获取远端标识符。

BFD会话管理

BFD会话有四种状态:Down、Init、Up和AdminDown。会话状态变化通过BFD报文的State字段传递

BFD检测IP链路

在IP链路上建立BFD会话,利用BFD检测机制快速检测故障。BFD检测IP链路支持单跳检测和多跳检测:

  • BFD单跳检测是指对两个直连系统进行IP连通性检测,“单跳”是IP链路的一跳。

  • BFD多跳检测是指BFD可以检测两个系统间的任意路径,这些路径可能跨越很多跳,也可能在某些部分发生重叠。

调整BFD检测时间

  • 本地BFD报文实际发送时间间隔=MAX { 本地配置的发送时间间隔_transmit-interval,对端配置的接收时间间隔_receive-interval }
  • 本地BFD报文实际接收时间间隔=MAX { 对端配置的发送时间间隔_transmit-interval,本地配置的接收时间间隔_receive-interval }
  • 本地BFD报文实际检测时间=本地实际接收时间间隔×对端配置的BFD检测倍数_multiplier-value_
执行命令system-view,进入系统视图。
执行命令bfd session-name,进入BFD会话视图。 两端都需要配置
执行命令min-tx-interval interval,配置BFD报文的发送间隔。
缺省情况下,BFD报文的发送间隔是1000毫秒。

执行命令min-rx-interval interval,配置BFD报文的接收间隔。
缺省情况下,BFD报文的接收间隔是1000毫秒。
执行命令detect-multiplier multiplier,配置本地检测倍数。
缺省情况下,本地检测倍数为3。

联动

静态BFD检测路由

[Huawei] bfd session-name bind peer-ip ip-address [ vpn-instance vpn-name ] interface interface-type interface-number [ source-ip ip-address ] auto one-arm-echo 
缺省情况下,未创建BFD会话。在第一次创建单跳BFD会话时,必须绑定对端IP地址和本端相应接口,且创建后不可修改。如果需要修改,则只能删除后重新创建。 auto表明自协商   one-arm-echo 表示单臂回声
[Huawei-bfd-session-test] discriminator local discr-value 配置本地标识符
[Huawei-bfd-session-test] discriminator remote discr-value配置远端标识符
[Huawei] ip route-static 4.4.4.4 32 10.0.12.2 track bfd-session 12

OSPF与BFD

1. 执行命令system-view,进入系统视图。
2. 执行命令bfd,配置全局BFD功能并进入到全局BFD视图。
3. ospf视图执行命令bfd all-interfaces enable,打开OSPF BFD特性的开关,建立BFD会话
如果需要配置BFD参数执行bfd all-interfaces { min-rx-interval receive-interval | min-tx-interval transmit-interval | detect-multiplier multiplier-value | frr-binding } 命令,指定需要建立BFD会话的各个参数值。

如果只是配置了BFD参数的命令,而没有执行bfd all-interfaces enable命令,则BFD特性不会使能。

如果在OSPF进程中执行bfd all-interfaces enable命令后,该进程下所有使能OSPF且邻居状态为Full的邻居都将创建BFD会话。
可执行命令ospf bfd block,阻止接口动态创建BFD会话。

也可在接口下ospf bfd enable然后在接口下配置BFD

ISIS与BFD联动

静态

执行命令system-view,进入系统视图。
执行命令bfd,使能全局BFD能力。
执行命令quit,返回系统视图。
执行命令bfd cfg-name bind peer-ip ip-address [ interface interface-type interface-number ],创建BFD绑定。
指定了对端IP和本端接口,表示检测单跳链路,即检测以该接口为出接口、以peer-ip为下一跳地址的一条固定路由。

配置标识符:
执行命令discriminator local discr-value,配置本地标识符。
执行命令discriminator remote discr-value,配置远端标识符。

执行命令quit,返回系统视图。
执行命令interface interface-type interface-number,进入指定接口的接口视图。
执行命令isis bfd static,使能接口静态BFD特性。

动态

1. 执行命令system-view,进入系统视图。

2. 执行命令bfd,使能全局BFD能力。

3. 执行命令quit,返回系统视图。

4. 执行命令isis process-id,进入IS-IS视图。

5. 执行命令bfd all-interfaces enable,打开IS-IS进程BFD特性的开关,建立BFD会话。

配置此命令会为所有IS-IS接口使用缺省的BFD参数值建立BFD会话。

6. (可选)执行命令bfd all-interfaces { min-rx-interval receive-interval | min-tx-interval transmit-interval | detect-multiplier multiplier-value | frr-binding } *,配置BFD参数,指定用于建立BFD会话的各个参数值。

7. (可选)在接口视图下执行命令isis bfd block,阻止接口动态创建BFD会话。

缺省情况下,不阻止IS-IS接口动态创建BFD会话。

也可在接口下配置执行命令isis bfd enable来启用bfd