端口队列堵塞的监控方法及系统与流程

文档序号:12161703阅读:390来源:国知局
端口队列堵塞的监控方法及系统与流程

本发明涉及网络通信技术领域,尤其涉及端口队列堵塞的监控方法及系统。



背景技术:

随着网络技术的迅速发展,越来越多的用户逐渐使用如IPTV(Internet Protocol Television,网络电视)、VoIP(Voice over Internet Protocol,网络电话)、远程学习、远程医疗等新业务,而不断涌现的新业务对网络的服务能力提出了更高的要求。当用户大量使用IPTV、VoIP、BT(Bit Torrent)下载、FTP下载等网络应用时,现网电信级路由器端口队列的网络流量将变得非常巨大,而这将会导致电信级路由器存在端口队列堵塞的风险。当端口队列发生堵塞时,端口下面所有用户队列的报文都将无法发送,从而导致用户无法使用网络应用。

在当前网络通信系统中,一般通过现网电信级路由器下行TM(Traffic Management,流量管理)芯片硬件H-QoS(Hierarchical Quality of Service,层次化服务质量)队列技术来实现流量整形、拥塞管理等功能,但现有H-QoS队列技术却并未提供对端口队列堵塞的监控机制,因而不能及时甚至提前监控到端口队列堵塞,同时亦不能准确确定端口队列是否存在堵塞,进而不能快速恢复端口队列的报文发送,致使用户长时间无法使用网络应用。



技术实现要素:

本发明的主要目的在于提供一种端口队列堵塞的监控方法及系统,旨在解决不能及时监控并准确确定端口队列堵塞,进而不能快速恢复端口队列的报文发送而致使用户长时间无法使用网络应用的技术问题。

为实现上述目的,本发明提供一种端口队列堵塞的监控方法,应用于电信级路由器,所述路由器包括若干端口,所述端口队列堵塞的监控方法包括:

在当前监控周期到达时,确定当前轮询的端口队列的缓存状态是否满足 预设的非正常缓存状态条件;

当所述端口队列的缓存状态满足所述非正常缓存状态条件时,确定所述端口队列的第一发送状态是否满足预设的非正常发送状态条件;

当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长预设延迟时长以确定所述端口队列的第二发送状态是否满足所述非正常发送状态条件;

当所述端口队列的第二发送状态满足所述非正常发送状态条件时,确定所述端口队列存在堵塞。

优选地,所述在当前监控周期到达时,确定当前轮询的端口队列的缓存状态是否满足预设的非正常缓存状态条件包括:

在当前所述监控周期到达时,获取所述端口队列的实时深度值,其中,所述深度值用于衡量端口队列中所缓存的报文存储量;

判断所述端口队列的实时深度值是否大于或等于预设深度阈值以对应确定所述端口队列的缓存状态是否满足所述非正常缓存状态条件;

当所述端口队列的实时深度值大于或等于所述深度阈值时,确定所述端口队列的缓存状态为所述非正常缓存状态。

优选地,所述当所述端口队列的缓存状态满足所述非正常缓存状态条件时,确定所述端口队列的第一发送状态是否满足预设的非正常发送状态条件包括:

当所述端口队列的缓存状态满足所述非正常缓存状态条件时,获取在当前所述监控周期内以及在上一所述监控周期内所述端口队列分别对应发送的第一报文计数与第二报文计数,其中,所述报文计数采用高位与低位双计数器进行计数;

比较所述第一报文计数的高位及低位是否分别对应与所述第二报文计数的高位及低位相等以对应确定所述端口队列的第一发送状态是否满足所述非正常发送状态条件;

当所述第一报文计数的高位及低位分别对应与所述第二报文计数的高位及低位相等时,确定所述端口队列的第一发送状态为所述非正常发送状态。

优选地,所述当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长预设延迟时长以确定所述端口队列的第二 发送状态是否满足所述非正常发送状态条件包括:

当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长所述延迟时长;

当所述延迟时长到达时,获取在上一所述监控周期及所述延迟时长内所述端口队列总共所发送的第三报文计数;

比较所述第一报文计数的高位及低位是否分别对应与所述第三报文计数的高位及低位相等以对应确定所述端口队列的第二发送状态满足所述非正常发送状态条件;

当所述第一报文计数的高位及低位分别对应与所述第三报文计数的高位及低位相等时,确定所述端口队列的第二发送状态为所述非正常发送状态。

优选地,所述当所述端口队列的第二发送状态满足所述非正常发送状态条件时,确定所述端口队列存在堵塞之后包括:

当监测到所述端口队列存在堵塞时,关闭所述端口队列;

清空所述端口队列内所缓存的报文且保留用于复位所述端口队列所需要的相关配置参数;

根据保留的所述相关配置参数,复位所述端口队列以恢复到所述端口队列未发送报文时所对应的初始状态;

当所述端口队列恢复到所述初始状态后,使能所述端口队列以开启所述端口队列进行报文的发送。

优选地,所述在当前监控周期到达时,确定当前轮询的端口队列的缓存状态是否满足预设的非正常缓存状态条件之前包括:

创建端口队列的监控线程并在预设的所述监控周期内,对所述路由器上的所有端口进行端口队列堵塞的轮询监控。

进一步地,为实现上述目的,本发明还提供一种端口队列堵塞的监控系统,应用于电信级路由器,所述路由器包括若干端口,所述端口队列堵塞的监控系统包括:

缓存状态确定模块,用于在当前监控周期到达时,确定当前轮询的端口队列的缓存状态是否满足预设的非正常缓存状态条件;

第一发送状态确定模块,用于当所述端口队列的缓存状态满足所述非正 常缓存状态条件时,确定所述端口队列的第一发送状态是否满足预设的非正常发送状态条件;

第二发送状态确定模块,用于当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长预设延迟时长以确定所述端口队列的第二发送状态是否满足所述非正常发送状态条件;

堵塞确定模块,用于当所述端口队列的第二发送状态满足所述非正常发送状态条件时,确定所述端口队列存在堵塞。

优选地,所述缓存状态确定模块包括:

