定义:

双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状况。

BFD:原理简介

BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。BFD本身并没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话。会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。下面以OSPF与BFD联动为例,简单介绍会话工作流程。

图1 BFD会话建立流程图:

上图所示是一个简单的网络组网,两台设备上同时配置了OSPF与BFD,BFD会话建立过程如下所示:

  1. OSPF通过自己的Hello机制发现邻居并建立连接。

  2. OSPF在建立了新的邻居关系后,将邻居信息(包括目的地址和源地址等)通告给BFD。

  3. BFD根据收到的邻居信息建立会话。

会话建立以后,BFD开始检测链路故障,并做出快速反应。

图2 BFD故障发现处理流程图:

如上图所示:

  1. 被检测链路出现故障。

  2. BFD快速检测到链路故障,BFD会话状态变为Down。

  3. BFD通知本地OSPF进程BFD邻居不可达。

  4. 本地OSPF进程中断OSPF邻居关系。

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会话建立为例,简单介绍状态机的迁移过程。

图3 BFD会话建立流程图:

  1. RouterA和RouterB各自启动BFD状态机,初始状态为Down,发送状态为Down的BFD报文。对于静态配置BFD会话,报文中的Remote Discriminator的值是用户指定的;对于动态创建BFD会话,Remote Discriminator的值是0。

  2. RouterB收到状态为Down的BFD报文后,状态切换至Init,并发送状态为Init的BFD报文。

  3. RouterB本地BFD状态为Init后,不再处理接收到的状态为Down的报文。

  4. RouterA的BFD状态变化同RouterB。

  5. RouterB收到状态为Init的BFD报文后,本地状态切换至Up。

  6. RouterA的BFD状态变化同RouterB。

BFD缺省配置:

表1 BFD参数缺省值

参数

缺省值

全局BFD功能

未使能

发送间隔

1000毫秒

接收间隔

1000毫秒

本地检测倍数

3

等待恢复时间

0秒钟

会话延迟Up时间

0秒钟

BFD报文优先级

7

配置单臂回声功能示例:

组网需求

如图1所示,RouterA和RouterB通过直连链路连通,RouterA支持BFD功能,RouterB不支持BFD功能。用户希望实现对链路故障的快速检测。

图1 配置单臂回声功能组网图:

配置思路

采用如下思路配置链路单跳检测:

  • 在RouterA上配置单臂回声功能BFD会话,检测RouterA到RouterB的直连链路。

操作步骤

  1. 配置RouterA和RouterB的直连接口IP地址

    # 配置RouterA的接口IP地址。

    <Huawei> system-view
    [Huawei] sysname RouterA
    [RouterA] interface gigabitethernet 1/0/0
    [RouterA-GigabitEthernet1/0/0] ip address 10.1.1.1 24
    [RouterA-GigabitEthernet1/0/0] quit

    # 配置RouterB的接口IP地址。

    <Huawei> system-view
    [Huawei] sysname RouterB
    [RouterB] interface gigabitethernet 1/0/0
    [RouterB-GigabitEthernet1/0/0] ip address 10.1.1.2 24
    [RouterB-GigabitEthernet1/0/0] quit
  2. 配置单臂ECHO功能的BFD会话

    # 配置RouerA。

    [RouterA] bfd
    [RouterA-bfd] quit
    [RouterA] bfd atob bind peer-ip 10.1.1.2 interface gigabitEthernet1/0/0 one-arm-echo
    [RouterA-bfd-session-atob] discriminator local 1
    [RouterA-bfd-session-atob] min-echo-rx-interval 100
    [RouterA-bfd-session-atob] commit
    [RouterA-bfd-session-atob] quit
    
  3. 验证配置结果

    # 配置完成后,在RouterA上执行display bfd session all verbose命令,可以看到建立了一个单跳(one hop)的BFD会话,且状态为Up。

    <RouterA> display bfd session all verbose
    --------------------------------------------------------------------------------
    Session MIndex : 256       (One Hop) State : Up        Name : atob
    --------------------------------------------------------------------------------Local Discriminator    : 1                Remote Discriminator   : -Session Detect Mode    : Asynchronous One-arm-echo ModeBFD Bind Type          : Interface(GigabitEthernet1/0/0)Bind Session Type      : StaticBind Peer IP Address   : 10.1.1.2NextHop Ip Address     : 10.1.1.2Bind Interface         : GigabitEthernet1/0/0FSM Board Id           : 0                TOS-EXP                : 7Echo Rx Interval (ms)  : 100Actual Tx Interval (ms): 1000             Actual Rx Interval (ms): 1000Local Detect Multi     : 3                Detect Interval (ms)   : 3000Echo Passive           : Disable          Acl Number             : -Destination Port       : 3784             TTL                    : 255Proc Interface Status  : Disable          Process PST            : DisableWTR Interval (ms)      : -                Active Multi           : 3                Echo Rx Interval(ms)   : 10Last Local Diagnostic  : No DiagnosticBind Application       : No Application BindSession TX TmrID       : 87               Session Detect TmrID   : 88Session Init TmrID     : -                Session WTR TmrID      : -Session Echo Tx TmrID  : -PDT Index              : FSM-0 | RCV-0 | IF-0 | TOKEN-0Session Description    : -
    --------------------------------------------------------------------------------Total UP/DOWN Session Number : 1/0   

