专利名称:平滑轮转分组调度控制方法及控制装置的制作方法
技术领域:
本发明是一种平滑轮转(Smoothed Round Robin,简称SRR)分组调度控制方法及控制装置。属于计算机网络中的分组交换技术领域。
背景技术:
随着计算机网络技术,特别是因特网的飞速发展,由一种单一的网络基础设施来取代目前的电话网、专用分组网、电报网、有线电视网等网络并提供人们所需要的各种各样的业务一直是学术界及工业界所关心的热点问题。由于现在因特网是占统治地位的网络基础设施,因此人们希望由因特网来实现所有网络的综合。但在目前基于IP(Internet Protocol)技术的因特网还无法胜任这一工作。这主要是由于现在的因特网还不能提供服务质量保障。与电路交换技术相比,IP技术是一种基于无连接的技术,在端到端之间没有固定的电路连接,分组作为网络处理的基本单元带有源,目的地址及相关信息,并由各个转接点独立决定分组传送的下一站。传统的基于IP技术的路由器仅提供尽全力型服务,因此分组的传输次序、带宽、时延、抖动都是无法保证的。在因特网的初始的设计中,把网络互连放在了首位,并且当时的设计主要针对的是实时性要求不强的数据业务。
为了在因特网上引入服务质量保障,有必要对需求不同的业务及用户进行区分,并向他们提供不同水平的服务。向不同类型的业务及用户提供不同的服务质量在分组网上的交换机(或路由器)中是通过分组调度控制器来实现的。在目前有多种不现的分组调度器的实现,分别有一些优缺点。如基于WFQ(Weighted Fair Queueing)的分组调度器能对不同的业务及用户进行很好的区分。在这种调度器下,用户的端到端的时延特性能得到很好的保障,而且这种调度器能公平地对待所有的用户,但这种调度器的最大的缺点在于它的时间复杂性随着用户的数目的增加而线性的增加。当用户的数目变得很大时,这种调度器就变得不实用了。在WFQ调度器的基础上发展起来的其它的调度器的调度时间复杂性至少随着用户数的增加而对数增加,这类调度器在高速情况下都变得不实用。另一个基于轮转的调度器如DRR(Deficit Round Robin)调度器虽然时间复杂性不随用户数的增加而增加,但是它们对不同的用户的隔离程度不够好,各个用户间能互相影响,因此这类调度器的时延特性都很差,不能用于各种类型的实时业务及交互式业务。
发明内容
本发明的目的就是提供一种对不同的用户进行很好隔离,使所有的用户均分别能得到相应的服务质量,能提供较好的时延特性保障,使各种实时性强的应用的端到端的传输时延控制在一个可接受的范围的平滑轮转分组调度控制方法及控制装置。
本发明的平滑轮转分组调度控制方法由权重展开序列扫描器,权重矩阵管理器,队列管理器三个部分所组成。队列管理器利用权重展开序列扫描器的输出值来确定权重矩阵管理器中的权重矩阵的一个确定的列,并对这一列从上到下进行扫描。当扫描到权重矩阵管理器中的权重矩阵的非“0”项时,队列管理器利用其所包含的分组选择器对这一项相应的流进行服务。当扫描完权重矩阵中的这一列后,队列管理器又从权重展开序列扫描器中取权重展开序列的下一个值,再对权重矩阵管理器中相应的列进行扫描。如此进行下去。当权重展开序列扫描器扫描到序列的尾部时,它将重新回到序列的头部重新开始扫描。权重展开序列扫描器的控制方法是对它所存贮的权重展开序列进行循环扫描。开始时它扫描权重展开序列的第一项a1,然后再是第二项a2,直到最后一项 ,然后再是a1,如此循环往复。在扫描ai时,权重展开序列扫描器向分组选择器送出ai的值。权重管理器的控制方法是对权重矩阵进行管理,在权重矩阵中保存各个流的权重值的二进制编码。当有新的流到来时,权重矩阵管理器把与该流相对应的权重值的二进制编码加入到权重矩阵中,当流离开后,它所对应的二进制编码被权重矩阵管理器从权重矩阵中删除。队列管理器由队列管理及分组选择器两个部分所组成。队列管理把新到的分组加入到相应的流所对应的队列中去,并把离去的分组从相应的队列中删除。分组选择器的控制方法是当系统的输出链路空闲时,从所有的等待队列中按平滑轮转调度方法选取一个分组发送到输出链路上。
本发明的平滑轮转分组调度控制装置由中心处理器,存贮器,网络接口单元,PCI总线所组成。中心控制器采用Intel X86 CPU控制器,并分别与存贮器,PCI总线相连。网络接口单元有若干个,并分别与PCI总线相连。
本发明有如下的优点SRR分组调度控制方法是目前所有的分组调度控制方法中唯一的具有严格0(1)的时间复杂性,同时又具有很好的短程公平性及调度时延特性的分组调度控制方法。
本发明能对不同的用户进行很好的隔离,使所有的用户均分别能得到相应的服务质量;能提供较好的时延特性保障,使各种实时性强的应用的端到端的传输时延控制在一个可接受的范围。
以往的分组调度器如基于时标调度方式(如WFQ等)的调度器等一般具有较好的公平性及调度时延特性,但这类调度器的实现均很复杂,同时时间复杂性均很高,最少为0(longN),N为系统中流的数目。在高速情况下,当流的数目很大时,它们的高复杂性实际上限制了这类算法的实用程度。
另一类基于轮转的调度器(如基于DRR的调度器)一般均具有0(1)的时间复杂性,且均很好实现。但由于它们不能提供很好的短程公平性及时延特性,因此它们不能在将来支持多种业务的分组网络(如因特网)上取得实际的应用。
由于本发明能克服上述两类调度器的缺点,而又具有这两类调度器的优点,因此本发明应能在将来的高速网络及多业务的网络环境中取得广泛的应用。
四
图1是本发明的结构示意图。其中有权重展开序列扫描器1,权重矩阵管理器2,队列管理器3。在权重展开序列扫描器1中有权重展开序列11,权重扫描器12。在权重矩阵管理器2中有信息流f1至fn所对应的权重矩阵21。在队列管理器3中有与权重矩阵管理器2中信息流f1至fn相对应的分组队列qf1至qfn,及分组选择器31。
图2是本发明的控制程序框图。
图3是本发明控制装置的结构示意图。其中有控制器5,存贮器6,网络接口单元7,PCI总线8。
图4是图3中的网络接口单元7的电原理图。
五具体实施例方式
本发明的平滑轮转分组调度控制方法由如下几个部分组成权重展开序列(WSS,Weight Spread Sequence)扫描器,权重矩阵(WM,Weight Matrix)管理器,队列管理器三个部分所组成。
权重展开序列(WSS)扫描器的功能是在分组选择器的控制下对系统中的权重展开序列(WSS)进行循环扫描,并向分组选择器输出扫描结果。在本发明中权重展开序列(WSS)是一种特殊设计的整数序列。
WSS序列扫描器的功能是对它所存贮的WSS序列进行扫描。WSS序列是按如下方式定义的整数序列
以下是几个WSS序列的例子。S1{1}S2{1 2 1}S3{1 2 1 3 1 2 1}S4{1 2 1 3 1 2 1 4 1 2 1 3 1 214}S5{1 2 1 3 1 2 1 4 1 2 1 3 1 215 1 2 1 3 1 2 1 4 1 2 1 3 121}在WSS扫描器中,静态地存贮着一个阶为Kmax的WSS序列。Kmax的取值由系统根据它所要分配权值的范围来定。
WSS扫描器在工作时对它所存贮的WSS序列进行循环扫描。开始时,它扫描a1,然后是a2,…,一直到
,然后再是a1,…,如此循环往复。在扫描ai时,扫描器向分组选择器返回ai的值。
权重矩阵管理器对系统中的权重矩阵进行管理及维护。权重矩阵中保存的是各个流(在这里流是指具有相同特性,如共同的源、目的地址,端口号的分组的集合)的权重值(在这里权重与流所得到的带宽成正比)的二进制编码。当有新的流到来时,由调度控制器通知权重矩阵管理器把与该流相对应的权重值的二进制编码加入到权重矩阵中;当流离开系统后,它所对应的二进制编码被权重矩阵管理器从权重矩阵中删除。
在本发明中,每一个流都被分配了一个与它所预留的速率(rate)成正比的权重(weight)。我们设权重的集合为{1,2,3,…2k-1}。这样,对于不同的k值,我们就可以得到不同的权重范围。如,当k=16,带宽的分配粒度为1bps,这时系统所能提供的带宽的集合就是{1bps,2bps,3bps,…,64kbps};当k=32,带宽的分配粒度为1bps时,带宽的集合就是{1bps,2bps,3bps,…,4Gbps}。
对于流flowf,它的权重可以用如下的方式表示Wf=Σn=0k-1af,n.2n]]>其中af,n∈{0,1}。我们把flowf的权重wf的二进制系数af,n组成了flowf的权重矢量(Weight Vector),WVf=af,(k-1),af,(k-2),…,af,0在权重矢量的基础上,我们引入权重矩阵WM的概念如下。 对于权重矩阵WM而言,它的不同的列所对应的权值是不一样的。column0所对应的权值为1,column1所对应的权值为2,…,columnk-1所对应的权值为2k-1。因此,我们可以规定column0所对应的权值的阶为0,column1所对应的权值的阶为1,…,columnk-1所对应的权值的阶为k-1。在WM管理器中,我们为了降低调度器的时间复杂性,把WM中的每一列中的非0项用一个双向链表连接起来。这样当WM中有k列时,管理器中就有k个双向链表。
本发明正是借助于WSS序列及权重矩阵WM,设计出SRR调度算法。在下面我们在对队列管理器作简要的描述后,对SRR分组调度控制器的工作原理进行介绍。
队列管理器通过控制WSS扫描器及权重矩阵来对系统中的分组进行选择,以决定系统中各个队列的分组的输出次序并保证各个队列的分组得到它们所应得到的服务。队列管理器完成如下的2个功能
队列管理及分组选择。其中队列管理对各个流所形成的队列进行维护。即把各个流的新到的分组按次序加入到相应的队列中。分组选择的作用是当一个分组在物理链路上发送完毕,且系统中还有分组排队的情况下,由它来选择下一个要发送的分组。在本发明中,分组选择器需要WSS扫描器及权重矩阵管理器的协助来完成分组的选择工作。
本发明的核心内容就在于利用WSS扫描器及权重矩阵管理器来实现了快速的分组选择功能。
队列管理器由队列管理及分组选择这两个功能所组成。队列管理把新到的分组加入到相应的流所对应的队列中去,并把离去的分组从相应的队列中删除。
分组选择的功能是当系统的输出链路空闲时,从所有的等待队列中选取一个分组发送到输出链路上去。分组选择的实现在本发明中要依赖于WSS扫描器及WM矩阵来完成对下一个待传送的分组的选取。
以下简述平滑轮转分组调度控制方法的原理。
在SRR调度控制方法的原理的描述中,我们采用如下的术语
我们用如下的三段pseudo C代码,Schedule,Add_flow,Del_flow来表示SRR调度器的工作过程,每一段代码表示一个action。这三个action相互之间是异步动作的。每一个action均由一些异步事件所触发。
Schedule是SRR调度器的主要部分,只要是输出链路处于非空闲状态,SRR就会运行Schedule来对分组进行输出调度。
Add_flow在新的流加入到系统中时被调用。
Del_flow在流被从系统中删除时调用。流可以显式地通过命令来删除,也可以被SRR隐式地删除(当流所有的分组都已经被传送出去之后)。这三个action的形式化描述如下所述。
控制器在运行过程始终在动态地调整权重矩阵M。
当一个新的流到达时,SRR将把这个新的流的权重加入到M的最后一行,同时如果此新的流的权重为Wf=Σn=0j-1af,(j-1)2n(j>k,af,(j-1)=1)]]>,新的列columnj-1,columnj-2,…,columnk将加入到M中,并且WSS序列的权值将调整为j(即k=j)。
当一个流离开了SRR,与此流相对应的权重矩阵中的一行将被删除,如果M矩阵中的列columnk-1,columnk-2,…,columni变为空(值全为0),这些列也将从M矩阵中去除,同时,所使用的WSS序列的阶也将调整为i(即k=i)。
Sk是由WSS序列的定义所规定的k阶序列,WSS序列的阶次在SRR中也是动态地调整的,它的阶次就是权重矩阵的列的数目。在本算法中,我们为WSS序列规定了一个最大值,Kmax。根据WSS序列的性质1,阶比Kmax小的序列均可以直接从阶为Kmax的序列中导出。
这样在每次调整WSS序列的阶的时候,新的WSS序列都不需要被重新计算。使得WSS序列的阶的调整可以不需要付出高的时间及空间代价。
deficitf用来寄存流f在本次服务中没有消耗的信用,这些信用可以用deficitf带入到下一次服务中。deficitf可以使得调度得以公平地进行。
在SRR中还有Kmax个双向链表DL0,DL1,K,
。DLi用来链接权重矩阵M的列columni中所有的非0项。DLi的节点具有如下的数据结构
从DL_node中的flowid可以判定本节点属于哪一个流,从DL-node中的weight可以判定本节点属于权重矩阵中的哪一列。next,prev指针把权重矩阵中一列中所有的非0项链接成为一个双向链表。选择双向链表,是为了提高把节点从链表中删除的效率。
当SRR刚开始运行时,权重矩阵M及所有的双向链表都是空的;当第一个流到达时,Add_flow将被激活,系统进入忙期,然后Schedule将开始运行;当一个流离开系统时,Del_flow将被调用;当所有的流都离开系统后,系统进入了闲期,等待下一个忙期的到来。
本实施方式中CPU采用的是的通用的Intel X86芯片,WSS序列及WM矩阵均存放在系统的存贮器中,这部分的存贮器可以由SRAM或DRAM来构成。各个分组的排队也存放在系统的存贮器中。队列管理器,WSS扫描器及WM管理器在功能上均由微处理器中的软件来实现。在实现中,我们也可以选用其它类型的CPU来取代X86 CPU。在这里需要指出的是,这里给出的硬件设计只是SRR的一种实现方式。SRR也能在其它的CPU,总线或网络接口单元下实现。
本发明的软件部分共分如下6个部分初始化模块,网络接口单元驱动模块,WSS扫描、WM管理、队列管理模块,分组分类模块,路由表查找模块。
其中初始化模块在启动后作一些初始设置,如生成WSS序列,初始化相关数据结构等。
其它的模块按分组在调度器中的流程,对它们的功能作如下描述当网络接口单元(如以太网卡)收到一个分组后,它将把这个分组交给网络接口单元驱动模块;然后驱动模块把分组交给分组分类模块进行分类,以区分不同类型的分组;然后分组被交给路由模块,在这里查找路由表以决定分组从哪一个接口单元输出;在确定输出的接口单元后,分组就被交给相应的接口单元的队列管理模块。队列管理模块在WSS扫描模块与WM管理模块的共同作用下,把合适的分组交给下层的网络接口单元驱动程序;网络接口单元驱动程序把分组交给硬件发送到线路上去。
下面我们通过一个具体的例子来说明本发明的工作过程。
设分组调度控制器中有4个流,分别从网络接口单元A到网络接口单元E,记为A-E;其它的流分别从B至E,C至E,D至E。分别记为B-E,C-E,D-E。我们把这些流分别命名为f1,f2,f3,f4。这些流所对应的预约速率分别为r1=64kbps,r2=256kbps,r3=512kbps,r4=192kbps。
所有的流所产生的分组的长度都是512字节,并且所有的流在调度时均有分组在排队(backlogged)。
设网络接口中E所对应的输出链路的带宽为C=220=1Mbps。
在本例中,设带宽的分配粒度为64kbps,因此,这4个流所对应的权重分别是w1=1,w2=4,w3=8,w4=3。
根据这4个流所对应的权重的值,f1,f2,f3,f4所对应的权重矩阵M为M=WV1WV2WV3WV4=0001010010000011]]>M矩阵从左到右的列依次编号为3,2,1,0列。所对应的WSS序列为S4={1,2,1,3,1,2,1,4,1,2,1,3,1,2,1}根据平滑轮转分组调度控制方法,调度器根据S4的序列值首先扫描权重矩阵的第3列,第2列,然后再是3列,…。也就是说,扫描M矩阵的列的次序为323132303231323.因此,各个流将按下面的服务序列得到调度器的服务f3,f2,f3,f4,f3,f2,f3,f1,f4,f3,f2,f3,f4,f3,f2,f3从上面的服务序列中,我们可以得出,f1在WSS的一轮扫描中被服务了1次,f2被服务了4次,f3被服务了8次,f4被服务了3次。所有的流都按它们的权值得到了相应的服务次数。
权利要求
1.一种平滑轮转分组调度控制方法,其特征在于该控制方法由权重展开序列扫描器(1),权重矩阵管理器(2),队列管理器(3)三个部分所组成。队列管理器(3)利用权重展开序列扫描器(1)的输出值来确定权重矩阵管理器(2)中的权重矩阵(21)的一个确定的列,并对这一列从上到下进行扫描。当扫描到权重矩阵管理器(2)中的权重矩阵的非“0”项时,队列管理器(3)利用其所包含的分组选择器(31)对这一项相应的流进行服务。当扫描完权重矩阵中的这一列后,队列管理器(3)又从权重展开序列扫描器(1)中取权重展开序列的下一个值,再对权重矩阵管理器(2)中相应的列进行扫描。如此进行下去。当权重展开序列扫描器(1)扫描到序列的尾部时,它将重新回到序列的头部重新开始扫描。
2.根据权利要求1所述的平滑轮转分组调度控制方法,其特征在于权重展开序列扫描器(1)的控制方法是对它所存贮的权重展开序列(11)进行循环扫描。开始时它扫描权重展开序列的第一项a1,然后再是第二项a2,直到最后一项 ,然后再是a1,如此循环往复。在扫描ai时,权重展开序列扫描器(1)向分组选择器(31)送出ai的值。
3.根据权利要求1所述的平滑轮转分组调度控制方法,其特征在于权重管理器(2)的控制方法是对权重矩阵(21)进行管理,在权重矩阵中保存各个流的权重值的二进制编码。当有新的流到来时,权重矩阵管理器(2)把与该流相对应的权重值的二进制编码加入到权重矩阵中,当流离开后,它所对应的二进制编码被权重矩阵管理器(2)从权重矩阵中删除。
4.根据权利要求1所述的平滑轮转分组调度控制方法,其特征在于队列管理器(3)由队列管理及分组选择器(31)两个部分所组成。队列管理把新到的分组加入到相应的流所对应的队列中去,并把离去的分组从相应的队列中删除。分组选择器(31)的控制方法是当系统的输出链路空闲时,从所有的等待队列中按平滑轮转调度方法选取一个分组发送到输出链路上。
5.一种平滑轮转分组调度控制装置。其特征在于该控制装置由中心处理器(5),存贮器(6),网络接口单元(7),PCI总线(8)所组成。中心控制器(5)采用Intel X86 CPU控制器,并分别与存贮器(6),PCI总线(8)相连。网络接口单元(7)有若干个,并分别与PCI总线(8)相连。
全文摘要
平滑轮转分组调度控制方法及控制装置是一种计算机网络中的分组交换方法及装置。它由权重展开序列扫描器,权重矩阵管理器,队列管理器三个部分所组成。队列管理器利用权重展开序列扫描器的输出值来确定权重矩阵管理器中的权重矩阵的一个确定的列,并对这一列从上到下进行扫描。当扫描到权重矩阵管理器中的权重矩阵的非“0”项时,队列管理器利用其所包含的分组选择器对这一项相应的流进行服务。当扫描完权重矩阵中的这一列后,队列管理器又从权重展开序列扫描器中取权重展开序列的下一个值,再对权重矩阵管理器中相应的列进行扫描。如此进行下去。当权重展开序列扫描器扫描到序列的尾部时,它将重新回到序列的头部重新开始扫描。
文档编号H04L12/56GK1336747SQ0112711
公开日2002年2月20日 申请日期2001年8月17日 优先权日2001年8月17日
发明者郭传雄 申请人:中国人民解放军理工大学通信工程学院