深度值获取单元,用于在当前所述监控周期到达时,获取所述端口队列的实时深度值,其中,所述深度值用于衡量端口队列中所缓存的报文存储量;

深度值判断单元,用于判断所述端口队列的实时深度值是否大于或等于预设深度阈值以对应确定所述端口队列的缓存状态是否满足所述非正常缓存状态条件;

缓存状态确定单元,用于当所述端口队列的实时深度值大于或等于所述深度阈值时,确定所述端口队列的缓存状态为所述非正常缓存状态。

优选地,所述第一发送状态确定模块包括:

报文计数第一获取单元,用于当所述端口队列的缓存状态满足所述非正常缓存状态条件时,获取在当前所述监控周期内以及在上一所述监控周期内所述端口队列分别对应发送的第一报文计数与第二报文计数,其中,所述报文计数采用高位与低位双计数器进行计数;

报文计数第一比较单元,用于比较所述第一报文计数的高位及低位是否分别对应与所述第二报文计数的高位及低位相等以对应确定所述端口队列的第一发送状态是否满足所述非正常发送状态条件;

第一发送状态确定单元,用于当所述第一报文计数的高位及低位分别对应与所述第二报文计数的高位及低位相等时,确定所述端口队列的第一发送状态为所述非正常发送状态。

优选地,所述第二发送状态确定模块包括:

延时单元,用于当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长所述延迟时长;

报文计数第二获取单元,用于当所述延迟时长到达时,获取在上一所述 监控周期及所述延迟时长内所述端口队列总共所发送的第三报文计数;

报文计数第二比较单元,用于比较所述第一报文计数的高位及低位是否分别对应与所述第三报文计数的高位及低位相等以确定所述端口队列的第二发送状态满足所述非正常发送状态条件;

第二发送状态确定单元,用于当所述第一报文计数的高位及低位分别对应与所述第三报文计数的高位及低位相等时,确定所述端口队列的第二发送状态为所述非正常发送状态。

优选地,所述端口队列堵塞的监控系统还包括:

端口队列关闭模块,用于当监测到所述端口队列存在堵塞时,关闭所述端口队列;

缓存报文清空模块,用于清空所述端口队列内所缓存的报文且保留用于复位所述端口队列所需要的相关配置参数;

端口队列复位模块,用于根据保留的所述相关配置参数,复位所述端口队列以恢复到所述端口队列未发送报文时所对应的初始状态;

端口队列使能模块,用于当所述端口队列恢复到所述初始状态后,使能所述端口队列以开启所述端口队列进行报文的发送。

优选地,所述端口队列堵塞的监控系统还包括:

监控线程创建模块,用于创建端口队列的监控线程并在预设的所述监控周期内,对所述路由器上的所有端口进行端口队列堵塞的轮询监控。

本发明通过周期轮询的方式对所有端口队列堵塞进行监控,从而能够更为精细地将端口队列堵塞问题锁定在某个或某些个端口队列,进而只需有针对性地对锁定的端口队列进行恢复操作而避免对其他正常端口队列的影响。此外,通过监控端口队列的缓存状态,可以及时甚至于提前确定端口队列是否存在潜在的堵塞风险,同时,进一步通过监控端口队列的发送状态以确定当前是否存在堵塞。另外,在监控端口队列的发送状态时,为排除对发送状态的误判,通过延时的方式以进一步确定当前端口队列是否存在堵塞,从而对端口队列堵塞的判断更为准确,从而能够更为及时准确确定存在堵塞的端口队列,进而及时处理发生堵塞的端口队列,降低端口队列堵塞所带来的负面影响。

附图说明

图1为本发明端口队列堵塞的监控方法第一实施例的流程示意图;

图2为图1中步骤S110的细化流程示意图;

图3为图1中步骤S120的细化流程示意图;

图4为图1中步骤S130的细化流程示意图;

图5为本发明端口队列堵塞的监控方法第二实施例的流程示意图;

图6为本发明端口队列堵塞的监控方法第三实施例的流程示意图;

图7为本发明端口队列堵塞的监控系统第一实施例的功能模块示意图;

图8为图7中缓存状态确定模块的细化功能模块示意图;

图9为图7中第一发送状态确定模块的细化功能模块示意图;

图10为图7中第二发送状态确定模块的细化功能模块示意图;

图11为本发明端口队列堵塞的监控系统第二实施例的功能模块示意图;

图12为本发明端口队列堵塞的监控系统第三实施例的功能模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

参照图1,图1为本发明端口队列堵塞的监控方法第一实施例的流程示意图。本实施例中,所述端口队列堵塞的监控方法包括:

步骤S110,在当前监控周期到达时,确定当前轮询的端口队列的缓存状态是否满足预设的非正常缓存状态条件;

本实施例中,端口队列堵塞的监控方法应用于电信级路由器,其中,在现网电信级路由器下行TM(Traffic Management,流量管理)芯片硬件H-QoS队列技术中,端口队列对应于H-QoS树的根结点,端口队列和用户队列之间还可以有数层中间层队列。用户报文经用户队列发送至中间层队列,再由中间层队列汇聚到端口队列,最后通过端口队列发送至对应的接口子卡端口,而该接口子卡端口可以外接光纤。

此外,路由器一般包括若干端口,因此,需要对路由器上的所有端口进行监控。考虑到单独监控每一端口对于路由器的软硬件开销较大,从而降低路由器的工作效率,因此,本实施例采用轮询方式实现对所有端口进行监控,其中,监控周期为对所有端口完成一次轮询的时间。

需要进一步说明的是,端口队列监控周期具体需要根据实际情况进行设置。比如,设置为百毫秒级。监控周期若设置得太大,则端口队列堵塞时将不能被快速监控到,从而造成流量中断时间过长;而若设置得太小,则对端口队列监控所带来的软硬件开销增大,从而影响路由器线卡上正常业务的运行。此外,轮询相邻两端口之间的间隔时间与监控周期相关,不同相邻两端口之间的间隔时间可以相同,也可以不相同,具体根据实际需要设置。另外,为便于描述,本实施例中仅对所有端口中的任意一个端口的端口队列堵塞监控进行说明,其他端口的说明相同,因此不做赘述。

