BFD:

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

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

BFD会话管理:

bfd echo和control 端口号_HTTP


一、会话状态:

  1. Down:会话处于Down状态或刚刚创建。
  2. Init:已经能够与对端系统通信,本端希望使会话进入Up状态。
  3. Up:会话已经建立成功。
  4. 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)的产生方式不同,静态的需要手动指定, 而动态则自己产生。

  1. 静态建立:指的是BFD会话通过命令手工下发BFD会话请求,配置思路如下:
    • 启用BFD。
    • 建立BFD会话的名称及源目IP。
    • 创建本地标识符和远端标识符。
  2. 动态建立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邻居关系。

NQA:

概述:

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

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

  1. 及时了解网络的性能状况,针对不同的网络性能,进行相应的处理。
  2. 对网络故障进行诊断和定位。

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

技术优点:
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、静态路由、备份中心和策略路由的联动。

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

bfd echo和control 端口号_DHCP_02


联动功能由应用模块、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基本术语:

  1. NQA agent:NQA网络测试的客户端。
  2. NQA server:NQA网络测试的服务器端。狭义上,指UDP-echo、TCP、UDP-jitter和Voice四种测试中的NQA server端。广义上,指所有要被探测的对端设备,如FTP server、HTTP server等。
  3. 测试组:NQA测试功能以测试组的形式进行组织。每一个测试组都具有一系列的属性,例如,测试类型,测试目的地址,测试目的端口,测试发包频率等。
  4. 探测:一个能够得到完整探测结果的独立过程。对于TCP、DLSw测试,一次探测是指一次连接;对于UDP-jitter和Voice测试,一次探测发送探测报文的个数由用户来设定;对于FTP、HTTP、DHCP测试,一次探测是指完成一次相应的功能;对于ICMP-echo、UDP-echo测试,一次探测发送一个探测报文;对于SNMP测试,一次探测发送三个探测报文。

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

  1. 使能NQA客户端功能。
  2. 创建测试组,根据测试类型进行相应测试参数的配置。
  3. 通过启动测试命令执行NQA测试。
  4. 通过显示命令或调试命令查看测试结果。

常用测试机制:

  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测试提供类似于命令行下的Ping命令功能,但输出信息更为丰富:
    • 默认情况下能够保存最近5次的测试结果。
    • 结果中能够显示平均时延、丢包率, 最后一个报文正接收的时间等信息。
    ICMP测试的过程如下:
    • 源端向目的端发送构造的ICMP Echo Request报文。
    • 目的端收到报文后,直接回应ICMPEcho Reply报文给源端。

BFD和NQA的区别:

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