调度数据的方法和交换设备与流程

文档序号:17757557发布日期:2019-05-24 21:25阅读:158来源:国知局
调度数据的方法和交换设备与流程

本申请涉及信息技术领域,更具体地,涉及调度数据的方法和交换设备。



背景技术:

交换设备(例如交换机和路由器)内通常会包含多个队列。该交换设备可能会在接收数据流的过程中切换接收该数据流的队列。

例如,交换设备会根据接收到的数据流的大小来选择该数据流需要被输入的队列。但是,一些情况下,该交换设备在开始接收到数据流时会将该数据流识别老鼠流。在此情况下,该数据流会被输入老鼠流对应的队列。但是随着该交换设备接收到的该数据流的字节数超过一个预定阈值,该交换设备会将该数据流会识别为大象流。这样,该交换设备会将接收该数据流的队列从老鼠流对应的队列切换为大象流对应的队列。

又如,交换设备会根据接收到的数据流是否是引发拥塞的数据流来选择该数据流需要被输入的队列。但是,一些情况下,该交换设备在开始接收到数据流时会认为该数据流是非拥塞数据流。因此,该数据流会被输入非拥塞数据流对应的队列。但是,当发生拥塞时,该交换设备会将该数据流识别为拥塞数据流后,该交换设备会将接收该数据流的队列从非拥塞数据流对应的队列切换为拥塞数据流对应的队列。

虽然数据流对应的队列进行了切换,但是该交换设备输出该数据流中的数据单元时,该交换设备输出的数据单元的输出顺序需要与该数据单元的输入顺序一致。例如,交换设备接收数据流时依次接收到1至7号数据单元。该交换设备输出的数据单元的顺序也需要保证为1至7。

目前,为了保证数据单元的输出顺序与输入顺序一致,一种可行的技术方案是将输入到切换前的队列中的数据单元移动到切换后的队列中。例如,在数据流切换前,数据单元1至6已经被输入到一个队列(以下简称源队列)。当该数据流从该队列切换为另一队列(以下简称目标队列)后,需要先将数据单元1至6从该源队列移动的该目标队列,然后在将数据单元7输入该目标队列。上述技术方案中,交换设备需要遍历访问源队列以确定需要移动的数据单元,这会引入非常大的访问开销,从而严重影响该交换设备正常处理数据流的性能。除此之外,为了简化队列操作,队列通常只支持先入先出的调度方式。但是移动数据包需要支持随机访问,这将大大增加队列管理的复杂度。

因此,需要找到一种简单的避免数据流乱序的方法。



技术实现要素:

本申请实施例提供了调度数据的方法和交换设备,能够避免数据流乱序。

第一方面,本申请实施例提供一种调度数据的方法,该方法包括:接收来自第一数据流的n1个数据单元,其中该数据单元为数据包或数据包的描述符,n1为大于或等于1的正整数;将该n1个数据单元输入第一原队列;确定该第一数据流从该第一原队列切换为第一目标队列,其中该第一原队列与该第一目标队列属于第一队列对;将第一原标记单元输入该第一原队列并将第一目标标记单元输入该第一目标队列;接收来自该第一数据流的m1个数据单元,其中m1为大于或等于1的正整数;将该m1个数据单元输入该第一目标队列;根据该第一原标记单元和该第一目标标记单元,将该n1个数据单元和该第一原标记单元调度出该第一原队列并将该第一目标标记单元和该m1个数据单元调度出该第一目标队列,其中该第一原标记单元调度出该第一原队列的时刻早于该第一目标调度单元调度出该第一目标队列的时刻。上述技术方案仅需要将原标记单元和目标标记单元分别输入原队列和目标队列就可以实现该n个数据单元和该m个数据单元的输入顺序与输出顺序相同。因此,上述技术方案无需将数据单元从一个队列切换为另一个队列。因此,上述技术方案队列管理的复杂度较低。此外,上述技术方案也无需从一个队列中选择部分数据单元,这就无需要求该交换设备支持随机访问。因此,上述技术方案提供了一种简便的避免数据流乱序的方法。

结合第一方面,在第一方面的第一种可能的实现方式中,该根据该第一原标记单元和该第一目标标记单元,将该n1个数据单元和该第一原标记单元调度出该第一原队列并将该第一目标标记单元和该m1个数据单元调度出该第一目标队列,包括:根据该第一原标记单元和该第一目标标记单元,将该n1个数据单元和该第一原标记单元调度出该第一原队列,并在该第一原标记单元调度出该第一原队列后,将该第一目标标记单元和该m1个数据单元调度出该第一目标队列。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,该根据该第一原标记单元和该第一目标标记单元,将该n1个数据单元和该第一原标记单元调度出该第一原队列,并在该第一原标记单元调度出该第一原队列后,将该第一目标标记单元和该m1个数据单元调度出该第一目标队列,包括:确定第一待调度单元是否为该第一原标记单元,其中该第一待调度单元为该原队列中第一个待调度的单元;确定第二待调度单元是否为该第一目标标记单元,其中该第二待调度单元为该目标队列中第一个待调度的单元;在该第一待调度单元不为该第一原标记单元且该第二待调度单元不为该第一目标标记单元的情况下,根据预设规则调度该第一待调度单元和该第二待调度单元,并继续确定第三待调度单元是否为该第一原标记单元,确定第四待调度单元是否为该第一目标标记单元,其中该第三待调度单元为在将该第一待调度单元调度出该第一原队列后该第一原队列中的第一个待调度的单元,该第四待调度单元为在将该第二待调度单元调度出该第一目标队列后该第一目标队列中的第一个待调度的单元;在该第一待调度单元不为该第一原标记单元且该第二待调度单元为该第一目标标记单元的情况下,将该第一待调度单元调度出该原队列,并继续确定该第三待调度单元是否为该第一原标记单元;在该第一待调度单元为该第一原标记单元且该第二待调度单元为该第一目标标记单元的情况下,将该第一原标记单元调度出该第一原队列并在该第一原标记单元调度出该第一原队列后将该第一目标标记单元调度出该第一目标队列。

结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,该方法还包括:在将该第一原标记单元输入该第一原队列的情况下,将第一计数器对中的第一原计数器的值加1;在将该第一目标标记输入该第一目标队列的情况下,将该第一计数器对中的第一目标计数器的值加1,其中该第一计数器对对应于该第一队列对,该第一原计数器对应于该第一原队列,该第一目标计数器对应于该第一目标队列;在该第一原标记单元调度出该第一原队列的情况下,将该第一原计数器的值减1;在该第一目标标记单元调度出该第一目标队列的情况下,将该第一目标计数器的值减1。这样,可以避免当该原队列为另一队列的原队列或另一队列的目标队列时,无法正确选择调度队列的情况发生。

