采用虚拟监控组提高转发速度和效率的路由器的制作方法

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

发明内容
本发明需要解决的技术问题是如何提供一种路由器,在对队列进行分类 的基础上,进一步对分类进行管理和监控从而提高其转发数据包的速度和效 率、为用户提供高质量的网络服务质量保证。
本发明的上述技术问题这样解决,提供一种路由器,位于相邻网络之 间,包括
端口用于接收发送数据包;
存储器划分给各个队列并区分可用和空闲队列;
中心处理器依触发^f又转发所述可用队列中的数据包,所述可用队列是 指一定时间内没有新数据包的被端口接收放入的队列。
按照本发明提供的路由器,所述队列按类归为若干虚拟监控组,所述区 分由虚拟监控组监控完成。
按照本发明提供的路由器,所述虛拟监控组按类包括尽力而为服务队 列,负栽可控服务队列和保证服务队列虚拟监控组中的一种或多种;其分类 标准可以是类、流或传输方式。
按照本发明提供的路由器,所述队列和所述虚拟监控组可以配置或删
除。
按照本发明提供的路由器,所述虚拟监控组的删除包括其内队列的全部 删除。
按照本发明提供的路由器,所述队列的配置包括所属虚拟监控组的初始 配置。
按照本发明提供的路由器,所述配置包括网络流量分类和带宽申请或释放。
按照本发明提供的路由器,所述触发包括定时器或接收数据包触发,具 体由路由器调度模块完成。
按照本发明提供的路由器,所述一定时间可以设为固定值,也可以由用 户配置。
按照本发明提供的路由器,所述网络流量分类包括根据数据包的优先级 进行数据包分类,或者根据数据包的源地址和目的地址进行数据包分类,或 者根据数据包的某些字段进行数据包分类。
本发明提供的路由器,采用虚拟监控组对队列进行监控和管理,虚拟监 控组封存空闲队列,仅向计算机网络节点调度模块提供可用队列,这种处理 简化了调度模块的操作,提高了数据包转发的速度和效率。


