bfd


bidirectional forwarding detect(BFD)可以在转发面实现快速、低overhead流量的path故障检测。

可检测的path非常广泛,可以是interface层面、链路层、网络层、转发引擎、虚拟电路、隧道等。如果需要,BFD也支持检测控制面的故障。


BFD有两种模式:异步模式和demand模式。

异步模式是BFD最常用的工作模式,这种模式下检测path两端的设备周期性的互发BFD control packet,如果detect time内没有接收到对端的BFD control packet,表示path出现了连通性故障。两端互发的BFD control报文的间隔是独立协商和确定的。


demand模式只有在需要的时候才发送BFD control packet,检测path故障,这样可以降低overhead流量。demand模式可以是单向的,也就是说BFD session双方可以一端是demand,另一端不是。


BFD还有echo工作方式,在异步模式和demand模式下都可以使能echo模式。也可以一端使能echo,另一端不使能。接收到echo BFD的一端会把报文内容返回回去。

echo报文是UDP报文,端口号为3875,目的ip地址是发送接口的ip地址,源ip地址只要不引起icmp重定向就可以。

BFD control packet format

    0                   1                   2                   3

    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |Vers |  Diag   |Sta|P|F|C|A|D|M|  Detect Mult  |    Length     |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |                       My Discriminator                        |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |                      Your Discriminator                       |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |                    Desired Min TX Interval                    |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |                   Required Min RX Interval                    |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |                 Required Min Echo RX Interval                 |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

 

   An optional Authentication Section MAY be present:

 

    0                   1                   2                   3

    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   |   Auth Type   |   Auth Len    |    Authentication Data...     |

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Diag   

通知远端设备本地设备BFD状态机变化的原因,编码如下:

         0 -- No Diagnostic

         1 -- Control Detection Time Expired

         2 -- Echo Function Failed

         3 -- Neighbor Signaled Session Down

         4 -- Forwarding Plane Reset

         5 -- Path Down

         6 -- Concatenated Path Down

         7 -- Administratively Down

         8 -- Reverse Concatenated Path Down

      9-31 -- Reserved for future use

Sta

通知远端设备本地设备BFD状态机的当前状态

P(poll)

用于协商BFD control报文的发送时间间隔和故障检测时间。远端设备接收到本地设备发送的poll=1的报文,会回应F=1的BFD control报文。本地设备接收到F报文后才会更高发送和检查时间间隔参数

F(final)

用于协商BFD control报文的发送时间间隔和故障检测时间。对poll BFD报文的响应

C

表示本BFD session与控制面无关

A

表示使能authentication功能,需要对报文进行验证。

D

通知远端设备本地设备的工作模式为demand模式,远端不需要或停止发BFD报文给本地设备

M(mutli-point)

表示point-to-multipoint检测模式,当前只支持检测point-to-point的path故障,固定填0

Detect Mult

通知远端设备进行故障检测时detect time=Detect Mult * 本地设备报文发送间隔。该值不能为0,否则丢弃报文。

Length     

BFD报文长度

My Discriminator

发送设备的session 区分符。接收设备会把这个值放在Your Discriminator域返回给发送设备,发送设备根据My Discriminator确定对应的BFD session

Your Discriminator 

解释见My Discriminator,由远端设备返回给本地设备。

Desired Min TX Interval 

通知远端设备本地设备希望自己发送BFD报文的最小间隔

Required Min RX Interval

通知远端设备本地设备希望远端设备发送BFD报文时的最小间隔

Required Min Echo RX Interval

通知远端设备本地设备希望远端设备发送BFD echo报文时的最小间隔


BFD状态机



上面状态机的转移条件down、init、up是指接收到的BFD control报文中的sta,也就是远端设备当前的状态


BFD报文发送间隔= min(本地设备Desired Min TX Interval,最近接收到的BFD报文的Required Min RX Interval)

detect time= 最近接收到的BFD报文的Detect Mult X max(本地设备Required Min RX Interval,最近接收到的BFD报文的Desired Min TX Interval)

BFD echo报文发送间隔=最近接收到的BFD报文的Required Min Echo RX Interval

如果要改变时间间隔,需要通过P和F报文交互完,经确认后才能修改


BFD(Bidirectional Forwarding Detection,双向转发检测)是一种快速链路故障检测机制,被广泛应用于网络设备中以提升网络的可靠性和收敛速度。在华三(H3C)设备上,BFD常与路由协议联动使用,例如BGP、OSPF等,用于快速检测链路或节点故障,并触发相应的协议响应。 ### BFD在华三(H3C)设备中的典型应用场景 1. **BFD与BGP联动** 在跨AS(自治系统)通信场景中,BGP通常用于交换路由信息。然而,BGP自身的会话检测机制存在较长的收敛时间,无法满足高可用性需求。通过将BFD与BGP联动,可以显著缩短故障感知时间。例如,在引用[1]中提到的案例中,Device B和Device D之间运行BGP协议,并通过BFD控制报文方式检测主链路状态[^1]。当链路出现故障时,BFD能够在毫秒级别内感知并通知BGP,从而触发路由切换,确保业务连续性。 2. **BFD用于IRF环境下的链路聚合检测** 在H3C的IRF(Intelligent Resilient Framework)架构中,多个物理设备虚拟化为一台逻辑设备,提升了系统的冗余性和管理效率。在这种环境下,BFD可用于检测链路聚合组(LAG)的状态。如引用[2]所述,在配置BFD检测时,仅需选择两个未使用的端口作为BFD检测端口[^2]。由于IRF已将多台设备合并为一台逻辑设备,因此可在任意成员设备上进行配置,但建议在slave设备上操作以避免冲突。 3. **BFD与IRF配置结合的应用示例** H3C 7560X系列交换机支持IRF与BFD联合部署。通过IRF技术,可将多台设备堆叠为一个逻辑实体,而BFD则用于检测IRF链路的连通性。在引用[3]中提供了基础的IRF配置命令,包括设置成员优先级、转换模式以及配置IRF端口组[^3]。在此基础上,BFD可用于监控IRF链路状态,一旦检测到故障即可触发堆叠拓扑调整,提升网络稳定性。 ### 配置BFD的基本步骤(以H3C设备为例) - **进入系统视图** ```bash system-view ``` - **创建BFD会话** ```bash bfd session-name bind peer-ip <peer-ip> source-ip <source-ip> ``` - **设置BFD参数** ```bash discriminator local <local-id> discriminator remote <remote-id> min-tx-interval <interval> min-rx-interval <interval> detect-multiplier <multiplier> ``` - **启用BFD会话** ```bash commit ``` - **与BGP联动(可选)** ```bash bgp <as-number> peer <ip-address> bfd enable ``` ### 注意事项 - BFD应配置在稳定且未被其他功能占用的接口上。 - 确保两端设备均支持BFD并正确配置了对端IP地址和源IP地址。 - 在IRF环境中,BFD检测端口应选择未参与数据转发的空闲端口。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值