结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,在将该第一目标标记单元调度出该第一目标队列之前,该方法还包括:确定该第一原计数器的值小于该第一目标计数器的值。这样,可以避免当该原队列为另一队列的原队列或另一队列的目标队列时,无法正确选择调度队列的情况发生。

结合第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第一方面的第五种可能的实现方式中,该原标记单元携带第一编号信息,该目标标记单元携带该第一编号信息和第二编号信息,其中该第一编号信息为该原计数器的编号,该第二编号信息为该目标计数器的编号;该方法还包括:根据该第一编号信息和该第二编号信息确定该原计数器和该目标计数器。当该第一目标标记单元为该第一目标队列的第一个待调度单元的情况下,可以根据该第一编号信息和该第二编号信息确定需要比较的计数器对中的原计数器和目标计数器。

结合第一方面的第四种可能的实现方式或第一方面的第五种可能的实现方式,在第一方面的第六种可能的实现方式中,该方法还包括:接收来自第二数据流的n2个数据单元,其中n2为大于或等于1的正整数;将该n2个数据单元输入该第一原队列;确定该第二数据流从该第一原队列切换为该第一目标队列;将第二原标记单元输入该第一原队列并将第二目标标记单元输入该第一目标队列;接收来自该第二数据流的m2个数据单元,其中m1为大于或等于1的正整数;将该m2个数据单元输入该第一目标队列;根据该第二原标记单元和该第二目标标记单元,将该n2个数据单元和该第二原标记单元调度出该第一原队列并将该第二目标标记单元和该m2个数据单元调度出该第一目标队列,其中该第二原标记单元调度出该第一原队列的时刻早于该第二目标调度单元调度出该第一目标队列的时刻;在将该第二原标记单元输入该第一原队列的情况下,将该第一原计数器的值加1;在将该第二目标标记输入该第一目标队列的情况下,将该第一目标计数器的值加1;在该第二原标记单元调度出该第一原队列的情况下,将该第一原计数器的值减1;在该第二目标标记单元调度出该第一目标队列的情况下,将该第一目标计数器的值减1;在将该第二目标标记单元调度出该第一目标队列之前,该方法还包括:确定该第一原计数器的值小于该第一目标计数器的值。

结合第一方面的第四种可能的实现方式至第一方面的第六种可能的实现方式中的任一种可能的实现方式,在第一方面的第七种可能的实现方式中,该方法还包括:接收来自第三数据流的n3个数据单元,其中n3为大于或等于1的正整数;将该n3个数据单元输入第二原队列;确定该第三数据流从该第二原队列切换为第二目标队列,其中该第二原队列与该第二目标队列属于第二队列对,该第二原队列与该第一原队列不同和/或该第二目标队列与该第一目标队列不同;将第三原标记单元输入该第二原队列并将第三目标标记单元输入该第二目标队列;接收来自该第三数据流的m3个数据单元,其中m1为大于或等于1的正整数;将该m3个数据单元输入该第二目标队列;根据该第三原标记单元和该第三目标标记单元,将该n3个数据单元和该第三原标记单元调度出该第二原队列并将该第三目标标记单元和该m3个数据单元调度出该第二目标队列,其中该第三原标记单元调度出该第二原队列的时刻早于该第二目标调度单元调度出该第二目标队列的时刻;在将该第三原标记单元输入该第二原队列的情况下,将第二计数器对中的第二原计数器的值加1;在将该第三目标标记输入该第二目标队列的情况下,将该第二计数器对中的第二目标计数器的值加1,其中该第二计数器对对应于该第二队列对,该第二原计数器对应于该第二原队列,该第二目标计数器对应于该第二目标队列;在该第三原标记单元调度出该第二原队列的情况下,将该第二原计数器的值减1;在该第三目标标记单元调度出该第二目标队列的情况下,将该第二目标计数器的值减1;在将该第三目标标记单元调度出该第二目标队列之前,该方法还包括:确定该第二原计数器的值小于该第二目标计数器的值。

第二方面,本申请实施例还提供一种交换设备,该交换设备包括用于实现第一方面或第一方面的任一种可能的实现方式的单元。

第三方面,本申请实施例提供一种交换设备,该交换设备包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行第一方面或第一方面的任一种可能的实现方式所述的方法。可选的,该交换设备为芯片或集成电路。

第四方面,本申请实施例提供一种芯片用于执行第一方面或第一方面的任一种可能的实现方式所述的方法。

第五方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行上述各个方面所述的方法。

第六方面,本申请实施例提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述各方面所述的方法。

附图说明

图1是根据本申请实施例提供的一种调度数据的方法的示意性流程图。

图2是根据本申请实施例提供的一种调度数据的方法的示意图。

图3是根据本申请实施例提供的一种调度数据的方法的示意图。

图4是根据本申请实施例提供的一种调度数据的方法的示意图。

图5是根据本申请实施例提供的一种调度数据的方法的示意图。

图6是根据本申请实施例提供的一种交换设备的结构框图。

图7是根据本申请实施例提供的另一交换设备的结构框图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

本申请实施例中所称的交换设备可以是广域网中的交换设备,也可以是局域网中的交换设备。本申请实施例中所称的交换设备可以是交换机,例如以太网交换机、光纤交换机、快速以太网交换机、千兆以太网交换机等。本申请实施例中所称的交换设备也可以是路由器例如接入路由器、骨干级路由器、有线路由器、无线路由器等。本申请实施例中所称的交换设备也可以是与交换机或路由器具有相同功能的其他网络设备。

本申请实施例中所称的数据单元可以是数据包,也可以是数据包的描述符。

图1是根据本申请实施例提供的一种调度数据的方法的示意性流程图。图1所示的方法可以由交换设备执行。

101,接收来自第一数据流的n1个数据单元,其中该数据单元为数据包或数据包的描述符,n1为大于或等于1的正整数。

102,将该n1个数据单元输入第一原队列。

103,确定该第一数据流从该第一原队列切换为第一目标队列,其中该第一原队列与该第一目标队列属于第一队列对。

104,将第一原标记单元输入该第一原队列并将第一目标标记单元输入该第一目标队列。

105,接收来自该第一数据流的m1个数据单元,其中m1为大于或等于1的正整数。

106,将该m1个数据单元输入该第一目标队列。

107,根据该第一原标记单元和该第一目标标记单元,将该n1个数据单元和该第一原标记单元调度出该第一原队列并将该第一目标标记单元和该m1个数据单元调度出该第一目标队列,其中该第一原标记单元调度出该第一原队列的时刻早于该第一目标调度单元调度出该第一目标队列的时刻。

图1所示的方法仅需要将原标记单元和目标标记单元分别输入原队列和目标队列就可以实现该n1个数据单元和该m1个数据单元的输入顺序与输出顺序相同。因此,上述技术方案无需将数据单元从一个队列切换为另一个队列。因此,上述技术方案队列管理的复杂度较低。此外,上述技术方案也无需从一个队列中选择部分数据单元,这就无需要求该交换设备支持随机访问。因此,上述技术方案提供了一种简便的避免数据流乱序的方法。

