路由器重温——可靠性-BFD和NQA配置

本文介绍了BFD(双向转发检测)和NQA(网络质量分析)的技术原理和应用场景。BFD可快速检测网络故障并通知上层应用,支持直连和非直连链路。NQA则通过发送测试报文评估网络性能。

网络管理中,总希望当网络中一些关键链路或关键节点发生故障时能及时获得提示信息,并能自动进行相应的处理。BFD(双向转发检测)和NQA(网络质量分析)就能实现这样的功能。

BFD不仅可以检测直连链路(单跳)的故障,还可以检测非直连链路(多跳)的故障,还可以与多种功能进行联动,如与接口状态、静态路由、RIP路由、OSPF路由、IS-IS路由、BGP路由、VRRP等,在检测到故障后,上送到对应的上层应用模块进行快速处理。如与接口状态联动时会把相应的接口状态由Up转为Down;与路由联动可以使这些路由模块进行重新拓扑计算,实现快速网络收敛;与VRRP联动时可以快速切换到备用线路上。

NQA可以实时监视网络性能,在网络发生故障时进行故障诊断和定位。NQA支持DHCP测试、DNS测试、FTP测试、HTTP测试、ICMP测试、SNMP测试、TCP测试和Trace测试等。

NQA通过发送测试报文,对网络性能或服务质量进行分析,为用户提供网络性能参数。

BFD基础

BFDBidirectional Forwarding Detection,双向转发检测)用于快速检测系统之间的发送和接收两个方向的通信故障,并在出现故障时通知上层应用。与其他功能联动,联动是指使对应接口状态或者路由协议、VRRP等可根据BFD会话状态进行对应的接口状态改变、路由收敛和VRRP主备切换等

一、BFD概述

在现有网络中,有些链路通常是通过硬件检测信号(如SDH告警)来检测链路故障,硬件检测速度快,但不是所有介质都能够提供硬件检测功能。有的依靠上层协议(如各种路由协议)自身的Hello报文机制来进行故障检测的,但检测时间在1s以上。

BFD是一种通用的、标准化的与介质和协议均无关的快速链路故障检测机制,可为各上层协议统一的快速检测两台路由器间(不一定是直接连接的)双向转发路径的故障。

二、BFD检测原理

BFD可在两台网络设备间建立用来监测设备间双向转发路径的BFD会话,为上层应用服务。BFD本身没有邻居发现机制,而是靠被服务的上层应用通知其邻居信息以建立会话会话建立后会周期性的快速发送BFD报文,如果在检测时间内没有收到BFD报文则认为该双向路径发生了故障。

1、BFD会话建立流程

BFD会话建立有两种方式,即静态建立BFD会话和动态建立BFD会话。其主要区别在于本地标识符(Local Discrimination)和远端标识符(Remote Discrimination)的配置方式不同标识符是用来标识对应BFD会话中本地和远端实体的数字标识BFD通过控制报文中的本地标识符和远端标识符区分不同的BFD会话。这个本地远端是相对的,本地配置的远端标识符就是对端配置的本地标识符,本地配置的本地标识符就是对端配置的远端标识符

(1)静态建立BFD会话

静态建立BFD会话是指通过命令行手动配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。

建立静态BFD会话又包括两种方式

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

必须手动指定BFD会话的本地标识符和远端标识符。

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

如果对端设备采用动态BFD,而本端设备既要与之互通,又要能够实现BFD检测静态路由,则必须配置静态标识符自协商BFD。这种BFD会话方式无需指定本地标识符和远端标识符。本端采用静态标识符自协商,对端既可以配置静态标识符自协商,也可配置动态BFD。

(2)动态建立BFD会话

动态BFD联动主要是由各种路由协议触发的。在建立动态BFD会话时,系统对本地标识符和远端标识符分别采用如下处理方式:

①动态分配本地标识符

当应用程序触发动态建立BFD会话时,系统分配本地动态会话标识符区域中可用的一个标识值作为本次BFD会话的本地标识符,然后向对端发送远端标识符的值为0BFD控制报文(之所以采用0来标识远端标识符,是因为在静态标识符配置中0是保留不能配置的),进行会话协商。

②自动学习远端标识符

