队列调度的方法和装置制造方法

文档序号:7980439阅读:189来源:国知局
队列调度的方法和装置制造方法
【专利摘要】本发明实施例提供一种队列调度的方法和装置,对非普通端口队列拆分成多个子队列绑定到非普通端口上进行调度,并通过增加逻辑端口级调度器,使非普通端口与普通端口共享带宽进行调度,解决了待调度队列的性能超过系统单队列处理能力的情况下队列的处理问题。同时,通过双级burst调度及包重组保证了数据包的完整性,并充分利用时隙资源,提高了系统的包转发效率。
【专利说明】队列调度的方法和装置
【技术领域】
[0001]本发明涉及数据通讯技术中流量管理的方法,尤其涉及一种流量管理中队列调度的方法和装置。
【背景技术】
[0002]队列调度,即队列通过某种触发检查(比如接收到授权触发等),仲裁队列的出队条件,按照一定的规则调度队列出队,常用的调度算法有RR(Round Robin,轮询)调度算法和SP(Strict Priority,严格优先级)调度算法。
[0003]随着芯片相关的软件、硬件技术的发展,对流量管理芯片的要求越来越高,对包的转发率、队列调度复杂程度提出了较高的要求。例如,假定流量管理芯片每个物理端口的出队能力为40G/N,转发率为72MPPS/N(N为出端口的数量),如果要处理大小为40G、转发率为72MPPS的流量,根据现有调度方法是不可实现的。也就是说,待调度队列的性能超过系统单队列处理能力时,现有技术中队列调度的方法无法实现对该队列的调度。

【发明内容】

[0004]本发明实施例提供一种队列调度的方法和装置,在待调度队列的性能超过系统单队列处理能力的情况下,仍然能够实现对该队列的调度。
[0005]为了实现上述目的,本发明实施例提供一种队列调度的方法,包括:
[0006]将入队列绑定到普通端口和/或非普通端口进行调度;
[0007]设置逻辑端口级调度器,根据预先配置的调度方式调度所述普通端口和/或非普通端口,对所述非普通端口对应的入队列拆分后得到的多个子队列和/或所述普通端口对应的普通端口队列进行授权,其中,所述普通端口和非普通端口共享带宽;
[0008]将得到授权的子队列和/普通端口队列放入寄存器,并进行第一级burst调度;
[0009]在所述子队列进行第一级burst调度后,将所述子队列分别写入对应的FIFO先入先出,并通过排序FIFO记录各子队列的包头标志进入FIFO的顺序,根据所述排序FIFO内的FIFO编号到对应的FIFO读取数据直至读到包尾,再次读取所述排序FIFO ;
[0010]对所述FIFO内的数据和/或所述普通端口队列进行第一级burst调度后的数据进行第二级burst调度。
[0011]所述将入队列绑定到普通端口和/或非普通端口进行调度包括:
[0012]根据预设策略判断所述入队列为非普通端口队列或者普通端口队列,将所述非普通端口队列拆分成多个子队列,绑定到非普通端口上进行调度,将所述普通端口队列绑定到普通端口上进行调度,其中,所述非普通端口和普通端口为逻辑端口,每一非普通端口对应多个物理端口,每一普通端口对应一物理端口。
[0013]所述设置逻辑端口级调度器包括:
[0014]在物理端口对应的调度器下级设置逻辑端口级调度器,所述逻辑端口级调度器与逻辑端口对应。[0015]所述根据预先配置的调度方式调度所述普通端口和非普通端口包括:
[0016]对所述普通端口和非普通端口采用轮询调度方式或严格优先级调度方式进行调度。
[0017]所述进行第一级burst调度包括:按照固定大小和时隙的burst对子队列和/或普通端口队列进行调度。
[0018]所述进行第一级burst调度包括:
[0019]所述普通端口每X个周期调度一次,所述非普通端口每x/n个周期调度一次,X为自然数,η为所述非普通端口对应的寄存器的个数。
[0020]所述进行第一级burst调度包括输出以下内容的一项或多项:物理端口号、普通端口 /非普通端口标志、物理队列号、包头和包尾标志、非普通端口轮询的寄存器标号。
[0021]对所述FIFO内的数据和/或所述普通端口队列进行第一级burst调度后的数据进行第二级burst调度包括:
[0022]给每个burst打标记以标明该burst来自普通端口还是非普通端口。
[0023]本发明实施例还提供一种队列调度的装置,包括:
[0024]入队列处理单元,用于将入队列绑定到普通端口和/或非普通端口进行调度;
[0025]授权处理单元,用于设置逻辑端口级调度器,根据预先配置的调度方式调度所述普通端口和非普通端口,对所述多个子队列和/或普通端口队列进行授权,其中,所述普通端口和非普通端口共享带宽;
[0026]第一级burst调度单元,用于将得到授权的子队列和/普通端口队列放入寄存器,并进行第一级burst调度;
[0027]包重组单元,用于在所述子队列进行第一级burst调度后,将所述子队列分别写入对应的FIFO先入先出,并通过排序FIFO记录各子队列的包头标志进入FIFO的顺序,根据所述排序FIFO内的FIFO编号到对应的FIFO读取数据直至读到包尾,再次读取所述排序FIFO ;
[0028]第二级burst调度单元,用于对所述FIFO内的数据和/或所述普通端口队列进行第一级burst调度后的数据进行第二级burst调度。
[0029]所述入队列处理单元还用于:根据预设策略判断入队列为非普通端口队列或者普通端口队列,将所述非普通端口队列拆分成多个子队列,绑定到非普通端口上进行调度,将所述普通端口队列绑定到普通端口上进行调度,其中,所述非普通端口和普通端口为逻辑端口,每一非普通端口对应多个物理端口,每一普通端口对应一物理端口。
[0030]所述授权处理单元还用于:在物理端口对应的调度器下级设置逻辑端口级调度器,所述逻辑端口级调度器与逻辑端口对应。
[0031]所述第一级burst调度单元还用于:对所述普通端口和非普通端口采用轮询调度方式或严格优先级调度方式进行调度。
[0032]所述第一级burst调度单元还用于:按照固定大小和时隙的burst对子队列和/或普通端口队列进行调度。
[0033]所述第一级burst调度单元还用于:每X个周期调度所述普通端口 一次,每x/n个周期调度所述非普通端口一次,X为自然数,η为所述非普通端口对应的寄存器的个数。
[0034]所述第一级burst调度单元还用于:输出以下内容的一项或多项:物理端口号、普通端口 /非普通端口标志、物理队列号、包头和包尾标志、非普通端口轮询的寄存器标号。
[0035]所述第二级burst调度单元还用于:给每个burst打标记以标明该burst来自普通端口还是非普通端口。
[0036]本发明实施例提供的方法和装置中,对非普通端口队列拆分成多个子队列绑定到非普通端口上进行调度,并通过增加逻辑端口级调度器,使非普通端口与普通端口共享带宽进行调度,解决了待调度队列的性能超过系统单队列处理能力的情况下队列的处理问题。同时,通过双级burst调度及包重组保证了数据包的完整性,并充分利用时隙资源,提高了系统的包转发效率。
【专利附图】