该第一数据流中的数据单元先进入该第一原队列,然后从该第一原队列切换到该第一目标队列。因此,图1所示的方法中,步骤101至步骤107是依次执行的。同时,对于属于同一个队列中的多个数据单元,该多个数据单元是按照先入先出的方式调度出队列的。

原标记单元(例如该第一原标记单元)和目标标记单元(例如该第一目标标记单元)可以是具有特殊格式和/或内容的单元。换句话说,标记单元的格式和/或内容与数据单元的格式和/或内容不同。这样,该交换设备可以根据该原标记单元和该目标标记单元中的格式和/或内容来区分待调度的单元是标记单元或数据单元。

可选的,在一些实施例中,该根据该第一原标记单元和该第一目标标记单元,将该n1个数据单元和该第一原标记单元调度出该第一原队列并将该第一目标标记单元和该m1个数据单元调度出该第一目标队列,包括:根据该第一原标记单元和该第一目标标记单元,将该n1个数据单元和该第一原标记单元调度出该第一原队列,并在该第一原标记单元调度出该第一原队列后,将该第一目标标记单元和该m1个数据单元调度出该第一目标队列。

可选的,在一些实施例中,该根据该第一原标记单元和该第一目标标记单元,将该n1个数据单元和该第一原标记单元调度出该第一原队列,并在该第一原标记单元调度出该第一原队列后,将该第一目标标记单元和该m1个数据单元调度出该第一目标队列,包括:确定第一待调度单元是否为该第一原标记单元,其中该第一待调度单元为该原队列中第一个待调度的单元;确定第二待调度单元是否为该第一目标标记单元,其中该第二待调度单元为该目标队列中第一个待调度的单元;在该第一待调度单元不为该第一原标记单元且该第二待调度单元不为该第一目标标记单元的情况下,根据预设规则调度该第一待调度单元和该第二待调度单元,并继续确定第三待调度单元是否为该第一原标记单元,确定第四待调度单元是否为该第一目标标记单元,其中该第三待调度单元为在将该第一待调度单元调度出该第一原队列后该第一原队列中的第一个待调度的单元,该第四待调度单元为在将该第二待调度单元调度出该第一目标队列后该第一目标队列中的第一个待调度的单元;在该第一待调度单元不为该第一原标记单元且该第二待调度单元为该第一目标标记单元的情况下,将该第一待调度单元调度出该原队列,并继续确定该第三待调度单元是否为该第一原标记单元;在该第一待调度单元为该第一原标记单元且该第二待调度单元为该第一目标标记单元的情况下,将该第一原标记单元调度出该第一原队列并在该第一原标记单元调度出该第一原队列后将该第一目标标记单元调度出该第一目标队列。

该预设调度规则可以是轮询调度、加权轮询调度、严格优先级调度等规则。

可选的,在一些实施例中,该调度设备还可以维护一个对应于该队列对的计数器对。例如,第一计数器对对应于该第一队列对。该第一计数器对包括第一原计数器和第一目标计数器。该第一原计数器对应于该第一原队列,该第一目标计数器对应于该第一目标队列。在将该第一原标记单元输入该第一原队列的情况下,将该第一原计数器的值加1;在将该第一目标标记输入该第一目标队列的情况下,将该第一目标计数器的值加1;在该第一原标记单元调度出该第一原队列的情况下,将该第一原计数器的值减1;在该第一目标标记单元调度出该第一目标队列的情况下,将该第一目标计数器的值减1。这样,可以避免当该原队列为另一队列的原队列或另一队列的目标队列时,无法正确选择调度队列的情况发生。

可选的,在一些实施例中,在将该第一目标标记单元调度出该第一目标队列之前,该方法还包括:确定该第一原计数器的值小于该第一目标计数器的值。换句话说,若将该第二带调度单元调度出该目标队列之前该第一原计数器的值大于或等于该第一目标计数器的值,则不将该第二待调度单元调度出该第一目标队列。在此情况下,可以继续将该第一原队列中的待调度单元调度出该第一原队列。这样,可以避免当该第一原队列为另一队列对的原队列或另一队列对的目标队列时,无法正确选择调度队列的情况发生。

可选的,在一些实施例中,该原标记单元携带第一编号信息,该目标标记单元携带该第一编号信息和第二编号信息,其中该第一编号信息为该原计数器的编号,该第二编号信息为该目标计数器的编号;该方法还包括:根据该第一编号信息和该第二编号信息确定该原计数器和该目标计数器。

具体地,当该第一原标记单元输入该第一原队列时,可以根据该第一编号信息,将该第一计数器对中的第一原计数器的值加1;当该第一目标标记单元输入该第一目标队列时,可以根据该第二编号信息,将该第一计数器对中的第一目标计数器的值加1;当该第一原标记单元调度出该第一原队列时,可以根据该第一编号信息,将该第一原计数器的值减1;当该第一原标记单元调度出该第一目标队列时,可以根据该第二编号细信息,将该第一目标计数器的值减1。当该第一目标标记单元为该第一目标队列的第一个待调度单元的情况下,可以根据该第一编号信息和该第二编号信息确定需要比较的该第一计数器对中的第一原计数器的值和第一目标计数器的值。

可选的,在一些实施例中图1所示的方法还可以包括:接收来自第二数据流的n2个数据单元,其中n2为大于或等于1的正整数;将该n2个数据单元输入该第一原队列;确定该第二数据流从该第一原队列切换为该第一目标队列;将第二原标记单元输入该第一原队列并将第二目标标记单元输入该第一目标队列;接收来自该第二数据流的m2个数据单元,其中m1为大于或等于1的正整数;将该m2个数据单元输入该第一目标队列;根据该第二原标记单元和该第二目标标记单元,将该n2个数据单元和该第二原标记单元调度出该第一原队列并将该第二目标标记单元和该m2个数据单元调度出该第一目标队列,其中该第二原标记单元调度出该第一原队列的时刻早于该第二目标调度单元调度出该第一目标队列的时刻;在将该第二原标记单元输入该第一原队列的情况下,将该第一原计数器的值加1;在将该第二目标标记输入该第一目标队列的情况下,将该第一目标计数器的值加1;在该第二原标记单元调度出该第一原队列的情况下,将该第一原计数器的值减1;在该第二目标标记单元调度出该第一目标队列的情况下,将该第一目标计数器的值减1;在将该第二目标标记单元调度出该第一目标队列之前,该方法还包括:确定该第一原计数器的值小于该第一目标计数器的值。该交换设备调度该第二数据流中的数据单元的具体调度方式与调度该第一数据流中的数据单元的具体调度方式类似,在此就不必赘述。