在当前监控周期到达时,也即开始对路由器上所有端口中的某一端口进行轮询监控时,确定当前轮询的端口队列的缓存状态是否满足预设的非正常缓存状态条件。本实施例中,当前轮询的端口队列具体是指当前监控周期到达时开始轮询的端口队列。端口队列的缓存状态具体是指端口队列中所缓存的报文存储量的状态,比如,缓存状态为空、缓存状态未满(也即未堵塞)、缓存状态已满(存在堵塞的风险)等。本实施例中,具体通过预设的缓存状态条件用以判断非正常缓存状态,若满足该预设条件,则为非正常缓存状态;反之,若不满足,则为正常缓存状态,此时将继续等待下一监控周期的到达。

优选地,为便于及时甚至提前监控端口队列堵塞,将非正常缓存状态确定为存在堵塞风险的状态,也即将要进入堵塞时的缓存状态。因此,针对上述所确定的非正常缓存状态,相对应确定预设的缓存状态条件,该条件具体根据实际需要进行设置,比如该条件可以为端口队列的缓存大小。因此,在当前轮询的端口队列的缓存状态满足上述对应的预设条件时,至少可以确定当前轮询的端口队列存在堵塞风险。

步骤S120,当所述端口队列的缓存状态满足所述非正常缓存状态条件时,确定所述端口队列的第一发送状态是否满足预设的非正常发送状态条件;

当轮询的端口队列的缓存状态满足上述预设的非正常缓存状态条件时,也即在至少可以确定当前轮询的端口队列存在堵塞风险时,需要进一步确定 是否确实存在堵塞,也即通过端口队列的第一发送状态是否满足预设的非正常发送状态条件来进行判定。

本实施例中,端口队列的发送状态(第一发送状态仅仅只是命名区别)具体通过预设的非正常发送状态条件进行判断,若满足该预设条件,则为非正常发送状态;反之,若不满足,则为正常发送状态,此时将继续等待下一监控周期的到达。

优选地,为便于准确监控端口队列堵塞,将非正常发送状态确定为没有发送报文的状态。因此,针对上述所确定的非正常发送状态,相应确定预设的发送状态条件,该条件具体根据实际需要进行设置,比如该条件可以为端口队列的报文计数。因此,在当前轮询的端口队列的发送状态满足上述对应的预设条件时,基本上可以确定当前轮询的端口队列存在堵塞。

步骤S130,当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长预设延迟时长以确定所述端口队列的第二发送状态是否满足所述非正常发送状态条件;

步骤S140,当所述端口队列的第二发送状态满足所述非正常发送状态条件时,确定所述端口队列存在堵塞。

当轮询的端口队列的第一发送状态满足预设的非正常发送状态条件时,此时可能会存在对端口队列堵塞的误判,比如,可能存在报文在监控周期到达的临界时刻进入端口队列,但报文此时尚未从端口队列发送出去,因而没有对该报文进行计数,从而导致误判。

因此,基于上述可能存在的端口堵塞的误判情况,本实施例中,通过将当前监控周期延长预设延迟时长,从而再次进一步精确确定当前轮询的端口队列的发送状态(第二发送状态仅仅只是命名区别)是否满足预设的非正常发送状态条件,如果再一次满足预设的非正常发送状态条件,则可以准确确定当前轮询的端口队列的发送状态为没有发送报文,也即确定当前轮询的端口队列存在堵塞;反之,确定当前轮询的端口队列不存在堵塞,此时将继续等待下一监控周期的到达。

本实施例中,通过周期轮询的方式对所有端口队列堵塞进行监控,从而能够更为精细地将端口队列堵塞问题锁定在某个或某些个端口队列,进而只需有针对性地对锁定的端口队列进行恢复操作而避免对其他正常端口队列的 影响。此外,通过监控端口队列的缓存状态,可以及时甚至于提前确定端口队列是否存在潜在的堵塞风险,同时,进一步通过监控端口队列的发送状态以确定当前是否存在堵塞。另外,在监控端口队列的发送状态时,为排除对发送状态的误判,通过延时的方式以进一步确定当前端口队列是否存在堵塞,从而进一步提高对端口队列堵塞判断的准确性,从而能够更为及时准确确定存在堵塞的端口队列,进而及时处理发生堵塞的端口队列,降低端口队列堵塞所带来的负面影响。

参照图2,图2为图1中步骤S110的细化流程示意图。基于上述实施例,在本实施例中,上述步骤S110包括:

步骤S1101,在当前所述监控周期到达时,获取所述端口队列的实时深度值,其中,所述深度值用于衡量端口队列中所缓存的报文存储量;

步骤S1102,判断所述端口队列的实时深度值是否大于或等于预设深度阈值以对应确定所述端口队列的缓存状态是否满足所述非正常缓存状态条件;

步骤S1103,当所述端口队列的实时深度值大于或等于所述深度阈值时,确定所述端口队列的缓存状态为所述非正常缓存状态。

本实施例中,端口队列的深度值用于衡量端口队列中所缓存的报文存储量,也即通过获取端口队列的实时深度值,并将端口队列的实时深度值与预设深度阈值进行比较,从而用以判断端口队列的缓存状态,也即判断端口队列中是否缓存了一定数量的待发送的报文。

需要说明的是,预设深度阈值必须小于端口队列缓存,否则当端口队列堵塞时,由于端口队列的实时深度值不会超过预设深度阈值,因而最终无法正确判断端口队列是否堵塞。同时,预设深度阈值也不能设置太大,否则当端口队列堵塞时不能被及时快速监控到,从而造成流量中断的时间过长。因此,本实施例中,预设深度阈值具体根据实际情况进行设置,比如设置为千字节级。另外,需要进一步说明的是,一般路由器上的所有端口的端口队列缓存都为默认分配,且默认分配的缓存大小相同,因此,对于路由器上的多个端口队列来说,仅只需设置一个预设深度阈值即可。

