排队方法

文档序号:7941364阅读:421来源:国知局
专利名称:排队方法
技术领域
本发明涉及一种对数据分组进行排队的方法。更具体但不排他地,本发明涉及一 种对同时包括第一和第二类型的数据在内的数据分组进行排队的方法。
背景技术
在计算机网络中,为了防止网络链路过载,经常在向前发送之前对数据分组进行 排队。例如,在网络路由器处,必须对分组进行排队,直到在向前的网络链路上存在可用的 信用以允许发送分组为止。在传统计算机网络中,已知要使不同分组类型具有不同的排队 要求。具体地,已知要有两种不同的分组类型,其中第一分组类型对于向前发送具有相对较 高的优先级。在这种计算机网络中,可以实现支持旁路的队列,以对两种不同分组类型的不可 预测的序列进行排队。必须按顺序从队列中发送第一类型的分组,但是如果第二类型的信 用不可用,则第一类型的分组可以超越(overtake)第二类型的分组。必须按顺序从队列中 发送第二类型的分组,但是第二类型的分组可能不能超越第一类型的分组。在能够发送任一分组类型之前,在向前的网络链路上必须有该分组的充足信用可 用。仅当路由器或其他网络元件识别出有该分组类型的充足信用可用时,才可以发送分组。已知通过利用相同分组类型的队列内的分组之间的联系以及分组类型之间的联 系提供数据分组的单个队列,实现支持旁路的队列。该联系可以采用与每一个分组并排存 储的两个指针的形式,这两个指针指向相同分组类型的队列内的下一分组以及另一类型的 分组的组。当对分组进行调度以用于发送时,必须单独地更新指针。当作为类型1分组的 组中最后一个分组的、第一分组类型的分组超越第二分组类型的分组时,这是特别复杂的 过程。此外,每当发送分组时,不仅指针运算在计算上是昂贵,而且该过程还容易发生差错。 如果故障使指针遭到破坏,则难以重新建立支持旁路的队列。每当发送分组时,基于指向给 定分组类型的下一分组的指针的、已知的、支持旁路的队列都需要大量的处理。用于实现支持旁路的队列的备选方式是存储具有时间戳以及分组类型指示的每 一个接收到的分组。当确定了发送哪个分组时,可以比较分组的分组时间戳和分组类型,以 确定分组到达的相对顺序以及每一分组类型的分组在队列内出现的位置。同样,该已知方 式在计算上是昂贵的。加时间戳的另一个问题在于当时间戳卷绕时(例如从99到0),跟 踪时间戳的相对顺序可能变得复杂。已知利用每一分组类型的单独队列来实现支持旁路的队列。然而,在这种已知的 支持旁路的队列中,仍需要加时间戳或者在单独分组队列之间的联接的某种备选形式,以 保持相对的分组排序。