可选的,在一些实施例中图1所示的方法还可以包括:接收来自第三数据流的n3个数据单元,其中n3为大于或等于1的正整数;将该n3个数据单元输入第二原队列;确定该第三数据流从该第二原队列切换为第二目标队列,其中该第二原队列与该第二目标队列属于第二队列对,该第二原队列与该第一原队列不同和/或该第二目标队列与该第一目标队列不同;将第三原标记单元输入该第二原队列并将第三目标标记单元输入该第二目标队列;接收来自该第三数据流的m3个数据单元,其中m1为大于或等于1的正整数;将该m3个数据单元输入该第二目标队列;根据该第三原标记单元和该第三目标标记单元,将该n3个数据单元和该第三原标记单元调度出该第二原队列并将该第三目标标记单元和该m3个数据单元调度出该第二目标队列,其中该第三原标记单元调度出该第二原队列的时刻早于该第二目标调度单元调度出该第二目标队列的时刻;在将该第三原标记单元输入该第二原队列的情况下,将第二计数器对中的第二原计数器的值加1;在将该第三目标标记输入该第二目标队列的情况下,将该第二计数器对中的第二目标计数器的值加1,其中该第二计数器对对应于该第二队列对,该第二原计数器对应于该第二原队列,该第二目标计数器对应于该第二目标队列;在该第三原标记单元调度出该第二原队列的情况下,将该第二原计数器的值减1;在该第三目标标记单元调度出该第二目标队列的情况下,将该第二目标计数器的值减1;在将该第三目标标记单元调度出该第二目标队列之前,该方法还包括:确定该第二原计数器的值小于该第二目标计数器的值。该交换设备调度该第三数据流中的数据单元的具体调度方式与调度该第一数据流中的数据单元的具体调度方式类似,在此就不必赘述。在该第二原队列与该第一原队列相同且该第二目标队列与该第一目标队列不同,或者该第二原队列与该第一原队列不同且该第二目标队列与该第一目标队列相同的情况下,第一队列对和第二队列对所对应的计数器对是不同的。因此,可以通过比较计数器对中的原计数器的值和目标计数器的值,可以避免当该第一原队列为另一队列对的原队列或另一队列对的目标队列时,无法正确选择调度队列的情况发生。

图2是根据本申请实施例提供的一种调度数据的方法的示意图。如图2所示的队列对1包括两个队列,原队列11和目标队列12。数据流1先输入原队列11。如图2所示,输入原队列11的数据单元包括数据流1的中的数据单元10至12。在数据流1从原队列11切换到目标队列12的情况下,标记单元11输入原队列11,标记单元12输入目标队列12。在此之后,获取到的数据流1的数据单元输入目标队列12。如图2所示,输入目标队列12的数据单元包括数据流1中的数据单元13和数据单元14。

如图2所示,原队列11中共包括四个单元,依次为数据单元10、数据单元11、数据单元12和标记单元11且位于的队首的第一个待调度单元为数据单元10。目标队列12中共包括三个单元,依次为标记单元12、数据单元13和数据单元14且位于队首的第一个待调度单元为标记单元12。此外,数据流1输入队列对1中的数据单元的顺序为:数据单元10、数据单元11、数据单元12、数据单元13和数据单元14。

交换设备会确定原队列11中的第一个待调度单元是否为标记单元,确定目标队列12中的第一个待调度单元是否为标记单元。如图2所示,交换设备确定原队列11中的第一个待调度单元不为标记单元,确定目标队列12中的第一个待调度单元为标记单元。在此情况下,交换设备可以将原队列11中的第一个待调度单元调度出原队列11,即将数据单元10调度出原队列11。此外,该交换设备不会调度目标队列12中的第一个待调度单元,即标记单元12。在将数据单元10调度出原队列11后,该交换设备会确定原队列11中下一个待调度单元是否为标记单元。如图2所示,数据单元10之后的待调度单元为数据单元11。在此情况下,该交换设备会继续将数据单元11调度出原队列11。在将数据单元11调度出原队列11后,该交换设备会继续确定队列11中下一个待调度单元是否为标记单元。如图2所示,数据单元11之后的待调度单元为数据单元12。在此情况下,该交换设备会继续将数据单元12调度出原队列11。在将数据单元12调度出原队列11后,该交换设备会继续确定原队列11中下一个待调度单元是否为标记单元。如图2所示,数据单元12之后的待调度单元为标记单元11。在此情况下,该交换设备会将该标记单元11调度出原队列11。在将标记单元11调度出原队列11后,该交换设备可以将位于目标队列12的队首的标记单元12调度出目标队列12。在此之后,目标队列12中的第一个待调度单元为数据单元13。

可选的,作为一个实施例,该交换设备可以停止从原队列11中调度出数据单元。在将该标记单元12调度出目标队列12后,该交换设备可以确定目标队列12中下一个待调度单元是否为标记单元。如图2所示,标记单元12之后的待调度单元为数据单元13。在此情况下,该交换设备会继续将数据单元13调度出目标队列12。在将数据单元13调度出目标队列12后,该交换设备会继续确定目标队列12中下一个待调度单元是否为标记单元。如图2所示,数据单元13之后的待调度单元为数据单元14。在此情况下,该交换设备会将数据单元14调度出目标队列12。

可以理解的是,该交换设备在确定一个待调度单元是否为标记单元之前,会先确定是否还存在该待调度单元,若不存在该待调度单元,则从将另一队列中的单元调度出队列,若存在该待调度单元,则确定该待调度单元是否为标记单元。例如,在将数据单元14调度出目标队列12后,该交换设备会确定目标队列12中是否还有待调度单元。在目标队列12中没有待调度单元且原队列11还有待调度单元的情况下,可以将原队列11中的待调度单元调度出原队列11。

通过上述过程,从原队列11和目标队列12中调度出的数据单元的顺序为:数据单元10、数据单元11、数据单元12、数据单元13和数据单元14。由此可见,输入到该交换设备的数据单元的输入顺序与该交换设备输出的数据单元的输出顺序是相同的。

如图2所示的实施例中仅涉及了一个数据流输入该交换设备。在一些实施例中,除了数据流1外,该交换设备还可以接收数据流2。

可选的,在一些实施例中,数据流2始终会输入原队列11。在此情况下,输入到该交换设备的数据单元的输入顺序与该交换设备输出的数据单元的输出顺序是相同的。

例如,数据流2中的数据单元20和数据单元21(图2中未示出)在数据单元10之后和数据单元11之前输入到原队列11。在此情况下,按照上述规则,从队列对1中输出的数据单元依次为数据单元10、数据单元20、数据单元21、数据单元11、数据单元12、数据单元13和数据单元14。

又如,数据流2中的数据单元22和数据单元23(图2中未示出)在数据流1从原队列11切换到目标队列12后输入到原队列11。

