48小时系统班试听入口

【大神笔记】BFD和NQA技术原理

发布作者:新盟教育 发布日期:2022-08-09 浏览人数:10931人

大神笔记快来学!


BFD基本概念


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


BFD控制报文采用UDP封装,目的端口号为3784,源端口号在49152到65535的范围内。


080901.jpeg




BFD会话管理


一、会话状态

 

Down:会话处于Down状态或刚刚创建。


Init:已经能够与对端系统通信,本端希望使会话进入Up状态。


Up:会话已经建立成功。


AdminDown:会话处于管理性Down状态。


二、BFD会话迁移过程


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


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


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


4.R1的BFD状态变化同R2。


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


6.R1的BFD状态变化同R2。




BFD会话建立方式


BFD会话的建立有两种方式,即静态建立BFD会话和动态建立BFD 会话。静态和动态创建BFD会话的主要区别在于本地标识符(Local Discriminator)和远端标识符( Remote Discriminator)的产生方式不同,静态的需要手动指定, 而动态则自己产生。


一、静态建立


指的是BFD会话通过命令手工下发BFD会话请求,配置思路如下:


  • 启用BFD。

  • 建立BFD会话的名称及源目IP。

  • 创建本地标识符和远端标识符。


二、动态建立BFD会话


动态建立BFD会话时,系统对本地标识符和远端标识符的处理方式如下:


  • 动态分配本地标识符:当应用程序触发动态创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。然后向对端发送Remote Discriminator的值为0的BFD控制报文,进行会话协商。


  • 自学习远端标识符:值为0的BFD控制报文时,判断该报文是否与本地BFD会话匹配,如果匹配,则学习接收到的BFD报文中Local Discriminator获取远端标识符。


  • 配置思路:启用 BFD,建立BFD会话的名称及源目IP即可,不用创建标识符。




BFD单臂回声功能


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



BFD故障检查方式


一、异步模式


在异步模式下,系统之间会按照协商好的周期发送BFD控制报文,如果其某个系统在检测时间内没有收到对端发来的BFD控制报文,就宣告BFD会话的状态为DOWN。异步模式是最常用的BFD方式。


二、查询模式


在查询模式下,一旦BFD会话建立,系统就不再周期性发送BFD控制报文,而是通过其他与BFD无关的机制检测连通性(比如路由协议的Hello机制、硬件检测机制等),从而减少BFD会话带来的开销。在查询模式下,系统存在一个查询定时器,当查询定时器到期后,系统会发送一个短序列的查询报文检查链路,如果没有收到返回的报文就宣布会话的状态为DOWN。




BFD联动应用场景


联动功能由检测模块Track 和应用模块三部分组成。


检测模块负责对链路状态、网络性能等进行监测,并将探测结果通知给Track模块。Track模块将收到监测模块的探测结果后,及时改变Track项的状态,并通知应用模块。应用模块根据Track项的状态,进行相应的处理,从而实现联动。


OSPF为例:


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


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


3.BFD通知绑定的如OSPF进程BFD邻居不可达。


4.本地协议,例如OSPF进程中断OSPF邻居关系。


080902.jpeg


NQA概述


随着Internet的高速发展,网络支持的业务和应用日渐增多,传统的网络性能分析方法(如Ping、Tracert等)已经不能满足用户对业务多样性和监测实时性的要求。


NQA通过发送测试报文,对网络性能或服务质量进行分析,为用户提供网络性能参数,如时延抖动、HTTP的总时延、通过DHCP获取IP地址的时延、TCP连接时延、FTP连接时延和文件传输速率等。利用NQA的测试结果,用户可以:


1.及时了解网络的性能状况,针对不同的网络性能,进行相应的处理。


2.对网络故障进行诊断和定位。


NQA还提供了与Track和应用模块联动的功能,实时监控网络状态的变化,及时进行相应的处理,从而避免通信的中断或服务质量的降低。




NQA技术优点


NQA具有以下几个特点:


1.支持多种测试类型


传统的Ping功能是使用ICMP(Internet Control Message Protocol,互联网控制报文协议)测试数据包在本端和指定目的端之间的往返时间。NQA是对Ping功能的扩展和增强,它提供了更多的功能。目前NQA支持11种测试类型:ICMP-echo、DHCP、DNS、FTP、HTTP、UDP-jitter、SNMP、TCP、UDP-echo、Voice和DLSw测试。


2.支持多测试组并发


NQA模块支持多个测试组并发,用户可以根据需求手工配置并发个数。但对于DHCP测试,同一时刻只允许有一个测试组进行测试。


3.支持联动功能


联动功能是指NQA提供探测功能,把探测结果通知其他模块,其他模块再根据探测结果进行相应处理的功能。目前实现了与VRRP、静态路由、备份中心和策略路由的联动。


联动功能是指通过建立联动项,对当前所在测试组中的探测进行监测,当连续探测失败次数达到一定数目时, 就触发其他模块联动。联动功能的的实现如图:


080903.jpeg


联动功能由应用模块、Track模块和监测功能模块(如NQA)三部分组成。Track模块位于应用模块和NQA之间,当监测项的状态发生变化时,监测功能模块通知Track模块,再由Track模块通知应用模块进行相应的处理,从而实现联动。


以静态路由为例,用户配置了一条静态路由,下一跳为192.168.0.88,如果192.168.0.88可达,那么该静态路由有效;如果192.168.0.88不可达,则该静态路由无效。