常见配置错误举例:

BFD会话无法UP:

常见原因

本故障的常见原因主要包括:

  • BFD会话检测的链路存在故障,导致BFD报文无法进行交互。

  • BFD会话频繁震荡。

操作步骤

  1. 执行display current-configuration configuration bfd命令查看BFD会话两端的本地标识符和远端标识符是否匹配。

    • 如果会话两端的discriminator local字段和discriminator remote字段匹配,则转到步骤2。

    • 如果会话两端的discriminator local字段和discriminator remote字段不匹配,则使用discriminator命令配置BFD会话的本地标识符和远端标识符,然后使用display bfd session all命令查看BFD会话是否Up。
      • 如果State字段的值为Up,则表明BFD会话已经建立。

      • 如果State字段的值为非Up,则请转到步骤2。

  2. 使用display current-configuration configuration bfd命令,查看BFD会话的min-tx-intervalmin-rx-interval信息,检查BFD会话的检测时间是否大于链路的延迟时间。

    检测时间 = 接收到的远端Detect Multi × max(本地的RMRI,接收到的DMTI),其中,Detect Mult(Detect time multiplier)是检测倍数,通过detect-multiplier命令配置;RMRI(Required Min Rx Interval)是本端能够支持的最短BFD报文接收间隔,通过min-rx-interval命令配置;DMTI(Desired Min Tx Interval)是本端想要采用的最短BFD报文的发送间隔,通过min-tx-interval命令配置。

    链路的延迟时间是指链路的时延,可通过ping或者tracert的方式获取链路的时延。

    如果BFD会话的检测时间小于链路的延迟时间,则在BFD会话视图下执行detect-multiplier命令、min-rx-interval命令和min-tx-interval命令调整BFD会话的检测时间,使之大于链路的延迟时间。

BFD会话检测Down影响接口转发:

常见原因

本故障常见的原因主要为配置了BFD会话与接口联动功能。

操作步骤

  1. 执行display interface interface-type interface-number命令查看BFD会话绑定的接口的状态。

    • 如果Line protocol current state字段的值为UP,表明当前接口的状态受BFD会话的影响,BFD会话检测到链路故障后,会将此接口的状态置为BFD status down,则转到步骤2。

    • 如果Line protocol current state字段的值为UP,但是接口不可转发,排除转发模块的故障。

  2. 执行display bfd session all命令,查看BFD会话的状态。

    如果BFD会话的状态为Down,则转到步骤3。

  3. 执行display current-configuration configuration bfd-session查看BFD会话的配置信息,检查是否配置了process-interface-status命令。

    如果配置了process-interface-status命令,表明此接口的状态是因为BFD会话检测Down,接口被置为DOWN(BFD status down)状态,导致接口不可转发。

修改BFD检测参数不生效:

常见原因

本类故障原因主要为修改BFD会话后,没有提交会话的配置信息。

说明:

请保存以下步骤的执行结果,以便在故障无法解决时快速收集和反馈信息。

操作步骤

  1. 执行display current-configuration configuration bfd-session查看BFD会话的配置信息,检查是否配置了commit命令。

    • 如果配置了commit命令,表明修改BFD会话的检测参数后已经提交。

    • 如果没有配置commit命令,表明修改BFD会话的检测参数后未提交,用户需要执行commit命令提交配置。