可选的,在一些实施例中,可以在将目标队列12中的数据单元13和数据单元14调度出目标队列后,再将数据单元22和数据单元23调度出原队列11。这样,根据上述规则,从原队列11和目标队列12中输出的数据单元依次为:数据单元10、数据单元20、数据单元21、数据单元11、数据单元12、数据单元13、数据单元14、数据单元22和数据单元23。由此可见,输入到该交换设备的数据流1的数据单元的输入顺序与该交换设备输出数据流1中的数据单元的输出顺序相同,输入到该交换设备的数据流2的数据单元的输入顺序与该交换设备输出数据流2中的数据单元的输出顺序相同。

可选的,另在一些实施例中,在将标记单元11调度出原队列11后,该交换设备可以将标记单元12调度出目标队列12。在此之后,该交换设备可以继续确定原队列11中的下一个待调度单元是否为标记单元,确定目标队列12中的下一个待调度单元是否为标记单元。此时,原队列11中的下一个待调度单元为数据单元22,目标队列12中的下一个待调度单元为数据单元13。换句话说,原队列11中的下一个待调度单元和目标队列中的下一个待调度单元均不是标记单元。在此情况下,该交换设备可以根据预设规则调度该数据单元22和该数据单元13。例如,假设该预设规则为轮询调度且先调度原队列11再调度目标队列12,则该交换设备可以先将数据单元22调度出原队列11,然后将数据单元13调度出目标队列12。类似的,数据单元22之后的待调度单元为数据单元23,数据单元13之后的待调度单元为数据单元14。该交换设备可以采用相同的方式,先将数据单元23调度出原队列11,然后再将数据单元14调度出目标队列12。这样,根据上述规则,从原队列11和目标队列12中输出的数据单元依次为:数据单元10、数据单元20、数据单元21、数据单元11、数据单元12、数据单元22、数据单元13、数据单元23和数据单元14。由此可见,输入到该交换设备的数据流1的数据单元的输入顺序与该交换设备输出数据流1中的数据单元的输出顺序相同,输入到该交换设备的数据流2的数据单元的输入顺序与该交换设备输出数据流2中的数据单元的输出顺序相同。

可选的,另在一些实施例中,在将标记单元11调度出原队列11后,该交换设备可以将继续确定原队列11中的下一个待调度单元是否为标记单元。该原队列11中的下一个待调度单元为数据单元22,而目标队列12中的下一个待调度单元为标记单元12。因此,该交换设备可以继续将原队列11中的数据单元22调度出原队列11。原队列11中的数据单元22后的下一个待调度单元为数据单元23。因此,该交换设备可以继续将数据单元23调度出原队列11。数据单元23之后原队列11中没有待调度单元。在此情况下,可以将目标队列12中的单元调度出队列。这样,根据上述规则,从原队列11和目标队列12中输出的数据单元依次为:数据单元10、数据单元20、数据单元21、数据单元11、数据单元12、数据单元22、数据单元23、数据单元13和数据单元14。由此可见,输入到该交换设备的数据流1的数据单元的输入顺序与该交换设备输出数据流1中的数据单元的输出顺序相同,输入到该交换设备的数据流2的数据单元的输入顺序与该交换设备输出数据流2中的数据单元的输出顺序相同。

可选的,在一些实施例中,还可以设置一对计数器对。该计数器对包括原计数器11和目标计数器12。原计数器11对应于原队列11,目标计数器12对应于目标队列12。该交换设备可以每个队列输入一个标记单元后,将该队列对应的计数器的值加1。例如,在将标记单元11输入到队列11的情况下将原计数器11的值加1;在将标记单元12输入到队列12的情况下,将目标计数器12的值加1。该交换设备还可以在将标记单元11调度出原队列11后将原计数器11的值减1,在将标记单元12调度出目标队列12后,将目标计数器12的值减1。

进一步,该交换设备在将位于目标队列中的标记单元调度出该目标队列之前,需要确定目标计数器的值大于原计数器的值。具体地,该交换设备在将标记单元12调度出目标队列12之前,需要确定目标计数器12的值大于原计数器11的值。

进一步,标记单元11可以包括编号信息11,编号信息11为原计数器11的编号。类似的,标记单元12可以包括编号信息12,编号信息12为目标计数器12的编号。可选的,在一些实施例中,标记单元12还可以携带编号信息11。这样,当标记单元12为目标队列12的第一个待调度单元的情况下,可以根据编号信息11和编号信息12确定需要比较的计数器对中的原计数器和目标计数器。

该交换设备可以根据标记单元中的编号信息对相应的原计数器和目标计数器的值进行加减操作。

可选的,在另一些实施例中,数据流2也会从原队列11切换到目标队列12。在此情况下,该交换设备可以采用与处理数据流1相同的方案调度获取到的数据流2的数据单元,具体如图3所示。

图3是根据本申请实施例提供的一种调度数据的方法的示意图。如图3所示的队列对1包括两个队列,原队列11和目标队列12。数据流1先输入原队列11。如图3所示,输入原队列11的数据单元包括数据流1的中的数据单元10至12。在数据流1从原队列11切换到目标队列12的情况下,标记单元11输入原队列11,标记单元12输入目标队列12。在此之后,获取到的数据流1的数据单元输入目标队列12。如图3所示,输入目标队列12的数据单元包括数据流1中的数据单元13和数据单元14。在将数据单元14输入到目标队列12后,该交换设备接收数据流2。数据流2先输入原队列11。如图3所示,输入原队列11的数据单元包括数据单元20和数据单元21。在数据流2从原队列11切换到目标队列12的情况下,标记单元21输入原队列11,标记单元22输入目标队列12。在此之后,获取到的数据流2的数据单元输入目标队列12。如图3所示,输入目标队列12的数据单元包括数据流2中的数据单元22和数据单元23。

该交换设备处理原队列11和目标队列12中的数据单元10至12以及标记单元11的方式与图2所示的实施例相同,在此就不必赘述。

只要一个数据流的输入到原队列的标记单元早于该数据流输入到目标队列的标记单元输出队列,该数据流中的数据单元的输入顺序与输出顺序就可以相同。以图3为例,只要标记单元11调度出原队列11的时刻早于标记单元12调度出目标队列12的时刻,就可以保证数据流1中的数据单元的输入顺序与输出顺序不发生变化。类似的,只要标记单元21调度出原队列11的时刻早于标记单元22调度出目标队列12的时刻,就可以保证数据流2中的数据单元的输入顺序与输出顺序不发生变化。

因此,在一些实施例中,在标记单元11调度出原队列11后,该交换设备可以继续从原队列11中调度出单元,直到将标记单元21调度出原队列11后,在依次将目标队列12中的标记单元12、数据单元13、数据单元14、标记单元22、数据单元22和数据单元23调度出目标队列12即可。

在另一些实施例中,在将标记单元11调度出原队列11后,可以将标记单元12调度出目标队列12。然后可以采用轮询调度的方式依次将数据单元20、数据单元13、数据单元21和数据单元14调度出各自所在的队列。在此之后,依次将标记单元21、标记单元22、数据单元22和数据单元23调度出各自所在的队列。

