Skip to content Skip to footer

「HUAWEI」BFD&NQA原理概述 - 张阳的博客!

思维导图总结

BFD技术原理

简述

BFD(Bidirectional Forwarding Detection,双向转发检测)是一个通用的、标准化的、介质无关和协议无关的快速故障检测机制,用于检测IP网络中链路的连通状况,保证设备之间能够快速检测到通信故障,以便能够及时采取措施,保证业务持续运行。

在现有网络中,通常采用以下几种方法检测链路故障:

硬件检测:通过硬件检测信号,如SDH告警,检测链路硬件故障。

Hello报文机制:如果无法通过硬件信号检测故障,通常采用路由协议的Hello报文机制。这种机制检测到故障所需时间比较长,超过1秒钟。当数据达到吉比特速率级时,这么长的检测时间将导致大量数据丢失。

在小型网络中,如果没有部署路由协议,就要用到其他检测机制。这对系统间互连互通定位故障造成困难。全网统一的检测机制BFD就是为解决上述问题产生的。

BFD可以为各种上层协议(如路由协议、MPLS、PIM等)快速检测两台设备间双向转发路径的故障。上层协议通常采用Hello报文机制检测故障,所需时间为秒级,而BFD可以提供毫秒级检测。

实际应用中,BFD可以用来进行单跳和多跳检测:

单跳检测:用于两个直连的路由器间进行IP连通性检测,这里的单跳,仅代表IP的一跳。(Ps Echo也仅限于单跳检测中)

多跳检测:用于两个非直连间的三层设备间,任意路径的链路情况(Ps 这里的路径可以跨域多跳)

BFD需要双方都支持BFD,且双方建立BFD会话,一台不支持BFD会话的情况,那么就是BFD Echo。

会话建立

BFD通过控制报文中的本地标识符(Local Discriminator)和远端标识符(Remote Discriminator)来区分一个系统中的多个BFD会话。

手工指定标识符的静态BFD会话

如果本段采用手工指定标识符,则对端也必须手工指定标识符。

标识符自协商的静态BFD会话

如果本端采用静态标签自协商,则对端既可以配置静态标识自协商,也可以配置成动态BFD。

协议触发的动态BFD会话

动态分配本端标识符和自学习远端标识符。

当本端即配置了静态标识符自协商,又配置了动态BFD时,按照如下规则处理:

如果二者共用同一个四元组(源目地址、出接口和VPN索引),将采用动态会话,共享对话的流程,将静态标识符自协商类型和动态会话公用。

如果先配置了动态BFD(此时动态BFD配置名称为XXX),然后再配置标识符自协商的静态BFD,将更新配置名称为静态BFD名称。

共用会话的参数采用共用会话的最小值。

BFD 报文格式

字段

长度

含义

01

3bits

版本号,目前为1

02

5bits

诊断码,标明本地BFD系统最近一次会话状态发生变化的原因,取值及含义看下方详解

03

2bits

本地状态,0 Admindown 1Down,2:Init 3:up

04

6bits

Message Flags,消息Flag位,取值及含义看下方详解。

05

8bits

检测超时倍数,默认为3 用于检测方计算检测超时时间。注:异步模式中采用对端检测倍数,查询模式为本段检测倍数

06

8bits

报文长度,该单位为字节

07

32bits

BFD会话连接本地标识符。发送系统产生的一个唯一的,非0的鉴别值,来区别一个系统的多个BFD会话。

08

32bits

BFD会话连接远端标识符。从远端系统接收到的鉴别值,该域值直接返回到My Discri。如果无法识别,则返回0。

09

32bits

本地支持的最小BFD报文发送间隔,单位:微秒

10

32bits

本地支持的最小BFD报文接收间隔,单位:微秒

11

32bits

本地支持的最小Echo报文接收间隔,单位:微秒(如果本地不支持Echo功能,则设置为0)

有关诊断码的详解

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

诊断字,标明本地BFD系统最近一次会话状态发生变化的原因,取值及含义: ; ; ; ; ; ; ; ;

1

2

3

4

5

6

7

Message Flags;

Poll:会话参数变化时置位(P置位)

Fin :如果收到的BFD P置位,则采用F位应答

Con :表明BFD实现是独立于控制平面的

