一种计算机网络数据包转发的队列管理方法

文档序号:7969554阅读:225来源:国知局
专利名称:一种计算机网络数据包转发的队列管理方法
技术领域
本发明涉及计算机网络通信,具体涉及一种互联网协议IP网络中为实 现服务质量保证而提高转发效率和速度的队列管理方法。
背景技术
随着互联网的迅速发展,网络提供的业务功能日趋完善,网络的服务质 量成为网络运营商,网络设备制造商以及网络用户关注的重点,也是开发人 员的研究热点。
研究人员已经设计出多种装置和调度算法来保证网络的服务质量,各种 装置包括拥塞避免,报文分类,拥塞管理,流量整形等,各种装置的作用体 现在服务质量保证的不同阶段,例如拥塞避免是在数据入口处对数据包进行
过滤以避免发送队列出现拥塞;报文分类是在接收到数据包后,送入队列之 前,是队列设计的基础;拥塞管理是队列调度时决定以何种方式发送队列中 的数据包;流量整形是对某一网络的某一连接的流量进行监控,以防止流量 的突发。调度方法包括公平队列Fair Queuing调度,简称FQ调度,优先级 队列Priority Queuing调度,简称PQ调度,定制队列Custom Queuing调度, 简称CQ调度,加权公平队列Weighted Fair Queuing调度,简称WFQ调度 以及基于类的加权公平队列Class Based Weighted Fair Queuing调度,简称 CBWFQ调度等。每种调度方法都针对不同的网络服务要求,以保证相应的 网络服务质量。例如公平队列调度给与所有的队列相同的调度机会;优先级 队列调度将数据流根据优先级进行简单分级并实施基于优先级的队列调度; 定制队列调度根据用户对资源的分配给不同的队列分配不同的调度比例;加
类的加权公平队列相当于CQ, PQ和WFQ的结合,提供了实时调度队列和 加权队列。每种调度队列都有其优点和不足,适用范围也都有一定的限制,
需要针对具体的情况进行选择。
但是现有方法中对队列的管理还没有给予特别的关注。 一般路由器中可 以允许用户配置的服务质量保证队列的数目少至几十条多至几百条,如何有 效的管理这些队列,对提高路由器的转发速度有很大的影响。另外,网络流 量都是突发性的,往往是一段时间内有持续且大量的流量经过,而其他时间 没有流量,因此对服务队列的管理和调度也不应该是一成不变的。
中国发明专利,申请号CN01117978,"—种适合实现路由器服务质量 的综合业务中的调度方法"提出一种队列管理方法。该发明专利队列管理的 主要技术内容是将数据包分类进入三种服务队列,包括尽力而为服务队列, 负载可控服务队列和保证服务队列,每种队列中可以包含多条队列,存放不 同分类的数据包;这种方法仅提供三种类型服务队列,而将队列归入所述三 种类型中,却没有进行有效的监控和管理,因此可以满足的服务质量要求也 比较少。

