BFD(双向转发检测)
基本概念
BFD(BidrectionalForwarding Detection,双向转发检测)用于快速检测系统设备之间的发送和接受两个方向的通信故障,并在出现故障时通知生成应用。BFD广泛用于链路故障检测,并能实现与接口、静态路由、动态路由等联动检测。BFD协议使用的默认组播地址是 224.0.0.184。
配置
如图,在R1和R2上配置BFD,检测链路状态。
R1上的IP地址配置如下:
R2上的IP地址配置如下:
R1配置BFD:
[R1]bfd //开启BFD
[R1-bfd]q
[R1]bfd R1toR2 bind peer-ip 10.1.12.2 source-ip 10.1.12.1 //配置BFD名称为R1toR2,绑定对端IP地址和本端IP地址
[R1-bfd-session-r1tor2]discriminator local 11 //本地标识符
[R1-bfd-session-r1tor2]discriminator remote 22 //远端标识符
[R1-bfd-session-r1tor2]commit //使用关键字commit使BFD生效
上述配置也可以简化为:
[R1]bfd R1toR2 bind peer-ip 10.1.12.2 source-ip 10.1.12.1 auto //配置BFD名称为R1toR2,绑定对端IP地址和本端IP地址,参数自动协商
配置完成,在R1上查看BFD会话:
可以看到状态为Down,这是因为R2上还没有配置BFD会话。
R2配置BFD:
[R2]bfd //开启BFD
[R2-bfd]q
[R2]bfd R2toR1 bind peer-ip 10.1.12.1 source-ip 10.1.12.2 //配置BFD名称为R2toR1,绑定对端IP地址和本端IP地址
[R2-bfd-session-r2tor1]discriminator local 22 //本地标识符
[R2-bfd-session-r2tor1]discriminator remote 11 //远端标识符
[R2-bfd-session-r2tor1]commit //使用关键字commit使BFD生效
上述配置也可以简化为:
[R2]bfd R2toR1 bind peer-ip 10.1.12.1 source-ip 10.1.12.2 auto //配置BFD名称为R2toR1,绑定对端IP地址和本端IP地址,参数自动协商
配置完成后,再次在R1上查看BFD会话状态:
可以看到,会话状态为Up,表明BFD会话已经生效了。
此外,BFD还可以配置单臂回声的功能,即只需要在一台设备上配置即可,由于ensp模拟器不支持此功能,我们无法展示结果,配置命令如下:
bfd R1toR2 bind peer-ip 10.1.12.2 source-ip 10.1.12.1 one-arm-echo //创建bfd单臂回声会话
discriminator local 123 //本地标识符
discriminator remote 123 //远端标识符,单臂模式中可以不用配置
commit //提交生效
BFD和静态路由联动
BFD可以和静态路由、动态路由等协议进行联动,接下来我们演示一下BFD和静态路由的联动。
在路由器IP地址和BFD会话配置完成后,我们在R1上配置一条到R2上的LoopBack 0地址的静态路由,实现路由互通:
查看R1路由表:
可以看到有2.2.2.2的静态路由,当R2上的GE0/0/0接口失效后,路由表是否还会显示呢?
我们手动关闭R2的GE0/0/0接口,查看效果:
可以看到R1的路由表上还有到2.2.2.2的静态路由,可是实际上已经ping不通了,由于中间连接着交换机,R1无法得知R2的链路状态,所以认为自己还能ping通。
所以我们在配置静态路由时,就可以跟踪BFD会话。实现静态路由和BFD的联动:
配置完成后,我们再把R2的链路手动关闭,查看R1路由表:
可以看到,当R2的链路失效后,即使中间隔着其他设备,BFD也能检测到,而我们配置了静态路由和BFD联动,一旦BFD失效,路由表中的静态路由也会自动删除。
有了BFD之后,我们就可以配合使用浮动静态路由,当设备一端链路失效后,马上启用备用路由,实现毫秒级切换。
NQA(网络质量分析)
基本概念
NQA(Network Quality Analysis,网络质量分析)是系统提供的一个特性,位于链路层之上,覆盖网络层、传输层、应用层,独立于底层硬件,可实现实时监视网络性能状况,在网络发生事故时进行故障诊断和定位。
NQA通过发送测试报文,对网络性能或服务质量进行分析,NQA支持的测试包括多种协议,例如 http 的延迟、TCP 延迟、DNS 错误、ICMP 消息等,下面以 ICMP 为例简单配置一个实例:
配置
如图,在R1和R2上配置NQA,检测链路状态。
R1上的IP地址配置如下:
R2上的IP地址配置如下:
NQA和BFD不同,只需要在一端配置即可,所以我们在R1上配置NQA:
[R1]nqa test-instance root icmp //创建一个NQA测试实例,测试管理账户名为root,测试实例名称为icmp
[R1-nqa-root-icmp]test-type icmp //测试类型为icmp协议测试
[R1-nqa-root-icmp]frequency 10 //指定连续两次探测时间间隔为10s
[R1-nqa-root-icmp]probe-count 2 //指定一次探测进行的测试次数
[R1-nqa-root-icmp]destination-address ipv4 10.1.12.2 //测试的对端IP地址
[R1-nqa-root-icmp]start now //启动当前测试
配置完成后,使用命令display nqa results test-instance root icmp在R1上查看NQA测试结果:
Lost packet ratio:0%表示丢包率为0,能和对端IP地址正常通信。
NQA和静态路由联动
同样,NQA也可以和静态路由联动。
手动断开R2的链路:
跟踪NQA前:
跟踪NQA后:
当R2上的链路断开后,R1的路由表和NQA测试结果如下:
可以看到,NQA测试结果为100%丢包率,且检测到失效后静态路由自动从路由表删除。
BFD和NQA的区别
BFD探测速度快,能实现毫秒级探测,而NQA不行;
NQA探测种类多样,可以探测icmp、http等,而BFD只能探测链路;