当BFD会话的另一端收到远端标识符的值为0的BFD控制报文,判断该报文是否与本地BFD会话匹配查看0号标识符是否已被占用),如果匹配,则学习接收到的BFD本地标识符的值,以获取远端标识符,否则中断BFD会话。这种BFD会话方式主要用于与动态路由协议的联动中,并且同一时刻、同一链路只允许建立一组BFD会话。

如上图RouterA和RouterB上同时配置了OSPF和BFD,BFD会话建立的基本流程:

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

②OSPF建立好新的邻居关系后,将相应的邻居信息(包括邻居的IP和本设备的IP)通告给本设备的BFD功能模块。

③BFD根据收到的邻居信息与对应邻居开始会话建立过程,会话建立后,BFD才能开始检测链路状态,一旦出现故障可作出快速反应。

2、BFD检测机制

BFD的检测机制是先在两个系统间建立BFD会话,然后沿它们之间的路径周期性发送BFD控制报文如果一方在既定时间内没有收到对方发来的BFD控制报文或自己发送的BFD报文返回(配置单臂回声功能时),则认为路径上发生了故障

BFD提供两种检测模式:

异步模式:BFD的主要操作模式为异步模式。这种模式下,系统之间相互周期性的单独发送BFD控制报文,如果某个系统在既定时间内没有收到对方发来的BFD报文,就认为此BFD会话的状态是Down。

查询模式:当一个系统中存在大量BFD会话时,为防止周期性发送BFD控制报文的开销影响到系统的正常运行,可采用查询模式。在此模式下,一旦BFD会话建立,系统不再周期性发送BFD控制报文,而是通过其他与BFD无关的机制检测连通性,减少BFD会话带来的开销。

如上图,B检测到到达邻居A的链路出现了故障:

①通过OSPF的Hello机制,检测到链路出现故障(假设B与中间路由器之间的链路出现故障)

②B与A之间的BFD会话状态首先变为Down。

③B与A各自的BFD功能模块通知本地OSPF进程BFD邻居不可达。

④本地OSPF进程中断与对端设备的OSPF邻居关系,由OSPF协议进行重新拓扑计算,实现快速收敛。

3、BFD会话管理

BFD会话有4种状态:DownInitUpAdminDown会话状态的变化通过BFD报文的State字段传递系统根据自己本地的会话状态和接收到的对端BFD报文驱动状态改变。BFD状态机的建立和拆除都采用三次握手机制,以确保两端系统都能知道状态的变化。

①A和B各自启动BFD状态机,初始状态为Down,发送状态为Down的BFD报文。对于静态配置BFD会话,报文中的远端标识符的值是用户指定的;对于动态创建BFD会话,远端标识符的值是0。

B收到来自A的状态为DownBFD报文后,状态切换至Init,并发送状态为Init的BFD报文,同时不再处理接收的状态为Down的BFD报文。同理,A在收到来自B的状态为Down的BFD报文后,状态也切换至Init,并发送状态为Init的BFD报文,也不再处理接收的状态为Down的BFD报文。

B在收到来自A的状态为InitBFD报文后,本地状态切换至Up;A在收到来自B的状态为Init的BFD报文后,本地状态切换至Up。

发现故障时,源端首先会向对端发送AdminDown状态的BFD报文对端在收到这个报文会发送状态为DownBFD报文(表明自己已关闭BFD会话)同时关闭本端的BFD会话。源端在收到对端发来的状态为Down的BFD报文后,源端BFD状态也会变为Down,也会关闭自己的BFD会话。

疑问:发生故障后,两个路由器之间还能发送BFD报文吗???

BFD主要应用

AR G3系列支持的BFD特性主要包括:单跳和多跳检测、静态标识符自协商BFD、单臂回声功能、各种联动功能和BFD参数调整

一、BFD检测IP链路

在IP链路上建立BFD会话,利用BFD检测机制快速检测故障。BFD检测IP链路支持单跳检测和多跳检测。

①BFD单跳检测是指对两个直连系统进行IP连通性检测,“单跳”是IP链路的一跳。
②BFD多跳检测是指BFD可以检测两个系统间的任意路径,这些路径可能跨越很多跳,也可能在某些部分发生重叠。