【附图说明】
[0037]图1是本发明实施例提供的队列调度的方法的流程示意图;
[0038]图2是图1所示方法中入队列处理的过程示意图;
[0039]图3是图1所示方法中授权处理时调度器的设置示意图;
[0040]图4是图1所示方法中第一级burst调度的过程示意图;
[0041]图5是图1所示方法中包重组处理的过程示意图;
[0042]图6是图1所示方法中出队列示意图;
[0043]图7是本发明实施例提供的队列调度的装置的结构示意图。
【具体实施方式】
[0044]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0045]本发明的主要思想是:将一些队列性能超出系统单队列处理能力的特定队列绑定到非普通端口上,最后映射到普通端口上,将非普通端口授权进行统一处理,共享普通端口资源,提高系统效率。进一步的,利用两级burst调度加包重组方案,保证报文完成性同时充分利用时隙资源,按照可配置的burst大小调度,提高总的端口的调度能力。其中,非普通端口和普通端口为逻辑端口,每一非普通端口对应多个物理端口,每一普通端口对应一物理端口。
[0046]本发明实施例提供一种队列调度的方法,如图1所示,包括:
[0047]步骤101,对接收到的入队列进行队列类型判断和包处理。
[0048]根据预设策略判断入队列为非普通端口队列或者普通端口队列,该预设策略例如为:预先设置业务类型与端口类型的对应关系,根据入队列的业务类型判断其为非普通端口队列或者普通端口队列。将非普通端口队列拆分成多个子队列,绑定到非普通端口上进行调度,将普通端口队列绑定到普通端口上进行调度。在入包处理过程中,还可以使用一个2bit的计数器,用于记录当前非普通端口队列使用的链表情况(即相对于该聚合队列的第
0、1、2、3条物理队列号),如图2所示,当有非普通端口队列入队时,则当前block应当写入的物理队列号等于聚合队列号+当前的链表计数器。因为当前的队列的模式是可配的,任何一条链表都有可能被配置成非普通端口队列或普通端口队列,所以当前每个队列都应当预留该计数器,对于普通端口队列来说,此计数器只能为O。[0049]步骤102,对非普通端口队列和/或普通端口队列进行授权处理。
[0050]如图3所示,芯片的授权模块在物理端口级调度器下面设置逻辑端口级调度器。逻辑端口级调度器对所有的非普通端口统一进行绑定处理,并且非普通端口与普通端口的QOS方式可配置(例如严格优先级调度方式、轮询调度方式),非普通端口和普通端口进行共享带宽,从而达到最终将非普通端口的流量映射到物理端口上的目的。逻辑端口级调度器对非普通端口队列拆分得到的多个子队列和/或普通端口队列进行授权,得到授权的队列进行后续处理。
[0051]步骤103,对非普通端口队列和/或普通端口队列进行第一级burst调度。
[0052]将非普通端口的各个子队列以及普通端口队列放到各个寄存器中,每个子队列和普通端口均等按照固定的burst大小进行调度,burst大小可配置,调度的时隙固定,减少了冲突,同时按照burst去扣除授权盈余,进一步减少冲突。如图4所示,普通端口每X个周期调度一次,非普通端口每x/n个周期调度一次,其中,X为自然数,η为非普通端口对应的寄存器的个数。普通端口和非端口按照固定的burst进行轮询调度,非普通端口在regO到regn-Ι进行轮询调度,调度输出包括下述一项或多项:物理端口号、普通端口 /非普通端口标志、物理队列号、包头和包尾标志、非普通端口轮询的reg标号(reg0...regn-Ι)。
[0053]步骤104,对非普通端口队列的第一级burst调度结果进行包重组处理。
[0054]第一级burst调度时非普通端口的报文会存在乱序情况,并且会映射到最终的普通端口,会存在非普通端口包的乱序,本发明实施例中对第一级burst调度结果进行包重组处理。包重组通过一些列FIFO完成,其中,排序FIFO用于对第一级burst的sop (包头标志)进行排序,其他FIFO用于存放第一级burst调度器调度过来的burst信息,读取FIFO内的数据时需要首先读取排序FIF0,如果排序FIFO非空,根据排序FIFO内的FIFO编号到对应的FIFO读取数据直至读到包尾,再次读取排序FIF0,如果非空,重复上面操作。例如图5所不,包重组处理通过η个FIFO进行,每个FIF00...FIFOn-1与图4中的regO到regn-1一一对应,另外有一个排序FIF0,用来记录包头标志进入FIFOO-FIFOn-1的顺序,如果排序FIFO非空,则读取其中的FIFO编号到对应编号的FIFO中读取数据包,直到读到包尾,再次读取排序FIF0,如果非空,重复上面操作。
[0055]步骤105,对非普通端口队列和/或普通端口队列对应的数据进行第二级burst调度。
[0056]包重组完成一个完整的包调度长包存在很长的时间空隙,存在流量的突发,本发明实施例中采用FIFO中随来随走的方式,最先调度的FIFO中的切片和普通端口首先进行第二级burst调度,并将普通端口和非普通端口的切片打标记进行区分,提高了系统的性能。仍以图5为例,为了缩短包重组带来的延时,只要FIFOO-FIFOn-1中有burst大小数据即可进行burst调度,非普通端口 burst大小数据和普通端口 burst数据再次进行burst调度,只要给每个burst标记是来自普通端口和非普通端口即可,即保证了包的顺序,又提高了调度效率。如图6所示,为出队列示意图,第一级burst调度后非普通端口数据进行包重组单元,普通端口数据进入普通端口 burst缓存单元,然后包重组单元和普通端口 burst缓存单元将数据向第二级burst调度单元传输,进行第二级burst调度。
[0057]通过采用本发明实施例提供的方法,对非普通端口队列拆分成多个子队列绑定到非普通端口上进行调度,并通过增加逻辑端口级调度器,使非普通端口与普通端口共享带宽进行调度,解决了待调度队列的性能超过系统单队列处理能力的情况下队列的处理问题。同时,通过双级burst调度及包重组保证了数据包的完整性,并充分利用时隙资源,提高了系统的包转发效率。
[0058]基于与上述方法实施例相同的技术构思,本发明实施例还提供一种队列调度的装置,如图7所示,包括:
[0059]入队列处理单元10,用于将入队列绑定到普通端口和/或非普通端口进行调度;
[0060]授权处理单元20,用于设置逻辑端口级调度器,根据预先配置的调度方式调度所述普通端口和非普通端口,对所述非普通端口对应的入队列拆分后得到的多个子队列和/或所述普通端口对应的普通端口队列进行授权,其中,所述普通端口和非普通端口共享带宽;
[0061]第一级burst调度单元30,用于将得到授权的子队列和/普通端口队列放入寄存器,并进行第一级burst调度;
[0062]包重组单元40,用于在所述子队列进行第一级burst调度后,将所述子队列分别写入对应的FIFO先入先出,并通过排序FIFO记录各子队列的包头标志进入FIFO的顺序,根据所述排序FIFO内的FIFO编号到对应的FIFO读取数据直至读到包尾,再次读取所述排序 FIFO ;
[0063]第二级burst调度单元50,用于对所述FIFO内的数据和/或所述普通端口队列进行第一级burst调度后的数据进行第二级burst调度。
[0064]优选的,所述入队列处理单元10还用于:根据预设策略判断入队列为非普通端口队列或者普通端口队列,将所述非普通端口队列拆分成多个子队列,绑定到非普通端口上进行调度,将所述普通端口队列绑定到普通端口上进行调度,其中,所述非普通端口和普通端口为逻辑端口,每一非普通端口对应多个物理端口,每一普通端口对应一物理端口。
[0065]优选的,所述授权处理单元20还用于:在物理端口对应的调度器下级设置逻辑端口级调度器,所述逻辑端口级调度器与逻辑端口对应。
[0066]所述第一级burst调度单元30还用于:对所述普通端口和非普通端口采用轮询调度方式或严格优先级调度方式进行调度。
[0067]所述第一级burst调度单元30还用于:按照固定大小和时隙的burst对子队列和/或普通端口队列进行调度。
[0068]所述第一级burst调度单元30还用于:每x个周期调度所述普通端口 一次,每x/η个周期调度所述非普通端口一次,X为自然数,η为所述非普通端口对应的寄存器的个数。
[0069]所述第一级burst调度单元30还用于:输出以下内容的一项或多项:物理端口号、普通端口 /非普通端口标志、物理队列号、包头和包尾标志、非普通端口轮询的寄存器标号。
[0070]所述第二级burst调度单元50还用于:给每个burst打标记以标明该burst来自
普通端口还是非普通端口。
[0071]通过采用本发明实施例提供的装置,对非普通端口队列拆分成多个子队列绑定到非普通端口上进行调度,并通过增加逻辑端口级调度器,使非普通端口与普通端口共享带宽进行调度,解决了待调度队列的性能超过系统单队列处理能力的情况下队列的处理问题。同时,通过双级burst调度及包重组保证了数据包的完整性,并充分利用时隙资源,提高了系统的包转发效率。
[0072]本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
【权利要求】
1.一种队列调度的方法,其特征在于,包括: 将入队列绑定到普通端口和/或非普通端口进行调度; 设置逻辑端口级调度器,根据预先配置的调度方式调度所述普通端口和/或非普通端口,对所述非普通端口对应的入队列拆分后得到的多个子队列和/或所述普通端口对应的普通端口队列进行授权,其中,所述普通端口和非普通端口共享带宽; 将得到授权的子队列和/普通端口队列放入寄存器,并进行第一级burst调度; 在所述子队列进行第一级burst调度后,将所述子队列分别写入对应的FIFO先入先出,并通过排序FIFO记录各子队列的包头标志进入FIFO的顺序,根据所述排序FIFO内的FIFO编号到对应的FIFO读取数据直至读到包尾,再次读取所述排序FIFO ; 对所述FIFO内的数据和/或所述普通端口队列进行第一级burst调度后的数据进行第二级burst调度。
2.如权利要求1所述的方法,其特征在于,所述将入队列绑定到普通端口和/或非普通端口进行调度包括: 根据预设策略判断所述入队列为非普通端口队列或者普通端口队列,将所述非普通端口队列拆分成多个子队列,绑定到非普通端口上进行调度,将所述普通端口队列绑定到普通端口上进行调度,其中,所述非普通端口和普通端口为逻辑端口,每一非普通端口对应多个物理端口,每一普通端口对应一物理端口。
3.如权利要求1所述的方法,其特征在于,所述设置逻辑端口级调度器包括: 在物理端口对应的调度器下级设置逻辑端口级调度器,所述逻辑端口级调度器与逻辑`端口对应。
4.如权利要求1或2所述的方法,其特征在于,所述根据预先配置的调度方式调度所述普通端口和非普通端口包括: 对所述普通端口和非普通端口采用轮询调度方式或严格优先级调度方式进行调度。
5.如权利要求1所述的方法,其特征在于,所述进行第一级burst调度包括:按照固定大小和时隙的burst对子队列和/或普通端口队列进行调度。
6.如权利要求1或4所述的方法,其特征在于,所述进行第一级burst调度包括: 所述普通端口每X个周期调度一次,所述非普通端口每x/n个周期调度一次,X为自然数,η为所述非普通端口对应的寄存器的个数。
7.如权利要求1所述的方法,其特征在于,所述进行第一级burst调度包括输出以下内容的一项或多项:物理端口号、普通端口 /非普通端口标志、物理队列号、包头和包尾标志、非普通端口轮询的寄存器标号。
8.如权利要求1所述的方法,其特征在于,对所述FIFO内的数据和/或所述普通端口队列进行第一级burst调度后的数据进行第二级burst调度包括: 给每个burst打标记以标明该burst来自普通端口还是非普通端口。
9.一种队列调度的装置,其特征在于,包括: 入队列处理单元,用于将入队列绑定到普通端口和/或非普通端口进行调度; 授权处理单元,用于设置逻辑端口级调度器,根据预先配置的调度方式调度所述普通端口和非普通端口,对所述非普通端口对应的入队列拆分后得到的多个子队列和/或所述普通端口对应的普通端口队列进行授权,其中,所述普通端口和非普通端口共享带宽;第一级burst调度单元,用于将得到授权的子队列和/普通端口队列放入寄存器,并进行第一级burst调度; 包重组单元,用于在所述子队列进行第一级burst调度后,将所述子队列分别写入对应的FIFO先入先出,并通过排序FIFO记录各子队列的包头标志进入FIFO的顺序,根据所述排序FIFO内的FIFO编号到对应的FIFO读取数据直至读到包尾,再次读取所述排序FIFO ; 第二级burst调度单元,用于对所述FIFO内的数据和/或所述普通端口队列进行第一级burst调度后的数据进行第二级burst调度。
10.如权利要求8所述的装置,其特征在于,所述入队列处理单元还用于:根据预设策略判断入队列为非普通端口队列或者普通端口队列,将所述非普通端口队列拆分成多个子队列,绑定到非普通端口上进行调度,将所述普通端口队列绑定到普通端口上进行调度,其中,所述非普通端口和普通端口为逻辑端口,每一非普通端口对应多个物理端口,每一普通端口对应一物理端口。
11.如权利要求8所述的装置,其特征在于,所述授权处理单元还用于:在物理端口对应的调度器下级设置逻辑端口级调度器,所述逻辑端口级调度器与逻辑端口对应。
12.如权利要求8或9所述的装置,其特征在于,所述第一级burst调度单元还用于:对所述普通端口和非普通端口采用轮询调度方式或严格优先级调度方式进行调度。
13.如权利要求8所述的装置,其特征在于,所述第一级burst调度单元还用于:按照固定大小和时隙的burst对子队列和/或普通端口队列进行调度。
14.如权利要求8或11所述的装置,其特征在于,所述第一级burst调度单元还用于:每X个周期调度所述普通端口一次,每x/n个周期调度所述非普通端口一次,X为自然数,η为所述非普通端口对应的寄存器的个数。
15.如权利要求8所述的装置,其特征在于,所述第一级burst调度单元还用于:输出以下内容的一项或多项:物理端口号、普通端口 /非普通端口标志、物理队列号、包头和包尾标志、非普通端口轮询的寄存器标号。
16.如权利要求8所述的装置,其特征在于,所述第二级burst调度单元还用于:给每个burst打标记以标明该burst来自普通端口还是非普通端口。
【文档编号】H04L12/863GK103516621SQ201210222139
【公开日】2014年1月15日 申请日期:2012年6月29日 优先权日:2012年6月29日
【发明者】田锡宇, 陈虎勋, 丁大勇 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1