帧队列调度流量整形方法与系统转让专利

申请号 : CN201610565632.1

文献号 : CN105978824B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 郭敏谢海春蒋汉柏廖北平

申请人 : 湖南恒茂高科股份有限公司

摘要 :

本发明提供一种帧队列调度流量整形方法与系统,控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端,根据子队列的状态,以加权循环调度方式对进行调度,获得队列号,获取与所述子队列的队列号对应的帧信息,根据所述帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值,更新所述子队列的整形状态和差额状态以及当前出口端的整形状态和差额状态。整个过程中,获取出口端中子队列的状态,并对出口端间隔预设时间以循环调度方式调度,对子队列采用加权循环方式调度,采用多样化的调度方式,能够合理且有效实现对帧队列调度流量整形。

权利要求 :

1.一种帧队列调度流量整形方法,其特征在于,包括步骤:

控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端,所述预设时间为以太网交换芯片的2个时钟周期;

根据所述当前出口端中子队列的状态,以加权循环调度方式对所述子队列进行调度,获得所述子队列的队列号;

根据预设子队列的队列号与帧信息的对应关系,获取与所述子队列的队列号对应的帧信息,当所述当前出口端出队列所述帧信息时,根据所述帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值;

根据更新的队列整形令牌值和更新的队列差额值更新所述子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新所述当前出口端的整形状态和差额状态。

2.根据权利要求1所述的帧队列调度流量整形方法,其特征在于,所述控制所述以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端之前还包括:控制以太网交换芯片入口端接收入队列帧信息,并生成与所述入队列帧信息对应的队列号。

3.根据权利要求1所述的帧队列调度流量整形方法,其特征在于,所述控制以太网交换芯片入口端接收入队列帧信息,并生成与所述入队列帧信息对应的队列号的步骤包括:初始化以太网交换芯片;

控制以太网交换芯片入口端接收入队列帧信息,并生成队列号;

根据所述入队列帧信息携带的相关字段,判断是否丢弃所述入队列帧信息;

当不丢弃所述入队列帧信息时,将所述入队列帧信息与所述队列号关联存储;

当丢弃所述入队列帧信息时,返回所述控制以太网交换芯片入口端接收入队列帧信息的步骤。

4.根据权利要求3所述的帧队列调度流量整形方法,其特征在于;

所述当不丢弃所述入队列帧信息时,将所述入队列帧信息与所述队列号关联存储的步骤包括:当不丢弃所述入队列帧信息时,更新所述入队列帧信息的队列深度,将所述入队列帧信息、所述队列号以及更新后的所述入队列帧信息的队列深度关联存储。

所述根据更新的队列整形令牌值和更新的队列差额值更新所述子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新所述当前出口端的整形状态和差额状态的步骤之后还包括:根据更新的队列整形令牌值、更新的队列差额值、更新的端口整形令牌值以及更新的端口差额值,更新出队列的所述帧信息的队列深度与队列深度状态。

5.根据权利要求1所述的帧队列调度流量整形方法,其特征在于,所述根据更新的队列整形令牌值和更新的队列差额值更新所述子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新所述当前出口端的整形状态和差额状态的步骤包括:根据更新的队列整形令牌值和更新的队列差额值更新以太网交换芯片中所述子队列的整形状态寄存器和差额状态寄存器;

根据更新的端口整形令牌值和更新的端口差额值更新以太网交换芯片中所述当前出口端的整形状态寄存器和差额状态寄存器。

6.一种帧队列调度流量整形系统,其特征在于,包括:

第一调度模块,用于控制所述以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端,所述预设时间为以太网交换芯片的2个时钟周期;

第二调度模块,用于根据所述当前出口端中子队列的状态,以加权循环调度方式对所述子队列进行调度,获得所述子队列的队列号;

更新模块,用于根据预设子队列的队列号与帧信息的对应关系,获取与所述子队列的队列号对应的帧信息,当所述当前出口端出队列所述帧信息时,根据所述帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值;

整形模块,用于根据更新的队列整形令牌值和更新的队列差额值更新所述子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新所述当前出口端的整形状态和差额状态。

7.根据权利要求6所述的帧队列调度流量整形系统,其特征在于,还包括:入队列控制模块,用于控制以太网交换芯片入口端接收入队列帧信息,并生成与所述入队列帧信息对应的队列号。

8.根据权利要求6所述的帧队列调度流量整形系统,其特征在于,所述入队列控制模块包括:初始化单元,用于初始化以太网交换芯片;