上图BFD检测两台设备之间的IP单跳路径,此时,BFD会话绑定本端的出接口,因为在直连情况下确定出接口后,相应要检测的到达对端设备的链路也就被唯一确定。

上图BFD检测RouterA和RouterC之间的IP多跳路径,此时BFD会话绑定对端IP,但不绑定本端出接口。因为这种非直连情况下,绑定出接口不能唯一确定要检测的对端设备(因为中间可能还有多个设备),只有绑定了要监测设备的IP,才能最终唯一确定要检测所到达的设备。

二、BFD单臂回声功能

单臂回声功能是指通过BFD报文的环回操作来检测转发链路的联通性,主要用于在两台直连的设备中只有一台支持BFD功能,另一台设备不支持BFD,但支持基本的网络层转发的情形下。这种单臂回声功能只适用于BFD单跳检测且不支持二层设备间的链路检测

在支持BFD功能的设备上配置单臂回声功能的BFD会话主动发起回声请求功能,不支持BFD功能的设备接收到这样的BFD报文后会直接将其环回(只做环回转发,不做其他任何处理),从而实现转发链路的连通性检测。RouterB接收到RouterA发送的BFD报文后,直接在网络层将该报文环回。

三、BFD与各种路由的联动

BFD可以与静态路由、RIP路由、OSPF路由、IS-IS路由、BGP路由等进行联动。“联动”就是指当发现某条路由所通过的路径上某条链路发生故障时,快速的通知路由管理功能模块及时进行相应的处理,重新进行路由计算,以实现快速拓扑收敛

除静态路由外,其他各种动态路由本身都有邻居故障检测机制,如利用Hello报文进行检测,但BFD检测效率更高,BFD与各种路由实现联动,是对这些路由的邻居检测机制的一种加强并不是取代。

1、BFD与静态路由联动

静态路由自身没有检测机制,BFD与静态路由联动特性可为公网路由绑定BFD会话,利用BFD会话来检测静态路由所在链路的状态。

BFD与静态路由联动可为每条静态路由绑定一个BFD会话(实际情况中,是为关键静态路由),当静态路由上绑定的BFD会话检测到链路故障(由Up转为Down)后,BFD会将故障上报路由器管理系统由路由管理模块将这条路由设置为非激活状态(表明此条路由不可用,并IP路由表中删除该路由,但在转发表FIB中仍然存在)。当这条静态路由上绑定的BFD会话成功建立或从故障状态恢复后(由Dwon转为Up),BFD又会上报路由管理模块,由路由管理模块将这条路由设置为“激活”状态(表明此路由可用,从FIB中重新加入IP路由表中)。

2、BFD与OSPF联动

BFD与OSPF联动就是将BFD和OSPF协议关联起来,通过BFD对链路故障的快速感应进而通知OSPF,加快网络拓扑变化。OSPF依靠自身的Hello Keepalive定时器超时来检测链路故障,通常是秒级,BFD则是毫秒级。

A分别与C和D建立OSPF邻居关系,A到B的路由出接口为Interface1,邻居状态到达FULL状态时通知BFD建立BFD会话。当A和C之间链路出现故障,BFD首先感知并通知A,A处理邻居Down事件,重新进行路由计算,新路由出接口为Interface2。

3、BFD与IS-IS联动

通常IS-IS设定发送Hello报文的时间间隔为10s,相邻设备失效的时间一般配置为Hello报文间隔的3倍。设备感知到邻居故障的时间最小也是秒级。

BFDIS-IS联动指BFD会话由IS-IS协议动态创建。BFD检测到有故障时,通过路由管理模块通知IS-IS协议,由协议进行相应邻居Down处理,实现快速收敛。BFD并不是代替IS-IS协议本身的Hello机制,而是配合IS-IS协议更快发现邻居方面出现的故障。

4、BFD与BGP联动

BGP协议通过周期性的向对等体发送Keepalive报文实现邻居检测机制。故障发现秒级

A和B分别属于AS100和AS200,两台路由器直接相连并建立EBGP连接。使用BFD检测A和B之间的BGP邻居关系,当A和B之间的链路发生故障时,BFD能够快速检测到故障并通告给BGP协议。

四、BFD的其他联动

BFD还可以与接口状态、VRRP

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kaoa000

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值