BFD

随着网络应用的广泛部署,网络发生故障极大可能导致业务异常。为了减小链路、设备故障对业务的影响,提高网络的可靠性,网络设备需要尽快检测到与相邻设备间的通信故障,以便及时采取措施,保证业务正常进行。

BFD(Bidirectional Forwarding Detection,双向转发检测)提供了一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于快速检测、监控网络中链路或者IP路由的转发连通状态。

网络故障检测遇到的问题

在无法通过硬件信号检测故障的系统中,应用通常采用上层协议本身的Hello报文机制检测网络故障。

常用路由协议的Hello报文机制检测时间较长,检测时间超过1秒钟。当应用在网络中传输的数据超过GB/s时,秒级的检测时间将会导致应用传输的数据大量丢失。

在三层网络中,静态路由本身没有故障检查机制。

BFD概述

BFD提供了一个通用的、标准化的、介质无关的、协议无关的快速故障检测机制,有以下两大优点:

对相邻转发引擎之间的通道提供轻负荷、快速故障检测。

用单一的机制对任何介质、任何协议层进行实时检测。

BFD是一个简单的“Hello”协议。两个系统之间建立BFD会话通道,并周期性发送BFD检测报文,如果某个系统在规定的时间内没有收到对端的检测报文,则认为该通道的某个部分发生了故障。

由于同一个数据路径上只建立一个BFD会话,如果不同的应用使用的BFD参数不一致,则应该配置一个能满足所有应用要求的BFD参数。

BFD报文结构

BFD检测是通过维护在两个系统之间建立的BFD会话来实现的,系统通过发送BFD报文建立会话。

BFD控制报文根据场景不同封装不同,报文结构由强制部分和可选的认证字段组成。

Ver:BFD协议版本号,目前为1。

Diag:诊断字,标明本地BFD系统最近一次会话状态发生变化的原因。

P:参数发生改变时,发送方在BFD报文中置该标志,接收方必须立即响应该报文。

F:响应P标志置位的回应报文中必须将F标志置位。

C:转发/控制分离标志,一旦置位,控制平面的变化不影响BFD检测。

A:认证标识,置1代表会话需要进行验证。

D:查询请求,置位代表发送方期望采用查询模式对链路进行监测。

M:为BFD将来支持点对多点扩展而设的预留位。

Length:报文长度,单位为字节。

BFD会话建立

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

动态建立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报文驱动状态改变,如左下图所示。BFD状态机的建立和拆除都采用三次握手机制,如右下图所示,以确保两端系统都能知道状态的变化。

BFD会话过程中包含有三个状态:init和up两个用来建立会话,down用来断开会话。建立和断开会话都需要三次握手确保两端系统都感知到。另外还有一个特殊状态:管理down,使会话可以通过管理手段down,在状态机中管理down也是down状态。每个系统通过报文中的sta域发送本端状态,接收报文中的sta域了解对端状态,综合起来决定状态机的跳转。

Down状态说明会话down。一个会话会维持在down状态直到收到对端的报文并且该报文的sta字段标志着对端状态不是up。如果收到的是down包,状态机将从down状态跳转到init状态,如果收到的是init包,状态机将从down状态跳转到up状态,如果收到的是up包,状态机维持down状态。

Init状态说明与远端正在通信,并且本地会话期望进入up状态,但是远端还没回应。一个init状态的会话会维持init状态直到收到对端的init包或者up包,就会跳转到up状态,否则等到检测时间超时以后,便会跳转到down状态,意味着与远端的通信丢失。

Up状态说明BFD会话成功建立,并且正在确认链路的联通性,会话会一直保持在up状态直到链路故障或者管理down操作。如果收到远端的down包或者检测时间超时会话就会从up状态跳转到down状态。

管理down意味着会话是被管理操作down的,这会导致远端系统会话进入down状态,并且一直保持down状态直到本端退出管理down。管理down并不意味着转发路径的连通性问题。

BFD会话迁移过程:

R1和R2各自启动BFD状态机,初始状态为Down,发送状态为Down的BFD报文。

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

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

R1的BFD状态变化同R2。

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

R1的BFD状态变化同R2。

BFD检测模式

BFD的检测机制:两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障。BFD的检测模式有异步模式和查询模式两种。

异步模式和查询模式的本质区别:检测的位置不同,异步模式下本端按一定的发送周期发送BFD控制报文,检测位置为远端,远端检测本端是否周期性发送BFD控制报文;查询模式下本端检测自身发送的BFD控制报文是否得到了回应。

BFD检测时间