BFD:Bidirectional Forwarding Detection 双向转发检测相关推荐

  1. 关于BFD(双向转发检测)开发的总结

    前一阵子因为业务需要,需要设备提供高可靠性(HA),      高可靠性指的是设备出故障的时候能够不影响业务的运行,我们部门产品的高可靠性的实现方案是双机备份,就是一台机器出故障的时候另一台设备能够接 ...

  2. Cisco BFD双向转发检测技术部署案例

    Technorati 标签: Cisco,BFD,SLA Cisco BFD是一种双向转发检测机制,可以提供毫秒级的检测,可以实现链路的快速检测,BFD通过与上层路由协议联动,可以实现路由的快速收敛, ...

  3. 华为设备BFD实战,双向转发检测BFD详解,理论+实战+抓包分析

    一.BFD 双向转发检测BFD(Bidirectional Forwarding Detection)是一种全网统一的检测机制,用于快速检测.监控网络中链路或者IP路由的转发连通状况.[毫秒级] 二. ...

  4. SBFD(Seamless Bidirectional Forwarding Detection)

    SBFD简介:更适合SR隧道 BFD进行大量链路检测时,其状态机的协商时间会变长,不适合Segement Routing. SBFD(Seamless Bidirectional Forwarding ...

  5. BFD (双向转发检测) 协议简介与开发

    之前开发的BFD协议,正好有空介绍一下协议基础内容以及开发时候的注意事项.内容分为如下 1. BFD背景简介 2. BFD特点 3. BFD报文格式 4. BFD 状态机处理 5. 开发注意事项 一. ...

  6. BFD(双向转发检测)

    BFD:用于快速检测,监控网络中的通信故障. 默认报文发送间隔(200ms~1000ms,默认400ms) 1.原理简介: BFD在两台网络设备建立会话,用来检测网络设备间的双向转发路程,为上层应用服 ...

  7. CVPR2019文章解读 Pyramid Feature Attention Network for Saliency detection 用于显著性检测的金字塔特征注意网络

    Pyramid Feature Attention Network for Saliency detection 摘要 显著性检测是计算机视觉领域的基本挑战之一,怎么有效去提取特征非常关键,目前的一些 ...

  8. CVPR2020论文解读:3D Object Detection三维目标检测

    CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...

  9. Vue Angular 双向绑定检测不到对象属性的添加和删除

    由于ES5的限制 Vue  && Angular 双向绑定检测不到对象属性的添加和删除  还有数组增加索引.这些改变不会触发change事件.Vue是因为实例化的时候已经把各个属性都s ...

  10. YOLO_ Real-Time Object Detection 实时目标检测

    YOLO: Real-Time Object Detection 实时目标检测 You only look once(YOLO)是一种先进的实时目标检测系统.在Pascal Titan X上,它以每秒 ...

最新文章

  1. Blend for Visual Studio 2013
  2. 管与c++中容量的重新分配问题
  3. 那天有个小孩跟我说LINQ(五)转载
  4. java 单引号的字符串类型_Java程序以字符串形式显示双引号和单引号
  5. centos非root用户创建用户_CentOS中用户和用户组管理
  6. keras 多层lstm_《Keras 实现 LSTM》笔记
  7. Django使用mysql连接池_Django db使用MySQL连接池
  8. 循环数组中找查找某个数值
  9. Discuz!NT 模板机制分析
  10. Ubuntu开启root账户ssh远程登录
  11. 【赛尔原创】如何自动地向知识图谱中添加属性?
  12. Google Home其实是个错误
  13. 【MySQL入门】(一)安装与配置MySQL
  14. C#获取汉字的区位码的方法
  15. python(模块)xlsxwriter
  16. darts.h注释 - 滴水穿石 - 歪酷博客 Ycool Blog
  17. [从头读历史] 第249节 易经
  18. 从零开发短视频电商 隐藏业务ID以及缩短业务链接
  19. 小陈学JS return语句+break,continue,return的区别
  20. 知名站长工具服务商:爱站网突然关站

热门文章

  1. 计算机管理主分区改成逻辑分区,Win7将主分区变为逻辑分区的方法
  2. 单纤双向BIDI光模块常识
  3. 这有几个常见的电脑故障解决方法,需要的朋友快来
  4. linux报错Error: /proc must be mounted
  5. win10网络适配器不见了_win10设备管理器里没有网络适配器的原因及处理方法
  6. 美国主要经济指标(2)
  7. dw自动滚动图片_Dreamweaver实现滚动图片文字
  8. qq 客服 php,QQ支持临时会话设置
  9. ST-LINKV2仿真器接线、配置、仿真方法
  10. android 拼音字母语音,拼音发音点读app