本实施例中,非正常缓存状态条件优选为端口队列的实时深度值大于或等于预设深度阈值。如果端口队列的实时深度值小于预设深度阈值,则端口 队列为正常缓存状态,也即端口队列未堵塞;反之,如果实时深度值大于或等于预设深度阈值,说明端口队列缓存的报文的存储量超过了预设的深度阈值,也即端口队列为非正常缓存状态,端口队列存在堵塞的风险。通过预设深度阈值的设置,从而可以及时监控到是否存在端口队列堵塞的风险,进而能够及时对存在堵塞风险的端口队列进行干预,最大限度降低端口堵塞所造成的影响。

参照图3,图3为图1中步骤S120的细化流程示意图。基于上述实施例,在本实施例中,步骤S120包括:

步骤S1201,当所述端口队列的缓存状态满足所述非正常缓存状态条件时,获取在当前所述监控周期内以及在上一所述监控周期内所述端口队列分别对应发送的第一报文计数与第二报文计数,其中,所述报文计数采用高位与低位双计数器进行计数;

当确定了当前轮询的端口队列的缓存状态满足所述非正常缓存状态条件时,也即确定当前轮询的端口队列存在堵塞的风险时,需要进一步确定是否确实存在端口队列堵塞,也即进一步判断当前轮询的端口队列的发送状态是否满足预设的非正常发送状态条件。

本实施例中,非正常发送状态优选为相邻两监控周期内所发送的报文计数相等,也即在相邻两监控周期内没有发送报文。该相邻的两监控周期具体是指当前监控周期与当前监控周期的上一监控周期。具体通过以非读清方式,从预设的用于统计报文计数的双计数器上读取当前监控周期内发送的第一报文计数(假设为s1)以及上一个监控周期内发送的第二报文计数(假设为s0)。其中,非读清方式是指在读取计数数据时不对计数数据进行清零操作。

本实施例中,对于支持端口队列发送报文计数的TM芯片,通过用于统计报文计数的双计数器,直接获取TM芯片硬件提供的端口队列发送报文计数;而对于不支持端口队列发送报文计数的TM芯片,由于所有端口队列的报文都是直接发送至接口子卡上的对应端口,因此本实施例鉴于上述特征,可选的,通过用于统计报文计数的双计数器,获取与端口队列相对应的接口子卡上对应端口所接收到的报文计数,也即将此计数作为端口队列发送报文计数。

可选的,鉴于现有使用单计数器存在短时间内相邻两次发送报文计数溢出翻转的问题,因此为更准确地判断相邻两次监控周期内发送的报文计数是否相等,优选采用高位与低位双计数器进行报文计数。

端口队列发送报文计数使用的计数器位宽越大,在一个监控周期内发送报文计数溢出翻转的可能性越小,同时计数的比较就越精确。为了准确比较端口队列发送报文计数,本实施例具体使用高位、低位双计数器对端口队列发送报文进行计数。例如,使用8位双计数器时,双计数器分别是高8位、低8位计数;使用16位双计数器时,双计数器分别是高16位、低16位计数;使用32位双计数器时,双计数器分别是高32位、低32位计数。当低位计数器满时,高位计数器计数加1,低位计数器计数清零;当高位计数器满时,高位计数器清零。

步骤S1202,比较所述第一报文计数的高位及低位是否分别对应与所述第二报文计数的高位及低位相等以对应确定所述端口队列的第一发送状态是否满足所述非正常发送状态条件;

步骤S1203,当所述第一报文计数的高位及低位分别对应与所述第二报文计数的高位及低位相等时,确定所述端口队列的第一发送状态为所述非正常发送状态。

当获取到当前监控周期内发送的第一报文计数s1以及上一个监控周期内发送的第二报文计数s0后,将s1与s0进行比较,用以判断端口队列的发送状态,即确定端口队列是否在发送报文,若端口队列在发送报文,则为正常发送状态,反之,则为非正常发送状态。

为了避免由于报文计数溢出翻转所带来的误判影响,因此本实施例中不比较s1与s0的大小,而是优选比较s1与s0是否相等。由于本实施例中的报文计数采用高位与低位双计数器进行计数,因此,需要分别对应比较s1与s0的高位或低位是否相等:如果s1与s0分别对应的高位不相等和/或低位不相等,则说明端口队列在相邻两次计数时间内发送了报文;如果s1与s0分别对应的高位相等且低位相等,则说明端口队列在相邻两次计数时间内没有发送报文。

本实施例中,非正常发送状态条件优选为端口队列在相邻两次计数时间内没有发送报文,也即在相邻两监控周期内没有发送报文。通过对端口队列 的缓存状态进行判断,从而锁定存在堵塞风险的端口队列;而通过对端口队列的发送状态进行判断,从而进一步精确确定存在堵塞的端口队列。本实施例所采用的缓存状态及发送状态双层递进式监控机制能够更为及时、准确地锁定存在堵塞的端口队列,进而能够及时进行干预,从而最大限度降低由于端口队列堵塞所造成的影响。

此外,本实施例中使用高位、低位双计数器对端口队列发送报文进行计数,解决了使用单计数器存在短时间内相邻两次发送报文计数而产生溢出翻转的问题,从而能够更准确地判断相邻两次发送报文计数是否相等。同时,本实施例中通过获取接口子卡对应端口的接收报文计数,将此计数作为端口队列发送报文计数,从而解决了TM芯片硬件不支持端口队列发送报文计数时无法判断端口队列发送状态的问题。另外,优选将s1与s0分别对应作为当前监控周期内发送的报文计数以及上一监控周期内发送的报文计数的参数,则在当前监控周期结束时,将s1的计数赋给s0以用于下一个监控周期进行发送报文计数的比较。

参照图4,图4为图1中步骤S130的细化流程示意图。基于上述实施例,在本实施例中,步骤S130包括:

步骤S1301,当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长所述延迟时长;

当轮询的端口队列的发送状态满足非正常发送状态条件时,也即端口队列在相邻两监控周期内没有发送报文时,此时并不能确定端口队列已经发生堵塞而不能发送报文,例如,当报文在监控周期到达的临界时刻进入端口队列时,报文此时尚未从端口队列发送出去(也即计数器此时并不计数),因此,可能会造成当前监控周期内发送报文计数s1与上一个监控周期内发送报文计数s0相等,也即判断端口队列未发送报文,而若端口队列未堵塞,但得到端口队列未发送报文的判断结果,则导致产生相邻两监控周期内没有发送报文的误判。