在另一些实施例中,在将标记单元11调度出原队列11后,可以将标记单元12调度出目标队列12。然后可以依次将数据单元13和数据单元14调度出目标队列12。在将数据单元14调度出目标队列12之后,可以依次将数据单元20、数据单元21和标记单元21调度出原队列11。在将标记单元21调度出原队列11后,可以依次将标记单元22、数据单元22和数据单元23调度出目标队列12。

无论采用上述哪一种实施例,数据流1中的数据单元的输入顺序与输出顺序不发生变化,数据流2中的数据单元的输入顺序与输出顺序不发生变化。

可选的,在一些实施例中,还可以设置一对计数器对。该计数器对包括原计数器11和目标计数器12。原计数器11对应于原队列11,目标计数器12对应于目标队列12。该交换设备可以每个队列输入一个标记单元后,将该队列对应的计数器的值加1。例如,在将标记单元11输入到队列11的情况下将原计数器11的值加1;在将标记单元12输入到队列12的情况下,将目标计数器12的值加1;在将标记单元21输入到原队列11的情况下将原计数器11的值加1;在将标记单元22输入到目标队列12的情况下将目标计数器12的值加1。该交换设备还可以在将标记单元11调度出队列11后将原计数器11的值减1,在将标记单元12调度出目标队列12后将目标计数器12的值减1,在将标记单元21调度出原队列11后将原计数器11的值减1,在将标记单元22调度出目标队列12后将目标计数器12的值减1。

进一步,该交换设备在将位于目标队列中的标记单元调度出该目标队列之前,需要确定目标计数器的值大于原计数器的值。具体地,在将标记单元12调度出目标队列12之前,需要确定目标计数器12的值大于原计数器11的值;在将标记单元22调度出目标队列12之前,需要确定目标计数器12的值大于原计数器11的值。

进一步,标记单元11和标记单元21可以包括编号信息11,编号信息11为原计数器11的编号。类似的,标记单元12和标记单元22可以包括编号信息12,编号信息12为目标计数器12的编号。可选的,在一些实施例中,标记单元12还可以携带编号信息11。这样,当标记单元12为目标队列12的第一个待调度单元的情况下,可以根据编号信息11和编号信息12确定需要比较的计数器对中的原计数器和目标计数器。

该交换设备可以根据标记单元中的编号信息对相应的原计数器和目标计数器的值进行加减操作。

可选的,在一些实施例中,两个不同的数据流对应的队列对所包括的队列可以是相同的,但是先入的队列和切换的队列是不同的。例如,数据流1先输入的队列与数据流2切换队列后输入的队列是同一队列;数据流2先输入的队列与数据流1切换队列后输入的队列是同一队列。在此情况下,可以认为数据流1对应队列对1,该队列对1包括原队列11和目标队列12;认为数据流2对应队列对2,该队列对2包括原队列21和目标队列12。原队列21和目标队列12是同一个队列,目标队列12和原队列11是同一个队列。在此情况下,可以设置对应于队列对1的计数器对1和对应于队列对2的计数器对2。交换设备可以利用计数器对中的计数器的值与标记单元调度原队列和目标队列中的单元。具体实现方式可以参见图4所示的实施例。

图4是根据本申请实施例提供的一种调度数据的方法的示意图。如图4所示的队列对1包括两个队列,原队列11和目标队列12。数据流1先输入原队列11。如图4所示,输入原队列11的数据单元包括数据流1的中的数据单元10至12。在数据流1从原队列11切换到目标队列12的情况下,标记单元11输入原队列11,标记单元12输入目标队列12。在此之后,获取到的数据流1的数据单元输入目标队列12。如图4所示,输入目标队列12的数据单元包括数据流1中的数据单元13和数据单元14。在将数据单元14输入到目标队列12后,该交换设备接收数据流2。数据流2对应队列对2。队列对2包括原队列21和目标队列22。原队列21和目标队列12是同一个队列,目标队列12和原队列11是同一个队列。数据流2先输入原队列21。如图4所示,输入原队列21的数据单元包括数据单元20和数据单元21。在数据流2从原队列21切换到目标队列22的情况下,标记单元21输入原队列21,标记单元22输入目标队列22。在此之后,获取到的数据流2的数据单元输入目标队列22。如图4所示,输入目标队列22的数据单元包括数据流2中的数据单元22和数据单元23。

计数器对1包括原计数器11和目标计数器12,原计数器11对应于原队列11,目标计数器12对应于目标队列12。计数器对2包括原计数器21和目标计数器22,原计数器21对应于原队列21,目标计数器22对应于目标队列22。

在标记单元11输入到原队列11的情况下,可以将原计数器11的值加1;在标记单元12输入到目标队列12的情况下,可以将目标计数器12的值加1。在标记单元21输入到原队列21的情况下,可以将原计数器21的值加1;在标记单元22输入到目标队列22的情况下,可以将目标计数器12的值加1。每个计数器对中的两个计数器的初始值是相同的。换句话说,原计数器11的初始值与目标计数器12的初始值相同,原计数器21的初始值与目标计数器22的初始值相同。假设原计数器11、目标计数器12、原计数器21和目标计数器22的初始值均为0,则在图4所示的情况下,原计数器11、目标计数器12、原计数器21和目标计数器22的值均为1。

标记单元11可以包括编号信息11,编号信息11为原计数器11的编号。类似的,标记单元12可以包括编号信息12,编号信息12为目标计数器12的编号;标记单元21可以包括编号信息21,编号信息21为原计数器21的编号;标记单元22可以包括编号信息22,编号信息22为目标计数器22的编号。

标记单元12还可以携带编号信息11,标记单元22还可以携带编号信息21。这样,当标记单元12为目标队列12的第一个待调度单元的情况下,可以根据标记单元12/标记单元22携带的编号信息确定需要比较的计数器对中的原计数器和目标计数器。

该交换设备可以根据标记单元中的编号信息对相应的原计数器和目标计数器的值进行加减操作。

该交换设备对属于多个数据流的数据单元的调度方式与对属于一个数据流的数据单元的调度方式类似。换句话说,可以认为该交换设备对属于不同的数据流的数据单元可以采用相同的方式调度。

