一、定义
双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。
二、原理
BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。
三、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的检测机制是两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障。
BFD提供异步检测模式。在这种模式下,系统之间相互周期性地发送BFD控制报文,如果某个系统连续几个报文都没有接收到,就认为此BFD会话的状态是Down。
五、BFD会话管理
BFD会话有四种状态:Down、Init、Up和AdminDown。会话状态变化通过BFD报文的State字段传递,系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变。BFD状态机的建立和拆除都采用三次握手机制,以确保两端系统都能知道状态的变化。以BFD会话建立为例,简单介绍状态机的迁移过程。
六、VLANIF接口的BFD单跳检测
<Huawei>sys
[Huawei]undo info en
[Huawei]SYSNAME LSW1
[LSW1]bfd
[LSW1-bfd]quit
[LSW1]vlan 100
[LSW1-vlan100]int vlan 100
[LSW1-Vlanif100]ip add 10.1.1.5 24
[LSW1]bfd atob bind peer-ip 10.1.1.6 interface vlan 100 绑定邻居IP的 出接口
[LSW1-bfd-session-atob]discriminator local 1 本地会话
[LSW1-bfd-session-atob]discriminator remote 2 对端会话
[LSW1-bfd-session-atob]commit
[LSW1-bfd-session-atob]int g0/0/1
[LSW1-GigabitEthernet0/0/1]po hy pv vlan 100
[LSW1-GigabitEthernet0/0/1]port hybrid untagged vlan 100
[LSW1-GigabitEthernet0/0/1]quit
<Huawei>sys
[Huawei]undo info en
[Huawei]sysname LSW2
[LSW2]vlan 100
[LSW2-vlan100]int vlan 100
[LSW2-Vlanif100]ip add 10.1.1.6 24
[LSW2-Vlanif100]quit
[LSW2]bfd
[LSW2-bfd]quit
[[LSW2]bfd btoa bind peer-ip 10.1.1.5 interface vlan 100
[LSW2-bfd-session-btoa]discriminator local 2
[LSW2-bfd-session-btoa]discriminator remote 1
[LSW2-bfd-session-btoa]commit
[LSW2-bfd-session-btoa]int g0/0/1
[LSW2-GigabitEthernet0/0/1]po hy pv vlan 100
[LSW2-GigabitEthernet0/0/1]po hy un vlan 100
链路正常时,执行display bfd session all verbose可以看到建立一条单跳检测的BFD会话,且状态为UP
当链路故障后,建立的BFD单跳检测会立刻变为DOWN
七、配置三层物理链路BFD检测
<Huawei>sys
[Huawei]undo info en
[Huawei]sysname AR1
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip add 10.1.1.1 24
[AR1-GigabitEthernet0/0/0]quit
[AR1]bfd 使能BFD功能
[AR1-bfd]quit
[AR1]bfd onetotow bind peer-ip 10.1.1.2 interface g0/0/0 会话绑定的邻居IP和接口
[AR1-bfd-session-onetotow]discriminator local 1 本地会话
[AR1-bfd-session-onetotow]discriminator remote 2 对端会话
[AR1-bfd-session-onetotow]commit 提交
<Huawei>sys
[Huawei]undo info en
[Huawei]sysname AR2
[AR2]int g0/0/0
[AR2-GigabitEthernet0/0/0]ip add 10.1.1.2 24
[AR2-GigabitEthernet0/0/0]quit
[AR2]bfd
[AR2-bfd]quit
[AR2]bfd towtoone bind peer-ip 10.1.1.1 interface g0/0/0
[AR2-bfd-session-towtoone]discriminator local 2
[AR2-bfd-session-towtoone]discriminator remote 1
[AR2-bfd-session-towtoone]commit
八、配置BFD多跳检测
<Huawei>sys
[Huawei]undo info en
[Huawei]sysname AR7
[AR7]int g0/0/0
[AR7-GigabitEthernet0/0/0]ip add 10.1.1.1 24
[AR7-GigabitEthernet0/0/0]quit
[AR7]ip route-static 0.0.0.0 0.0.0.0 10.1.1.2
[AR7]bfd
[AR7-bfd]quit
[AR7]bfd seventonithg bind peer-ip 10.2.1.2
[AR7-bfd-session-seventonithg]discriminator local 10
[AR7-bfd-session-seventonithg]discriminator remote 20
[AR7-bfd-session-seventonithg]commit
[AR7-bfd-session-seventonithg]quit
<Huawei>sys
[Huawei]undo info en
[Huawei]sysname AR8
[AR8]int g0/0/0
[AR8-GigabitEthernet0/0/0]ip add 10.1.1.2 24
[AR8-GigabitEthernet0/0/0]int g0/0/1
[AR8-GigabitEthernet0/0/1]ip add 10.2.1.1 24
[AR8-GigabitEthernet0/0/1]quit
<Huawei>sys
[Huawei]undo info en
[Huawei]sysname AR9
[AR9-GigabitEthernet0/0/1]ip add 10.2.1.2 24
[AR9-GigabitEthernet0/0/1]quit
[AR9]ip route-static 0.0.0.0 0.0.0.0 10.2.1.1
[AR9]bfd
[AR9-bfd]quit
[AR9]bfd nithgtoseven bind peer-ip 10.1.1.1
[AR9-bfd-session-nithgtoseven]discriminator local 20
[AR9-bfd-session-nithgtoseven]discriminator remote 10
[AR9-bfd-session-nithgtoseven]commit