发明内容
本发明需要解决的技术问题是提供一种计算机网络数据包转发的队列 管理方法,在对队列进行分类的基础上,进一步管理从而提高数据包的转发 速度和效率、提供高质量的网络服务质量保证。
本发明的上述技术问题这样解决,提供一种计算机网络数据包转发的队 列管理方法,将存i文接收或发送数据包的队列进行分类,区分其中的空闲和 可用队列,包括以下对应步骤
A) 入队计算机网络节点将接收的数据包放入所属可用队列或所属空 闲队列并将其改为可用队列;所述节点定时检查所述可用队列,根据其在一 定时间内没有新的数据包被放入,则把该可用队列改为空闲队列;
B) 出队计算机网络节点根据定时器或接收的数据包触发,从所述可 用队列中调用并转发数据包。
按照本发明提供的队列管理方法,所述分类包括尽力而为服务队列,负 栽可控服务队列,优质统计复用队列,按比例统计复用队列和保证服务队列
中的一种或多种;所述分类标准可以是基于类、流或转发方式点到点或者 点到多点。
按照本发明提供的队列管理方法,所述入队步骤A)中定时检查由与每 一类对应的虚拟监控组共同独自完成,所述虚拟监控组包括尽力而为服务队 列,负载可控服务队列和保证服务队列虚拟监控组中的一种或多种。
按照本发明提供的队列管理方法,所述一定时间可以设为固定值,也可 以由用户配置。
按照本发明提供的队列管理方法,所述出队步骤B)中可用队列由与每 一类对应的虚拟监控组分别提供,所述虚拟监控组包括尽力而为服务队列, 负栽可控服务队列和保证服务队列虚拟监控组中的一种或多种。
按照本发明提供的队列管理方法,所述队列和所述分类,即虛拟监控组, 可以配置或删除。
按照本发明提供的队列管理方法,所述队列的配置包括所属分类,即虚 拟监控组,的配置。
按照本发明提供的队列管理方法,所述分类,即虚拟监控组,的删除包 括其内部队列的全部删除。
按照本发明提供的队列管理方法,所述配置包括网络流量分类和带宽申 请或释放。
按照本发明提供的队列管理方法,所述网络流量分类包括根据数据包的 优先级进行数据包分类,或者根据数据包的源地址和目的地址进行数据包分 类,或者根据数据包的某些字段进行数据包分类。
按照本发明提供的队列管理方法,所述计算机网络节点可以是路由器; 所述队列即虚拟队列。
本发明提供的计算机网络数据包转发的队列管理方法,采用虛拟监控组 对队列进行监控和管理,虚拟监控组封存空闲队列,仅向计算机网络节点调 度模块提供可用队列,这种处理简化了调度模块的操作,提高了数据包转发 的速度和效率。
附困说明
下面结合附图和具体实施例进一步对本发明进行详细说明。