队列号生成单元,用于控制以太网交换芯片入口端接收入队列帧信息,并生成队列号;

判断单元,用于根据所述入队列帧信息携带的相关字段,判断是否丢弃所述入队列帧信息;

第一处理单元,用于当不丢弃所述入队列帧信息时,将所述入队列帧信息与所述队列号关联存储;

第二处理单元,用于当丢弃所述入队列帧信息时,控制所述队列号生成单元重新控制以太网交换芯片入口端接收入队列帧信息。

9.根据权利要求8所述的帧队列调度流量整形系统,其特征在于;

所述第一处理单元具体用于当不丢弃所述入队列帧信息时,更新所述入队列帧信息的队列深度,将所述入队列帧信息、所述队列号以及更新后的所述入队列帧信息的队列深度关联存储。

所述帧队列调度流量整形系统还包括:

队列深度更新模块,用于根据更新的队列整形令牌值、更新的队列差额值、更新的端口整形令牌值以及更新的端口差额值,更新出队列的所述帧信息的队列深度与队列深度状态。

10.根据权利要求6所述的帧队列调度流量整形系统,其特征在于,所述整形模块包括:第一整形单元,用于根据更新的队列整形令牌值和更新的队列差额值更新以太网交换芯片中所述子队列的整形状态寄存器和差额状态寄存器;

第二整形单元,用于根据更新的端口整形令牌值和更新的端口差额值更新以太网交换芯片中所述当前出口端的整形状态寄存器和差额状态寄存器。

说明书 :

帧队列调度流量整形方法与系统

技术领域

[0001] 本发明涉及计算机网络通信技术领域,特别是涉及帧队列调度流量整形方法与系统。

背景技术

[0002] 在网络需要支持愈发增加的各种服务的背景下,带宽需求不断增加,网络拥塞已经无可避免。因此,细分各个服务的优先级和带宽已成为交换芯片在设计中必须考虑的功能。
[0003] 研究人员发现可以通过对流量进行整形控制,将整体流量按照配置划分给各个子节点,从而达到带宽的更优利用。而在发生拥塞的情况下,通过优先级的设定以及调度算法的应用,能够保证高优先级的服务优先得到满足,同时,算法也能保证在优先级相同的情况下,各个子节点能够较为公平合理的得到带宽的分配。
[0004] 但是,目前尚无一种合理且有效的帧队列调度流量整形方式来实现对流量进行整形控制。

发明内容

[0005] 基于此,有必要针对目前尚无一种合理且有效的帧队列调度流量整形方法对流量进行整形控制的问题,提供一种合理且有效的帧队列调度流量整形方法与系统,实现对流量进行整形控制。
[0006] 一种帧队列调度流量整形方法,包括步骤:
[0007] 控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端;
[0008] 根据当前出口端中子队列的状态,以加权循环调度方式对子队列进行调度,获得子队列的队列号;
[0009] 获取与子队列的队列号对应的帧信息,当当前出口端出队列帧信息时,根据帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值;
[0010] 根据更新的队列整形令牌值和更新的队列差额值更新子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新当前出口端的整形状态和差额状态。
[0011] 一种帧队列调度流量整形系统,包括:
[0012] 第一调度模块,用于控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端;
[0013] 第二调度模块,用于根据当前出口端中子队列的状态,以加权循环调度方式对子队列进行调度,获得子队列的队列号;
[0014] 更新模块,用于获取与子队列的队列号对应的帧信息,当当前出口端出队列帧信息时,根据帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值;
[0015] 整形模块,用于根据更新的队列整形令牌值和更新的队列差额值更新子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新当前出口端的整形状态和差额状态。
[0016] 本发明帧队列调度流量整形方法与系统,控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端,根据当前出口端中子队列的状态,以加权循环调度方式对子队列进行调度,获得子队列的队列号,获取与子队列的队列号对应的帧信息,根据帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值,根据更新的队列/端口整形令牌值、更新的队列/端口差额值更新子队列的整形状态和差额状态以及当前出口端的整形状态和差额状态。整个过程中,获取出口端中子队列的状态,并对出口端间隔预设时间以循环调度方式调度,对子队列采用加权循环方式调度,采用多样化的调度方式,能够合理且有效实现对帧队列调度流量整形。

附图说明