以图4所示的原队列11、目标队列12、原队列12和目标队列22为例。该交换设备确定位于原队列11队首的待调度单元为数据单元,位于目标队列12队首的待调度单元为标记单元。在此情况下,交换设备可以将原队列11中的第一个待调度单元调度出原队列11,即将数据单元10调度出原队列11。在将数据单元10调度出原队列11后,该交换设备会确定原队列11中下一个待调度单元是否为标记单元。如图4所示,数据单元10之后的待调度单元为数据单元11。在此情况下,该交换设备会继续将数据单元11调度出原队列11。在将数据单元11调度出原队列11后,该交换设备会继续确定原队列11中下一个待调度单元是否为标记单元。如图4所示,数据单元11之后的待调度单元为数据单元12。在此情况下,该交换设备会继续将数据单元12调度出原队列11。在将数据单元12调度出原队列11后,该交换设备会确定判断原队列11中下一个待调度单元是否为标记单元。如图4所示,数据单元12之后的待调度单元为标记单元11。在此情况下,该交换设备会将该标记单元11调度出原队列11,将原计数器11的值减1。这样,原计数器11的值小于目标计数器12的值。在标记单元11调度出原队列11后,该交换设备可以确定原队列11中的下一个待调度单位为标记单元22。同时,该交换设备可以根据标记单元22携带的计数器编号信息确定原计数器21的值等于目标计数器22的值。因此,在将标记单元11调度出原队列11后,目标计数器12的值大于原计数器11的值,原计数器21得值等于目标计数器22的值。在此情况下,该交换设备将位于目标队列12的队首的标记单元12调度出目标队列12。同时,该交换设备会停止从原队列11中调度出数据单元。在将该标记单元12调度出目标队列12后,该交换设备会将目标计数器12的值减1。在将该标记单元12调度出目标队列12后,该交换设备确定目标队列12中下一个待调度单元是否为标记单元。如图4所示,标记单元12之后的待调度单元为数据单元13。在此情况下,该交换设备会继续将数据单元13调度出目标队列12。在将数据单元13调度出目标队列12后,该交换设备会继续判断目标队列12中下一个待调度单元是否为标记单元。如图4所示,数据单元13之后的待调度单元为数据单元14。在此情况下,该交换设备会将数据单元14调度出目标队列12。

在将数据单元14调度出目标队列12后,位于原队列11队首的待调度单元为标记单元22,位于目标队列12队首的待调度单元为数据单元20。

该交换设备可以根据标记单元22中的编号信息确定原计数器21得值等于目标计数器22的值。因此,该交换设备可以将数据单元20从原队列21中调度出来。该交换设备会确定原队列21中下一个待调度单元是否为标记单元。如图4所示,数据单元20之后的待调度单元为数据单元21。在此情况下,该交换设备会继续将数据单元21调度出原队列21。在将数据单元21调度出原队列21后,该交换设备会继续判断队列21中下一个待调度单元是否为标记单元。如图4所示,数据单元21之后的待调度单元为标记单元21。在此情况下,该交换设备会将该标记单元21调度出原队列21,将原计数器21的值减1。这样,原计数器21的值小于目标计数器22的值。在此情况下,该交换设备将位于目标队列22的队首的标记单元22调度出目标队列22。同时,该交换设备会停止从原队列21中调度出数据单元。在将该标记单元22调度出目标队列22后,该交换设备会将目标计数器22的值减1。在将该标记单元22调度出目标队列12后,该交换设备判断目标队列22中下一个待调度单元是否为标记单元。如图4所示,标记单元22之后的待调度单元为数据单元22。在此情况下,该交换设备会继续将数据单元22调度出目标队列22。在将数据单元22调度出目标队列22后,该交换设备会继续判断目标队列22中下一个待调度单元是否为标记单元。如图4所示,数据单元22之后的待调度单元为数据单元23。在此情况下,该交换设备会将数据单元23调度出目标队列22。

通过上述过程,从原队列11和目标队列12中调度出的数据单元的顺序为:数据单元10、数据单元11、数据单元12、数据单元13、数据单元14、数据单元20、数据单元21、数据单元22和数据单元23。由此可见,输入到该交换设备的数据单元的输入顺序与该交换设备输出的数据单元的输出顺序是相同的。

图2至图4所示的实施例中,每个队列是一个队列的原队列或目标队列。在一些实施例中,一个队列可以是多个队列的原队列或目标队列。在此情况下,一个队列对仍然是包括两个队列,即一个原队列和一个目标队列。

例如,存在队列a、队列b和队列c三个队列。数据流1从队列a切换到队列b。在此情况下,对于数据流1而言,数据流1对应于队列对ab,队列对ab中的队列a为数据流1的原队列,队列对ab中的队列b为数据流1的目标队列。数据流2从队列a切换到队列c。在此情况下,对于数据流2而言,数据流量2对应于队列对ac,队列对ac中队列a为数据流2的原队列,队列对ac中的队列c为数据流2的目标队列。

又如,存在队列d、队列e和队列f三个队列。数据流3从队列d切换到队列f。在此情况下,对于数据流1而言,数据流1对应于队列对df,队列对df中的队列d为数据流1的原队列,队列对df中的队列f为数据流1的目标队列。数据流2从队列e切换到队列f。在此情况下,对于数据流2而言,数据流量2对应于队列对ef,队列对ef中队列e为数据流2的原队列,队列对ef中的队列f为数据流2的目标队列。

下面将结合图5对一个队列为多个队列的原队列的情况进行描述。

图5是根据本申请实施例提供的一种调度数据的方法的示意图。如图5所示的队列对1包括两个队列,原队列11和目标队列12。数据流1先输入原队列11。如图5所示,输入原队列11的数据单元包括数据流1的中的数据单元10至12。在数据流1从原队列11切换到目标队列12的情况下,标记单元11输入原队列11,标记单元12输入目标队列12。在此之后,获取到的数据流1的数据单元输入目标队列12。如图5所示,输入目标队列12的数据单元包括数据流1中的数据单元13和数据单元14。在将数据单元14输入到目标队列12后,该交换设备接收数据流2。数据流2对应队列对2。队列对2包括原队列21和目标队列22。原队列21和原队列11是同一个队列。目标队列22和目标队列12是不同的队列。数据流2先输入原队列21。如图5所示,输入原队列21的数据单元包括数据单元20和数据单元21。在数据流2从原队列21切换到目标队列22的情况下,标记单元21输入原队列21,标记单元22输入目标队列22。在此之后,获取到的数据流2的数据单元输入目标队列22。如图5所示,输入目标队列22的数据单元包括数据流2中的数据单元22和数据单元23。

在标记单元11输入到原队列11的情况下,可以将原计数器11的值加1;在标记单元12输入到目标队列12的情况下,可以将目标计数器12的值加1。在标记单元21输入到原队列21的情况下,可以将原计数器21的值加1;在标记单元22输入到目标队列22的情况下,可以将目标计数器12的值加1。每个计数器对中的两个计数器的初始值是相同的。换句话说,原计数器11的初始值与目标计数器12的初始值相同,原计数器21的初始值与目标计数器22的初始值相同。假设原计数器11、目标计数器12、原计数器21和目标计数器22的初始值均为0,则在图5所示的情况下,原计数器11、目标计数器12、原计数器21和目标计数器22的值均为1。