BFD会话检测时长由TX(Desired Min TX Interval),RX(Required Min RX Interval),DM(Detect Multi)三个参数决定。BFD报文的实际发送时间间隔,实际接受时间间隔由BFD会话协商决定。

  • 本地BFD报文实际发送时间间隔=MAX { 本地配置的发送时间间隔,对端配置的接收时间间隔 }
  • 本地BFD报文实际接收时间间隔=MAX { 对端配置的发送时间间隔,本地配置的接收时间间隔 }
  • 本地BFD报文实际检测时间:
    • 异步模式:本地BFD报文实际检测时间=本地BFD报文实际接收时间间隔×对端配置的BFD检测倍数
    • 查询模式:本地BFD报文实际检测时间 = 本地BFD报文实际接收时间间隔×本端配置的BFD检测倍数

BFD缺省时间参数

BFD报文发送间隔默认1000毫秒,接受间隔默认1000毫秒,本地检测倍数3次。

BFD会话等待恢复时间0秒,会话延迟Up时间0秒。

检测超时倍数,用于检测方计算检测超时时间。

查询模式:采用本地检测倍数。

异步模式:采用对端检测倍数。

BFD Echo功能

BFD Echo功能也称为BFD回声功能,是由本地发送BFD Echo报文,远端系统将报文环回的一种检测机制。

在两台直接相连的设备中,其中一台设备支持BFD功能(R1);另一台设备不支持BFD功能(R2),只支持基本的网络层转发。为了能够快速的检测这两台设备之间的故障,可以在支持BFD功能的设备上创建单臂回声功能的BFD会话。支持BFD功能的设备主动发起回声请求功能,不支持BFD功能的设备接收到该报文后直接将其环回,从而实现转发链路的连通性检测功能。

联动功能简介

监测模块负责对链路状态、网络性能等进行监测,并将探测结果通知给Track模块 。

Track模块收到监测模块的探测结果后,及时改变Track项的状态,并通知应用模块。

应用模块根据Track项的状态,进行相应的处理,从而实现联动。

静态路由与BFD联动

静态路由自身没有检测机制,如果静态路由存在冗余路径,通过静态路由与BFD联动,当主用路径故障时,实现静态路由的快速切换 。

静态路由与BFD联动应用广泛,如下图中R1是园区网的出口路由器,R1通过两条链路分别连接ISP1和ISP2,正常情况下默认路由经过的链路为指向ISP1的链路,当通往ISP1的链路出现故障的时候,BFD会话能够快速感知,并通知路由器将流量切换到指向ISP2的链路。

OSPFBFD联动

(1)

OSPF在未绑定BFD的情况下,链路故障检测时间由协议Hello机制决定,通常是秒级。通过绑定BFD,可以实现毫秒级故障检测。

BFD与OSPF联动就是将BFD和OSPF协议关联起来, BFD将链路故障的快速检测结果告知OSPF协议。

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

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

BFD根据收到的邻居信息建立会话,会话建立以后,BFD开始检测链路故障。

正常情况下,R1根据OSPF路径开销大小选择经过R2到达R4。

(2)

BFD会话建立后会周期性地快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。

当R1和R2之间链路出现故障,BFD首先快速检测到链路故障,BFD会话状态变为Down并通知R1。

R1处理邻居Down事件,通知本地OSPF进程邻居不可达,重新进行路由计算,选择通过R3到达R4。

BFD配置

开始pc1到pc2的最优路径是下一跳192.168.1.2

当R2到LSW1的链路故障,R2会切换路径,但是R1检测不到R2到LSW1的链路故障,于是不会切换路径走192.168.2.2。(除非R1和R2直连),配置BFD可以解决这个问题。

故障前

故障后

配置

必须绑定对端IP地址和本端相应接口

R1

sys
bfd
ip route-sta 192.168.4.10 24 192.168.1.2
ip route-sta 192.168.4.10 24 192.168.2.2 prefer 70
int gi 0/0/0
ip ad 192.168.1.1 24
int gi 0/0/1
ip add 192.168.2.1 24
int gi0/0/2
ip add 192.168.3.1 24
bfd 1 bind peer-ip 192.168.1.2 interface GigabitEthernet 0/0/0
discr loc 10
discr rem 20
commit
ip route-sta 192.168.4.10 24 192.168.1.2 track bfd-session 1

R2

sys
bfd
ip route-sta 192.168.3.10 24 192.168.1.1
ip route-sta 192.168.3.10 24 192.168.2.1 prefer 70
int gi 0/0/0
ip ad 192.168.1.2 24
int gi 0/0/1
ip add 192.168.2.2 24
int gi 0/0/2
ip add 192.168.4.1 24
bfd 1 bind peer-ip 192.168.1.1 interface GigabitEthernet 0/0/0
discr loc 20
discr rem 10
commit
ip route-sta 192.168.3.10 24 192.168.1.1 track bfd-session 1