本实施例中,基于上述可能出现的端口队列堵塞的误判问题,引入延迟时长T1以进行计数后再进行相邻两监控周期报文计数的比较。其中,引入的延迟时长T1必须小于端口队列的监控周期T0,否则在延迟时长T1到达且获 取端口队列发送报文计数后,此时时间已到了下一个监控周期,而不是在当前监控周期,从而无法保证在同一个监控周期内比较发送报文计数。

此外,优选的,端口队列延迟时长T1与监控周期T0内所轮询的端口数目N的乘积必须小于端口队列监控周期T0,否则如果N个端口都依次延时T1,则至少存在一个端口在获取端口队列发送报文计数后,时间已到了下一个监控周期,而不是在当前监控周期,从而无法保证在同一个监控周期内比较发送报文计数。

步骤S1302,当所述延迟时长到达时,获取在上一所述监控周期及所述延迟时长内所述端口队列总共所发送的第三报文计数;

步骤S1303,比较所述第一报文计数的高位及低位是否分别对应与所述第三报文计数的高位及低位相等以对应确定所述端口队列的第二发送状态满足所述非正常发送状态条件;

步骤S1304,当所述第一报文计数的高位及低位分别对应与所述第三报文计数的高位及低位相等时,确定所述端口队列的第二发送状态为所述非正常发送状态。

当预设的延迟时长到达时,将以非读清方式,读取与端口队列相对应的接口子卡上对应端口所接收到的报文计数,此时统计的第三报文计数s2具体为上一监控周期内发送报文计数s1与延迟时长内发送报文计数之和,通过比较s1与s2的高位及低位是否分别对应相等,也即确定延迟时长内发送报文计数是否为零,从而对之前的判断结果做进一步地确定以避免对端口队列堵塞的误判。若经过延时处理后,端口队列的发送状态仍然满足预设的非正常发送状态条件,也即仍然确定没有发送报文,则可以准确确定当前轮询的端口队列存在堵塞。

本实施例中,为避免报文在监控周期到达的临界时刻进入端口队列所造成的误判断,通过引入延时计数以对该延长时间内的发送状态做进一步判断,从而实现精确锁定存在堵塞的端口队列,提高了对端口队列存在堵塞的判断的准确性。

参照图5,图5为本发明端口队列堵塞的监控方法第二实施例的流程示意图。本实施例中,在步骤S140之后包括:

步骤S210,当监测到所述端口队列存在堵塞时,关闭所述端口队列;

步骤S220,清空所述端口队列内所缓存的报文且保留用于复位所述端口队列所需要的相关配置参数;

步骤S230,根据保留的所述相关配置参数,复位所述端口队列以恢复到所述端口队列未发送报文时所对应的初始状态;

步骤S240,当所述端口队列恢复到所述初始状态后,使能所述端口队列以开启所述端口队列进行报文的发送。

本实施例中,当监测到轮询的端口队列存在堵塞时,关闭该端口队列以使报文不能进入端口队列。同时,清空该端口队列中缓存的所有报文但保留用于复位该端口队列所需要的相关配置参数,比如端口队列中对于报文调度的优先级、权重;报文发送的限速策略等。

在清空完堵塞端口队列中缓存的报文且保留下用于复位该端口队列所需要的相关配置参数后,将根据保留的相关配置参数,复位该端口队列以恢复到该端口队列未发送报文时所对应的初始状态,并通过使能方式激活该端口队列,从而再次开启该端口队列进行报文的发送。

现网电信级路由器端口队列堵塞后,常用的处理方法一般为:一是插拔或重启堵塞的端口队列对应的接口子卡,负面影响是造成所插拔的接口子卡对应的正常端口数十秒级的流量中断;二是插拔或重启线卡,负面影响是造成线卡所有正常端口数分钟级别的流量中断。上述对接口子卡和线卡的插拔和重启操作都将造成其他正常端口队列长时间流量中断。

本实施例中,通过周期性监控端口队列的缓存与发送状态,在监测到端口队列堵塞时,仅对堵塞的端口队列进行恢复处理,从而避免了对接口子卡和线卡的插拔和重启操作,将用户流量中断时间由数十秒级、数分钟级降低至秒级,同时也减小了端口队列堵塞故障的影响范围,提高了电信级路由器的稳定性。

参照图6,图6为本发明端口队列堵塞的监控方法第三实施例的流程示意图。本实施例中,在步骤S110之前包括:

步骤S001,创建端口队列的监控线程并在预设的所述监控周期内,对所述路由器上的所有端口进行端口队列堵塞的轮询监控。

本实施例中,在路由器启动且创建端口队列后,开始进行端口队列的报文发送时,相应创建端口队列的监控线程,同时也相应设置该监控线程对所有端口进行端口队列堵塞的轮询监控的监控周期,以及设置用于确定端口队列缓存状态的深度阈值和设置用于进一步确定端口队列发送状态的延迟时长。

本实施例通过创建端口队列的监控线程以及采用轮询监控的方式,实现了实时对所有端口队列堵塞的监控,从而能够更为及时准确地确定存在堵塞的端口队列,并为有针对性地解决堵塞的端口队列,从而减小端口队列堵塞故障的影响范围并降低用户流量的中断时间提供了有效的解决途径。

参照图7,图7为本发明端口队列堵塞的监控系统第一实施例的功能模块示意图。本实施例中,所述端口队列堵塞的监控系统包括:

缓存状态确定模块10,用于在当前监控周期到达时,确定当前轮询的端口队列的缓存状态是否满足预设的非正常缓存状态条件;