图1为本发明路由器中各模块间的关系示意图。
图2为本发明可用队列单元结构示意图。
图3为本发明路由器中虛拟监控组模块的结构及其与队列的关系示意图。
图4为本发明路由器中接口管理模块结构与虛拟监控组模块的关系示 意图。
图5为本发明实现方法中用户配置服务质量保证队列时虚拟监控组和 队列的处理流程图。
图6为本发明实现方法中数据包入队时虚拟监控组和队列的处理流程图。
图7为本发明实现方法中虚拟监控组定时对队列进行监控的处理流程图。
图8为本发明实现方法的队列调度处理流程图。
具体实施例方式
首先,说明本发明提供的计算机网络节点装置,该装置包括以下模块 收包模块,用于从物理接口接收数据包;
分类模块,用于对数据包进行分类,也就是为数据包选择合适的队列;
虚拟监控组^t块,用于对具有相同属性的某些队列进行统一管理,简化 调度过程,每个虚拟监控组中包含本虛拟监控组的优先级VCGPro,队列的 数目QueueNum,同时虚拟监控组中还包含该虚拟监控组所辖队列的收发包 统计数据,该虚拟监控组中所辖队列中待发送的数据包的总和,该虛拟监控 组所辖队列的头队列指针QueueHead,以及该虚拟监控组所辖的可用队列的 头队列指针UsableQueueHead,以及下一个虛拟监控组的指针NextVCG等;
进一步地,每个队列中都有一个空间用来记录下一个队列的指针,称为
NextQueue,在本装置中,NextQueue用来记录同属一个虚拟监控组的下一 个队列,这样就形成了 一个队列链;
进一步地,队列在队列链中的位置由用户配置该队列的时间决定,先配 置的队列会放在队列链的前面。当某个队列被用户删除,紧随其后的队列会 填补被删除的队列在队列链中的位置。
进一步地,步骤B中所述的可用队列是指当前有待发送的数据包的队 列。由于网络流量是突发性的,往往在某一段时间有持续大量的流量需要转 发,而其他时间则没有流量,所以对于当前没有待发送数据包的队列,本发 明称之为空闲队列;相反,当前有待发送数据包的队列,本发明称之为可用 队列。在每个队列中都分配一个空间用来记录该队列属于可用队列还是空闲 队列,称为QueueStatus;
进一步地,本发明中把一个队列从空闲队列变为可用队列的现象称为正 向翻转,把一个队列从可用队列变为空闲队列的现象称为反向翻转;
进一步地,本发明中把一个队列发生正向翻转后持续该状态的时间称为 可用持续时间;
进一步地,在每个队列中另设一个空间用来记录下一个可用队列的指 针,称为NextUsableQueue。也就是,如果A队列是当前可用的,B队列也 是当前可用的,但是A队列的可用持续时间比B队列大,则A队列的称为 NextUsableQueue就指向B队列。这样,某个虚拟监控组下所有可用队列就 会形成一个可用队列链;
进一步地,位于队列链头部或者可用队列链头部的队列成为头队列;
进一步地,虚拟监控组中有一个空间用来记录优先级低于本虚拟监控组 的下一个虚拟监控组的指针NextVCG,这样某接口下配置的所有虚拟监控 组可以组成一个虛拟监控组链;
接口管理模块,用于存储某个接口的收发包统计数据,接口下虚拟监控 组的配置数目VCGNum,该接口最近一次调用的虚拟监控组CurVCG,虚拟 监控组链的头指针VCGHead,该接口的带宽分配大小,该接口待发送的数 据包数目,该接口收发数据包的统计数据等;
队列模块,用于存放待发送的数据包,队列模块中包含所有根据用户的
配置所生成的队列;
调度模块,用于从队列中取出待发送的数据包,并发送该数据包,调度 模块针对用户不同的配置采用不同的调度算法;
其中,所述收包模块是网络数据包的入口,分类模块实施对数据包的分 类入队操作,队列^t块包含用户配置的所有队列,虚拟监控组;漠块是队列管 理的核心模块,实施对队列的分类监控和管理,调度模块按照用户选择的调 度方式访问虚拟监控组模块和队列模块进行调度转发;
进一步地,收包模块根据不同的物理接口类型对该接口接收到的数据包 进行处理,将数据包整合成统一的结构,方便后面模块对数据包的统一处理;
进一步地,所述分类模块可以有多种分类标准和规则,例如根据数据包 的优先级分类,或者根据数据包的目的地址和源地址分类等;
进一步地,入队是指将数据包放入所属队列中,每个队列中可能会存放 有多个数据包,新到来的数据包会放在队列的尾部,每个队列中所有数据包 按照先入先出的原则依次被调度模块调度;
进一步地,队列就是真正存储待发送数据包的队列,虚拟监控组是某些 具有相同特征队列的集合,它本身并不存储数据包,但是它对属于本虛拟监 控组的所有队列以及队列中的数据包进行管理;
进一步地,调度是指数据包的出队,调度往往是采用某种算法来决定何 时取某个队列的某个数据包。
第二,说明本发明所述队列管理方法,包括
步骤A.用户在使用服务质量保证功能之前对需要服务质量保证的网络 流量进行配置,系统根据用户的配置预先生成与各种流量类别相对应的队 列;
进一步地,用户进行服务质量保证的配置方法包括网络流量分类和带宽 申请或释放,其中网络流量分类包括根据数据包的优先级进行数据包分类, 或者根据数据包的源地址和目的地址进行数据包分类,又或者根据数据包的 某些字段进行数据包分类等;带宽申请或释放是为各个网络流量在网络某个
节点处所允许的最大带宽进行设置或删除。如果是对带宽进行设置,则要求,
该流量的带宽不能超过最大带宽;
进一步地,接口管理模块中记录了接口的带宽分配信息,如果用户申请 的带宽超过接口剩余带宽的分配能力,用户的带宽申请将会失败,用户对此 网络流量的配置也会失败,不会生成相应的队列;
进一步地,用户对服务质量保证的配置包括添加和删除两种操作;
步骤B.虚拟监控组模块根据已配置队列的服务质量要求和分类情况实 时的调整已创建的虛拟监控组的数目,并更新虚拟监控组中的各种信息;如 果用户添加了一条服务质量保证队列,则进行步骤C;如果用户删除一条服 务质量保证队列,则进行步骤D;
步骤C.虚拟监控组搜索可用队列链,搜索到该链的尾部,将用户配置 的队列添加到链尾;然后,虛拟监控组搜索队列链,搜索到该链的尾部,将 用户配置的队列链添加到队列链尾;
步骤D.虚拟监控组搜索可用队列链,查找到用户要删除的队列,从可 用队列链中删除该节点;
步骤E.收包模块从物理接口接收数据包;
步骤F.分类模块对接收的数据包进行分类,并放入相应的队列中
进一步地,分类标准可以根据数据包的优先级,或者数据报文中的某些 字段进行分类,提供基于类的服务质量保证;也可以是根据数据包的源地址, 目的地址,源端口和目的端口进行分类,提供基于流的服务质量保证;还可 以是根据目的地址和/或源地址进行分类,提供点到点或者点到多点的服务 质量保证;
步骤G.调度;^莫块通过定时器触发,或者通过收包触发,从队列中调用 并转发数据包。调度模块的调度算法可以视用户对服务质量保证的要求采用 WFQ, CQ, PQ或者FQ等算法。调度模块从虚拟监控组记录的可用队列头 队列开始访问可用队列,而不必访问空闲队列。由于队列调度算法的实现不 是本发明的重点,所以不做详细描述;
步骤H.收包模块接收到数据包,对其进行分类,确定该数据包所属的
队列,如杲该队列为空闲队列,则进行两步操作l)把该队列添加到可用 队列链的尾部,2)将数据包放入该队列中;如果该队列为可用队列,则直 接将数据包放入该队列中。
步骤I.虛拟监控组会定时检查所辖可用队列,如果某个可用队列在一 定时间内没有新的数据包到来,则判断将该队列从可用队列链中删除,并且 把该队列标注为空闲队列;
进一步地,步骤I中所述的一段时间,应根据网络具体情况而定,可以 设为固定值,也可以由用户配置,本发明中称该时间为NullTime;
最后,结合本发明在路由器中的具体实现进一步详细说明本发明方法
(-)本发明路由器,结构如图l所示,包括收包模块ll,分类模块12, CAR模块13,令牌计算模块14,虚拟监控组模块15,接口管理模块16和 调度模块17。
收包模块11,用于从物理接口接收数据包,丢弃有错误的数据包,将 有效的数据包送往分类模块。
分类模块12,用于根据用户事先配置好的分类标准对收包模块送来的 数据包进行分类,判断该数据包所对应的队列。
队列模块13,用于存储待发送的数据包,并记录该队列的下面一个队 列的指针。
虚拟监控组模块14,用于监控和管理具有相同优先级的所有队列,它 包括该虚拟监控组所辖队列的收发包统计数据,该虚拟监控组所辖队列的数 目QueueNum,该虚拟监控组中所辖队列中待发送的数据包的总和,所辖队 列的头队列指针QueueHead,所辖可用队列的头队列指针UsableQueueHead 等,虛拟监控组简化调度模块的调度过程,提高队列调度和数据包转发的速 度。
接口管理模块15,用于存储某个接口的收发包统计数据,接口下虚拟 监控组的配置数目VCGNum,该接口最近一次发包来自于哪个虚拟监控组 CurVCG,该接口的带宽分配情况,该接口待发送的数据包数目,以及所辖 第一个虛拟监控组的指针VCGHead等。
调度模块16,实施队列调度和数据包的转发。
收包模块11是服务质量保证流程的入口 ,分类模块12完成对数据包的 分类,虚拟监控组模块14和接口模块15根据用户对网络流量的配置生成, 并在流程中实时更新,队列模块13用来存储数据包,调度模块16实施对队 列的调用和数据包的转发。
t)如图2所示,队列模块13是根据用户对网络流量的分类和配置实时 生成的,待发送数据包在队列中首尾相连的排放。队列中的NextQueue指向 该队列在队列链中的下一个队列。如果一个队列是可用队列,则 NextUsableQueue是有效的,并指向该队列在可用队列链中的下一个可用队 列;如果该队列是空闲队列,则NextUsableQueue无效。QueueStatus表明一 条队列是可用队列还是空闲队列。图3中用粗虚线连接起来的是可用队列 链,用粗实线连接起来的是空闲队列链。 一个队列可能同时属于两条链中, 但是并不是复制成两份,而是通过指针来加入或者退出某个链。
G)如图4所示,接口管理模块15中记录了该接口下根据用户配置所生 成的虛拟监控组的数目VCGNum,第一个虚拟监控组的指针VCGHead,该 接口已经分配的带宽的大小,该接口所辖虚拟监控组待发送的数据包的总 和,最近被调用的虚拟监控组CurVCG,以及该接口所辖虚拟监控组收发数 据包的总和。
卿当用户配置服务质量保证队列时,虚拟监控组和队列的对应处理流 程,具体如图5所示,包括以下步骤
501) 用户对服务质量队列进行配置。
502) 判断添加队列还是删除队列。如果用户是添加队列,则跳往步骤 503,否则跳往步骤512。
503) 读取接口管理模块中的接口带宽已配置的大小,设为bandwidthl, 用户此次配置的队列的带宽bandwidth2。总带宽bandwidth = bandwidthl + bandwi她2。
504 )设物理接口的总带宽为totalband。判断bandwidth是否大于 totalband。如果是。则跳往步骤505,否则跳往步骤506。
505)由于用户配置的总带宽超过了接口带宽,禁止用户进行此次配置。
506 )判断用户此次添加的服务质量保证所属虚拟监控组是否已经生成。 是则跳往步骤5U,否则跳往步骤507。
507) 分配一个虚拟监控组空间。根据该虚拟监控组的优先级,把它插 入接口下的虚拟监控组链。
508) 判断该虚拟监控组是否优先级最高的,是,则跳往步骤409,否 则跳往步骤410。
509) 修 文接口管理模块的VCGHead为本虛拟监控組的指针。
510) 分配一个队列,将该队列放到虚拟监控组中队列链的链头,并将 该队列指针写入虚拟监控组的QueueHead。
511) 分配一个队列,将该队列放到虚拟监控组中队列链的链尾。
512) 用户删除一条队列,将该队列从虚拟监控组的队列链中删除。
513) 判断该队列是否位于队列链的头部。是,则跳往步骤514,否则 跳往步骤515。
514) 修改虚拟监控组的QueueHead为该队列的NextQueue。
515) 判断该队列是否可用队列?是,则眺往步骤516,否则跳往步骤
519。
516) 该队列是否可用队列链的头部?是,则跳往步骤518,否则跳往 步骤517。
517) 将该队列从可用队列链中删除。
518 )将虛拟监控组的QueueUsableHead更新为该可用队列的 NextUsableQueue。
519) 更新接口管理模块中该接口已分配带宽的大小。
520) 判断该虚拟监控组是否还有队列存在?是,则跳往步骤521,否 则跳往522。
521) 从接口下的虚拟监控组链中删除该虚拟监控组。
522) 完成用户配置。
節当接收数据包入队时,虚拟监控组和队列的对应处理流程,具体如图
6所示,包括以下步骤
601) 有数据包从物理接口到来。
602) 由分类模块对该数据包进行分类。
603) 判断是否有接受该数据包的队列,是,则跳往步骤604,否则跳 往步骤609。
604) 判断该数据包所属队列(记为A队列)的QueueStatus是可用还 是空闲的。如果是可用的,跳往步骤608,否则跳往步骤605。
605) 判断A队列所属虚拟监控组是否有可用队列链。是,则跳往步 骤606,否则跳往步骤607。
606) 在该虚拟监控组的可用队列链中查找到最后一个队列,记为B 队列,把B队列的NextUsableQueue更新为A队列。
607 )将该虚拟监控组的UsableQueueHead更新为A队列。
608) 将数据包放到A队列中,位于其他待发送数据包之后。
609) 将该队列从虚拟监控组的队列链中删除。
610) 直接转发该数据包。
的虚拟监控组定时对队列进行监控处理流程,具体如图7所示,包括以 下步骤
701 )定时器触发虛拟监控组对所辖队列进行触发。
702)读取接口管理模块下的VCGHead值,找到优先级最高的虚拟监 控组。
703 )检查该虛拟监控组的可用队列链的头队列。
704) 设此时系统时间是systick,用户配置的无效时间为droptick。systick - lasttick〉droptime 是,则跳往步骤705,否则跳往步骤708。
705) 判断该可用队列是可用队列的头队列?是,跳往步骤706,否则 跳往步骤707。
706) 设该队列为B队列,A队列的NextUsableQueue为C队列。将虛
拟监控组的UsableQueueHead记录为C队列。
如果该队列没有NextUsableQueue,则将虚拟监控组的UsableQueueHead清零。
707) 设该队列为B队列,前一个可用队列为A队列,A队列的 NextUsableQueue为C队列。将A队列的NextUsableQueue记录为C队列。 如果该队列没有NextUsableQueue,则将A队列的NextUsableQueue清零。
708) 判断该队列是否有NextUsableQueue。是,则跳往步骤704,否 则跳往步骤709。
709) 判断该虚拟监控组是否有NextVCG 是,则跳往步骤710,否则 跳往步骤711。
710) 检查下一个虛拟监控组。
711) 完成此次检查。
("t)本发明的实现方法的队列调度处理流程,具体如图8所示,包括以下 几个步骤
801) 调度模块受到触发。
802) 读取接口管理模块的VCGHead。
803) 判断VCGHead是否有效。是,则跳往步骤804,否则跳往步骤