发明内容
本发明的实施例的目的是消除或减弱现有技术的问题中的一个或多个,无论这里 是否提出。
根据本发明的第一方面,提供了一种对数据分组进行排队的方法,所述数据分组 包括第一分组类型的数据分组和第二分组类型的数据分组,所述方法包括将接收分组编 组为有序的组序列,其中每个组包含至少一个分组;维持用于指示所述组序列的开始处仅 包括所述第二分组类型的分组在内的组的数目的组计数器;以及发送分组;其中,当且仅 当所述组计数器指示了所述组序列的开始处仅包括所述第二分组类型的分组在内的组的 数目大于零时,所述第二分组类型的分组可用于发送。本发明的第一方面的优点是实现了支持旁路的队列,其保持第一分组类型和第 二分组类型的相对排序并允许第一分组类型分组超越第二分组类型分组。避免了实现支持 旁路的队列的已知方法所遭遇的复杂指针操控或加时间戳的开销。发送分组可以包括发送所述第一分组类型的第一个接收分组或所述第二分组类型的第一个接收分组。维持组计数器可以包括维持组计数器与所述组序列的开始处仅包括所述第二分 组类型的分组在内的组的数目相等。所述方法还可以包括维持所述第一分组类型的接收分组的第一队列;以及维持 所述第二分组类型的接收分组的第二队列;其中,发送分组包括发送来自所述第一队列或 所述第二队列的分组。所述第一分组类型的分组或所述第二分组类型的分组仅在该分组类型有充足的 发送信用时才可能可用于发送。每一个组可以包含所述第一分组类型的分组和所述第二分组类型的分组。将接收分组编组为有序的组序列可以包括向每一个接收分组指派组标签,单个 组内的每一个分组被指派了相同组标签。可以向所述有序的组序列中的相邻组内的分组指派不同的组标签。可以根据循环计数器的当前状态来产生向接收分组指派的组标签。所述方法还可 以包括针对每一个新组而改变所述循环计数器的值。针对每一个新组而改变所述循环计数器的值可以包括如果前一接收分组是所述 第二分组类型的分组,则当接收到所述第一分组类型的分组时,改变所述循环计数器的值, 使得向接收到的分组指派与向前一接收分组指派的组标签不同的组标签。所述改变可以包 括递增所述循环计数器的值。所述方法还可以包括如果所发送的分组是所述第一分组类型的并具有与下一个 所述第一分组类型的分组不同的组标签,则改变所述组计数器的值。所述改变可以包括以所发送的分组的组标签与下一个所述第一分组类型的分组 的组标签之间的差值的模,改变所述组计数器的值。所述改变可以包括递增所述组计数器 的值。所述方法还可以包括如果所发送的分组是所述第二分组类型的并具有与下一个 所述第二分组类型的分组不同的组标签,则改变所述组计数器的值。所述改变所述组计数器的值的步骤可以包括以所发送的分组的组标签与下一个 所述第二分组类型的分组的组标签之间的差值的模,改变所述组计数器的值。所述改变可 以包括递减所述组计数器的值。所述数据分组还可以包括第三分组类型的数据分组,所述方法还包括将接收分组编组为有序的第二组序列,该组序列中的每个组仅包含所述第一分组类型的分组和所述第三分组类型的分组;以及维持用于指示所述第二组序列的开始处仅包括所述第三分组类 型的分组在内的组的数目的第二组计数器;其中,当且仅当所述第二组计数器指示了所述 第二组序列的开始处仅包括所述第三分组类型的分组在内的组的数目大于零时,所述第三 分组类型的分组可用于发送。所述方法还可以包括将接收分组编组为有序的第三组序列,该组序列中的每个 组包含所述第二分组类型的分组和所述第三分组类型的分组;以及维持用于指示所述第三 组序列的开始处仅包括所述第三分组类型的分组在内的组的数目的第三组计数器;其中, 当且仅当所述第三组计数器指示了在所述第三组序列的开始处仅包括所述第三分组类型 的分组在内的组的数目大于零时,所述第三分组类型的分组可用于发送。根据本发明的第二方面,提供了一种承载计算机可读代码的载体介质,所述计算 机可读代码用于控制计算机执行上述方法。根据本发明的第三方面,提供了一种用于对数据分组进行排队的计算机装置,所 述装置包括程序存储器,存储处理器可读指令;以及处理器,被配置为读取和执行在所述 程序存储器中存储的指令;其中,所述处理器可读指令包括用于控制所述处理器执行上述 方法的指令。根据本发明的第四方面,提供了一种用于对数据分组进行排队的装置,所述数据 分组包括第一分组类型的数据分组和第二分组类型的数据分组,所述装置包括编组机构, 被布置为将接收分组编组为有序的组序列,其中每个组包含任何分组类型的至少一个分 组;组计数器,用于指示所述组序列的开始处仅包括所述第二分组类型的分组在内的组的 数目;以及发送器,被布置为发送分组;其中,当且仅当所述组计数器存储指示了所述组序 列的开始处仅包括所述第二分组类型的分组在内的组的数目大于零的值时,所述第二分组 类型的分组可用于发送。所述发送器可以被布置为发送所述第一分组类型的第一接收分组或所述第二分 组类型的第一接收分组。所述组计数器可以存储与所述组序列的开始处仅包括所述第二分组类型的分组 在内的组的数目相等的值。所述装置还可以包括第一队列结构,被布置为存储所述第一分组类型的接收分 组;以及第二队列结构,被布置为存储所述第二分组类型的接收分组;其中,所述发送器被 布置为发送来自所述第一队列结构或所述第二队列结构的分组。所述第一分组类型的分组或所述第二分组类型的分组仅在该分组类型有充足的 发送信用时才可能可用于发送。所述编组机构可以被布置为将分组编组为包含所述第一分组类型的分组和所述 第二分组类型的分组在内的组。所述编组机构可以被布置为向每一个接收分组指派组标签,单个组内的每一个分 组被指派了相同的组标签。所述编组机构可以被布置为向所述有序的组序列中的相邻组内的分组指派不同 的组标签。所述装置还可以包括循环计数器,所述编组机构被布置为使得根据所述循环计数器的当前状态来产生向接收分组指派的组标签。 所述循环计数器可以被布置为改变每一个新组的起始处该循环计数器的值。所述循环计数器可以被布置为如果前一接收分组是所述第二分组类型的分组, 则当接收到所述第一分组类型的分组时,改变所述循环计数器的值,使得向接收到的分组 指派与向前一接收分组指派的组标签不同的组标签。所述循环计数器可以被布置为针对每一个新组而递增所述循环计数器的值。所述组计数器可以被布置为如果所发送的分组是所述第一分组类型的并具有与 下一个所述第一分组类型的分组不同的组标签,则改变所述组计数器的值。所述组计数器可以被布置为以所发送的分组的组标签与下一个所述第一分组类 型的分组的组标签之间的差值的模,改变所述组计数器的值。所述组计数器可以被布置为如果所发送的分组是所述第一分组类型的并具有与 下一个所述第一分组类型的分组不同的组标签,则递增所述组计数器的值。所述组计数器可以被布置为如果所发送的分组是所述第二分组类型的并具有与 下一个所述第二分组类型的分组不同的组标签,则改变所述组计数器的值。所述组计数器可以被布置为以所发送的分组的组标签与下一个所述第二分组类 型的分组的组标签之间的差值的模,改变所述组计数器的值。所述组计数器可以被布置为如果所发送的分组是所述第二分组类型的并具有与 下一个所述第二分组类型的分组不同的组标签,则递减所述组计数器的值。所述数据分组还可以包括第三分组类型的数据分组,其中,所述编组机构还被布 置为将接收分组编组为有序的第二组序列,该组序列中的每个组仅包含所述第一分组类型 的分组和所述第三分组类型的分组,所述装置还包括第二组计数器,被布置为指示所述第 二组序列的开始处仅包括所述第三分组类型的分组在内的组的数目;其中,当且仅当所述 第二组计数器存储指示了所述第二组序列的开始处仅包括所述第三分组类型的分组在内 的组的数目大于零的值时,所述第三分组类型的分组可用于发送。所述编组机构还可以被布置为将接收分组编组为有序的第三组序列,该组序列中 的每个组包含所述第二分组类型的分组和所述第三分组类型的分组,所述装置还包括第 三组计数器,被布置为指示所述第三组序列的开始处仅包括所述第三分组类型的分组在内 的组的数目;其中,当且仅当所述第三组计数器存储指示了所述第三组序列的开始处仅包 括所述第三分组类型的分组在内的组的数目大于零的值时,所述第三分组类型的分组可用 于发送。所述装置可以包括网络元件,被布置为在计算机网络内从源接收分组并将分组 转发至目的地。所述装置可以包括网络路由器。