在当前监控周期到达时,也即开始对路由器上所有端口中的某一端口进行轮询监控时,缓存状态确定模块10确定当前轮询的端口队列的缓存状态是否满足预设的非正常缓存状态条件。本实施例中,当前轮询的端口队列具体是指当前监控周期到达时开始轮询的端口队列。端口队列的缓存状态具体是指端口队列中所缓存的报文存储量的状态,比如,缓存状态为空、缓存状态未满(也即未堵塞)、缓存状态已满(也即存在堵塞的风险)等。本实施例中,具体通过预设的缓存状态条件用以判断非正常缓存状态,若满足该预设条件,则为非正常缓存状态;反之,若不满足,则为正常缓存状态,此时将继续等待下一监控周期的到达。

优选地,为便于及时甚至提前监控端口队列堵塞,将非正常缓存状态确定为存在堵塞风险的状态,也即将要进入堵塞时的缓存状态。因此,针对上述所确定的非正常缓存状态,相对应确定预设的缓存状态条件,该条件具体根据实际需要进行设置,比如该条件可以为端口队列的缓存大小或者接收到的报文量的大小等。因此,在当前轮询的端口队列的缓存状态满足上述对应的预设条件时,至少可以确定当前轮询的端口队列存在堵塞风险。

第一发送状态确定模块20,用于当所述端口队列的缓存状态满足所述非 正常缓存状态条件时,确定所述端口队列的第一发送状态是否满足预设的非正常发送状态条件;

当轮询的端口队列的缓存状态满足上述预设的非正常缓存状态条件时,也即在至少可以确定当前轮询的端口队列存在堵塞风险时,第一发送状态确定模块20需要进一步确定是否确实存在堵塞,也即通过端口队列的第一发送状态是否满足预设的非正常发送状态条件来进行判定。

本实施例中,端口队列的发送状态(第一发送状态仅仅只是命名区别)具体通过预设的非正常发送状态条件进行判断,若满足该预设条件,则为非正常发送状态;反之,若不满足,则为正常发送状态,此时将继续等待下一监控周期的到达。

优选地,为便于准确监控端口队列堵塞,将非正常发送状态确定为没有发送报文的状态。因此,针对上述所确定的非正常发送状态,相应确定预设的发送状态条件,该条件具体根据实际需要进行设置,比如该条件可以为端口队列的报文计数或者单位时间内发送的报文数等。因此,在当前轮询的端口队列的发送状态满足上述对应的预设条件时,基本上可以确定当前轮询的端口队列存在堵塞。

第二发送状态确定模块30,用于当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长预设延迟时长以确定所述端口队列的第二发送状态是否满足所述非正常发送状态条件;

堵塞确定模块40,用于当所述端口队列的第二发送状态满足所述非正常发送状态条件时,确定所述端口队列存在堵塞。

当轮询的端口队列的第一发送状态满足预设的非正常发送状态条件时,此时可能会存在对端口队列堵塞的误判,比如,可能存在报文在监控周期到达的临界时刻进入端口队列,但报文此时尚未从端口队列发送出去,因而没有对该报文进行计数,从而导致误判。

因此,基于上述可能存在的端口堵塞的误判情况,本实施例中,第二发送状态确定模块30通过将当前监控周期延长预设延迟时长,从而再次进一步精确确定当前轮询的端口队列的发送状态(第二发送状态仅仅只是命名区别)是否满足预设的非正常发送状态条件,如果再一次满足预设的非正常发送状态条件,则堵塞确定模块40可以准确确定当前轮询的端口队列的发送状态为 没有发送报文,也即确定当前轮询的端口队列存在堵塞;反之,确定当前轮询的端口队列不存在堵塞,此时将继续等待下一监控周期的到达。

本实施例中,通过周期轮询的方式对所有端口队列堵塞进行监控,从而能够更为精细地将端口队列堵塞问题锁定在某个或某些个端口队列,进而只需有针对性地对锁定的端口队列进行恢复操作而避免对其他正常端口队列的影响。此外,通过监控端口队列的缓存状态,可以及时甚至于提前确定端口队列是否存在潜在的堵塞风险,同时,进一步通过监控端口队列的发送状态以确定当前是否存在堵塞。另外,在监控端口队列的发送状态时,为排除对发送状态的误判,通过延时的方式以进一步确定当前端口队列是否存在堵塞,从而进一步提高对端口队列堵塞判断的准确性,从而能够更为及时准确确定存在堵塞的端口队列,进而及时处理发生堵塞的端口队列,降低端口队列堵塞所带来的负面影响。

参照图8,图8为图7中缓存状态确定模块的细化功能模块示意图。基于上述实施例,本实施例中,所述缓存状态确定模块10包括:

深度值获取单元101,用于在当前所述监控周期到达时,获取所述端口队列的实时深度值,其中,所述深度值用于衡量端口队列的缓存大小;

深度值判断单元102,用于判断所述端口队列的实时深度值是否大于或等于预设深度阈值以对应确定所述端口队列的缓存状态是否满足所述非正常缓存状态条件;

缓存状态确定单元103,用于当所述端口队列的实时深度值大于或等于所述深度阈值时,确定所述端口队列的缓存状态为所述非正常缓存状态。

本实施例中,端口队列的深度值用于衡量端口队列中所缓存的报文存储量,也即通过深度值获取单元101获取端口队列的实时深度值,深度值判断单元102将端口队列的实时深度值与预设深度阈值进行比较,从而用以判断端口队列的缓存状态,也即判断端口队列中是否缓存了一定数量的待发送的报文。而如果端口队列的实时深度值大于或等于所述深度阈值,缓存状态确定单元103确定端口队列的缓存状态满足非正常缓存状态条件。

需要说明的是,预设深度阈值必须小于端口队列缓存,否则当端口队列堵塞时,由于端口队列的实时深度值不会超过预设深度阈值,因而最终无法 正确判断端口队列是否堵塞。同时,预设深度阈值也不能设置太大,否则当端口队列堵塞时不能被及时快速监控到,从而造成流量中断的时间过长。因此,本实施例中,预设深度阈值具体根据实际情况进行设置,比如设置为千字节级。另外,需要进一步说明的是,一般路由器上的所有端口的端口队列缓存都为默认分配,且默认分配的缓存大小相同,因此,对于路由器上的多个端口队列来说,仅只需设置一个预设深度阈值即可。