标记单元11可以包括编号信息11,编号信息11为原计数器11的编号。类似的,标记单元12可以包括编号信息12,编号信息12为目标计数器12的编号;标记单元21可以包括编号信息21,编号信息21为原计数器21的编号;标记单元22可以包括编号信息22,编号信息22为目标计数器22的编号。

标记单元12还可以携带编号信息11,标记单元22还可以携带编号信息21。这样,当标记单元12为目标队列12的第一个待调度单元的情况下,可以根据标记单元12/标记单元22携带的编号信息确定需要比较的计数器对中的原计数器和目标计数器。

该交换设备可以根据标记单元中的编号信息对相应的原计数器和目标计数器的值进行加减操作。

可选的,在一些实施例中,该交换设备处理数据单元10至14以及标记单元11和12的具体过程可以与图4所示实施例中该交换设备处理数据单元10至14以及标记单元11和12的具体过程相同,在此就不必赘述。

在将数据单元14调度出目标队列12后,位于原队列11队首的待调度单元为数据单元20,位于目标队列22队首的待调度单元为标记单元22。

该交换设备可以根据标记单元22中的编号信息确定出标记单元22对应的计数器为目标计数器22。同时,原计数器21的值与目标计数器22的值相同。在此情况下,交换设备会将原队列21中的第一个待调度单元调度出原队列21,即将数据单元20调度出原队列21。在将数据单元20调度出原队列21后,该交换设备会确定原队列21中下一个待调度单元是否为标记单元。如图5所示,数据单元20之后的待调度单元为数据单元21。在此情况下,该交换设备会继续将数据单元21调度出原队列21。在将数据单元21调度出原队列21后,该交换设备会继续确定原队列21中下一个待调度单元是否为标记单元。如图5所示,数据单元21之后的待调度单元为标记单元21。在此情况下,该交换设备会将该标记单元21调度出原队列21,将原计数器21的值减1。这样,原计数器21的值小于目标计数器22的值。在此情况下,该交换设备将位于目标队列22的队首的标记单元22调度出目标队列22。同时,该交换设备会停止从原队列21中调度出数据单元。在将该标记单元22调度出目标队列22后,该交换设备会将目标计数器22的值减1。在将该标记单元22调度出目标队列12后,该交换设备确定目标队列22中下一个待调度单元是否为标记单元。如图5所示,标记单元22之后的待调度单元为数据单元22。在此情况下,该交换设备会继续将数据单元22调度出目标队列22。在将数据单元22调度出目标队列22后,该交换设备会继续确定目标队列22中下一个待调度单元是否为标记单元。如图5所示,数据单元22之后的待调度单元为数据单元23。在此情况下,该交换设备会将数据单元23调度出目标队列22。

通过上述过程,从原队列11和目标队列12中调度出的数据单元的顺序为:数据单元10、数据单元11、数据单元12、数据单元13、数据单元15、数据单元20、数据单元21、数据单元22和数据单元23。由此可见,数据流1中的数据单元的输入顺序与输出顺序不发生变化,数据流2中的数据单元的输入顺序与输出顺序不发生变化。

可选的,在另一些实施例中,该交换设备也可以先将原队列11中所有的单元全部调度出原队列11,即将数据单元10、数据单元11、数据单元12、标记单元11、数据单元20、数据单元21和标记单元21全部调度出原队列11。在此之后,该交换设备再将目标队列12和目标队列22中的全部单元调度出各自所在的队列。在此情况下,数据流1中的数据单元的输入顺序与输出顺序不发生变化,数据流2中的数据单元的输入顺序与输出顺序不发生变化。

可选的,在另一些实施例中,该交换设备将原队列11中的数据单元11至12调度出原队列11,将标记单元11调度出原队列11之后,可以先将目标队列12中的标记单元12调度出目标队列12。然后,该交换设备可以根据预设规则(例如轮训调度)来调度原队列21中剩余的数据单元和目标队列12剩余的数据单元。在将标记单元21调度出原队列21后,该交换设备可以将目标队列22中的标记单元22、数据单元22和数据单元23依次调度出目标队列22。

本领域技术人员可以理解的是,一个队列为多个队列的目标队列的情况与一个队列为多个队列原队列的情况类似,在此就不必赘述。

图6是根据本申请实施例提供的一种交换设备的结构框图。如图6所示交换设备600包括处理单元601和输入单元602。

输入单元602,用于接收来自第一数据流的n1个数据单元,其中所述数据单元为数据包或数据包的描述符,n1为大于或等于1的正整数。

输入单元602,还用于将所述n1个数据单元输入第一原队列。

处理单元601,用于确定所述第一数据流从所述第一原队列切换为第一目标队列,其中所述第一原队列与所述第一目标队列属于第一队列对。

处理单元601,还用于生成第一原标记单元和第一目标标记单元,将所述第一原标记单元输入所述第一原队列并将所述第一目标标记单元输入所述第一目标队列。

输入单元602,还用于接收来自所述第一数据流的m1个数据单元,其中m1为大于或等于1的正整数。

输入单元602,还用于将所述m1个数据单元输入所述第一目标队列。

处理单元601,还用于根据所述第一原标记单元和所述第一目标标记单元,将所述n1个数据单元和所述第一原标记单元调度出所述第一原队列并将所述第一目标标记单元和所述m1个数据单元调度出所述第一目标队列,其中所述第一原标记单元调度出所述第一原队列的时刻早于所述第一目标调度单元调度出所述第一目标队列的时刻。

处理单元601和输入单元602的具体功能和有益效果,可以参见图1所示的实施例,在此就不必赘述。

处理单元601可以由处理器实现,输入单元602可以由接收实现。

图7是根据本申请实施例提供的另一交换设备的结构框图。如图7所示的交换设备700包括存储器701和处理器702。

存储器701,用于存储程序。

处理器702,用于执行存储器701存储的程序,当程序被执行时,使得交换设备700可以实现上述图1实施例提供的方法。

利用交换设备700可以将图1所示的方法中的部分或全部通过软件来实现。

存储器701可以是物理上独立的单元,也可以与处理器702集成在一起。

可选的,当图1所示的方法中的部分或全部通过软件实现时,交换设备700也可以只包括处理器702。用于存储程序的存储器701位于装置700之外,处理器702通过电路/电线与存储器701连接,用于读取并执行存储器701中存储的程序。

处理器702可以是中央处理器(centralprocessingunit,cpu),网络处理器(networkprocessor,np)或者cpu和np的组合。

处理器702还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specificintegratedcircuit,asic),可编程逻辑器件(programmablelogicdevice,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complexprogrammablelogicdevice,cpld),现场可编程逻辑门阵列(field-programmablegatearray,fpga),通用阵列逻辑(genericarraylogic,gal)或其任意组合。

存储器701可以包括易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram);存储器701也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flashmemory),硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd);存储器701还可以包括上述种类的存储器的组合。

本申请的又一方面提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行上述如图1所示的方法。

本申请的又一方面提供了一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行如图1所示的方法。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

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