通过在NQA、Track模块和应用模块之间建立联动,可以实现静态路由有效性的实时判断。如果NQA发现192.168.0.88不可达,NQA将通过Track模块通知静态路由模块,静态路由模块可以据此判断该静态路由项无效。




NQA基本术语


  • NQA agent:NQA网络测试的客户端。


  • NQA server:NQA网络测试的服务器端。狭义上,指UDP-echo、TCP、UDP-jitter和Voice四种测试中的NQA server端。广义上,指所有要被探测的对端设备,如FTP server、HTTP server等。


  • 测试组:NQA测试功能以测试组的形式进行组织。每一个测试组都具有一系列的属性,例如,测试类型,测试目的地址,测试目的端口,测试发包频率等。


  • 探测:一个能够得到完整探测结果的独立过程。

  • 对于TCP、DLSw测试,一次探测是指一次连接。


  • 对于UDP-jitterVoice测试,一次探测发送探测报文的个数由用户来设定。


  • 对于FTPHTTPDHCP测试,一次探测是指完成一次相应的功能。


  • 对于ICMP-echoUDP-echo测试,一次探测发送一个探测报文。

  • 对于SNMP测试,一次探测发送三个探测报文。



NQA测试操作


在窗户测试组并进行该测试组视图后,可以根据要进行测试配置相关的测试参数。要成功进行某项测试,需要在NQA客户端上进行如下操作:


1.使能NQA客户端功能。


2.创建测试组,根据测试类型进行相应测试参数的配置。


3.通过启动测试命令执行NQA测试。


4.通过显示命令或调试命令查看测试结果。




NQA常用测试机制



1.SNMP处理机制


SNMP测试发送SNMP协议报文到指定端口,根据回应确认对端SNMP功能是否开启。在客户端无法指定SNMP服务的版本号。每次测试时会对SNMP v1/v2c/v3三个版本都进行测试,收到任何一个版本的回复,即认为探测成功。目前,SNMP测试并不区分SNMP server支持哪个版本。SNMP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。


2.HTTP处理机制


HTTP测试主要是测试是否可以与指定的HTTP服务器建立连接,从而判断该设备是否提供了HTTP服务以及建立连接的时间。HTTP测试支持GET和POST操作,即向指定地址的HTTP服务器发送GET请求或者POST请求,在接收到回应信息以后,计算整个测试的时间。整个过程只是和HTTP服务器建立连接,如果建立连接成功即认为成功。HTTP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。


3.FTP处理机制


FTP测试主要是测试是否可以与指定的FTP服务器建立连接,以及与FTP服务器之间传送文件的时间,可以使用该功能探测任何FTP服务器。FTP测试支持GET和PUT操作。GET操作并不会把文件放到本地的文件系统,只是计算下载该文件所需要的时间,取得数据后随即自动释放占用的内存;PUT操作并不是将本地文件放到服务器上,而是上传固定大小及内容的文件(文件名由用户配置,数据为系统内部指定的固定数据;如果配置的文件名和服务器上已有的文件重名,则覆盖原来的文件,测试完成后该文件并不被删除)。因此,FTP测试与本地文件系统无关。FTP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。


4.DHCP处理机制


DHCP测试模拟DHCP client在指定的接口上发起DHCP请求,根据是否申请到地址,确定接口所在的网络中是否有DHCP server服务以及测试申请到地址的时间。DHCP测试只是借用操作接口发送DHCP报文,申请到地址后立即释放DCHP租约,不会为接口真正申请地址,因此不会占用DHCP server的地址资源。进行DHCP测试的操作接口必须处于up状态。DHCP测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。


5.DNS处理机制


DNS测试通过模拟DNS client向指定的DNS服务器发送域名解析请求,根据域名解析是否成功及域名解析需要的时间,来判断DNS服务器是否可用,及域名解析速度。DNS测试只是模拟域名解析的过程,不会保存要解析的域名与IP地址的对应关系。DNS测试的结果和历史记录将记录在测试组中,可以通过命令行来查看探测结果和历史记录。


6.NQA的ICMP测试


ICMP测试例用于检测源端到目的端的路由是否可达ICMP测试提供类似于命令行下的Ping命令功能,但输出信息更为丰富:


  • 默认情况下能够保存最近5次的测试结果。

  • 结果中能够显示平均时延、丢包率, 最后一个报文正接收的时间等信息。


ICMP测试的过程如下:


  • 源端向目的端发送构造的ICMP Echo Request报文。

  • 目的端收到报文后,直接回应ICMPEcho Reply报文给源端。



BFD和NQA的区别


BFD 用于检查链路的故障,可与各的议进行联合使用,从而达到网络的快速收敛。NQA主要用于检查上层协议的服务是否可用,可与各种协议联动,当然它也可以通过与ICMP协议的联动,从而检测链路是否可用,这个方式比BFD速度会慢一些。



参考资料:HCIE培训文档、新华三技术白皮书


 网工界市场认可度极高的华为认证,你考了吗?


拿下华为HCIE认证之后,你可以:

  • 跨越90%企业的招聘硬门槛

  • 增加70%就业机会

  • 拿下BAT全国TOP100大厂敲门砖

  • 体系化得到网络技术硬实力

  • 技术大佬年薪可达30w+