BFD  ospf 联动

华为数通笔记-BFD相关推荐

  1. 华为数通笔记-ISIS高级特性

    ISIS收敛步骤 IGP的收敛可以总体描述为如下状态D+O+F+SPT+RIB+DD RIB状态和DD状态一般与路由器的硬件有关,如主CPU.线卡CPU.内存.网络处理器有关,这两个状态人为无法对收敛 ...

  2. 华为数通笔记-文件传输协议FTP

    文件传输协议 主机之间传输文件是IP网络的一个重要功能,如今人们可以方便地使用网页.邮箱进行文件传输. 然而在互联网早期,Web(World Wide Web,万维网)还未出现,操作系统使用命令行的时 ...

  3. 华为数通笔记-Smart Link和Monitor Link

    Smart Link和Monitor Link简介 定义 Smart Link,又叫做备份链路.一个Smart Link由两个接口组成,其中一个接口作为另一个的备份.Smart Link常用于双上行组 ...

  4. 华为数通笔记-ospf扩展

    Router ID 1.在R1上先配置环回口1.1.1.1 ,在R2先配置接口地址,在建立邻居时,可以发现R1的Router ID为1.1.1.1,R2的Router ID为192.168.1.2. ...

  5. 华为数通笔记-网络参考模型及数据通信过程

    OSI参考模型 7. 应用层 对应用程序提供接口. 6. 表示层 进行数据格式的转换,以确保一个系统生成的应用层数据能够被另外一个系统的应用层所识别和理解. 5. 会话层 在通信双方之间建立.管理和终 ...

  6. 华为数通笔记-VRRP

    VRRP 局域网中的用户终端通常采用配置一个默认网关的形式访问外部网络,如果默认网关设备发生故障,那么所有用户终端访问外部网络的流量将会中断.可以通过部署多个网关的方式来解决单点故障,但是需要解决多个 ...

  7. 华为数通笔记-OSPF基础

    OSPF简介 定义 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol ...

  8. 华为数通笔记-PPP

    PPP简介 通常,同步传输是以数据块为传输单位.每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,以固定时钟节拍发送数据信号. 通常,异步传输是以字符为传输单位,每个 ...

  9. 华为数通笔记-MPLS BGP跨域

    简介 一般MPLS VPN体系结构都是在一个自治系统内运行,任何VPN信息只是在一个AS内按需扩散.因此为了支持不同运营商之间的VPN路由交换,就需要扩展现有的协议和修改体系框架,提供一个不同与基本的 ...

最新文章

  1. 厉害了!写代码、搜问题,全部都在「终端」完成!如此编程神器,是时候入手了...
  2. python递归题目_Python递归的问题?
  3. 波段 ku_X和Ku波段小尺寸无线电设计
  4. [轉]子窗口和父窗口的函数或对象能否相互访问
  5. HDU 6113 度度熊的01世界【DFS/Flood Fill】
  6. (85)Vivado 多周期路径约束情况
  7. VGGNet论文翻译-Very Deep Convolutional Networks for Large-Scale Image Recognition
  8. 梅西、内马尔谁是全能的五边形战士?教你用BI做出可视化能力图
  9. python免费网课-Python网课推荐——免费学习Python编程
  10. centos中多台主机免密登录_mac ssh 免用户名密码远程登录 linux 方法
  11. 大数据MongoDB之NoSQL的CAP定理和BASE原则是什么?
  12. c语言必背的100代码
  13. 微信投票作弊神器的制作代码
  14. 58、JAVA Collections集合排序相关静态方法---方法1
  15. 奈式准则和香农定理(附例题)
  16. Windows经典小游戏--扫雷精装版
  17. PHP根据生日计算年龄(周岁)
  18. map-box地图点击图标高亮事件
  19. php图床_PHP利用百度当图床
  20. HI3559算法移植之OpenCV图像拼接、配准和图像融合技术(四)

热门文章

  1. Oracle 表创建和表管理
  2. php 抓取百度收录数,PHP简单获取网站百度和搜狗收录量的方法
  3. 给图像增加一种噪声,构造并利用至少两种高通滤波器实现频率域的滤波
  4. windows VXN(梯子)应用,域名等分流开发笔记
  5. p2p 文件服务器集群,基于云计算P2P流媒体服务器集群部署算法.doc
  6. 必备武器-skycc营销软件
  7. 白话kali linux上可以安装什么小游戏(好奇版)
  8. 我对计算机专业的看法及对未来的计划
  9. ArcGIS在城市规划中的应用
  10. 如何选择适合你的兴趣爱好(三十三),国画