本实施例中,非正常缓存状态条件优选为端口队列的实时深度值大于或等于预设深度阈值。如果端口队列的实时深度值小于预设深度阈值,则说明端口队列为正常缓存状态,也即端口队列未堵塞;反之,如果实时深度值大于或等于预设深度阈值,说明端口队列缓存的报文的存储量超过了预设的深度阈值,从而使得端口队列存在堵塞的风险,也即端口队列为非正常缓存状态。通过预设深度阈值的设置,从而可以及时监控到是否存在端口队列堵塞的风险,进而能够及时对存在堵塞风险的端口队列进行干预,最大限度降低端口堵塞所造成的影响。

参照图9,图9为图7中第一发送状态确定模块的细化功能模块示意图。基于上述实施例,本实施例中,所述第一发送状态确定模块20包括:

报文计数第一获取单元201,用于当所述端口队列的缓存状态满足所述非正常缓存状态条件时,获取在当前所述监控周期内以及在上一所述监控周期内所述端口队列分别对应发送的第一报文计数与第二报文计数,其中,所述报文计数采用高位与低位双计数器进行计数;

当确定了当前轮询的端口队列的缓存状态满足所述非正常缓存状态条件时,也即确定当前轮询的端口队列存在堵塞的风险时,需要进一步确定是否确实存在端口队列堵塞,也即进一步判断当前轮询的端口队列的发送状态是否满足预设的非正常发送状态条件。

本实施例中,非正常发送状态优选为相邻两监控周期内所发送的报文计数相等,也即在相邻两监控周期内没有发送报文。该相邻的两监控周期具体是指当前监控周期与当前监控周期的上一监控周期。具体通过报文计数第一获取单元201以非读清方式,从预设的用于统计报文计数的双计数器上读取当前监控周期内发送的第一报文计数(假设为s1)以及上一个监控周期内发 送的第二报文计数(假设为s0)。其中,非读清方式是指在读取计数数据时不对计数数据进行清零操作。

本实施例中,对于支持端口队列发送报文计数的TM芯片,通过用于统计报文计数的双计数器,直接获取TM芯片硬件提供的端口队列发送报文计数;而对于不支持端口队列发送报文计数的TM芯片,由于所有端口队列的报文都是直接发送至接口子卡上的对应端口,因此本实施例鉴于上述特征,可选的,通过用于统计报文计数的双计数器,获取与端口队列相对应的接口子卡上对应端口所接收到的报文计数,也即将此计数作为端口队列发送报文计数。

可选的,鉴于现有使用单计数器存在短时间内相邻两次发送报文计数溢出翻转的问题,因此为更准确地判断相邻两次监控周期内发送的报文计数是否相等,优选采用高位与低位双计数器进行报文计数。

端口队列发送报文计数使用的计数器位宽越大,在一个监控周期内发送报文计数溢出翻转的可能性越小,同时计数的比较就越精确。为了准确比较端口队列发送报文计数,本实施例具体使用高位、低位双计数器对端口队列发送报文进行计数。例如,使用8位双计数器时,双计数器分别是高8位、低8位计数;使用16位双计数器时,双计数器分别是高16位、低16位计数;使用32位双计数器时,双计数器分别是高32位、低32位计数。当低位计数器满时,高位计数器计数加1,低位计数器计数清零;当高位计数器满时,高位计数器清零。

报文计数第一比较单元202,用于比较所述第一报文计数的高位及低位是否分别对应与所述第二报文计数的高位及低位相等以对应确定所述端口队列的第一发送状态是否满足所述非正常发送状态条件;

第一发送状态确定单元203,用于当所述第一报文计数的高位及低位分别对应与所述第二报文计数的高位及低位相等时,确定所述端口队列的第一发送状态为所述非正常发送状态。

当获取到当前监控周期内发送的第一报文计数s1以及上一个监控周期内发送的第二报文计数s0后,报文计数第一比较单元202将s1与s0进行比较,用以判断端口队列的发送状态,即确定端口队列是否在发送报文,若端口队列在发送报文,则为正常发送状态,反之,则为非正常发送状态。

为了避免由于报文计数溢出翻转所带来的误判影响,因此本实施例中不比较s1与s0的大小,而是优选比较s1与s0是否相等。由于本实施例中的报文计数采用高位与低位双计数器进行计数,因此,需要分别对应比较s1与s0的高位或低位是否相等:如果s1与s0分别对应的高位不相等和/或低位不相等,则说明端口队列在相邻两次计数时间内发送了报文;如果s1与s0分别对应的高位相等且低位相等,则第一发送状态确定单元203确定端口队列在相邻两次计数时间内没有发送报文。

本实施例中,非正常发送状态条件优选为端口队列在相邻两次计数时间内没有发送报文,也即在相邻两监控周期内没有发送报文。通过对端口队列的缓存状态进行判断,从而锁定存在堵塞风险的端口队列;而通过对端口队列的发送状态进行判断,从而进一步精确确定存在堵塞的端口队列。本实施例所采用的缓存状态及发送状态双层递进式监控机制能够更为及时、准确地锁定存在堵塞的端口队列,进而能够及时进行干预,从而最大限度降低由于端口队列堵塞所造成的影响。

此外,本实施例中使用高位、低位双计数器对端口队列发送报文进行计数,解决了使用单计数器存在短时间内相邻两次发送报文计数而产生溢出翻转的问题,从而能够更准确地判断相邻两次发送报文计数是否相等。同时,本实施例中通过获取接口子卡对应端口的接收报文计数,将此计数作为端口队列发送报文计数,从而解决了TM芯片硬件不支持端口队列发送报文计数时无法判断端口队列发送状态的问题。

参照图10,图10为图7中第二发送状态确定模块的细化功能模块示意图。基于上述实施例,本实施例中,所述第二发送状态确定模块30包括:

延时单元301,用于当所述端口队列的第一发送状态满足所述非正常发送状态条件时,将当前所述监控周期延长所述延迟时长;