Auth:认证,表明会话是否配置了认证

Demad:表明是否采用查询模式,默认或0 则为异步模式

Multipoint:为了支持MP-PPP的预留位

检测模式

异步模式和查询模式,查询模式已淘汰,故仅了解异步即可

异步模式(常用):

BFD的主要操作模式为异步模式。异步模式下,设备之间相互周期性发送BFD控制报文,如果某个设备连续几个报文都没有接收到BFD控制报文,则将BFD的回环状态置为Down。

BFD单臂回声Echo

BFD需要检测链路的两台设备上,均支持BFD功能,如果对端不支持BFD功能,那么可以通过单臂Echo,来达成链路检测的目的。支持BFD功能的设备主动发起Echo请求功能,不支持BFD功能的设备(即对端)接收到该报文后,直接将其环回,从而实现转发链路的连通性检测功能。

注:单臂回声只适用于单跳BFD会话中。

BFD与接口状态联动

当直连链路中间存在传输设备时,与接口本身的链路协议故障检测机制相比,BFD能够更快地检测到链路故障。另外对于Eth-Trunk或VLANIF等逻辑接口来说,链路协议状态是由其成员接口的链路协议状态决定的。

因此,为了将BFD检测结果更快地通告到应用程序,在设备接口管理模块中,为每个接口增加了一个属性,即BFD状态,指的是与该接口绑定的BFD会话的状态,系统根据接口的链路状态、协议状态和BFD状态决定接口的状态,并将结果通告给应用程序。

BFD会话状态与接口状态联动功能是指当BFD会话的状态变化时,直接修改接口的BFD状态。

当BFD会话状态变为Down时,与其绑定的接口的BFD状态变为Down,然后将接口状态通告给接口上的应用。

当BFD会话的状态变为Up时,与其绑定的接口的BFD状态变为Up。

该功能针对绑定出接口且使用缺省组播地址进行检测的单跳BFD会话。

BFD配置

BFD静态单跳检测配置

配置如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

[Huawei]bfd #创建BFD配置视图

[Huawei-bfd]quit

[Huawei]bfd 1 bind peer-ip 1.1.1.2 source-ip 1.1.1.1 #配置BFD会话绑定信息

[Huawei-bfd-session-1]discriminator local 1 #配置BFD会话的本地标识符

[Huawei-bfd-session-1]discriminator remote 2 #配置BFD会话的远端标识符

[Huawei-bfd-session-1]commit #用于提交会话配置

[Huawei-bfd-session-1]di th

[V200R003C00]

#

bfd 1 bind peer-ip 1.1.1.2 source-ip 1.1.1.1

discriminator local 1

discriminator remote 2

commit

#

AR1上配置如上,AR2配置相反即可。

说明:配置在AR1上进行,AR2上配置有默认路由指向回来,要求访问AR2上的环回接口 8.8.8.8/32

BFD配置单臂Echo功能且联动静态路由

为了偷懒,我直接拿单跳检测的图来了。

1

2

3

4

5

6

7

8

9

10

[Huawei]bfd #创建BFD配置视图

[Huawei-bfd]quit

[Huawei]bfd 2 bind peer-ip 2.2.2.2 interface GigabitEthernet0/0/1 one-arm-echo #配置echo功能

[Huawei-bfd-session-2]discriminator local 10 #配置BFD会话的本地标识符

Echo无需指定远端标识符,且采用Echo就是因为远端不支持,所以就算是指定了远端标识符,也没用。

[Huawei-bfd-session-2]commit #用于提交会话配置

[Huawei-bfd-session-2]quit

[Huawei]ip route-static 0.0.0.0 0.0.0.0 g0/0/1 2.2.2.2 track bfd-session 2

#配置默认路由,且绑定BFD,若Echo功能无法建立,那么默认路由也不会出现在IP路由表中。

BFD多跳检测

1

2

3

4

5

6

7

8

[AR1]dis current-configuration

[Huawei]bfd #创建BFD配置视图

[Huawei-bfd]quit

[Huawei]bfd 1 bind peer-ip 3.3.3.3 #配置BFD绑定远端IP地址

[Huawei-bfd-session-1]discriminator local 10 #配置BFD会话的本地标识符

[Huawei-bfd-session-1]discriminator remote 10 #配置BFD会话的本地标识符