下面结合附图和具体实施例进一步对本发明进行详细说明。 图1为本发明路由器中各模块间的关系示意图。
图2为本发明可用队列单元结构示意图。
图3为本发明路由器中虛拟监控组模块的结构及其与队列的关系示意图。
图4为本发明路由器中接口管理模块结构与虛拟监控组模块的关系示 意图。
图5为本发明实现方法中用户配置服务质量保证队列时虛拟监控組和队列的处理流程图。
图6为本发明实现方法中数据包入队时虛拟监控组和队列的处理流程图。
图7为本发明实现方法中虛拟监控组定时对队列进行监控的处理流程图。
图8为本发明实现方法的队列调度处理流程图。
具体实施例方式
首先,说明本发明提供的计算机网络节点装置,该装置包括以下模块 收包模块,用于从物理接口接收数据包;
分类模块,用于对数据包进行分类,也就是为数据包选择合适的队列;
虚拟监控组模块,用于对具有相同属性的某些队列进行统一管理,简化 调度过程,每个虚拟监控组中包含本虚拟监控组的优先级VCGPro,队列的 数目QueueNum,同时虚拟监控组中还包含该虚拟监控组所辖队列的收发包 统计数据,该虛拟监控组中所辖队列中待发送的数据包的总和,该虚拟监控 组所辖队列的头队列指针QueueHead,以及该虚拟监控组所辖的可用队列的 头队列指针UsableQueueHead,以及下一个虚拟监控组的指针NextVCG等;
进一步地,每个队列中都有一个空间用来记录下一个队列的指针,称为 NextQueue,在本装置中,NextQueue用来记录同属一个虛拟监控组的下一 个队列,这样就形成了 一个队列链;
进一步地,队列在队列链中的位置由用户配置该队列的时间决定,先配 置的队列会放在队列链的前面。当某个队列被用户删除,紧随其后的队列会 填补被删除的队列在队列链中的位置。
进一步地,步骤B中所述的可用队列是指当前有待发送的数据包的队 列。由于网络流量是突发性的,往往在某一段时间有持续大量的流量需要转 发,而其他时间则没有流量,所以对于当前没有待发送数据包的队列,本发 明称之为空闲队列;相反,当前有待发送数据包的队列,本发明称之为可用 队列。在每个队列中都分配一个空间用来记录该队列属于可用队列还是空闲
卩人列,考尔为QueueStatus;
进一步地,本发明中把一个队列从空闲队列变为可用队列的现象称为正 向翻转,把一个队列从可用队列变为空闲队列的现象称为反向翻转;
进一步地,本发明中把一个队列发生正向翻转后持续该状态的时间称为 可用持续时间;
进一步地,在每个队列中另设一个空间用来记录下一个可用队列的指 针,称为NextUsableQueue。也就是,如果A队列是当前可用的,B队列也 是当前可用的,但是A队列的可用持续时间比B队列大,则A队列的称为 NextUsableQueue就指向B队列。这样,某个虚拟监控组下所有可用队列就 会形成一个可用队列链;
进一步地,位于队列链头部或者可用队列链头部的队列成为头队列;
进一步地,虛拟监控组中有一个空间用来记录优先级低于本虛拟监控组
的下一个虚拟监控组的指针NextVCG,这样某接口下配置的所有虛拟监控
组可以组成一个虚拟监控组链;
接口管理模块,用于存储某个接口的收发包统计数据,接口下虛拟监控 组的配置数目VCGNum,该接口最近一次调用的虛拟监控组CurVCG,虚拟 监控组链的头指针VCGHead,该接口的带宽分配大小,该接口待发送的数 据包数目,该接口收发数据包的统计数据等;
队列模块,用于存放待发送的数据包,队列模块中包含所有根据用户的 配置所生成的队列;
调度模块,用于从队列中取出待发送的数据包,并发送该数据包,调度 模块针对用户不同的配置采用不同的调度算法;
其中,所述收包模块是网络数据包的入口,分类模块实施对数据包的分 类入队操作,队列模块包含用户配置的所有队列,虚拟监控组模块是队列管 理的核心模块,实施对队列的分类监控和管理,调度模块按照用户选择的调 度方式访问虚拟监控组模块和队列模块进行调度转发;
进一步地,收包模块根据不同的物理接口类型对该接口接收到的数据包 进行处理,将数据包整合成统一的结构,方便后面模块对数据包的统一处理;
进一步地,所述分类模块可以有多种分类标准和规则,例如根据数据包
的优先级分类,或者根据数据包的目的地址和源地址分类等;
进一步地,入队是指将数据包放入所属队列中,每个队列中可能会存放 有多个数据包,新到来的数据包会放在队列的尾部,每个队列中所有数据包 按照先入先出的原则依次被调度模块调度;
进一步地,队列就是真正存储待发送数据包的队列,虚拟监控组是某些 具有相同特征队列的集合,它本身并不存储数据包,但是它对属于本虚拟监 控组的所有队列以及队列中的数据包进行管理;
进一步地,调度是指数据包的出队,调度往往是采用某种算法来决定何 时取某个队列的某个数据包。
第二,说明本发明所述队列管理方法,包括
步骤A.用户在使用服务质量保证功能之前对需要服务质量保证的网络 流量进行配置,系统根据用户的配置预先生成与各种流量类别相对应的队
列;
进一 步地,用户进行服务质量保证的配置方法包括网络流量分类和带宽 申请或释放,其中网络流量分类包括根据数据包的优先级进行数据包分类, 或者根据数据包的源地址和目的地址进行数据包分类,又或者根据数据包的
某些字段进行数据包分类等;带宽申请或释放是为各个网络流量在网络某个 节点处所允许的最大带宽进行设置或删除。如果是对带宽进行设置,则要求, 该流量的带宽不能超过最大带宽;
进一步地,接口管理模块中记录了接口的带宽分配信息,如果用户申请 的带宽超过接口剩余带宽的分配能力,用户的带宽申请将会失败,用户对此 网络流量的配置也会失败,不会生成相应的队列;
进一步地,用户对服务质量保证的配置包括添加和删除两种操作;
步骤B.虛拟监控组模块根据已配置队列的服务质量要求和分类情况实 时的调整已创建的虚拟监控组的数目,并更新虛拟监控组中的各种信息;如 果用户添加了一条服务质量保证队列,则进行步骤C;如果用户删除一条服 务质量保证队列,则进行步骤D;
步骤c.虛拟监控组搜索可用队列链,搜索到该链的尾部,将用户配置 的队列添加到链尾;然后,虚拟监控组搜索队列链,搜索到该链的尾部,将 用户配置的队列链添加到队列链尾;
步骤D.虛拟监控组搜索可用队列链,查找到用户要删除的队列,从可 用队列链中删除该节点;
步骤E.收包模块从物理接口接收数据包;
步骤F.分类模块对接收的数据包进行分类,并放入相应的队列中
进一步地,分类标准可以根据数据包的优先级,或者数据报文中的某些 字段进行分类,提供基于类的服务质量保证;也可以是根据数据包的源地址, 目的地址,源端口和目的端口进行分类,提供基于流的服务质量保证;还可 以是根据目的地址和/或源地址进行分类,提供点到点或者点到多点的服务 质量保证;
步骤G.调度模块通过定时器触发,或者通过收包触发,从队列中调用 并转发数据包。调度模块的调度算法可以视用户对服务质量保证的要求采用 WFQ, CQ, PQ或者FQ等算法。调度模块从虚拟监控组记录的可用队列头 队列开始访问可用队列,而不必访问空闲队列。由于队列调度算法的实现不 是本发明的重点,所以不做详细描述;
步骤H.收包模块接收到数据包,对其进行分类,确定该数据包所属的 队列,如果该队列为空闲队列,则进行两步操作1)把该队列添加到可用 队列链的尾部,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实施对队 列的调用和数据包的转发。
〇如图2所示,队列模块13是根据用户对网络流量的分类和配置实时 生成的,待发送数据包在队列中首尾相连的排放。队列中的NextQueue指向 该队列在队列链中的下一个队列。如果一个队列是可用队列,则 NextUsableQueue是有效的,并指向该队列在可用队列链中的下一个可用队 列;如果该队列是空闲队列,则NextUsableQueue无效。QueueStatus表明一
条队列是可用队列还是空闲队列。图3中用粗虚线连接起来的是可用队列 链,用粗实线连接起来的是空闲队列链。 一个队列可能同时属于两条链中, 但是并不是复制成两份,而是通过指针来加入或者退出某个链。
曰如图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 )判断用户此次添加的服务质量保证所属虛拟监控组是否已经生成。 是则跳往步骤511,否则跳往步骤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) 完成用户配置。
(S)当接收数据包入队时,虛拟监控组和队列的对应处理流程,具体如图 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 -lasttickxiroptime 是,则跳往步骤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) 完成此次;险查。
出本发明的实现方法的队列调度处理流程,具体如图8所示,包括以下 几个步骤
801) 调度模块受到触发。
802) 读取接口管理模块的VCGHead。
803 )判断VCGHead是否有效。是,则跳往步骤804,否则跳往步骤
809。
804)读取该虛拟监控组的UsableQueueHead,确定可用队列链的头队列。
805 ) 转发完该队列的凄t才居包,并读取该队列的NextUsableQueue。
806) NextUsableQueue是否有效。是,则跳往步骤805,否则跳往步 骤807。
807) 读取该虛拟监控组的NextVCG。
808) 判断NextVCG是否有效,是,则跳往步骤804,否则跳往步骤
809。
809) 本次调度完毕。
图5、 6、 7和8中的虛拟队列即队列。
权利要求
1、一种路由器,位于相邻网络之间,其特征在于,包括端口用于接收发送数据包;存储器划分给各个队列并区分可用和空闲队列;中心处理器依触发仅转发所述可用队列中的数据包,所述可用队列是指一定时间内没有新数据包的被端口接收放入的队列。
2、 根据权利要求1所述路由器,其特征在于,所述队列按类归为若 干虚拟监控组,所述区分由虚拟监控组监控完成。
3、 根据权利要求2所述路由器,其特征在于,所述虛拟监控组按类 包括尽力而为服务队列,负载可控服务队列和保证服务队列虛拟监控组中的 一种或多种;其分类标准可以是类、流或传输方式。
4、 根据权利要求1、 2或3所述路由器,其特征在于,所述队列和所 述虚拟监控组可以配置或删除。
5 、 根据权利要求4所述路由器, 除包括其内队列的全部删除。
6、 根据权利要求4所述路由器, 所属虚拟监控组的初始配置。
7、 根据权利要求4所述路由器, 量分类和带宽申请或释放。其特征在于,所述虛拟监控组的删 其特征在于,所述队列的配置包括 其特征在于,所述配置包括网络流
8、 根据权利要求1所述路由器,其特征在于,所述触发包括定时器 或接收数据包触发,具体由路由器调度模块完成。
9、 根据权利要求1所述路由器,其特征在于,所述一定时间可以设 为固定值,也可以由用户配置。
全文摘要
本发明涉及一种路由器,位于相邻网络之间,包括端口用于接收发送数据包;存储器划分给各个队列并区分可用和空闲队列;中心处理器依触发仅转发所述可用队列中的数据包,所述可用队列是指一定时间内没有新数据包的被端口接收放入的队列。这种路由器,采用虚拟监控组对队列进行监控和管理,虚拟监控组封存空闲队列,仅向计算机网络节点调度模块提供可用队列,这种处理简化了调度模块的操作,提高了数据包转发的速度和效率。
文档编号H04L12/56GK101193051SQ200610145539
公开日2008年6月4日 申请日期2006年11月20日 优先权日2006年11月20日
发明者顾颖杰 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1