列或队列中主单元的发送会被阻止。其它目的地的队列中的其它 主单元可以继续被发送。当主单元准备被发送时,从存储器读取主单元(步骤260)并且将 主单元发送至其它节点(步骤270)。V0Q可以由主单元生成过程来独立管理,其中汇编单 元仅保持每个目的地的当前主单元,而且V0Q外部缓存被外部管理。基于主单元朝着切换 单元103的释放率,汇编单元然后将分组从V0Q中取出。
[0036] 主单元可以包括分组的部分有效载荷。在这种情况下,汇编单元101将分组的剩 余部分添加到下一个主单元。汇编单元101可以保持每个目的地节点多个队列,每个队列 代表不同的服务等级(ClassofService,C0S)。
[0037] 主单元的使用使得有效的内部切换存储器管理和队列管理成为可能,这是因为主 单元可以形成为一个尺寸。使用固定尺寸单元提供一些性能优点。例如,由于在避免DRAM 组竞争的同时以较大块尺寸更有效写入动态随机存取存储器(Dynamicrandom-acciess memory,DRAM)或从其读取,所以固定尺寸的单元使得有效处理和外部存储器管理成为可 能。典型地,平均分组尺寸小于最佳块尺寸,其与主单元的尺寸匹配。而且,当链路具有小 带宽时,大分组被分割为多个主单元。使用多个链路发送多个主单元允许目的地节点以更 少的延迟和与单个面板的使用更少的跳动并行接收整个分组。另外,当本地处理单元在尺 寸上被限制时,队列和缓存管理更简单,这是因为描述符的数量可以形成为与小分组的大 数量相比更低。主单元的使用还简化平衡链路负载所要求的计数,这是因为计数可以基于 固定尺寸单元,而非可变分组尺寸来形成。
[0038] 当单元是满的时,主单元被输送到切换单元103。切换单元103确定使用哪个链路 来发送主单元到其目的地。如果对于特定目的地/C0S结合而言没有来自切换单元103的 背压,那么主单元可以被立刻发送到其目的地。
[0039] 主单元尺寸可以变化。例如,主单元尺寸对于高优先等级C0S而言更小以避免由 利用附加分组填充主单元所引起的过度延迟。主单元尺寸可以取决于网络中的可用带宽而 变化。可用带宽可以通过节点数量和链路数量来确定。汇编单元101还可以采用超时并且 将部分填充主单元发送以避免过度延迟。另外,汇编单元101可以释放部分填充主单元以 避免在互连链路上的非必要带宽消耗。
[0040] 切换单元103还可以从其他节点接收数据。切换单元103确定数据的目的地是否 为本地处理单元105或另一个节点的处理单元。如果最终目的地是另一个节点的处理单 元,那么切换单元103将数据发送到目的地节点或另一个中间节点。
[0041] 当切换单元103接收本地处理单元的数据时,切换单元103传递数据至重排序和 解除汇编单元102。重排序和解除汇编单元102将数据存储在存储器中的重排序队列107 中。如果数据可以是主单元的形式,那么重排序和解除汇编单元102对主单元进行重排序 和解除汇编。重排序和解除汇编过程可以分别在两个独立的设备或在一个设备上操作。
[0042] 图3显示重排序和解除汇编单元102中处理接收的主单元的流程图。当重排序和 解除汇编单元102接收主单元时(步骤310),重排序和解除汇编单元102可以将主单元存 储在存储器中的重排序队列107中(步骤320)。重排序和解除汇编单元102基于主单元所 源自的节点处定义的主单元序列号分割主单元(步骤330)。重排序和解除汇编单元102将 接收的主单元的主单元序列号进行比较并且使用重排序逻辑将它们正确地放置在队列中, 以及释放重排序的主单元(步骤340)。
[0043] 图4显示步骤340的重排序逻辑的流程图。每个主单元具有其对应比特,该对应 比特基于主单元序列号来确定。重排序和解除汇编单元102设置与接收的主单元对应的比 特(步骤410)。设置比特可以通过将比特从0改成1以指示出接收到主单元来完成。如果 主单元包括分组结尾(EndOfPcket,E0P),那么重排序和解除汇编单元102设置附加比特 以指示E0P(步骤410)。
[0044] 图5显示带有对主单元对应的比特的E0P序列号和数据库。在序列号数据库500 中,有两种类型的比特:接收比特和E0P比特。在一个实施方式中,第一列中的比特是接收 比特,指示对应的主单元是否到达。第二列中的比特是E0P比特,指示对应主单元是否包括 E0P。在一个实施方式中,带有值0的接收指示其对应主单元并未到达,并且带有值1的接 收比特指示对应主单元到达。带有值1的E0P比特指示其对应主单元包括分组结尾,并且 带有值0的EOP比特指示相反的。
[0045] 接收比特501是在队列的头部中的比特,并且接收比特504是在没有丢失先前比 特的情况下队列中的最后的比特。如果E0P存在在接收比特501和接收比特504之间,那 么重排序和解除汇编单元102得知接收到以E0P结尾的整个分组。例如,E0P比特513显 示在接受比特501和504之间有E0P。相反,使接收比特在E0P之前具有0指示不是所有包 括分组的主单元都到达了。在E0P比特517之前,例如,存在带有0的接收比特505和506。 因此,在E0P比特517的对应主单元上结束的整个分组并未到达。
[0046] 重排序和解除汇编单元102通过检查接收比特检查是否所有包括分组的主单元 都到达(步骤420)。如果并未所有包括分组的主单元都到达,那么重排序和解除汇编单元 102等到下一个主单元(步骤430)。如果所有包括分组的主单元都到达,那么重排序和解 除汇编单元102释放主单元(步骤440)。当超时到期时,重排序和解除汇编单元102可以 释放主单元。
[0047] 使用仲裁逻辑,对释放的主单元进行解除队列。解除队列仲裁逻辑在准备好发送 到处理单元105的所有主单元之间利用最高优选等级选择主单元。重排序和解除汇编单元 102从存储器读取主单元并且对主单元进行解除汇编到初始分组(步骤370),初始分组然 后被发送到处理单元105 (步骤380)。重排序过程可以保持每个源/C0S结合一个内部队列 107。内部队列可以例如为位于节点内的缓存。
[0048]系统可以使用简化的实施方式,其中分组并没有与其他分组汇编成主单元。分组 没有被分割成多个主单元。而且,主单元可以包括一个分组。在这个情况下,重排序和解除 汇编单元102使用如上文描述的相同逻辑,但是不需要标记E0P比特。相同的逻辑仅用于 重排序目的地。
[0049] 每个主单元到达时间由重排序和解除汇编单元102来重排序。在主单元被发送到 处理单元105之后,重排序和解除汇编单元102设置队列头序列号为发送到处理单元105 的最后的主单元的主单元序列号。如果接收到主单元带有主单元的序列号小于队列头,那 么主单元在其解除汇编后被立即发送到处理单元105。
[0050] 处理单元105可以进一步部署QoS功能,例如业务管理和列队。处理单元105可 以创建本地复件,如果需要的话,用于多广播业务。处理单元105还可以修改接收的分组的 格式并且将它们发送到接口106。在典型的网络系统中,在输入接口上的分组格式可以不同 于在输出接口上的分组格式,这是因为添加的信息,例如路由头部和MPLA标签。在这个情 况下,一些分组格式修改可以由入口线路卡来处理,并且一些头部操作在入口线路卡上的 处理单元处完成。
[0051] 当由于分布式无交换机互连系统中的临时拥塞造成节点100指示背压状态到处 理单元时,节点100可以实现多QoS策略。背压可以发生在所有业务上或对于特定目的地 或基于优先级的一部分业务上。
[0052] -个实例策略可以是在背压的情况下,不论背压是否是基于每个目的地的,停止 将来自处理单元105的分组发送到节点100。因为在背压周期期间,发送节点并不将数据发 送到阻塞的节点,所以线头拥塞可以发生。线头拥塞是其中到所有节点的业务由于到一部 分节点的业务中的拥塞而被停止的情况。这个因为在队列头部上的分组经历背压并且阻挡 下个分组到能够接收分组的其他节点而发生。线头拥塞是没有效率并且经常是高度不期望 的。
[0053] 如果背压是基于优先级的,节点可以仅允许高优先级业务并且停止低优先级业 务。这种方法可以是有益的,这是因为其只要求处理单元105和/或汇编单元上的少量队 列。
[0054] 另一个策略是每个目的地节点使用多个队列。当接收到指示在到特定节点的路由 上的拥塞的背压时,处理单元105和汇编单元101可以停止发送数据到特定节点。处理单 元105和汇编单元101可以允许发送特定优先级到节点。例如