现在将参照附图来描述仅作为示例的本发明实施例,附图中图1示意地示出了根据本发明实施例的、被布置为对分组进行排队的网络元件;图2至7示意地示出了根据本发明实施例的、在从支持旁路的队列发送分组时队 列状态的改变;
图8至10示意地示出了根据本发明另一个实施例的、在从支持旁路的队列发送分 组时队列状态的改变;图11示意地示出了根据本发明实施例的支持旁路的队列的实施方式;图12以流程图的形式示意地示出了根据本发明实施例的、从支持旁路的队列发 送分组的过程;
图13以流程图的形式示意地示出了根据本发明实施例的、向支持旁路的队列添 加分组的过程;图14至17示意地示出了在故障条件下在从图2至7的支持旁路的队列发送分组 时队列状态的改变;图18和19示意地示出了在如图14至17所示的类似故障条件下根据本发明另一 个实施例的、在从支持旁路的队列发送分组时队列状态的改变;图20至23示意地示出了根据本发明另一个实施例的、在从支持旁路的队列发送 分组时队列状态的改变;以及图24至28示意地示出了在向图20至23的支持旁路的队列添加分组时队列状态 的改变。
具体实施例方式首先参照图1,图1示意性地示出了根据本发明实施例的用于实现对数据分组进 行排队的方法的网络元件1。网络元件1被布置为沿着网络链路3从计算机2(或者其他 网络元件)接收数据分组,并沿着网络链路5向计算机4 (或者其他网络元件)发送数据分 组。在本发明的特定实施例中,网络元件1可以包括路由器,被布置为对从计算机2接收 的分组进行排队,并在充足信用变得在网络链路5上可用时将分组发送至计算机4,以防止 网络链路5过载。图2示出了从单一源(计算机2)到达、在网络元件1处接收并被发送至单一目的 地(计算机4)的所有分组。然而,在本发明的特定实施例中,网络元件1可以例如包括交 换机,被布置为从多个源接收分组,对接收分组进行排队,然后将分组发送至多个目的地。 艮口,网络元件可以在多个输入处接收分组,每一个输入与分离的源相连接,或者网络元件可 以与单一输入相连接,该单一输入最终与多个源相连接。在这两种情况下,尽管使用用于多 个或所有输入的公共输入队列不排除来自网络元件1的多个或所有输入的分组,但通常在 每一个输入处的相同队列中对任一类型的接收分组进行排队。类似地,网络元件可以在与 分离目的地相连接的多个输出上发送队列中的分组。备选地,网络元件可以在单一输出上 发送队列中的分组,该单一输出最终与多个分离的目的地相连接。本发明的实施例涉及在网络元件处实现支持旁路的队列的简化方法。在PCI Express(PCIe)标准中定义了支持旁路的队列要求的示例。这种支持旁路的排队要求可以 产生两种不同分组类型的不可预测序列,该序列可以被分类为有序分组和可旁路分组。在可以发送给定分组类型的分组之前,在向前的网络链路上必须存在可用的充足 信用以容许该特定分组类型的发送。在支持旁路的队列的当前描述中使用术语“发送信用” 来表示是否存在针对发送分组的许可。具体地,尽管用于发送有序分组的发送信用可能是 充足的,但是发送信用可能不足以发送可旁路分组,反之亦然。如本领域公知,每一个网络链路具有针对每一种分组类型的相应缓冲区,并且当且仅当在相应缓冲区中存在充足的空 间时,存在针对特定分组类型的信用。必须保持每一种业务量类型内分组的相对排序。如果没有充足的发送信用可用于 发送可旁路分组,则有序分组可以超越一个或多个可旁路分组(假定有序分组的充足发送 信用可用)。必须防止可旁路分组超越任何有序分组。备选地,这可以被视为有序分组具有 比可旁路分组更高的优先级,使得如果发送信用不足以发送可旁路分组,则在支持旁路的 队列中可以考虑在可旁路分组之前发送有序分组。可以将这些排序原理概括为以下四条规 则1、可旁路分组必须不超过先前排队的有序分组;2、可旁路分组必须不超过先前排队的可旁路分组; 3、有序分组必须不超过先前排队的有序分组;以及4、有序分组必须超过由于缺少发送信用而在前向进展中被阻塞的、先前排队的可 旁路分组(如果存在充足的发送信用以发送有序分组)。对规则1至3的遵守保持了每一种类型的分组的分组排序。对规则4的遵守防止 了下述情形如果存在充足的发送信用以发送一个或多个有序分组,则可旁路分组的发送 信用的缺少阻碍有序分组的发送。在本发明的实施例中,使用两个分离的队列结构来实现支持旁路的队列,其中一 个队列用于对有序分组进行排队,一个队列用于对可旁路分组进行排队。即,分离的有序分 组队列和可旁路分组队列共同形成单一支持旁路的队列。按接收分组的顺序,在相应的有 序分组或可旁路分组队列中对分组进行排队。改善这两个队列中的每一个中的分组,以可 用于严格地按照排队的顺序从网络元件发送,从而确保遵守上面列出的规则2和规则3。如 将要描述的,通过对接收分组进行编组来确保遵守规则1和4。当邻接的一组有序分组到达网络元件时(例如图1所示的网络元件1),向这组有 序分组指派公共的组标签。同样地,将相同的组标签指派给邻接的一组可旁路分组,该组可 旁路分组在该邻接的一组有序分组之后到达。分别在有序分组队列或可旁路分组队列中分 离地存储有序分组和可旁路分组。还将向每一个分组指派的组标签与分组一起存储在有序 分组队列或可旁路分组队列中。向组内的所有分组指派相同的组标签,向相邻组指派不同 的组标签。当在可旁路分组之后接收到新的有序分组或者有序分组的组时,组标签改变。即, 当接收到的分组类型从可旁路分组改变为有序分组时,更新组标签,但是当接收到的分组 类型从有序分组改变为可旁路分组时,不更新组标签。如果到达网络元件的第一分组是可 旁路分组,则第一组将仅包含可旁路分组,并且当第一有序分组到达时,组标签将改变。对于除第一组之外的所有组来说,当接收到分组并对分组进行排队时,通过邻接 有序分组的集合(存储在有序分组队列中)之后紧跟邻接可旁路分组的集合(存储在可旁 路分组队列中)来定义组。然而,如果根据以上规则4在更早的可旁路分组之前发送有序 分组(并因此从有序分组的组中移除该有序分组),则可以将该组简化为仅包含可旁路分 组。该组标签可以是小的循环重复数字,例如,该组标签可以是针对交替组的0或 1 (其为1比特组标签),或者该组标签可以例如是循环2比特标签。
与该对队列相关联的组计数器对在有序组序列的开始处仅包含可旁路分组在内 的组的数目进行跟踪。为了确保遵守规则1,仅当组计数器大于零时,可旁路队列的头处的 分组才可用于向前发送。如果组计数器大于零,则至少第一组仅包括可旁路分组,那么在第 一可旁路分组之前没有有序分组排队。如以下将解释的,在故障条件下,组计数器可能变为 负值。因此,将组计数器存储为有符号整数。在本发明的实施例中,组计数器被实现为9比特变量。从而可以对在旁路队列的 头处仅包含可旁路分组在内的最多512个分离的组进行跟踪,在这一点上,由于将达到所 提供的信用极限,因此不能接收另外的分组。典型地,支持旁路的队列内的分组数目较小, 除非存在内部交换拥塞。可排队的分组的最大数目将依赖于缓冲区大小,可以对总大小不 大于缓冲区大小的分组进行排队。现在参照图2,图2示意地示出了根据本发明实施例的、支持旁路的队列内的分组 的队列状态。以表的形式示出该队列状态,其中排队的分组在分离的列中示出,并根据该分 组的类型在有序分组的行中或在可旁路分组的行中示出。支持旁路的队列同时包括有序分 组0和可旁路分组B,其中每个分组分别存储在有序分组队列6或可旁路分组队列7中。下 标指示了在任一队列处接收分组的顺序(升序)。应当理解,分组编号仅用于使附图清楚的 目的,并且实际上没有向分组指派顺序的分组号码。因此,队列的前部(其为第一个接收和 排队的分组)处于右侧,并且当分组到达时,将分组添加至队列的左侧。示出了组计数器的当前状态。以偏移的方式显示有序分组0和可旁路分组B,使得 任一种类的仅一个分组位于该对队列上的每个水平位置处(以使以下描述的分组的编组 清楚)。示出了每一个组的组标签8(尽管如上所述一般地将所指派的组标签与组中的每一 个分组一起存储在相应队列内)。图2所示的支持旁路的队列的组标签包括1比特循环数 字(即0或1),其中向相邻组指派不同的组标签。向第一组(最右边的组)指派组标签0, 尽管备选地可以向第一组指派组标签1。对于图2所示的支持旁路的队列来说,示出了组计数器9。由于第一组(其为最早 接收到的分组的组)仅包括可旁路分组氏和因此组计数器9具有值1。因此,如果在网 络元件(例如图1所示的网络元件1)的输出处有充足的可旁路分组发送信用可用,则发送 可旁路队列的头处的分组。如果因此发送分组氏和则此后的支持旁路的队列状态如图3所示。由于在支 持旁路的队列的头处不再存在仅包括可旁路分组的组,因此现在组计数器9被设置为值0。 以下将关于图12描述更新组计数器9的过程。根据上述规则1,由于组计数器是零,因此可 旁路分组B4不可用于发送。组计数器9是零反映了在支持旁路的队列的头处不存在仅包 括可旁路分组的组,从而在任何当前排队的可旁路分组之前,在网络元件处接收到有序分 组02和03。假定发送信用可用于有序分组02和03,则发送这些分组,并且支持旁路的队列状 态如图4所示。在图4所示的队列状态中,图3中包括分组02和03以及B4在内的组现在 仅包括单个可旁路分组B4,因此组计数器9返回至1。因此,分组B4现在可用于发送。然 而,这时,可旁路发送信用不充足,因此,根据上述规则4,有序分组05必须超越可旁路分组 B4(假定存在可用于发送有序分组的充足发送信用)以防止在支持旁路的队列的头处的阻
在发送了有序分组05之后,支持旁路的队列如图5所示。现在,在第一有序分组09 之前,在两个组中存在四个可旁路分组B4、B6、B7和B8,由此,组计数器9已经增加至2。假定 现在有充足的可旁路发送信用可用,则发送第一可旁路分组B4,使得队列状态如图6所示, 其中组计数器9减少至1。然后发送分组B6、,使得队列状态如图7所示,其中组计 数器9减少至0。既然组计数器9已经减少至0,那么仅可以发送有序队列09的头处的分 组,以防止可旁路分组B1(l超越有序分组(从而确保遵守上述规则1)。如上所述,每当在网络元件处接收到分组时,都向新接收到的分组指派组标签8, 并将该分组适当地存储在有序队列6或可旁路队列7中。如果前一分组和当前接收分组是 相同类型的(即,都是有序分组或者都是可旁路分组),则所指派的组标签8保持与针对前 一个分组指派的组标签相同(即,前一接收分组和当前接收分组被指派给相同组)。如上所 述,仅当分组类型从作为可旁路分组的前一分组改变为作为有序分组的当前分组时,组标 签才改变。当分组类型从作为有序分组的前一分组改变为作为可旁路分组的当前分组时, 组标签不改变。参照图8,为了便于将组标签正确指派给新接收到的数据分组,维持两个另外的变 量,并且每当接收到新分组时都更新这两个变量。最后一个分组类型变量10a指示了最后 一个接收分组是有序分组还是可旁路分组。最后一个分组标签变量10b指示了向最后一个 接收分组指派的组标签(0或者1)。通常,仅当将分组添加至队列6、7之一时,才更新最后一个分组类型10a和最后一 个分组标签10b。然而,如果接收到的最后一个分组是有序分组并且在一个或多个先前排 队的可旁路分组之前从支持旁路的队列中移除了该分组,则必须将最后一个分组类型变量 10a改变为可旁路,并且必须将最后一个分组标签变量10b改变为与最后的可旁路分组的 组标签8相匹配。如果接收到的最后一个分组是可旁路分组,则仅当该分组是支持旁路的 队列中的最后一个分组时(即,不存在其他的有序分组或可旁路分组),才可以将移除该分 组。因此,如下面将描述的,当移除了最后一个分组时,将支持旁路的队列清空,并且当接收 到新分组时,必须对变量重新进行初始化。参照图8,图8示出了图7所示的队列状态,还分别示出了最后一个分组类型和最 后一个分组标签变量10a和10b的状态。接收到的最后一个分组012是有序分组并具有组 标签0。在发送了分组09之后,队列状态如图9所示。对于图9的队列状态来说,如果发送信用对于可旁路分组B1(l来说不可用,则如果 发送信用对于有序分组0n和012来说可用,则发送有序分组0n和012,使得队列状态如图10 所示。备选地,如果有序分组发送信用不足以既发送分组0n又发送分组012,则最初将仅发 送分组on,并且稍后当再次存在充足的有序分组发送信用以发送另一有序分组时,可以发 送012。如果既发送分组0n又发送分组012,则如图10所示,最后一个分组类型变量10a改 变为可旁路,并且最后一个分组标签变量10b改变为1,以反映最后一个分组状态的改变。现在参照图11,将描述根据本发明实施例的支持旁路的队列的实施方式。定义了 两个随机存取存储器(RAM)结构数据RAM 11,存储每一个有序或可旁路分组的内容;以及 控制RAM 12,存储包含指向数据RAM 11内的分组内容的指针在内的分组描述符13。控制 RAM 12还实现有序和可旁路数据队列结构。除了存储指向数据RAM11内的分组内容的指 针之外,每一个分组描述符13还存储与每一个分组相关的其他信息,例如所指派的组标签14。即,分组描述符13包括组标签14。为了实现支持旁路的队列,不必须提供有序分组队列与可旁路分组队列之间的指 针或其他联系,也不需要每一个分组的时间戳。实现支持旁路的队列所需的变量存储在一 系列寄存器中。应当理解,在本发明的备选实施例中,存储变量和分组数据的方式可以改 变,例如,该变量也可以存储在RAM中而不是寄存器中。两个队列头指针“队列1”和“队列2”分别存储在寄存器15和16中。队列头指 针“队列1”和“队列2”分别指向有序队列和可旁路队列的头处的分组描述符13。每一个 分组描述符13存储指向数据RAM 11内的小区17的指针,该小区17包含特定分组的分组 数据的第一部分。在分组大于单一小区的存储容量的情况下,数据RAM 11中被指向的小区17还可 以包含指向第二小区17的指针。事实上,根据分组的大小和每一个小区的大小,利用每一 个小区与其下一个小区之间的联系,可以在任意数目的小区17上存储单一分组。存储单一 分组的一部分的最后一个小区17由“尾部(END)”标签来表示,以代替指向另外的小区17 的指针。应当理解,形成单一分组的小区不需要形成RAM的邻接块。此外,不需要在数据 RAM 11中以任何顺序布置小区。除了存储指向存储分组数据的一部分和组标签14的第一小区17的指针之外,分 组描述符13还可以存储其他信息,例如路由信息。如上所述,通过队列头指针“队列1”或 “队列2”来指向每一个队列中的第一分组的分组描述符13。每一个分组描述符13附加地 存储指向该队列中下一个分组的分组描述符13的指针。不需要将控制RAM 12中的每一 个队列的分组描述符13存储在RAM的邻接块中,也不需要以任何特定顺序存储在控制RAM 内。最后一个分组类型和最后一个分组标签变量分别存储在寄存器18和19中。如以 下分别关于图12和13的流程图而描述的,使用最后一个分组类型和最后一个分组标签变 量,来确定接下来发送哪个分组以及当接收到新分组时指派哪个组标签。组计数器存储在 寄存器20中。现在参照图12,图12以流程图形式示意地示出了确定接下来从支持旁路的队列 中发送哪个分组的过程。该过程在步骤S1开始并传递至决定步骤S2,在决定步骤S2检查 组计数器的当前值。如果组计数器大于零,则至少一个可旁路分组可用于发送(这是由于不存在更早 的队列有序分组)。如果是,则过程传递至决定步骤S3,在决定步骤S3检查可用的可旁路 发送信用以查看是否存在充足的发送信用以发送可旁路分组。如果充足的发送信用可用, 则该过程继续在步骤S4发送由指针“队列2”指向的可旁路队列头处的可旁路分组。在步 骤S5将指针“队列2”更新为可旁路队列中的下一个分组。如果所发送的分组是最后一个 可旁路分组,则将指针“队列2”设置为空或者缺省值。在决定步骤S6,确定是否在已发送可旁路分组之后有必要更新组计数器。当已发 送可旁路分组时,将所发送的分组的组标签和可旁路队列中的下一个可旁路分组的组标签 进行比较。如果组标签不同,则可以推断出所发送的分组是支持旁路的队列的头处的组中 的最后一个分组。因此,由于在支持旁路的队列的头处仅包括可旁路分组的组少了一个,因 而在步骤S7以组标签之间的差值的模(即绝对值)递减组计数器。然后,该过程传递回至步骤S2以确定要发送的下一个分组。如果在步骤S6未检测到组标签的改变,则可以推断出在支持旁路的队列的头处 的相同组中仍有其他可旁路分组,因此不递减组计数器。该过程传递回至步骤S2以确定要 发送的下一个分组。如果在步骤S3确定了可旁路发送信用不足以发送可旁路分组,则该过程传递至 决定步骤S8,在决定步骤S8对是否存在充足的有序发送信用可用于发送有序分组进行检 查。备选地,如果在步骤S2组计数器是零(或者在故障条件下是负的),则该过程直接传 递至步骤S8。如果在步骤S8确定了发送信用不足以发送有序分组,则可能在贯穿流程图 的当前传递期间不发送分组,并且该过程返回至步骤S2,在一些实施例中经由短时间延迟 S9,以避免在不充足发送信用可用时重复检查组计数器。如果在步骤S8确定了可以发送有序分组(并且如果有至少一个有序分组要发 送),则在步骤S10发送有序分组队列的头处的有序分组。在步骤S11将指针“队列1”更 新为有序队列中的下一个分组。如果所发送的分组是最后一个有序分组,则将指针“队列 1”设置为空或者缺省值。在决定步骤S12确定是否在已发送有序分组之后有必要更新组计数器。当已发送 有序分组时,将所发送的分组的组标签和有序队列中下一个有序分组的组标签进行比较。 如果组标签不同,则可以推断出所发送的分组是支持旁路的队列的头处的组中的最后一个 有序分组。因此,在步骤S13以组标签之间的差值的模递增组计数器。这是由于如果在支 持旁路的队列的头处的组中不存在更多的有序分组,则在支持旁路的队列的前部将多存在 至少一个仅包括可旁路分组在内的组。如果组标签没有改变,则可以推断出在支持旁路的 队列的头处的相同组中仍有其他有序分组,从而不递增组计数器。无论是哪种情况,该过程 都返回至步骤S2以确定要发送的下一个分组。参照图13,图13以流程图的形式示意地示出了向新接收到的分组指派组标签并 更新最后一个分组类型和最后一个分组标签变量的过程。该过程在接收到新分组时的步骤 S20开始。在决定步骤S21根据队列头指针“队列1”和“队列2”来确定支持旁路的队列当 前是否为空(即,新接收到的分组是否是第一个接收到的分组,或者有序分组队列或可旁 路分组队列是否已包含至少一个分组)。如果支持旁路的队列当前为空,则在步骤S22向新 接收到的分组指派任意组标签(在图13中示为1,但可以是任何值)。将最后一个分组标 签变量设置为所指派的组标签。在步骤S23确定新分组是否是可旁路分组。如果新分组是可旁路分组,则由于新 分组形成了仅包含可旁路分组在内的单一分组的组,因此在步骤S24将组计数器设置为1。 此外,在步骤S24将最后一个分组类型变量设置为可旁路。然而,如果在步骤S23确定了新 分组是有序分组,则在步骤S25将组计数器设置为0。此外,在步骤S25将最后一个分组类 型变量设置为有序。然后,该过程传递回至步骤S20以等待下一个接收的分组。如果在步骤S21确定了支持旁路的队列不为空(即,在有序队列或可旁路队列中 已存在至少一个分组),则在步骤S26确定新分组是否是可旁路分组。如果新分组是可旁路 分组,则在步骤S27将前一分组的组标签(根据最后一个分组标签变量而确定的)指派给 新接收到的分组。在步骤S28,将最后一个分组类型变量设置为可旁路。在步骤S29,将最 后一个分组标签变量设置为在步骤S27指派给新分组的组标签。
如果在步骤S26确定了新分组是有序分组,则在步骤S30检查最后一个分组类型 变量。如果最后一个分组类型变量被设置为可旁路,则在步骤S31递增前一分组标签(根 据最后一个分组标签变量而确定的),并将该新值指派给新分组。备选地,如果最后一个分 组类型变量被设置为有序,则在步骤S32将前一分组的组标签(根据最后一个分组标签变 量而确定的)指派给新分组。在步骤S33,将最后一个分组类型变量设置为有序,并且该过 程传递至步骤S29。在已设置最后一个分组标签变量之后,该过程返回至步骤S20以等待下 一个接收的分组。如关于图2至10描述的支持旁路的队列将组标签实现为1比特数字(即,0或1)。 然而,使用1比特组标签,支持旁路的队列的排序完整性容易在控制RAM 2内发生差错。在 简单的实施例中,如果在分组的分组描述符中检测到差错,则丢弃该分组。然而,对于1比 特组标签来说,这可能对分组排序有严重牵连,并可能导致在错误的时间对分组进行调度 以用于发送,从而违反上面的规则1至4之一。参照图14,图14示出了与图2至10所示的、利用1比特组号码实现的队列类似的 支持旁路的队列。由于在支持旁路的组的头处不存在仅包含可旁路分组在内的组,因此组 计数器9是零。如果发送有序分组0。(图12的步骤S10),则在控制RAM内读取有序分组02的分 组描述符,并将有序队列的队列头指针“队列1”改变为指向分组02的描述符的指针(步骤 S11)。如果控制RAM是无差错的,则将从控制RAM中读取的分组02的组标签8与所发送的 分组的组标签8进行比较(步骤S12)。对从分组至分组02的组标签8的改变进行检 测,并且以1递增组计数器9 (步骤S13),以反映现在在支持旁路的队列的头处存在仅包含 可旁路分组(BD在内的新组。然而,如果当试图读取分组02的分组描述符时,控制RAM读操作失败,则丢弃分组 02并取而代之地读取下一有序分组(06)的细节。分组06处于与分组02不同的组中,因此具 有不同的组标签8。对于1比特组标签来说,分组06的组标签8与所发送的分组的组标 签8相同。因此,在步骤S12未检测到组标签8的改变。因此,没有更新组计数器9,从而实 际上改变了队列顺序。所得到的队列状态如图15所示。已经丢弃分组02。有序分组队列 6的头处的分组06实际上似乎已移动了组,使得由于分组06具有与分组&相同的组标签, 因此该分组06与已超越四个可旁路分组的分组&处于相同的组中。由于当发送了分组 时错误地没有递增组计数器9,因此组计数器9保持为0,伴随着以下结果在任何情况下, 可能直到已经发送分组06时才发送分组&。清楚地,已经以不期望的方式改变了支持旁路 的队列的排序。如果从图15中的位置继续下去,发送有序分组06,则队列状态变为图16所示的队 列状态。当发送分组06时,在步骤S12进行检查以查看从所发送的有序分组至下一有序分 组08是否存在组标签8的改变。分组06具有组标签1。分组08具有组标签0。因此,在步 骤S13,通过这两个组标签8之间的差值来更新组计数器9,使得如图16所示,组计数器现 在是1。这明显是错误的,如图16所示,在支持旁路的队列的头处存在仅包含可旁路分组在 内的三个组,从而组计数器应当是3。如果现在发送可旁路分组Bi (假定有充足的可旁路发送信用可用),则排序变得如 图17所示甚至更加遭到破坏。由于从分组Bi至下一可旁路分组B3存在组标签的改变,因此在步骤S6检测到这一点并且在步骤S7将组计数器9递减回到0。因此,不可以发送更多 可旁路分组,并且有效地将有序分组08和09提升至支持旁路的队列的头处。一种用于防止该破坏的选择是以下述方式来实现控制RAM 12存储器可以保证 即使分组描述符13的其余部分遭到破坏,也可以正确地读取分组描述符13内的组标签14。 然后可以正确地跟踪组标签14并维持原始排序。事实上,可以利用标签复制(即,在控制 RAM 12内多次存储每一个组标签)来纠正所有故障。然后可以读取特定组标签的所有实例 并实现服从多数的方案,在该方案中,如果组标签的一些实例遭到破坏,则只要正确地读取 组标签的大多数实例,就可以确定正确的组标签。然而,由于实际上不能依赖这种可能的方 式达到100%可靠,因此一种用于防止破坏的备选是将组标签扩展至n比特计数器,其中n 大于1。使用n比特计数器来产生组标签,只要由于控制RAM差错使得一直丢弃了不超过 2n_l个分组,就将总是检测到组标签从一个分组至下一分组的改变。对于2比特组标签来 说,在排序可能遭得受到破坏之前,可以安全地丢弃最多三个分组。对于3比特标签来说, 在没有遭到破坏的情况下可以丢弃最多七个分组。如果所丢弃的分组共享相同组标签,则 可以在没有遭到破坏的情况下丢弃甚至更多的分组。值n = 2是复杂度与差错检测能力之 间的可接受的折衷。图18示出了具有2比特组标签的支持旁路的队列的队列状态。如果发送分组(V 则除非由于控制RAM差错使得所有分组03、04、06和01(|都丢失,否则对于提前至队列头寄 存器“队列1”的下一个所读取的有序分组描述符来说将检测到组标签的改变(步骤S12), 这是由于仅在所有分组都丢失的情况下才不会检测到分组与分组012之间组标签的改变 (它们都具有组标签0)。相对不可能的是在控制RAM没有发生灾难性故障的情况下丢失 这么多分组,这将很可能在任何情况下都阻止恢复。然而,如果由于控制RAM差错使得仅分组03和04必须被丢弃,则有序分组06将提 前至有序队列的头并被队列头指针“队列1”所指。在步骤S12将检测到队的组标签(0) 与06的组标签(2)之间的改变,并在步骤S13将组标签的差值的模(2)添加至组计数器, 从而得到如图19所示的正确队列状态。图19示出了现在为2的组计数器(即使仅发送了 一个分组),其正确地指示了在第一个排队的有序分组之前存在仅包含可旁路分组在内的、 分组的两个组。根据本发明的另一实施例,提供了一种能够确保遵守多于两种不同分组类型的排 序规则的支持旁路的队列。PCI-EXpreSS(快捷外设组件互连,PCIe)标准定义了三种不同 类型的分组登记(posted)、完成(completion)以及非登记(non-posted)分组。三种分 组类型具有不同级别的优先级。登记分组的优先级比完成分组更高,并且依次下来,完成分 组的优先级比非登记分组更高。可以通过下列排序规则来表达这种变化的分组优先级1、非登记分组必须不超越任何先前排队的分组;2、完成分组必须不超越任何先前排队的完成分组或登记分组,但是完成分组可以 超越先前排队的非登记分组;以及3、登记分组必须不超越任何先前排队的登记分组,但是登记分组可以超越先前排 队的完成分组或非登记分组。根据本发明的实施例,通过确保在控制RAM内的分离的分组队列中存储每一种类
17型的分组(其中,第三队列头指针“队列3”存储在另一寄存器中以容许附加的队列),可以 实现遵循PCIe标准的支持旁路的队列。在分离的队列中存储每一种分组类型确保了维持 每一个分组相对于相同类型的所有其他分组的排序。通过指派三个分离的组标签来维持根据上述规则的、三个队列之间的相对排序, 每一个标签具有关联的组计数器。在接收到每一个分组时,向每一个分组指派两个组标签, 这两个组标签存储在控制RAM的分组描述符内。第一标签用于维持登记分组与完成分组之 间的排序。第二标签用于维持登记分组与非登记分组之间的排序。第三标签用于维持完成 分组与非登记分组之间的排序。将每一个分组与同该分组的分组类型相关的两个标签一起 存储。还维持了每一个组标签的分离的组计数器。现在参照图20,图20示出了由三个分离的队列30-32形成的支持旁路的队列的队 列状态,每一个分离的队列分别保存登记分组、完成分组或非登记分组。此外,在图20中示 出了三个组标签33、35、37和三个组计数器34、36、38。如上所述,组标签33、35、37中的每 一个以及组计数器34、36、38中的每一个仅与三个分组队列30-32中的两个相关。组标签 或组计数器之前的前缀PC意味着其与登记分组类型和完成分组类型相关。前缀PN意味着 其与登记分组类型和非登记分组类型相关。前缀CN意味着其与完成分组类型和非登记分 组类型相关。与图2至10和14至19相同,应用于每一个分组的后缀定义了在网络元件处接收 分组以及在队列中对分组进行排队的顺序。登记分组由P来表示,完成分组由C来表示, 非登记分组由N来表示。与仅具有两种分组类型的支持旁路的队列的示例相同,仅当分组 根据上述三个规则可用于发送并且存在可用于该分组类型的充足发送信用时,才可以发送 该分组。假定有充足的发送信用可用,则在任何时刻,可用于从登记队列30发送登记分组。 假定有充足的发送信用可用,则仅当不存在先前的登记分组时,才可用于从完成队列31发 送分组,先前的登记分组由PC组计数器34的大于零的值来指示。仅当不存在先前的登记 分组或完成分组时,才可用于从非登记队列32发送分组,先前的登记分组或完成分组由PN 组计数器36和CN组计数器38的大于零的值来指示。在图20所示的队列状态中,由于PC组计数器34和PN组计数器38都是零,因此 仅登记分组Po可用于发送。如果发送分组Po,则由于登记队列30的头处的新分组(P4)具 有不同的PC组标签值33,因此递增PC组计数器34。另外,由于分组P4具有不同的PN组 标签35,因此也递增PN组计数器36。CN组计数器38不受分组&的发送的影响。队列状 态现在如图21所示。参照图21,由于PC组计数器大于零,因此可以考虑从完成队列31发送分组。然 而,由于CN组计数器38仍为零,因此在完成分组Q之前不可以从非登记队列32发送任何 分组。可以发送完成分组也可以发送登记分组P4 (其将超越两个完成分组和一个非登 记分组)。假定发送完成分组,则队列状态变为如图22所示的队列状态。完成头分组(其 是完成队列31的头处的分组)C3具有相同的PC组标签33,因此PC组计数器34不受影响。 分组C3具有不同的CN组标签38,因此递增CN组计数器38。PN组计数器36不受影响。由于PN组计数器36和CN组计数器38都大于零,因此现在非登记分组N2可用于 发送。由于PC组计数器34不是零并且允许其超越更早排队的非登记分组(假定非登记发送信用不充足),因此完成头分组C3也可用于发送。最终,如果发送信用不足以发送任何其 他类型的分组,则可以发送头登记分组P4。如果发送非登记分组N2,则队列状态变为如图23所示的队列状态。新的非登记头 分组N5具有不同的PN组标签,因此将PN组计数器36递减回到零。分组N5还具有不同的 CN组标签37,因此将CN组计数器38递减回到零。PC组计数器34不受该发送的影响。当发送最后一个完成分组时,由于没有另外的完成分组在排队,因此将PC组计数 器递减至零。当发送最后一个非登记分组时,由于没有另外的非登记分组在排队,因此将PN 组计数器和CN组计数器递减至零。现在参照图24,图24示出了在已发送最后一个分组之后的队列状态。三个组计数 器34、36、38都是零。三个组标签33、35、37处于依赖于当发送了最后的分组时的其值的任 意值(或者这三个组标签33、35、37可以被重新初始化为缺省值)。如果新的非登记分组N14被添加至空的支持旁路的队列,则队列状态如图25所示。 分组N14必须处于稍后添加的任何登记分组或完成分组之前,因此PN组计数器36和CN组 计数器38被设置为1。如果现在添加新的完成分组C15,则队列状态如图25所示。由于被添加至完成队 列31或非登记队列32的前一分组是非登记分组N14,则必须将新的CN组标签37指派给分 组C15。分组C15必须处于稍后添加的任何登记分组之前,因此PC组计数器34被设置为1。如果添加新的非登记分组N16,则队列状态如图27所示。然后接收登记分组P17并 且队列状态如图28所示。由于被添加至登记队列或完成队列30、31的前一分组是完成分 组C15,则必须指派新的PC组标签33。此外,由于被添加至登记队列或非登记队列30、32的 前一分组是非登记分组N16,则必须指派新的PN组标签33。对于本领域技术人员来说显而易见,根据本发明的支持旁路的队列内的分组类型 的数目可以增加至超过三种分组类型(虽然以组标签和组计数器的数目增加为代价)。在 不脱离所附权利要求的范围的情况下,本发明的其他修改和应用对于本领域技术人员来说 从这里的教导显而易见。
权利要求
一种对数据分组进行排队的方法,所述数据分组包括第一分组类型的数据分组和第二分组类型的数据分组,所述方法包括将所述第一分组类型的接收分组和所述第二分组类型的接收分组编组为有序的组序列,其中每个组包括至少一个分组;维持组计数器,所述组计数器用于指示所述组序列的开始处的、仅包括所述第二分组类型的分组的组的数目;以及发送分组;其中,当且仅当所述组计数器指示了所述组序列的开始处的、仅包括所述第二分组类型的分组的组的数目大于零时,所述第二分组类型的分组可用于发送。
2.根据权利要求1所述的方法,其中,发送分组包括发送所述第一分组类型的第一个 接收分组或所述第二分组类型的第一个接收分组。
3.根据权利要求1或权利要求2所述的方法,其中,维持组计数器包括维持组计数器 与所述组序列的开始处的、仅包括所述第二分组类型的分组的组的数目相等。
4.根据前述任意一项权利要求所述的方法,还包括维持所述第一分组类型的接收分组的第一队列;以及维持所述第二分组类型的接收分组的第二队列;其中,发送分组包括发送来自所述第一队列或所述第二队列的分组。
5.根据前述任意一项权利要求所述的方法,其中,所述第一分组类型的分组或所述第 二分组类型的分组仅在该分组类型有充足的发送信用时才可用于发送。
6.根据前述任意一项权利要求所述的方法,其中,每一个组包含所述第一分组类型的 分组和所述第二分组类型的分组。
7.根据前述任意一项权利要求所述的方法,其中,将接收分组编组为有序的组序列包 括向每一个接收分组指派组标签,单个组内的每一个分组被指派了相同的组标签。
8.根据权利要求7所述的方法,其中,所述有序的组序列中的相邻组内的分组被指派 了不同的组标签。
9.根据权利要求7或权利要求8所述的方法,其中,指派给接收分组的组标签根据循环 计数器的当前状态而产生。
10.根据权利要求9所述的方法,还包括针对每一个新组改变所述循环计数器的值。
11.根据权利要求10所述的方法,其中,针对每一个新组改变所述循环计数器的值包 括如果前一接收分组是所述第二分组类型的分组,则当接收到所述第一分组类型的分组 时,改变所述循环计数器的值,以便向接收到的分组指派与向前一接收分组指派的组标签 不同的组标签。
12.根据权利要求10或权利要求11所述的方法,其中,所述改变包括递增所述循环 计数器的值。
13.根据权利要求7至12中任意一项所述的方法,还包括如果所发送的分组是所述 第一分组类型的并具有与下一个所述第一分组类型的分组不同的组标签,则改变所述组计 数器的值。
14.根据权利要求13所述的方法,其中,所述改变包括以所发送的分组的组标签与下 一个所述第一分组类型的分组的组标签之间的差值的模,改变所述组计数器的值。
15.根据权利要求13或权利要求14所述的方法,其中,所述改变包括递增所述组计 数器的值。
16.根据权利要求7至15中任意一项所述的方法,还包括如果所发送的分组是所述 第二分组类型的并具有与下一个所述第二分组类型的分组不同的组标签,则改变所述组计 数器的值。
17.根据权利要求16所述的方法,其中,所述改变所述组计数器的值包括以所发送的 分组的组标签与下一个所述第二分组类型的分组的组标签之间的差值的模,改变所述组计 数器的值。
18.根据权利要求16或权利要求17所述的方法,其中,所述改变包括递减所述组计 数器的值。
19.根据前述任意一项权利要求所述的方法,其中,所述数据分组还包括第三分组类型 的数据分组,所述方法还包括将接收分组编组为有序的第二组序列,所述第二组序列中的每个组仅包含所述第一分 组类型的分组和所述第三分组类型的分组;以及维持第二组计数器,所述第二组计数器用于指示所述第二组序列的开始处的、仅包括 所述第三分组类型的分组的组的数目;其中,当且仅当所述第二组计数器指示了所述第二组序列的开始处的、仅包括所述第 三分组类型的分组的组的数目大于零时,所述第三分组类型的分组可用于发送。
20.根据权利要求19所述的方法,还包括将接收分组编组为有序的第三组序列,所述第三组序列中的每个组包含所述第二分组 类型的分组和所述第三分组类型的分组;以及维持第三组计数器,所述第三组计数器用于指示所述第三组序列的开始处的、仅包括 所述第三分组类型的分组的组的数目;其中,当且仅当所述第三组计数器指示在所述第三组序列的开始处的、仅包括所述第 三分组类型的分组的组的数目大于零时,所述第三分组类型的分组可用于发送。
21.—种承载计算机可读代码的载体介质,所述计算机可读代码用于控制计算机执行 根据权利要求1至20中任意一项所述的方法。
22.一种用于对数据分组进行排队的计算机装置,所述计算机装置包括 程序存储器,存储处理器可读指令;以及处理器,被配置为读取和执行存储在所述程序存储器中的指令; 其中,所述处理器可读指令包括用于控制所述处理器执行根据权利要求1至20中任意 一项所述的方法的指令。
23.一种用于对数据分组进行排队的装置,所述数据分组包括第一分组类型的数据分 组和第二分组类型的数据分组,所述装置包括编组机构,被布置为将所述第一分组的接收分组和所述第二分组的接收分组编组为有 序的组序列,其中每个组包含至少一个任意分组类型的分组;组计数器,用于指示所述组序列的开始处的、仅包括所述第二分组类型的分组的组的 数目;以及发送器,被布置为发送分组;其中,当且仅当所述组计数器存储指示了所述组序列的开始处的、仅包括所述第二分 组类型的分组的组的数目大于零的值时,所述第二分组类型的分组可用于发送。
24.根据权利要求23所述的装置,其中,所述发送器被布置为发送所述第一分组类型 的第一个接收分组或所述第二分组类型的第一个接收分组。
25.根据权利要求23或权利要求24所述的装置,其中,所述组计数器存储与所述组序 列的开始处的、仅包括所述第二分组类型的分组的组的数目相等的值。
26.根据权利要求23至25中任意一项所述的装置,还包括第一队列结构,被布置为存储所述第一分组类型的接收分组;以及第二队列结构,被布置为存储所述第二分组类型的接收分组;其中,所述发送器被布置为发送来自所述第一队列结构或所述第二队列结构的分组。
27.根据权利要求23至26中任意一项所述的装置,其中,所述第一分组类型的分组或 所述第二分组类型的分组仅在该分组类型有充足的发送信用时才可用于发送。
28.根据权利要求23至27中任意一项所述的装置,其中,所述编组机构被布置为将分 组编组为包含所述第一分组类型的分组和所述第二分组类型的分组在内的组。
29.根据权利要求23至28中任意一项所述的装置,其中,所述编组机构被布置为向每 一个接收分组指派组标签,单个组内的每一个分组被指派了相同的组标签。
30.根据权利要求29所述的装置,其中,所述编组机构被布置为向所述有序的组序列 中的相邻组内的分组指派不同的组标签。
31.根据权利要求29或30所述的装置,还包括循环计数器,所述编组机构被布置为使 得根据所述循环计数器的当前状态来产生指派给接收分组的组标签。
32.根据权利要求31所述的装置,其中,所述循环计数器被布置为在每一个新组的起 始处改变该循环计数器的值。
33.根据权利要求32所述的装置,其中,所述循环计数器被布置为如果前一接收分组 是所述第二分组类型的分组,则当接收到所述第一分组类型的分组时,改变该循环计数器 的值,以便向接收到的分组指派与向前一接收分组指派的组标签不同的组标签。
34.根据权利要求32或权利要求33所述的装置,其中,所述循环计数器被布置为针 对每一个新组,递增该循环计数器的值。
35.根据权利要求29至34中任意一项所述的装置,其中,所述组计数器被布置为如 果所发送的分组是所述第一分组类型的并具有与下一个所述第一分组类型的分组不同的 组标签,则改变该组计数器的值。
36.根据权利要求35所述的装置,其中,所述组计数器被布置为以所发送的分组的组 标签与下一个所述第一分组类型的分组的组标签之间的差值的模,改变该组计数器的值。
37.根据权利要求35或权利要求36所述的装置,其中,所述组计数器被布置为如果 所发送的分组是所述第一分组类型的并具有与下一个所述第一分组类型的分组不同的组 标签,则递减该组计数器的值。
38.根据权利要求29至37中任意一项所述的装置,其中,所述组计数器被布置为如 果所发送的分组是所述第二分组类型的并具有与下一个所述第二分组类型的分组不同的 组标签,则改变该组计数器的值。
39.根据权利要求38所述的装置,其中,所述组计数器被布置为以所发送的分组的组标签与下一个所述第二分组类型的分组的组标签之间的差值的模,改变该组计数器的值。
40.根据权利要求38或权利要求39所述的装置,其中,所述组计数器被布置为如果 所发送的分组是所述第二分组类型的并具有与下一个所述第二分组类型的分组不同的组 标签,则递减该组计数器的值。
41.根据权利要求23至40中任意一项所述的装置,其中,所述数据分组还包括第三分 组类型的数据分组,其中,所述编组机构还被布置为将接收分组编组为有序的第二组序列, 所述第二组序列中的每个组仅包含所述第一分组类型的分组和所述第三分组类型的分组, 所述装置还包括第二组计数器,被布置为指示所述第二组序列的开始处的、仅包括所述第三分组类型 的分组的组的数目;其中,当且仅当所述第二组计数器存储指示了所述第二组序列的开始处的、仅包括所 述第三分组类型的分组的组的数目大于零的值时,所述第三分组类型的分组可用于发送。
42.根据权利要求41所述的装置,其中,所述编组机构还被布置为将接收分组编组为 有序的第三组序列,所述第三组序列中的每个组包含所述第二分组类型的分组和所述第三 分组类型的分组,所述装置还包括第三组计数器,被布置为指示所述第三组序列的开始处的、仅包括所述第三分组类型 的分组的组的数目;其中,当且仅当所述第三组计数器存储指示了所述第三组序列的开始处的、仅包括所 述第三分组类型的分组的组的数目大于零的值时,所述第三分组类型的分组可用于发送。
43.根据权利要求23至42中任意一项所述的装置,其中,所述装置包括网络元件,被 布置为在计算机网络内从源接收分组,并将分组转发至目的地。
44.根据权利要求43所述的装置,其中,所述装置包括网络路由器。
全文摘要
本发明提供了一种对数据分组进行排队的方法,所述数据分组包括第一分组类型的数据分组和第二分组类型的数据分组。所述方法包括将所述第一和第二分组类型的接收分组编组为有序的组序列,每个组包括至少一个分组;维持用于指示所述组序列的开始处仅包括所述第二分组类型的分组在内的组的数目的组计数器;以及发送分组。当且仅当所述组计数器指示了所述组序列的开始处仅包括所述第二分组类型的分组在内的组的数目大于零时,所述第二分组类型的分组可用于发送。
文档编号H04L12/54GK101878621SQ200880115667
公开日2010年11月3日 申请日期2008年9月8日 优先权日2007年9月18日
发明者斯蒂芬·约翰·马歇尔, 芬巴尔·内文 申请人:凡特西有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1