804) 读取该虚拟监控组的UsableQueueHead,确定可用队列链的头队列。
805 )转发完该队列的数据包,并读取该队列的NextUsableQueue,
806) NextUsableQueue是否有效。是,则跳往步骤805,否则跳往步 骤807。
807 )读取该虚拟监控组的NextVCG。
808) 判断NextVCG是否有效,是,则跳往步骤804,否则跳往步骤
809。
809) 本次调度完毕。
图5、 6、 7和8中的虚拟队列即队列。
权利要求
1、一种计算机网络数据包转发的队列管理方法,将存放接收或发送数据包的队列进行分类,其特征在于,区分其中的空闲和可用队列,包括以下对应入队和出队步骤A)入队计算机网络节点将接收的数据包放入所属可用队列或放入所属空闲队列并将队列状态改为可用,从空闲队列链移至可用队列;所述节点定时检查所述可用队列,根据其在一定时间内没有新的数据包被放入,则把该可用队列状态改为空闲队列,从可用队列链移至空闲队列;B)出队计算机网络节点根据定时器或接收的数据包触发,从各分类所述可用队列中调用并转发数据包。
2、 根据权利要求1所述队列管理方法,其特征在于,所述分类包括 尽力而为服务队列,负栽可控服务队列,优质统计复用队列,按比例统计复 用队列和保证服务队列中的一种或多种;所述分类标准可以是基于类、流或 转发方式。
3、 根据权利要求1或2所述队列管理方法,其特征在于,所述入队 步骤A)中定时检查由与每一类对应的虚拟监控组共同独自完成,所述虚拟 监控组包括尽力而为服务队列,负载可控服务队列和保证服务队列虛拟监控 组中的一种或多种。
4、 根据权利要求1所述队列管理方法,其特征在于,所述一定时间 可以设为固定值,也可以由用户配置。
5、 根据权利要求1或2所述队列管理方法,其特征在于,所述出队 步骤B)中可用队列由与每一类对应的虚拟监控组分别提供,所述虚拟监控 组包括尽力而为服务队列,负载可控服务队列和保证服务队列虛拟监控组中 的一种或多种。
6、 根据权利要求l或2所述队列管理方法,其特征在于,所述队列 和所述分类可以配置或删除。
7、 根据权利要求6所述队列管理方法,其特征在于,所述队列的配 置包括所属分类的配置。
8、 根据权利要求6所述队列管理方法,其特征在于,所述分类的删 除包括其内部队列的全部删除。
9、 根据权利要求6所述队列管理方法,其特征在于,所述配置包括 网络流量分类和带宽申请或释放。
10、 根据权利要求9所述队列管理方法,其特征在于,所述网络流量 分类包括根据数据包的优先级进行数据包分类,或者4艮据数据包的源地址和 目的地址进行数据包分类,或者根据数据包的某些字段进行数据包分类。
全文摘要
本发明涉及一种计算机网络数据包转发的队列管理方法,将存放接收或发送数据包的队列进行分类,区分其中的空闲和可用队列,包括计算机网络节点将接收的数据包放入该节点内所属可用或空闲队列并将空闲改为可用,同时定时检查可用队列,并把一定时间内没有数据包被放入的可用队列改为空闲队列;计算机网络节点根据定时器或接收的数据包触发,从该节点内所述可用队列中调用并转发数据包。这种方法封存空闲队列,仅向计算机网络节点调度模块提供可用队列,简化了调度模块的操作,提高了数据包转发的速度和效率。
文档编号H04L12/56GK101179487SQ20061013870
公开日2008年5月14日 申请日期2006年11月10日 优先权日2006年11月10日
发明者顾颖杰 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1