当轮询的端口队列的发送状态满足非正常发送状态条件时,也即端口队列在相邻两监控周期内没有发送报文时,此时并不能确定端口队列已经发生堵塞而不能发送报文,例如,当报文在监控周期到达的临界时刻进入端口队列时,报文此时尚未从端口队列发送出去(也即计数器此时并不计数),因此,可能会造成当前监控周期内发送报文计数s1与上一个监控周期内发送报文计 数s0相等,也即判断端口队列未发送报文,而若端口队列未堵塞,但得到端口队列未发送报文的判断结果,则导致产生相邻两监控周期内没有发送报文的误判。

本实施例中,基于上述可能出现的端口队列堵塞的误判问题,延时单元301延迟时长T1以进行计数后再进行相邻两监控周期报文计数的比较。其中,引入的延迟时长T1必须小于端口队列的监控周期T0,否则在延迟时长T1到达且获取端口队列发送报文计数后,此时时间已到了下一个监控周期,而不是在当前监控周期,从而无法保证在同一个监控周期内比较发送报文计数。

此外,优选的,端口队列延迟时长T1与监控周期T0内所轮询的端口数目N的乘积必须小于端口队列监控周期T0,否则如果N个端口都依次延时T1,则至少存在一个端口在获取端口队列发送报文计数后,时间已到了下一个监控周期,而不是在当前监控周期,从而无法保证在同一个监控周期内比较发送报文计数。

报文计数第二获取单元302,用于当所述延迟时长到达时,获取在上一所述监控周期及所述延迟时长内所述端口队列总共所发送的第三报文计数;

报文计数第二比较单元303,用于比较所述第一报文计数的高位及低位是否分别对应与所述第三报文计数的高位及低位相等以对应确定所述端口队列的第二发送状态满足所述非正常发送状态条件;

第二发送状态确定单元304,用于当所述第一报文计数的高位及低位分别对应与所述第三报文计数的高位及低位相等时,确定所述端口队列的第二发送状态为所述非正常发送状态。

当预设的延迟时长到达时,报文计数第二获取单元302将以非读清方式,读取与端口队列相对应的接口子卡上对应端口所接收到的报文计数,此时统计的第三报文计数s2具体为上一监控周期内发送报文计数s1与延迟时长内发送报文计数之和,报文计数第二比较单元303通过比较s1与s2的高位及低位是否分别对应相等,也即确定延迟时长内发送报文计数是否为零,从而对之前的判断结果做进一步地确定以避免对端口队列堵塞的误判。若经过延时处理后,端口队列的发送状态仍然满足预设的非正常发送状态条件,也即仍然确定没有发送报文,则第二发送状态确定单元304可以准确确定当前轮询的端口队列存在堵塞。

本实施例中,为避免报文在监控周期到达的临界时刻进入端口队列所造成的误判断,通过引入延时计数以对该延长时间内的发送状态做进一步判断,从而实现精确锁定存在堵塞的端口队列,提高了对端口队列存在堵塞的判断的准确性。

参照图11,图11为本发明端口队列堵塞的监控系统第二实施例的功能模块示意图。本实施例中,所述端口队列堵塞的监控系统还包括:

端口队列关闭模块50,用于当监测到所述端口队列存在堵塞时,关闭所述端口队列;

缓存报文清空模块60,用于清空所述端口队列内所缓存的报文且保留用于复位所述端口队列所需要的相关配置参数;

端口队列复位模块70,用于根据保留的所述相关配置参数,复位所述端口队列以恢复到所述端口队列未发送报文时所对应的初始状态;

端口队列使能模块80,用于当所述端口队列恢复到所述初始状态后,使能所述端口队列以开启所述端口队列进行报文的发送。

本实施例中,当监测到轮询的端口队列存在堵塞时,端口队列关闭模块50关闭该端口队列以使报文不能进入端口队列。同时,缓存报文清空模块60清空该端口队列中缓存的所有报文但保留用于复位该端口队列所需要的相关配置参数,比如端口队列中对于报文调度的优先级、权重;报文发送的限速策略等。

在清空完堵塞端口队列中缓存的报文且保留下用于复位该端口队列所需要的相关配置参数后,端口队列复位模块70将根据保留的相关配置参数,复位该端口队列以恢复到该端口队列未发送报文时所对应的初始状态,端口队列使能模块80通过使能方式激活该端口队列,从而再次开启该端口队列进行报文的发送。

现网电信级路由器端口队列堵塞后,常用的处理方法一般为:一是插拔或重启堵塞的端口队列对应的接口子卡,负面影响是造成所插拔的接口子卡对应的正常端口数十秒级的流量中断;二是插拔或重启线卡,负面影响是造成线卡所有正常端口数分钟级别的流量中断。上述对接口子卡和线卡的插拔和重启操作都将造成其他正常端口队列长时间流量中断。

本实施例中,通过周期性监控端口队列的缓存与发送状态,在监测到端口队列堵塞时,仅对堵塞的端口队列进行恢复处理,从而避免了对接口子卡和线卡的插拔和重启操作,将用户流量中断时间由数十秒级、数分钟级降低至秒级,同时也减小了端口队列堵塞故障的影响范围,提高了电信级路由器的稳定性。

参照图12,图12为本发明端口队列堵塞的监控系统第三实施例的功能模块示意图。本实施例中,所述端口队列堵塞的监控系统还包括:

监控线程创建模块90,用于创建端口队列的监控线程并在预设的所述监控周期内,对所述路由器上的所有端口进行端口队列堵塞的轮询监控。

本实施例中,在路由器启动且创建端口队列后开始进行端口队列的报文发送时,监控线程创建模块90相应创建端口队列的监控线程,同时监控线程创建模块90也相应设置该监控线程对所有端口进行端口队列堵塞的轮询监控的监控周期,以及设置用于确定端口队列缓存状态的深度阈值和设置用于进一步确定端口队列发送状态的延迟时长。

本实施例通过创建端口队列的监控线程以及采用轮询监控的方式,实现了实时对所有端口队列堵塞的监控,从而能够更为及时准确地确定存在堵塞的端口队列,并为有针对性地解决堵塞的端口队列,从而减小端口队列堵塞故障的影响范围并降低用户流量的中断时间提供了有效的解决途径。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1