[Huawei-bfd-session-1]commit #用于提交会话配置

注:无论中间采用静态,OSPF还是什么协议,能够保证去往对端的连通性即可。

BFD命令配置

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

bfd bind peer-ip X.X.X.X source-ip X.X.X.Xauto

#用来创建静态标识符自协商BFD会话。

bfd one-arm-echo

#配置单臂回声功能的BFD会话。

default-ip-address

#配置BFD缺省组播地址。缺省情况下,组播缺省地址为224.0.0.184。

delay-up

#用来使能延迟BFD会话Up的功能。

detect-multiplier

#配置BFD会话的本地检测倍数。缺省情况下,BFD会话本地检测倍数为3。

discriminator#(鉴别器)

#用来配置静态BFD会话的本地标识符和远端标识符。

min-echo-rx-interval

#配置单臂回声功能的BFD报文的最小接收间隔。

multi-hop destination-port { 3784 | 4784 }

#用来配置多跳BFD会话的目的端口号。

#缺省情况下,使用3784作为多跳BFD会话报文的目的端口号。

peer-ip ttl

#配置BFD报文的生存时间。

/*缺省情况下,不配置BFD报文的生存时间,采用默认值。对于静态配置的BFD会话,单跳BFD报文的生存时间为255,多跳BFD报文的生存时间为254;对于动态建立的BFD会话,单跳BFD报文的生存时间为255,多跳BFD报文的生存时间为253。*/

process-interface-status

#用来配置当前BFD会话与绑定的接口进行状态联动。

snmp-agent bfd trap-interval

#用来设置发送Trap消息定时器的时间间隔。

#缺省情况下,发送Trap消息定时器的时间间隔是120秒。

snmp-agent trap enable feature-name bfd

#用来打开BFD模块的告警开关。

tos-exp

#用来设置BFD报文的优先级。缺省情况下,BFD报文的优先级是7。

track bfd session-name

#用来把BFD会话加入BFD组。

unlimited-negotiate

#用来使能组播BFD会话无条件协商功能。

NQA技术原理

NQA(Network Quality Analysis),NQA用于测量网络上运行的各类协议的性能,能够对网络丢包率,延时抖动,相应时间等情况进行统计,能够及时了解网络的性能状况。NQA通过发送测试报文,对网络性能或服务质量进行分析,为用户提供网络性能参数,如时延抖动、HTTP的总时延、通过DHCP获取IP地址的时延、TCP连接时延、FTP连接时延和文件传输速率等。

同时,NQA也是网络故障诊断和定位的有效工具。

NQA具有以下几个特点:

支持多种测试类型

传统的Ping功能是使用ICMP测试数据包在本端和指定目的端之间的往返时间。NQA是对Ping功能的扩展和增强,它提供了更多的功能。

目前NQA支持11种测试类型:ICMP-echo、DHCP、DNS、FTP、HTTP、UDP-jitter、SNMP、TCP、UDP-echo、Voice和DLSw测试。

具体NQA详细测试过程及原理,可以点击链接看H3C关于NQA白皮书

配置命令如下:

1

2

3

4

5

6

7

8

9

[Huawei]nqa test-instance Zhy 2020 #配置管理名称及实例名称(双ID)

[Huawei-nqa-Zhy-2020]test-type icmp #配置nqa测试类型

[Huawei-nqa-Zhy-2020]destination-address ipv4 12.1.1.2 #配置nqa测试目的地址(路由可达即可)

[Huawei-nqa-Zhy-2020]frequency 6 #配置nqa测试试例的测试周期

[Huawei-nqa-Zhy-2020]interval seconds 3 #配置nqa测试报文的发送间隔

[Huawei-nqa-Zhy-2020]timeout 2

[Huawei-nqa-Zhy-2020]probe-count 2 #配置一次测试的探针数

[Huawei-nqa-Zhy-2020]start now

[Huawei]ip route-static 0.0.0.0 0.0.0.0 12.1.1.2 track nqa Zhy 2020

参考文档

1、华为HedEx文档- CE12800产品文档

2、HCIE路由交换学习指南

3、Yeslab 华为面试宝典

Previous

「BGP」BGP的同步规则

Next

「STP」RSTP快速生成树协议