专利名称:用于通信网络中单元调度的方法
技术领域:
本发明涉及一种在服务器中调度单元(cell)传输的方法,调度这些单元的软件和服务器。
背景技术:
因特网路由器中的业务管理器使用服务器调度单元的传输,以确保等待传输的单元在所要求的时间周期内发出,从而保证一定等级的服务。
通过将事件定位于表中的各个位置(即,定时轮的时隙)从而定义事件表,可以使用基于表的定时轮来调度事件,从而使得能够减少或消除搜索。
能够离线预先计算所述调度表,并且这被称之为静态调度表。动态调度表能够在特定的事件发生之后,通过在适当的未来位置上添加一件或更多的事件到定时轮而实现,如在Yun-Sik Lee、Peter M Maurer的“MDCSIMA Compiled Event-Drive Multidelay Simulator”中所描述,美国坦帕南佛罗里达州大学计算机科学和工程系,FL33620。
保证带宽的服务器以恒比特率服务队列,传送队列分组到前向传输的链路。由于在队列尾部分组的随机到达图案,所以存在保证带宽的服务器服务其队列的总带宽小于链路带宽的瞬间。这允许附加带宽服务器可能有机会服务其队列。
服务队列的保证带宽服务器和附加带宽服务器的各种组合允许其中之一来提供不同类别的服务给不同的分组流,例如保证带宽服务器所服务的队列只用于恒比特流,或其集合,这些队列的到达图案是有规则的,例如视频会议业务附加带宽服务器所服务的队列只用于未规定的比特率流和带宽流,即它们的到达图案是随机的。一个好的实例是目前的因特网业务保证带宽服务器和附加带宽服务器的组合所服务的队列用于可变比特率流,其到达图案是有规则业务和随机业务的组合。一个实例将是某些类型的压缩视频业务,当附加带宽可用时,这些业务可以从中受益。
在下述文献中描述了保证带宽服务器和附加带宽服务器的一些实例,即“Providing QoS Guarantees in Packet Switches”,Fabio M.Chiussi和Andrea Francini,Proc.IEEE GLOBECOM’99,Seamless Interconnectionfor Universal Services,Symposium on High Speed Networks(高速网络学术研讨会),V02卷,第1582-1590页,巴西里约热内卢,1999年12月。
美国专利第5,696,764号描述了一种具有保证带宽阵列和附加带宽阵列的系统,它具有静态调度表。
发明目的本发明的一个目的是提供一种服务器,该服务器提供更加有效的单元传输。
本发明的另一个目的是可提供更加有效的数据结构以增强单元传输。
本发明的又一个目的是提供能够处理可变比特率业务的服务器。
本发明的再一个目的是提供在适当的未来位置能够将一件或更多的事件添加到定时轮的服务器。
发明概述本发明提供了一种操作服务器的方法,该服务器包括用于传输单元的两个阵列,即保证带宽阵列和附加带宽阵列,该方法包括监控保证带宽阵列中准备传输的单元,调度对应于准备传输的单元的事件,以及在任意位置上添加单个队列描述符到这样产生的调度。
优选地,在本方法中,每一位置指向队列的链接列表,并且它包括调节队列描述符的定位,以便在适当的时间服务队列。
该方法可以使用定时轮来实施调度操作,并有利地利用三维定时轮数据结构。在特定的事件发生之后,可以在适当的未来位置上添加一件或更多的事件到定时轮,以便实施动态调度。
该方法可以包括优化在保证带宽阵列的列表中队列引用(reference)的分布,直到每一列表条目只有一个引用的队列。
有利地,该方法包括操作环形缓冲器以实现保证带宽阵列,从而对于一个时隙,将来自队列的一个单元指向该阵列中的索引位置,和/或操作一种结构中的保证带宽阵列,该结构具有一个列表条目所引用的若干队列,在索引位置服务第一队列并沿该列表将指针移动与服务间隔相对应的量。
本发明可以以硬件例如包括网络处理器的数字计算机,和/或软件实现。
本发明还提供了一种可直接载入数字计算机内部存储器中的计算机程序产品,包括用于执行所述方法的软件代码部分,该方法监控保证带宽阵列中准备传输的单元,调度对应于准备传输的单元的事件,以及在任意位置上添加单个队列描述符到这样产生的调度表。
本发明还提供了一种实施本发明的计算机程序和载体,以及产品、程序和/或载体的电子发行。
本发明还提供了一种包括传输单元的两个阵列的服务器,即保证带宽阵列和附加带宽阵列,该服务器包括监控准备传输单元的保证带宽阵列的装置,调度对应于准备传输单元的事件的装置,以及用于在任意位置上添加单个队列描述符到这样产生的调度表的装置。
本发明可应用于所有形式的服务器,特别是路由器和业务管理器。
为了可以更容易地理解本发明,现在仅仅通过实例的方式参考附图给出描述,其中图1是如现有技术中所已知的用于保证带宽服务器和附加带宽服务器的严格优先级服务器;图2示出了具体化本发明特征的保证带宽列表;图3示出了具体化本发明特征的附加带宽列表;图4示出了具体化本发明特征的保证带宽列表和附加带宽列表的集合体;和图5和图6示出了根据本发明用于服务的单元结构。
具体实施例方式
图1表示现有技术中所已知的调度器10的节点,它们可以基于例如如这里所示的严格优先级服务器11。严格优先级服务器11由保证带宽服务器12和附加带宽服务器13提供服务。
当前分组交换网络的网络单元通常将到达所述节点的可变长度分组分割成固定长度单元,以便在该节点内能够统一管理所述单元的传输。固定长度的单元使得存储这些单元的数据缓冲器的存储器管理变得可行。为了提供特定的服务质量,需要比其他单元更加迅速地传输某些单元的能力,这只有通过延迟一些单元才有可能实现。为了通过调度器给等待服务的不同单元流提供不同的延迟,可以将这些单元置于多个队列中。
在传统的系统中,调度单元传输典型涉及插入队列指针到堆(heap)中,或搜索队列列表以找到准备传输的单元。两种安排都不是非常有效的方法。
本发明与现有技术的区别在于提供新颖的数据结构和新颖的搜索算法。
在重复应用算法之后,数据结构和搜索算法共同地促进队列在环形阵列周围的分布,直到每一阵列位置至多只有一个队列。
作为以上应用的结果,将最小化单元延迟变化,同时搜索适当单元以在特定时隙期间传输的问题减少成递增指针。这种处理保证了高等级的调度精度,同时提供了非常快速的不涉及任何大范围搜索的调度机制。
根据本发明的系统可能乍看起来不可靠之处在于,初始任意地分配单元的传输顺序,以及所述调度看起来导致了同时调度多个单元用于传输。
但是,可应用在阵列周围分布队列的本方法保证了能够给任何需要的队列分配恒定的带宽,同时通过重复应用算法,获得了传输的最佳顺序。
所以,不是解决了现有技术所带来的例如搜索列表、堆或栈的问题,而是绕过了这些问题。
本发明提供的数据结构包括保证带宽列表和附加带宽列表的集合体。
图2表示根据本发明的保证带宽列表20的结构。保证带宽列表20包括到链接列表23的指针22的时间排序阵列、保证带宽阵列21,如在图2的底部所示。链接列表的每一节点25中的数据指针24指向等待被服务单元的队列26,例如用GB(保证带宽)、或AF(保证前向传送)指定的队列。指针22通过到达路由器的时间进行排序。
队列26具有各种服务质量的要求,在保证带宽队列中可能是GB(保证带宽)队列或AF(保证前向传送)队列。
与每一队列26关联的数据结构包含参数、服务间隔,其中服务间隔指示应该服务队列26的时间间隔,即在调度该队列26的下一单元传输之前应该消逝的时隙数量。值得注意的是每一时隙传输一个单元。
依次地访问链接列表23中在每一阵列位置的每一队列26,以便如果单元可用于传输,则来自每一队列26的单元在传输来自同一队列26的前一单元的保证时间内传输。当然,该队列可以例如是空的。
节点单元中的控制软件必须确保GB单元所占用的带宽不超出链路的带宽。业务管理器通过配置确保GB单元的数量小于可用时隙的数量。
图3表示根据本发明的附加带宽列表30的结构。其中保留了图2的特征,并使用相同的附图标记。
附加带宽列表30包括指向链接列表33的指针22的阵列,附加带宽阵列31。链接列表33的每一节点25中的数据指针24指向等待被服务单元的队列36。该阵列31不按时间排序。
附加带宽阵列31的队列36与保证带宽阵列的队列26在其服务质量要求方面的不同之处在于GB阵列21的队列26是GB或AF队列,而附加带宽阵列31的队列36是AF或BE(尽力而为Best Effort)队列。
另外,附加带宽阵列的链接列表33只包含一个节点25,所以将服务一个队列。
图4表示保证带宽列表21和附加带宽列表31的集合体40,它具有队列41。
在该集合体中,GB阵列21的指针指向GB和AF队列,同时EB阵列31中的指针指向AF和BE队列。该GB队列是在规则间隔的保证时隙,而AF队列通过GB阵列21分配有恒定的带宽,加上任何附加服务,其中带宽可通过EB阵列31获得。
如上所述,本发明与现有技术的区别在于除了数据结构之外还提供新颖的搜索算法。
为该搜索算法,定义三个计数器/指针·实时计数器(RealTimeCounter);·时隙索引(TimeSlotIndex);·循环索引(RoundRobinIndex)。
一旦每一单元到达周期则递增一次实时计数器(以保证带宽阵列长度为模)。实时计数器通过计数已消逝时隙的数量有效地跟踪实际时间。
由于模运算,当到达GB阵列的末尾时,实时计数器返回到开始。根据服务所有单元流的总带宽和服务任何一个单元流的最小带宽的比率计算阵列长度。
当所述单元在连接上到达时,该连接每秒承载固定数量的比特,并且该单元具有固定的长度,单元到达率将是恒定的。这种单元到达率的倒数是单元到达周期。
时隙索引指示通过GB服务器将要搜索的队列的链接列表23。不像EB阵列,在这种列表中能够存在不止一个队列。时隙索引如下所述递增(以保证带宽阵列长度为模)。
循环索引指向附加带宽服务器13将要服务的下一队列,并且每次当附加带宽服务器13从队列中删除一个单元,就递增该循环索引。
优先级调度器11与服务大量队列的保证带宽服务器12连接,还连接到附加带宽服务器13,如果保证带宽服务器12不具有准备发送的单元,则可以激活(invoke)附加带宽服务器。
每一时隙(单元到达周期)发起一次搜索。在每一时隙中,首先激活保证带宽服务器12。
对于一个时隙的执行流程如下1)递增实时计数器(以保证带宽阵列长度为模);2)以当前的时隙索引作为参数,激活保证带宽服务器。保证带宽服务器执行搜索通过当前GB阵列21位置指针指向的队列的列表,并继续递增时隙索引(每当发现列表结尾,或空列表时)直到找到一个单元;或直到已经搜索到在两个相继阵列位置的列表;或直到时隙索引等于实时计数器的值(即,GB单元不占用的任何空闲时隙已经由EB单元占用)。
如果到达两个相继列表的结尾(通过空指针来指示),则发送EB单元,如果存在EB单元的话。然后递增时隙索引,以防止在下一时隙的开始再次搜索第二个空列表。
3)如果发现单元则存储保证带宽指针位置,提取并发送该单元。现在对于该时隙完成了所述优先级调度器。
保证带宽阵列21的元素指向节点25的链接列表23,在每种情况下其数据指针24指向输出队列41。指向最近服务队列41的链接列表节点25从链接列表23中删除并进一步沿保证带宽阵列21插入到一个列表。该新列表23的位置被计算为实时计数器值和服务间隔之和,并存储在与该队列41相关联的数据结构中,指示应该服务队列41的时间间隔(即到未来的时隙数量)。
对于在以固定速率工作的链路上等待传输的单元队列的集合,该固定速率必须大于或等于服务每个单独队列的速率之和。对于每个单独的这种队列,应该服务该队列的间隔,即服务间隔,是单元传输速率的倒数。
属于被服务和重新调度的队列的两个阵列元素的索引之间的差对应于应该服务所讨论队列的速率的倒数。
通过这种方式,能够在保证带宽上提供GB列表中的每个队列。
队列服务间隔中的变化将决定如何动态地构造链接列表。例如,如果指针插入到空列表中,当时隙索引到达该列表时,将会首先搜索附加到该列表的节点。或者,如果该列表已经包含到节点的指针,添加的节点将被链接到已存在的节点上。
当存储时隙索引值时,GB服务器将在下一迭代中返回到同一阵列位置,以搜索另一个准备传输的单元。假如然后服务来自同一列表的另一个队列,由于实时计数器递增1,同时用于两个队列的服务间隔保持相同,那么将在相继的阵列位置上重新调度该下一队列用于服务,借此将集中在一个位置上的队列在所述阵列周围分布开来。
4)如果没有找到单元从附加带宽阵列31的当前位置开始,搜索附加带宽阵列31。
1)如果找到单元,那么存储附加带宽阵列31中的位置,并且提取和发送该单元。现在对于该时隙完成了优先级调度器。
2)如果没有找到单元,则该优先级调度器发送空闲的单元并结束。
能够将保证带宽阵列21认为是将要服务队列列表的环形阵列,它具有两个指针、实时计数器和时隙索引。每一单元发送时间递增一次实时计数器。
当到达GB阵列(环形列表)的结尾时,该操作将返回到阵列的开始。
为了举例说明上述描述,能够假设实时计数器和时隙索引都具有值‘N’。保证带宽阵列21的第N个元素,GB阵列[N],可以指向所有在时隙‘N’等待被服务的队列的列表。如果例如在时隙‘N’存在三个等待服务的队列,那么保证带宽阵列21的第N个元素指向三个队列的列表,其中该队列是在三个相继的时隙上必须服务的一个队列。
应该以特定的速率服务通过阵列位置GB阵列[N]所指向的链接列表中三个队列中的每个队列,该速率的倒数是服务间隔I。在时隙[N]服务第一队列,在时隙[N+1]服务第二队列以及在时隙[N+2]服务第三队列。将调度三个队列以便接下来分别在三个不同的时隙,时隙[N+I]、时隙[N+1+I]和时隙[N+2+I]被服务,借此使得队列分布在所述阵列的周围,而不是集中在一个阵列位置。
当在搜索之后所述队列达到服务,所以减小了必须用于定位准备传输单元的计算。
没有必要搜索;消除了搜索,并因此还消除了与搜索相关的计算开销。文献中的其他方法涉及搜索用于最适当传输单元的结构的思想,这涉及了许多的计算。
在已经服务三个队列之后,时隙索引将实时计数器滞后三个单元间隔。时隙索引必须与实时计数器保持一致,以便确保通过遇到指向空列表的保证带宽阵列21的少许相继的元素,以通告的速率来服务业务。
当遇到空列表时,时隙索引被局限于每单元间隔递增两次,如果在保证带宽阵列21中没有发现任何单元要传输,那么激活附加带宽阵列31的搜索,即,当发生搜索到两个相继的空阵列位置时,终止所述搜索。
通过这种方式,可以在每个单元间隔传输一个单元,而不用过多地搜索空列表,并且实时地服务队列。
图5和6中的每幅图都表示本发明操作26个单元序列的算法中的五个相继步骤,借此安排这些单元用于传输。
在图5中,图51,七个等待传输的队列每个具有相同的服务质量要求,并具有相同的服务间隔。
初始,在第一时隙期间,传输来自QA的单元,如图52所示。指向QA的指针然后移动到GB阵列21中的位置GB10,该位置被计算为实时计数器值和用于QA的服务间隔之和,其中该实时计数器值在这里为零(由于模运算,在时隙开始时从GB阵列的结尾递增到零)以及该服务间隔在这里为10个时隙间隔。
在下一时隙中,当实时计数器已经递增1时,然后服务QB以及它的指针重新定位在该阵列中的位置GB11,该位置是QA随后的一个位置,因为实时计数器已经递增了一。
从此之后,服务剩余的队列,直到已经服务并调度完所有的七个队列,如图53所示。
现在将遇到GB阵列中的空位置,GB7到GB9,这导致了以循环的方式服务来自EB阵列31的队列。当时隙索引被局限于在每个时隙间隔搜索两个相继的列表时,将在服务EB队列之前,搜索GB6(由于找到单元,先前存储了时隙索引的值,因此搜索从GB6开始)和GB7。然后将搜索GB8和GB9和服务的另一个EB队列。在下一时隙间隔,将搜索GB10,在此间隔将找到和传输QA中位于GB10的单元。
在图54和55中,然后将如上所述服务和调度所述队列。
由于服务的两个EB队列,在第10个时隙将再次服务QA(当实时计数器是9时),并且被调度以便在GB20再次传输。这里,用于该队列的服务间隔是10个时隙间隔10+10=20。由于该服务间隔,在BG20放置QA。
在图6中,QA到QC具有不同于QD到QG的服务质量要求QA到QC具有11个时隙间隔的服务间隔;QD到QG具有10个时隙间隔的服务间隔。
在图61和62中,以与图51和52相似的方式服务队列。但是,在图63中,QC和QD不同的服务间隔已经导致在同一时隙调度两个队列用于服务。
开始,在第三时隙服务QC,在该时隙上指向QC的指针移动到通过实时计数器值2,和服务间隔11之和所计算的位置,从而使QC定位于GB13。在第四时隙服务QD,并将它移动到通过实时计数器值3和服务间隔10之和所计算的位置,从而使QD也定位于GB13。
在从队列QG和QA传输单元之间,服务两个EB队列。首先,当GB7和GB8不指向队列时,在下一时隙期间服务第一队列,在此之后的时隙期间服务第二队列。
当在第12个时隙中达到再次服务QC时,当实时计数器是11时,然后将在阵列位置GB22调度QC,而在第13个时隙,将在GB22调度QD,借此沿该阵列分布这两个队列。
对于本领域普通技术人员显而易见的是,能够应用除了这里描述之外的数据结构或算法,而不背离正如请求保护的本发明的范围。
例如,尽管这里已经将本发明描述为限制搜索链接列表成两个空位置,但是在一个时隙期间所搜索的链接列表数量和时隙索引将赶上实时计数器的速率之间存在设计上的选择。
图5和6中的每一幅图表示操作26单元时隙序列的本发明算法中的5个相继步骤,借此安排这些单元用于传输。
图5示出了在时隙TS0期间队列与保证带宽阵列中元素的初始的关联。用于所有队列的时间间隔是10。[52]示出了稍后时隙的情形,(TS1)QA已经使一个单元从队列中取出用于传输,并被移动到保证带宽阵列位置10。[53]示出了在时隙TS7的情形。QB和QG现在已经使一个单元从队列中取出用于传输,并且QA和QG占用保证带宽阵列从10到16的位置。[53]示出了在时隙TS10的情形。QA到QG仍占用保证带宽阵列从10到16的位置。[55]示出了在时隙TS12的情形。图5的目的是通过以相同速率(并因此具有具有相同的时间间隔)服务所有队列的情形步进。
图6的目的是通过以不同速率(并因此不具有相同的时间间隔)服务这些队列的情形的步进。[63]示出了在TS11的情形;值得注意的是保证带宽阵列位置13现在指向具有两个元素的QD和QC的链接列表。通过TS18,该保证带宽阵列再次指向每一个包含一个元素的链接列表;队列在时隙上的所述分布再次均匀。
权利要求
1.一种操作服务器的方法,该服务器包括用于传输的单元的两个阵列,保证带宽阵列(12,20,21)和附加带宽阵列(13,30,31),该方法包括监控该保证带宽阵列中准备传输的单元,调度对应于准备传输单元的事件,以及在任意位置上添加单个队列描述符到这样产生的调度表中。
2.根据权利要求1所述的方法,其中,每个位置指向队列(26,36)的链接列表(23,33)。
3.根据权利要求1或2所述的方法,包括调节队列描述符的位置,以便在适当的时间服务该队列(26,36)。
4.根据任何上述权利要求所述的方法,包括使用定时轮来实施调度操作。
5.根据权利要求4所述的方法,包括三维定时轮数据结构。
6.根据任何上述权利要求所述的方法,包括在特定的事件发生之后在适当的未来位置上添加一件或更多的事件到定时轮,以便实施动态的调度。
7.根据任何上述权利要求所述的方法,包括重新迭代事件调度表的重新计算。
8.根据任何上述权利要求所述的方法,包括优化在保证带宽阵列(12,20,21)的列表中队列引用的分布,直到每一列表条目有一个引用的队列(26)。
9.根据任何上述权利要求所述的方法,包括操作环形缓冲器以实现保证带宽阵列(12,20,21),从而对于一个时隙,将来自队列(26)的一个单元指向该阵列中的索引位置。
10.根据任何上述权利要求所述的方法,包括操作一种结构的保证带宽阵列(12,20,21),该结构具有一个列表条目(23)所引用的若干队列(26),在索引位置服务第一队列并沿该列表将指针移动与服务间隔相对应的量。
11.根据任何上述权利要求所述的方法,包括只有当在保证带宽阵列(12,20,21)中没有找到任何要发送的单元时,才操作附加带宽阵列(13,30,31)。
12.一种可直接载入数字计算机内部存储器中的计算机程序产品,包括用于执行如下方法的软件代码部分,该方法监控保证带宽阵列(12,20,21)中准备传输的单元,调度对应于准备传输单元的事件,以及在任意位置上添加单个队列描述符到这样产生的调度表。
13.一种可直接载入数字计算机内部存储器中的计算机程序产品,包括用于当在计算机上运行所述程序时,执行权利要求1到11的任何一项或更多项所述方法的软件代码部分。
14.一种可直接载入数字计算机内部存储器中的计算机程序,包括用于当在计算机上运行所述程序时,执行权利要求1到11的任何一项或更多项所述方法的软件代码部分。
15.一种可以包括电子信号的载体,用于如权利要求14所述的计算机程序。
16.权利要求12或13所述的计算机程序产品或权利要求14所述的计算机程序或权利要求15所述的载体的电子发行。
17.一种包括传输单元的两个阵列的服务器,即保证带宽阵列(12,20,21)和附加带宽阵列(13,30,31),该服务器包括用于监控该保证带宽阵列中准备传输的单元的装置,用于调度对应于准备传输单元的事件的装置,以及用于在任意位置上添加单个队列描述符到这样产生的调度表的装置。
18.根据权利要求17所述的服务器,包括用于将每个位置指向队列(26,36)的链接列表(23,33)的装置。
19.根据权利要求17或18所述的服务器,包括用于调节队列描述符的位置,以便在适当的时间服务队列(26,36)的装置。
20.根据权利要求17到19中任何一项所述的服务器,包括实施调度操作的定时轮。
21.根据权利要求20所述的服务器,其中,所述定时轮包括三维定时轮数据结构。
22.根据权利要求17到21中任何一项所述的服务器,包括用于在特定的事件发生之后,在适当的未来位置添加一件或更多事件到定时轮,以实施动态调度的装置。
23.根据权利要求17到22中任何一项所述的服务器,包括用于重复迭代事件调度表的重新计算的装置。
24.一种基本上如上参考附图的图2到6任何一个或更多所描述的、和/或如在该附图中所示例的操作服务器的方法。
25.一种基本上如上参考附图的图2到6任何一个或更多所描述的、和/或如在该附图中所示例的服务器。
全文摘要
一种服务器具有保证带宽(GB)阵列21和附加带宽(EB)阵列31,所述阵列对在队列中保持的单元的传输具有不同的服务质量要求。该服务器可操作用于在环形阵列的周围分布队列,直到每个阵列位置至多只有一个队列,以便最小化单元延迟变化。
文档编号H04L12/54GK1846408SQ200480025102
公开日2006年10月11日 申请日期2004年8月26日 优先权日2003年9月2日
发明者L·A·费茨格拉尔德 申请人:皇家飞利浦电子股份有限公司