[0017] 图1为本发明帧队列调度流量整形方法第一个实施例的流程示意图;
[0018] 图2为本发明帧队列调度流量整形方法第二个实施例的流程示意图;
[0019] 图3为本发明帧队列调度流量整形系统第一个实施例的结构示意图;
[0020] 图4为本发明帧队列调度流量整形系统第二个实施例的结构示意图。

具体实施方式

[0021] 如图1所示,一种帧队列调度流量整形方法,包括步骤:
[0022] S200:控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端。
[0023] 在以太网交换芯片中设置有出口端和入口端,出口端与入口端分别连接有多种元件,出口端与入口端数量可以为单个或者为多个。在这里,对以太网交换芯片中出口端进行控制,控制出口端间隔预设时间,以循环调度(wdrr)方式对进行调度,得到单个端口,即从以太网交换芯片所有出口端中选择当前需要进行控制的当前出口端。具体来说,预设时间可以为以太网交换芯片的2个时钟周期,这样设计最大带宽能保证每两个时钟周期产生一个出队列的帧信息。非必要的,可以对以太网交换芯片内多个端口进行编号,获得每个出口端对应的端口号,在步骤S200处理后可以获得一个端口号,并选择此端口号对应的端口为当前出口端。
[0024] S400:根据当前出口端中子队列的状态,以加权循环调度方式对子队列进行调度,获得子队列的队列号。
[0025] 在所选则选择的当前出端口下,根据当前出口端中各个子队列的状态,以加权循环调度(sp+wdrr)方式对各个子队列进行调度,得到队列号。队列号可以理解为预先为每个子队列分别的唯一身份识别标识。一般来说,单个出口端对应8个子队列,以太网交换芯片中设置有25个出口端,即以太网交换芯片共计有200个子队列,这些子队列分别预先分配有队列号。
[0026] S600:获取与子队列的队列号对应的帧信息,当当前出口端出队列帧信息时,根据帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值。
[0027] 在以太网交换芯片中预先存储有子队列的队列号与帧信息的对应关系,即基于步骤S400中获得的子队列号,可以获得与子队列的队列号对应的帧信息,产生需要传送至出口端(egress)的信息,将信息发送至egress端处理器。非必要的,队列号与帧信息的对应关系可以是在以太网交换芯片入口端接收到入队列的帧信息时构建,即可以是由以太网交换芯片入口端以及周围元件协调工作对每个接收到的入队列帧信息分配唯一队列号并且将队列号与相应的帧信息关联存储在以太网交换芯片的存储器件内。
[0028] S800:根据更新的队列整形令牌值和更新的队列差额值更新子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新当前出口端的整形状态和差额状态。
[0029] 在帧信息出队列时,根据帧信息中的帧字节长度信息,更新队列的整形令牌值(queue shaping credit)、队列差额值(queue deficit credit),端口整形令牌值(port shaping credit)、端口差额值(port deficit credit)。并根据队列/端口的这些值,更新队列/端口的整形状态与差额状态。
[0030] 本发明帧队列调度流量整形方法,控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端,根据当前出口端中子队列的状态,以加权循环调度方式对子队列进行调度,获得子队列的队列号,获取与子队列的队列号对应的帧信息,根据帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值,根据更新的队列/端口整形令牌值、更新的队列/端口差额值更新子队列的整形状态和差额状态以及当前出口端的整形状态和差额状态。整个过程中,获取出口端中子队列的状态,并对出口端间隔预设时间以循环调度方式调度,对子队列采用加权循环方式调度,采用多样化的调度方式,能够合理且有效实现对帧队列调度流量整形。
[0031] 如图2所示,在其中一个实施例中,步骤S200之前还包括:
[0032] S100:控制以太网交换芯片入口端接收入队列帧信息,并生成与入队列帧信息对应的队列号。
[0033] 在以太网交换芯片入口端接收到入队列帧信息时,生成与入队列帧信息对应的队列号,即在此处即可得到帧信息与队列号之间的对应关系,可以将入队列帧信息、队列号关联存储,以便在后续操作中便捷、准确读取。非必要的,而已将这些数据存储在以太网交换芯片内置的帧存储器内,一般来说,帧信息以链表的方式进行存储记录,帧存储器的存储单元的地址,作为链表内容记录在一个与帧存储器同样深度的链表存储器中,在以太网交换芯片中整个链表结构包括1个空闲链表200个队列链表。
[0034] 在其中一个实施例中,控制以太网交换芯片入口端接收入队列帧信息,并生成与入队列帧信息对应的队列号的步骤包括:
[0035] 步骤一:初始化以太网交换芯片。
[0036] 初始化以太网交换芯片,将以太网交换芯片中一些历史数据进行清除,避免其影响本次操作。
[0037] 步骤二:控制以太网交换芯片入口端接收入队列帧信息,并生成队列号。
[0038] 帧信息通过以太网交换芯片入口端输入,入口端接收入队列帧信息,并且分配唯一的队列号。
[0039] 步骤三:根据入队列帧信息携带的相关字段,判断是否丢弃入队列帧信息。
[0040] 以太网交换芯片中入口端处理器处理接收到的入队列帧信息,获取入队列帧信息携带的相关字段,并根据该相关字段判断是否丢弃当前入队列帧信息。
[0041] 步骤四:当不丢弃入队列帧信息时,将入队列帧信息与队列号关联存储。
[0042] 当不丢弃入队列帧信息时,将该入队列帧信息与队列号关联存储。非必要的,可以存储至以太网交换芯片的帧存储器内。另外,还可以更新此队列的队列深度,将队列深度加1,再将更新后的队列深度、入队列帧信息与队列号关联存储。
[0043] 步骤五:当丢弃入队列帧信息时,返回控制以太网交换芯片入口端接收入队列帧信息的步骤。
[0044] 当判定需丢弃当前入队列帧信息时,重新返回控制以太网交换芯片入口端接收入队列帧信息的步骤,即重新接受新的入队列帧信息。
[0045] 在其中一个实施例中,当不丢弃入队列帧信息时,将入队列帧信息与队列号关联存储的步骤包括:
[0046] 当不丢弃入队列帧信息时,更新入队列帧信息的队列深度,将入队列帧信息、队列号以及更新后的入队列帧信息的队列深度关联存储。
[0047] 在入口端(ingress)帧信息入队列时,根据该帧的队列号,更新此队列深度,队列深度增加1。队列的深度状态寄存器变为有效。在入队列时,更新空闲链表,更新队列的存储链表,更新队列的深度,更新队列深度寄存器,并据此更新队列所对应的端口子节点状态寄存器。
[0048] 根据更新的队列整形令牌值和更新的队列差额值更新子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新当前出口端的整形状态和差额状态的步骤之后还包括:
[0049] 根据更新的队列整形令牌值、更新的队列差额值、更新的端口整形令牌值以及更新的端口差额值,更新出队列的帧信息的队列深度与队列深度状态。
[0050] 在更新子队列的整形状态和差额状态以及当前出口端的整形状态和差额状态之后,还需对出队列帧信息的队列深度与队列深度状态进行更新。
[0051] 在其中一个实施例中,根据更新的队列整形令牌值和更新的队列差额值更新子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新当前出口端的整形状态和差额状态的步骤包括:
[0052] 根据更新的队列整形令牌值和更新的队列差额值更新以太网交换芯片中子队列的整形状态寄存器和差额状态寄存器;
[0053] 根据更新的端口整形令牌值和更新的端口差额值更新以太网交换芯片中当前出口端的整形状态寄存器和差额状态寄存器。
[0054] 每个端口对应一个8比特(bit)的子节点状态寄存器,一个1bit端口整形状态寄存器,一个1bit端口差额状态寄存器。由此三者产生此端口的状态寄存器值。当此寄存器值为1时,此端口才能参与调度。每个队列对应一个1bit队列深度状态寄存器、一个1bit队列整形状态寄存器、一个1bit差额状态寄存器。此三者决定了该队列所对应的端口子节点状态寄存器中相应比特位的值。
[0055] 如图3所示,一种帧队列调度流量整形系统,包括:
[0056] 第一调度模块200,用于控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端。
[0057] 第二调度模块400,用于根据当前出口端中子队列的状态,以加权循环调度方式对子队列进行调度,获得子队列的队列号。
[0058] 更新模块600,用于获取与子队列的队列号对应的帧信息,当当前出口端出队列帧信息时,根据帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值。
[0059] 整形模块800,用于根据更新的队列整形令牌值和更新的队列差额值更新子队列的整形状态和差额状态,根据更新的端口整形令牌值和更新的端口差额值更新当前出口端的整形状态和差额状态。
[0060] 本发明帧队列调度流量整形系统,第一调度模块200控制以太网交换芯片出口端间隔预设时间,以循环调度方式进行调度,选择当前出口端,第二调度模块400根据当前出口端中子队列的状态,以加权循环调度方式对子队列进行调度,获得子队列的队列号,更新模块600获取与子队列的队列号对应的帧信息,根据帧信息中携带的帧字节长度信息,更新队列整形令牌值、队列差额值、端口整形令牌值以及端口差额值,整形模块800根据更新的队列/端口整形令牌值、更新的队列/端口差额值更新子队列的整形状态和差额状态以及当前出口端的整形状态和差额状态。整个过程中,获取出口端中子队列的状态,并对出口端间隔预设时间以循环调度方式调度,对子队列采用加权循环方式调度,采用多样化的调度方式,能够合理且有效实现对帧队列调度流量整形。
[0061] 如图4所示,在其中一个实施例中,帧队列调度流量整形系统还包括:
[0062] 入队列控制模块100,用于控制以太网交换芯片入口端接收入队列帧信息,并生成与入队列帧信息对应的队列号。
[0063] 在其中一个实施例中,入队列控制模块100包括:
[0064] 初始化单元,用于初始化以太网交换芯片。
[0065] 队列号生成单元,用于控制以太网交换芯片入口端接收入队列帧信息,并生成队列号。
[0066] 判断单元,用于根据入队列帧信息携带的相关字段,判断是否丢弃入队列帧信息。
[0067] 第一处理单元,用于当不丢弃入队列帧信息时,将入队列帧信息与队列号关联存储。
[0068] 第二处理单元,用于当丢弃入队列帧信息时,控制队列号生成单元重新控制以太网交换芯片入口端接收入队列帧信息。
[0069] 在其中一个实施例中,第一处理单元具体用于当不丢弃入队列帧信息时,更新入队列帧信息的队列深度,将入队列帧信息、队列号以及更新后的入队列帧信息的队列深度关联存储。
[0070] 帧队列调度流量整形系统还包括:
[0071] 队列深度更新模块,用于根据更新的队列整形令牌值、更新的队列差额值、更新的端口整形令牌值以及更新的端口差额值,更新出队列的帧信息的队列深度与队列深度状态。
[0072] 在其中一个实施例中,整形模块包括:
[0073] 第一整形单元,用于根据更新的队列整形令牌值和更新的队列差额值更新以太网交换芯片中子队列的整形状态寄存器和差额状态寄存器。
[0074] 第二整形单元,用于根据更新的端口整形令牌值和更新的端口差额值更新以太网交换芯片中当前出口端的整形状态寄存器和差额状态寄存器。
[0075] 为了更进一步说明本发明帧队列调度流量整形方法与系统的技术方案及其带来的效果,下面将采用一应用实例进行展开说明。
[0076] 步骤一:在系统初始化阶段,在以太网交换芯片中通过设计的CPU(Central Processing Unit,中央处理器)接口配置内部存储表,部分存储表的初始化由内部逻辑自动执行。
[0077] 步骤二:设计接收入口(ingress)端的帧信息时,从空闲链表中获取表头指针,以此为地址,将帧信息存储至帧存储表中。空闲链表此时需更新其表头指针,同时,将此被使用的空闲链表头指针添加至此帧对应的队列链表的尾部。
[0078] 步骤三:在ingress帧信息入队列时,根据该帧的队列号,更新此队列深度,队列深度增加1。队列的深度状态寄存器变为有效,并据此更新此队列的父节点端口的子节点状态寄存器。
[0079] 步骤四:每个端口对应8个子队列,端口级调度考虑端口整形状态,差额状态,并考虑其子节点状态。调度模式为wdrr;队列级调度考虑队列整形状态,差额状态,队列是否为空。队列调度模式为sp+wdrr。
[0080] 步骤五:出队列改变该队列的父节点端口的整形令牌值,令牌值需减去此帧对应的包长。若令牌值减为负,则此端口的整形状态寄存器值需被置为无效;同样,差额值也需减去包长,差额状态寄存器同样会在差额值为负数情况下被置为无效;所对应的队列也更新其对应的令牌值,差额值,以及各个状态寄存器。
[0081] 步骤六:在设计的初始化状态结束后,队列整形令牌刷新控制状态机开始进入刷新状态。状态机按队列号从0~199,每两个时钟周期读取一条队列整形令牌表的地址,同时读取队列刷新令牌配置表。将配置表中的值加入队列整形令牌表中。在200个队列均完成了刷新之后,状态机进入延时等待状态,等待初始化配置的时钟周期后,开始下一轮的刷新过程。
[0082] 以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。