一种基于Clos网络交换结构的贯序匹配调度算法的制作方法

文档序号:7689795阅读:217来源:国知局
专利名称:一种基于Clos网络交换结构的贯序匹配调度算法的制作方法
技术领域
本发明涉及网络交换调度算法领域,具体的说是一种基于Clos网络交换结构的贯序匹配调度算法。

背景技术
随着计算机网络规模的日益扩大,主要体现在两个方面,一个是交换端口的密度增大,另一个是交换结构(Switch Fabric)输入输出端口的线速(Line Speed)不断提高。为此,核心网络的分组交换系统需要的交换容量越来越大,研究者为此设计了多阶段互联的交换系统以满足交换容量的需求,Clos网络交换结构就是其中一种典型的多阶段互联的交换系统,Clos网络交换结构因为其直观,冗余度大,而且可以进行“迭代式”的扩展,因此被广泛的应用于商用产品。图1给出了现有的Clos网络拓扑结构示意图,Clos网络交换结构一般分三级,图1中用方框表示的交换单元(Switch Element,SE)也可称为模块,通常将整个三级Clos网络交换结构描述为具有k个输入模块IM(Input module),m个中间模块CM(Center module)和k个输出模块OM(Output module)。每个输入模块为(n×m)的规模,其中n为输入端口数量,m为输出端口数量(和中间模块CM的数量相同),每个输出模块为(m×n)规模,其中n为输出端口数量,m为输入端口数量(和中间模块CM的数量相同),因此整个交换结构的规模为N=n×k。Clos网络交换结构分为非阻塞和可重排非阻塞两种类型(取决于m的n关系),当满足m≥2n-1时,Clos网络交换结构网络是非阻塞的,若m≥n,则Clos网络交换结构网络是可重排非阻塞的。
Clos拓扑结构获得了广泛的应用,如华盛顿大学的ATLANTA交换机,纽约理工大学的PetaStar都是成功应用的例子。在产业界,DUNE Networks公司推出了一系列支持Clos网络交换结构的交换芯片,并推广了大量基于Clos网络交换结构的大规模交换系统的解决方案,如网络设备的可扩展体系结构(Scalable Architecture of NetworkDevices,SAND),这些方案有的已经被知名的设备厂商采纳。因此,Clos网络交换结构的调度算法一直成为交换结构领域中的研究热点。
现有的Clos网络交换结构网络调度算法存在着以下的局限性 一般而言,Clos网络交换结构的调度可以分为两个主要的问题,即信元分派(Cell Dispatching)和路由分配(Route Assignment)问题。按照Clos网络交换结构各级中使用的交换单元的实现方式,Clos网络交换结构网络可以分为S3型和MSM型,S3型表示三级交换单元都使用空分(Space Division)结构,MSM型表示第一和第三级使用共享存储结构(用“M”表示),仅第二级使用空分结构(用“S”表示)。在这两种类型中,空分结构基本上都采用Crossbar技术。
对于S3型Clos网络交换结构,路由分配的核心问题在于对于一个给定的输入/输出端口匹配矩阵,如何快速选择从输入端口到输出端口的连接。理论上说,路由分配问题可以通过矩阵分解来解决,但是这种方法缺乏实用性,这表现在两个方面首先,矩阵分解需要事先知道流量需求,这在实际应用中比较困难;其次,即使获得了流量需求矩阵,矩阵分解的方法计算复杂性太高,在交换规模较大时,现有的硬件计算能力无法做到实时计算。在实际应用中,通常使用启发式的算法来解决路由分配问题,如现有文章(H.Jonathan Chao,Zhigang Jing,and Soung Y.Liew,“Matching Algorithms for Three-StageBufferless Clos Network Switches”,IEEE Communications Magazine,pp.46-54,Oct 2003)介绍的并行匹配算法。此外,Chao等研究者提出了一系列匹配算法,如f-MAC,c-MAC和d-MAC等,这些算法对S3型Clos网络交换结构交换结构的调度均有不同程度的改善。
S3型Clos网络交换结构在路由分配上的复杂性主要是由于没有缓存造成的,因为没有缓存,必须有一种算法能迅速调度进入交换结构的信元,否则就会丢弃未被及时调度的信元,但由于Clos网络交换结构自身的复杂性和硬件计算能力的局限性,研究者转而研发MSM型Clos网络交换结构。
MSM型Clos网络交换结构能够将进入的信元缓存于公共存储区,这无疑一定程度上减轻了调度的压力,也使得人们可以变更调度算法的设计思路。在传统的单阶段交换结构中,已经成熟的调度算法如iSlip(N.McKeown,“The iSLIP Scheduling Algorithm forInput-Queues Switches”,IEEE/ACM Trans On Networking,pp.188-200,Apr 1999)采用的是“请求-允许-接受”方式(Request-Grant-Accept,即RGA方式),严格的说,RGA方式也是一种启发式的算法,但是iSlip在Cisco 12000 GSR交换路由器上的成功证明了RGA方式是一种高效可行的算法。借助于这种思想,Chao等人提出了MSM型Clos网络交换结构的调度算法CRRD调度算法及其变种CMSD(concurrent master-slave round-robin dispatching)。
CRRD调度算法将进入输入模块IM的信元按照不同的目的端口分为若干虚拟输出队列VOQ,进而采用了两阶段的调度算法。第一阶段在输入模块IM中进行,各个虚拟输出队列VOQ以RGA方式向所在的输入模块IM的输出端口建立匹配关系,第二阶段主要是由第一阶段中匹配成功了的输入模块IM的输出端口和中间模块CM的输出端口以RGA方式进行匹配。当两个阶段都匹配成功后,则相应的虚拟输出队列VOQ可以通过已匹配的线路在下个时隙中发送一个信元。
CRRD调度算法和CMSD调度算法的主要缺陷在以下两个方面。首先,两次匹配是以一种接力的方式进行的。CRRD调度算法在输入模块IM和中间模块CM中先后进行了两次RGA方式的匹配,仅当这两次匹配都成功,相应的虚拟输出队列VOQ才能在下一个时隙中发送信元。显然,这样的串行方式的匹配的成功率仅是两次匹配成功率的乘积,使得整体性能有所降低。如图2所示,输入模块IM1中的VOQ1在首次匹配中收到了来自LI(1,1)和LI(1,3)的允许消息,而VOQ1选择向LI(1,1)发送接受消息,因此LI(1,1)将在第二阶段的匹配中向LC(1,1)发送请求消息。相似地,输入模块IM2中的VOQ2收到来自LI(2,1)和LI(2,2)的允许消息,VOQ2选择向LI(2,1)发送接受消息,故LI(2,1)将在第二阶段的匹配中也向LC(1,1)发送请求消息。这意味着在第二阶段LI(2,1)将和LI(1,1)竞争LC(1,1)的获准权。如果在第二阶段,LC(1,1)选择了LI(1,1),这时第一阶段中输入模块IM2内VOQ2和LI(2,1)已经形成的匹配将失效。这也同时意味着在第一阶段中,输入模块IM2内LI(2,2)发送给VOQ2的允许消息被浪费了,而如果输入模块IM2中的VOQ2选择了LI(2,2),完全可以建立通过LC(2,1)的无冲突路径。这样的情形在运行期间随时可能发生,因此,两阶段的匹配会潜在降低全局的匹配成功率。
其次,CRRD调度算法遵循“多对一”的RGA匹配方式,也就是说在第一阶段的匹配中,任意VOQ虽然可能收到多个允许消息,但只能接受其中的一个。虽然CRRD调度算法提出可以在第一阶段使用多次迭代来提高匹配的命中率,但多次迭代会给系统带来较大的时间开销,因此在实际应用中,通常不使用多次迭代,因此多对一匹配方式产生的匹配效率降低问题难以有效解决。


发明内容
针对现有技术中存在的缺陷,本发明的目的是提供一种基于Clos网络交换结构的贯序匹配调度算法,采用直通式匹配,整个匹配过程一次完成,同时采取多对多的“请求-允许-接受”方式,最大程度利用了调度机会。
为达到以上目的,本发明采取的技术方案是 一种基于Clos网络交换结构的贯序匹配调度算法,所说的Clos网络交换结构至少包括一个交换机机架及设置在机架上的线卡和背板,每个线卡上的前端芯片包括阶输入模块IM和k个输出模块OM,背板上的后端芯片包括m个中间模块CM,每个输入模块IM均具有m个输出端口,每个中间模块CM均具有k个输入端口和k个输出端口,其特征在于所说的贯序匹配调度算法步骤为 步骤1请求阶段,每个包含非空虚拟输出队列VOQ的虚拟输出组VOG,根据信元最终要送达的输出模块OM,通过其所在的输入模块IM的m个输出端口向每个中间模块CM的相应的输出端口发出请求消息, 步骤2允许阶段,每个中间模块CM的输出端口根据输出端口指针LoCPointer的位置选定一个发出请求消息的虚拟输出组VOG并向其发出允许消息, 步骤3过滤阶段,判断是否发生通行竞争,如没有则直接放行相应输出端口发出的允许消息,如发生通行竞争,则每个中间模块CM的输入端口根据输入端口指针LiCPointer的位置选定一个该中间模块CM的输出端口并放行该输出端口发出的允许消息, 步骤4接受阶段,每个收到允许消息的虚拟输出组VOG,通过VOG内部指针VOGInnerPointer选定一个非空虚拟输出队列VOQ,再根据VOG外部指针VOGExternPointer的位置选定一个发出允许消息的中间模块CM的输出端口,虚拟输出组VOG向该输出端口发送接受消息以完成从虚拟输出队列VOQ到该输出端口的通道建立过程, 步骤5指针更新阶段,非空虚拟输出队列VOQ通过虚拟输出组VOG发送一个信元,依次更新VOG内部指针VOGInnerPointer、VOG外部指针VOGExternPointer、中间模块CM的输入端口指针LiCPointer和中间模块CM的输出端口指针LoCPointer,重复步骤4、步骤5直至所有非空虚拟输出队列VOQ的信元都被发送或者所有的允许消息都已被接受。
在上述技术方案的基础上,输入模块IM中虚拟输出队列VOQ的组织方式为VOQ(i,p,o),i为输入模块的编号,p为输入模块的输入端口编号,o为输出模块的编号;输入模块IM中虚拟输出组VOG的组织方式为VOG(i,o),i为输入模块的编号,o为输出模块的编号,虚拟输出组VOG由n个成员VOQ(i,p,o)组成,其中1≤p≤n,n为每个输入模块的输入端口的个数。
在上述技术方案的基础上,VOG内部指针VOGInnerPointer、VOG外部指针VOGExternPointer、中间模块CM的输入端口指针LiCPointer和中间模块CM的输出端口指针LoCPointer更新后,指针指向当前匹配目标的下一个位置。
本发明具有以下优点 1.采用直通式匹配,整个匹配过程一次完成, 2.同时采取多对多的“请求-允许-接受”方式,最大程度利用了调度机会。



本发明有如下附图 图1现有的Clos网络拓扑结构示意图 图2CRRD调度算法两次RGA方式匹配示意图 图3本发明所述的Clos网络交换结构示意图 图4逻辑上分为k个并行的匹配的平面的示意图 图5VOG获得调度机会的堆球模型示意图 图6基于扩展Clos结构的大型交换系统模型示意图 图7Clos交换结构中N+1的冗余实现方式示意图 图8突发模式下SMACN与CRRD吞吐率的对比示意图 图9突发模式下SMACN与CRRD时延的对比示意图 图10VOGInnerPointer(1,1)状态 图11VOGExternPointer(1,1)状态 图12VOGInnerPointer(1,2)状态 图13VOGExternPointer(1,2)状态 图14VOGInnerPointer(3,1)状态 图15VOGExternPointer(3,1)状态 图16LiC(1,3)的指针LiCPointer(1,3),LiC(2,1)的指针LiCPointer(2,1),LiC(3,1)的指针LiCPointer(3,1),LiC(4,3)的指针LiCPointer(4,3)的状态 图17中间模块的输出端口指针LoCPointer(1,1),LoCPointer(2,1),LoCPointer(3,1),LoCPointer(4,1)状态 图18四个中间模块的输出端口指针LoCPointer(1,2),LoCPointer(2,2),LoCPointer(3,2),LoCPointer(4,2)状态 图19VOGInnerPointer(1,1),VOGExternPointer(1,1),LiCPointer(2,1),LoCPointer(2,1)指针更新后的状态 图20VOGInnerPointer(1,1),VOGExternPointer(1,1),LiCPointer(3,1),LoCPointer(3,1)指针更新后的状态 图21VOGInnerPointer(3,1),VOGExternPointer(3,1),LiCPointer(4,3),LoCPointer(4,1)指针更新后的状态 图22VOGInnerPointer(1,2),VOGExternPointer(1,2),LiCPointer(4,1),LoCPointer(4,2)指针更新后的状态 图23VOGInnerPointer(1,2),VOGExternPointer(1,2),LiCPointer(1,1),LoCPointer(1,2)指针更新后的状态
具体实施例方式 以下结合附图对本发明作进一步详细说明。
本发明所述的一种基于Clos网络交换结构的贯序匹配调度算法,所说的Clos网络交换结构至少包括一个交换机机架及设置在机架上的线卡和背板,每个线卡上的前端芯片包括k个输入模块IM和k个输出模块OM,背板上的后端芯片包括m个中间模块CM,每个输入模块IM均具有m个输出端口,每个中间模块CM均具有k个输入端口和k个输出端口,所说的贯序匹配调度算法步骤为 步骤1请求阶段,每个包含非空虚拟输出队列VOQ的虚拟输出组VOG,根据信元最终要送达的输出模块OM,通过其所在的输入模块IM的m个输出端口向每个中间模块CM的相应的输出端口发出请求消息, 步骤2允许阶段,每个中间模块CM的输出端口根据输出端口指针LoC Pointer的位置选定一个发出请求消息的虚拟输出组VOG并向其发出允许消息, 步骤3过滤阶段,判断是否发生通行竞争,如没有则直接放行相应输出端口发出的允许消息,如发生通行竞争,则每个中间模块CM的输入端口根据输入端口指针LiCPointer的位置选定一个该中间模块CM的输出端口并放行该输出端口发出的允许消息, 步骤4接受阶段,每个收到允许消息的虚拟输出组VOG,通过VOG内部指针VOGInnerPointer选定一个非空虚拟输出队列VOQ,再根据VOG外部指针VOGExternPointer的位置选定一个发出允许消息的中间模块CM的输出端口,虚拟输出组VOG向该输出端口发送接受消息以完成从虚拟输出队列VOQ到该输出端口的通道建立过程, 步骤5指针更新阶段,非空虚拟输出队列VOQ通过虚拟输出组VOG发送一个信元,依次更新VOG内部指针VOGInnerPointer、VOG外部指针VOGExternPointer、中间模块CM的输入端口指针LiCPointer和中间模块CM的输出端口指针LoCpointer,重复步骤4、步骤5直至所有非空虚拟输出队列VOQ的信元都被发送或者所有的允许消息都已被接受。
在上述技术方案的基础上,输入模块IM中虚拟输出队列VOQ的组织方式为VOQ(i,p,o),i为输入模块的编号,p为输入模块的输入端口编号,o为输出模块的编号;输入模块IM中虚拟输出组VOG的组织方式为VOG(i,o),i为输入模块的编号,o为输出模块的编号,虚拟输出组VOG由n个成员VOQ(i,p,o)组成,其中1≤p≤n,n为每个输入模块的输入端口的个数。
在上述技术方案的基础上,VOG内部指针VOGInnerPointer、VOG外部指针VOGExternPointer、中间模块CM的输入端口指针LiCPointer和中间模块CM的输出端口指针LoCPointer更新后,指针指向当前匹配目标的下一个位置。采用这种指针更新方式可以提高算法的执行效率。
图3给出了一个本发明所述的具有3个输入模块,4个中间模块和3个输出模块的Clos网络交换结构示意图作为示例,图3中的附图标记含义如下 虚拟输出队列VOQ(i,p,o)进入输入模块IM(i)的第p个输入端口,目的为输出模块OM(o)的信元形成的虚拟输出队列(1≤i,o≤k,1≤p≤n)。其中,k为输入模块IM的个数,n为输入模块IM的输入端口数量。例如VOQ(1,1,1)代表进入输入模块IM(1)的第1个输入端口,目的为输出模块OM(1)的信元形成的虚拟输出队列。
虚拟输出组VOG(i,o)输入模块IM(i)中目的为输出模块OM(o)的VOQ形成的虚拟输出组。虚拟输出组VOG(i,o)由n个虚拟输出队列VOQ(i,p,o)组成(1≤p≤n)。其中,n为输入模块IM的输入端口数量。例如VOG(1,3)代表输入模块IM(1)中目的为输出模块OM(3)的VOQ形成的虚拟输出组。
输入模块的输出端口LoI(i,r)输入模块IM(i)中与中间模块CM(r)相联的输出端口,1≤r≤m。其中,m为中间模块CM的个数。例如LoI(1,2)代表输入模块IM(1)中与中间模块CM(2)相联的输出端口。
中间模块的输出端口LoC(r,j)中间模块CM(r)中与输出模块OM(j)相联的输出端口,1≤j≤k。其中,k为输入模块IM的个数。例如LoC(2,2)代表中间模块CM(2)中与输出模块OM(2)相联的输出端口。
中间模块的输入端口LiC(r,i)中间模块CM(r)中与输入模块IM(i)相联的输入端口,1≤i≤k。其中,k为输入模块IM的个数。例如LiC(3,3)代表中间模块CM(3)中与输入模块IM(3)相联的输入端口。
本发明所述的调度算法还涉及以下指针 VOG内部指针VOGInnerPointer(i,o)虚拟输出组VOG(i,o)的内部轮转指针,指向当前可以发送信元的成员VOQ,因此这个指针的轮转目标一共有n个。
VOG外部指针VOGExternPointer(i,o)每个VOG(i,o)的外部轮转指针,指向当前中间模块CM(r)的LoC(r,o),而该VOG将优先向这个LoC(r,o)发送接受消息。注意LoC(r,o)是每个中间模块CM(r)的第o个输出端口,因此该指针的轮转目标共有m个。
中间模块CM的输出端口指针LoCPointer(r,j)每个LoC(r,j)所属的轮转指针,指向当前的VOG,这个LoC(r,j)将最优先向指向的这个VOG发送允许消息。因此这个指针共有k个轮转目标,分别代表k个分别位于各个输入模块IM,目的为输出模块OM(j)的VOG。(参见图4) 中间模块CM的输入端口指针LiCPointer(r,i)每个LiC(r,i)所属的轮转指针,指向当前中间模块CM的LoC(r,j),这个LoC(r,j)将优先获准将自己发送的允许消息通过LiC(r,i)。这个指针指向的目标为相同中间模块CM中的各个LoC(r,j),因此一共有k个轮转目标。如LiCPointer(1,1)的轮转目标为LoC(1,1),LoC(1,2),LoC(1,3)共3个。
本发明所述的基于Clos网络交换结构的贯序匹配调度算法SMACN(Sequential Matching Algorithm on Clos Network)采用了“贯穿”式的RGA方式,这种方式避免了两阶段匹配的串行式效率递减。更进一步,借助这种贯序匹配,SMACN调度算法可以将全局的匹配在逻辑上分为k个并行的匹配的平面(参见图4),这些平面上的匹配过程可以同时进行。
SMACN调度算法使用多对多的RGA匹配方式,更充分地利用每个时隙中产生的允许消息。
Clos网络上的交换匹配与Crossbar上的交换匹配的显著不同在于,Crossbar中的输入端口在匹配的开始阶段仅向已堆积报文的目的端口发送请求消息;而SMACN中,每个VOQ通过IM的每个输出端口向每个CM发送请求消息,因此,这是一种“过度”请求的方式。对于针对Crossbar的iSlip,文章(N.McKeown,“The iSLIP SchedulingAlgorithm for Input-Queues Switches”,IEEE/ACM Trans On Networking,pp.188-200.Apr.1999)的研究说明,在均匀的通信量模式下,其吞吐率可以逼近100%。但是这个结论的前提是在Crossbar上,且输入端口和输出端口的数目相同。为了研究SMACN的吞吐率,有必要更深入地研究RGA方式匹配的效率。继McKeown之后,Li和Chao等研究者在研究大规模交系统中取得了一系列进展,他们的研究主要集中于Clos型多阶段互联的交换系统,但是也对Crossbar的匹配做了较深入研究并做了相关改进。例如他们提出了一个iSlip的改进算法DRRM(Yihan Li,Shivendra Panwar,H.Jonathan Chao,On thePerformance of a Dual Round-Robin Switch,IEEE INFOCom 2001),Li在分析DRRM和iSlip的性能对比时RGA方式给出了很有新意的模型,我们在接下来的分析中将采纳这个模型。为此,记参与RGA方式的n个请求发起方为I1,…,In,m个允许方为Q1,…,Qm,请求方与允许方的工作方式是基于轮转指针RGA的(即iSlip),首先给出如下定义 定义1(命中)若经过一次RGA操作,某个请求发起方Ik(1≤k≤n)能成功收到至少一个允许消息,则称该Ik的此次RGA操作命中。
定义2(S-饿死)给定一个较大的自然数S,若请求发起方Ik(1≤k≤n)在连续经过S轮RGA次操作后仍然收不到允许消息,则称Ik上发生了S-饿死。
我们可以得到比一个比Li的工作更一般的结论,即如下性质 性质1基于RGA的iSlip算法每次进行1轮迭代,当m≥n时若请求发起方的任务是饱和的,即每次都发送请求到每个允许方,则经过有限次的匹配操作后,请求发起方都能实现100%的请求命中。
证明记时隙i中每个请求发起方Ik收到的允许消息个数,即那些发送允许消息给Ik的允许方的数目为vk,i,则根据iSlip算法,则成立同时,诸vk,i满足 由以上时隙间的递推关系式,不难得出,存在一个有限的T,使得当i≥T时,成立vk,i≥1。也就是说,经过有限次匹配,每个输入方以后的匹配均可以命中。
性质2Clos网络上实施SMACN算法时在均匀饱和流量下,位于每个CM中的匹配能在有限次匹配后实现100%的命中率。
证明SMACN算法中,CM中的每个输入端口将相关VOG的请求消息中继到每个CM的输出端口,输出端口的仲裁器PC(r,j)根据轮转指针返回允许消息。给定的CM中,每个输入端口构成了k个请求方,而每个输出端口构成了k个允许方。在均匀饱和流量下,CM中的RGA过程和均匀饱和流量下iSlip的RGA过程是一致的,因此根据性质1,CM中的匹配在经过有限次步骤后能实现100%的命中率。
性质3Clos网络上实施SMACN算法时在均匀饱和流量下,每个时隙中记每个VOG可以至少B(1≤B≤n)个VOQ非空的概率为PB,则满足 证明考虑任意的VOG(i,v),这个VOG由IMi的n个VOQ构成。由假设,Clos网络输入的流量是均匀的,因此每个时隙中每个VOQ进入一个信元的概率为1/k,从而每个时隙中恰好有B个VOQ各自收到一个信元的概率为

因此(1)成立。
性质4SMACN算法中各个VOQ发送信元不会出现争用线路或端口。
证明在SMACN算法的步骤3(过滤阶段)中,由于每个LiC只允许本CM中的一个LoC发出的允许消息通过,因此在接受阶段,LoI最多只会有一个接受消息需要通过。由于SMACN算法中每个接受消息意味着将有一个信元沿着个接受消息通往OM,故每个发送的信元在其通过的线路和端口上不会发生争用现象。
性质4说明,SMACN算法在各个CM上的并行程度非常高,即各个VOQ发送的信元可以互不影响地通过m个CM。
性质5设在图1所示的Clos网络中满足m≥k。实施SMACN算法时在均匀的饱和流量下,每个VOG发生S-调度饿死的概率随着S的增加趋于0。即使得对

Pr{VOG发生S-饿死}<ε。
证明考虑如图4所示的SMACN算法,由于每个IM根据进入信元的目的OM,形成了k个VOG,每个VOG的请求目标是分别位于m个CM中连接至相应OM的输出端口。
在每个匹配平面上有k个请求发起方和m个请求允许方,在整个Clos网络上的流量为均匀饱和时,每个匹配平面的输入流量也是均匀饱和的。根据性质2,由于每个CM都能在有限步RGA操作后实现100%匹配,这意味着每个RRP(j,v)的允许消息都会顺利到达某个VOG。
记时隙tVOG(i,v)收到的允许消息个数为gi,vt,则在每个匹配平面v(0≤v≤k-1)上,由上述分析,在t足够大时,成立 意味着VOG(i,v)接收到至少一个允许消息,若在S次操作内则VOG(i,v)不会S-饿死。为此,我们考虑图5所示的VOG获得调度机会的堆球模型示意图,将m个球放入k个槽位中,每个槽位上球的数目表示gi,vt的值,如图5所示。我们要证明,对于任意小的ε,若存在某个时刻t0,则存在M∈N,使得 根据SMACN算法以及式(1),若则必存在某个i-1,0≤i-1≤k-1,满足而对任意的i-1<r≤i0,即i-1是比i0小而距i0最近的非空槽位。由性质3, VOG(i-1,v)将以不小于PB的概率包含B个非空队列。因此 由SMACN的轮转机制,VOG(i-1,v)已经获得匹配的机会数目将会转移至VOG(i-1+1,v),因此对于有 特别地,取B=1,反复应用(5-4)式,有 式(5)说明,经过i0-i-1个时隙,VOG(i0,v)获得一个调度机会的概率不低于

。也就是说,经过i0-i-1个时隙,VOG(i-1,v)的调度机会有一个转移到VOG(i0,v)上的概率不低于

,即的概率不超过

。因此反复应用(5)式还可以得到 对于前面给定的ε,存在一个自然数K0,使得 因此VOG(i0,v)在经过K0(i0-i-1)轮RGA操作后,仍然得不到调度机会的概率将小于ε。原命题的结论成立。
以下简述实现方案与冗余保护 如前所述,Clos拓扑可以灵活地构建可扩展的大型交换系统。如图6所示的基于扩展Clos结构的大型交换系统模型示意图显示了使用Clos构建大型交换系统的一个模型,图中的交换系统由一个机架(Chassis)及其一系列线卡(Line Card)和背板构成,每个线卡上的前端芯片(即IM和OM)和背板上的后端芯片(CM)形成Clos网络。使用Clos结构的迭代(Iteration),还可以进一步搭建超大型交换系统(Super Scale Switching System)。例如,将若干个机架按照Clos的拓扑连接起来,可以构建10T级的交换系统。
由于基于Clos结构的大型交换系统通常工作在网络的核心层,因此如何最大限度地提高系统的稳定性和可靠性成为另一个受到关注的问题。最常用的手段就是使用保护的方式,而由于的Clos网络的冗余度高,在其上实现冗余保护具有天然的优势。
就交换系统而言,保护通常都在容易发生“单点失效”的地方进行,例如交换背板。传统的交换系统设计模式中,交换背板的确是单点失效的关键点。但是在Clos拓扑中,由于CM有多个,因此严格的说,m>1的Clos拓扑中CM并非单点失效的关键点。然而为了运行的稳定,建立N+1的保护仍然是一种重要的可选方案。在CM中进行4+1冗余保护的方案可以参见图7所示的Clos交换结构中N+1的冗余实现方式示意图,由于进行了4+1的冗余保护,当系统的负载很高时,任意一个被保护的CM如果出现故障,第五个CM会替代该失效CM而立刻投入工作,这样系统的流量发生抖动的程度几乎是微不足道的。反之,如果不进行保护,让五个CM全部投入工作,那么在高负载条件下,若某个CM产生故障,系统的吞吐率将显著降低。总之,在Clos交换结构的数据平面是否采取N+1的保护,取决于用户对网络的规划和预期,但是对于管理平面和控制平面而言,对主控卡(通常是交换背板)的保护一般是必不可少的。
以下简述仿真分析和讨论 模拟一个k=3,n=m=4的Clos交换结构,其中每个交换单元具有相等的链路速率。同时,实验采用了归一化的流量负荷,即用流量负荷ρ∈
来表示流量的大小,当ρ=1时表示流量是按照线速输入的。在图3所示的交换结构中,共有12个输入端口和12个输出端口,用λi,j表示从输入端口i到输出端口j的流量强度,于是可以形成一个12*12的流量矩阵。根据评判交换结构吞吐率的几种通用流量场景,实验采用两种输入流量模式 均匀流量模式是一种比较友好的流量模式,在这种流量模式下,SMACN和CRRD的性能几乎是重合的,都逼近100%。在这种流量场景下,SMACN和CRRD的渐近表现没有实质上的差别,但是实验中发现,SMACN同CRRD相比的一个显著优点在于,SMACN能够在很少的转发周期中,迅速降低匹配过程中发生的冲突,即快速实现100%的命中率。为此,实验故意选取一个极端的初始条件,即让所有的VOGExternPointer指针和LiCPointer指针指向相同的目标,从而在第一个时隙造成完全冲突,观察若干个时隙后两种算法的匹配命中率,如表1所示 表1 SMACN与CRRD在均匀流量下命中率的对比 从上表的结果可以看出,SMACN对流量模式的适应能力要强于CRRD,这主要是因为SMACN的匹配在发送接受消息的过程中是以“一对多”的方式匹配的,这种方式能够快速消除匹配冲突,因此对于流量场景的切换,SMACN的性能要好于CRRD,典型值为32%,23%,20%以上。
突发流量的场景下,测试的流量场景按照目的端口的分布仍然是均匀的,但与前面的完全均匀流量模式不同,由于流量的突发性,吞吐率会随着流量输入负载的增加而略有下降。在ON-OFF过程中选取(进入ON的概率),ON的平均时间为3个时隙,OFF的平均时间为7个时隙这样的流量场景下,计每次进入ON状态的概率为p,则让p从0向1变化可以生成不同的输入流量负载。图8所示的突发模式下SMACN与CRRD吞吐率的对比示意图显示了CRRD和SMACN在不同流量负载下的吞吐率,而图9所示的突发模式下SMACN与CRRD时延的对比示意图显示了两种算法在不同负载下的平均队列长度,实际上刻画了两种调度算法下不同负载的转发时延。从中我们不难看出,当输入负载超过了0.7时,吞吐率和队列长度都会产生分化。但是吞吐率的分化比较轻微,而SMACN算法的队列长度要比CRRD小,典型值小50%,40%,33%和37%。从总体上看,SMACN要比CRRD要有所提高。
综上所述,使用多阶段互联来构建大规模交换结构是满足交换系统健壮性,可扩展性的有效方式,Clos网络的交换结构是一种极具应用前景的多阶段互联交换结构,在产业界已经得到广泛应用。基于共享存储的Clos结构是主要的搭建方案之一,Clos结构上传统的调度方法为CRRD,这是一种类似于iSlip的调度方法,但是由于工作在Clos拓扑上,CRRD采取两阶段接力的RGA方法。CRRD的主要缺陷在于匹配精度在非均匀流量场景下不高,本文提出了一种CRRD的改进方案,称为贯序式匹配算法(SMACN)。SMACN相对CRRD的改进主要有两点,首先是采用“贯穿”式的RGA方式,避免了两次使用RGA产生的低效;其次是采用了一对多的“请求-允许-接受”方式,这种方式符合Clos网络特定拓扑下的并行匹配,由此可以形成几个并行的匹配平面,提高了匹配的成功率。理论上证明了SMACN的死锁概率为无限小,仿真实验说明SMACN虽然在均匀流量场景下与CRRD区别很小,但是在突发性的流量场景下,SMACN在吞吐率和转发时延上比CRRD有相当程度改善。
以下结合图3,通过一个具体的匹配例子来进一步说明本发明所述的基于Clos网络交换结构的贯序匹配调度算法 假设输入模块IM1中VOQ(1,1,1),VOQ(1,3,1)非空(即有信元在队列中等候调度),这两个VOQ为VOG(1,1)的成员VOQ;输入模块IM1中VOQ(1,2,2),VOQ(1,3,2)非空(即有信元在队列中等候调度),这两个VOQ为VOG(1,2)的成员VOQ;输入模块IM3中VOQ(3,1,1)非空,这个VOQ为VOG(3,1)的成员VOQ。
假设此时VOG(1,1)的内部指针VOGInnerPointer(1,1)状态如图10所示,当前指针指向VOQ(1,4,1)。VOG(1,1)外部指针VOGExternPointer(1,1)状态如图11所示,当前指针指向LoC(4,1)。
假设此时VOG(1,2)的内部指针VOGInnerPointer(1,2)状态如图12所示,当前指针指向VOQ(1,4,2)。VOG(1,2)外部指针VOGExternPointer(1,2)状态如图13所示,当前指针指向LoC(4,2)。
假设此时VOG(3,1)的内部指针VOGInnerPointer(3,1)状态如图14所示,当前指针指向VOQ(3,3,1)。VOG(3,1)的外部指针VOGExternPointer(3,1)状态如图15所示,当前指针指向LoC(2,1)。
假设此时LiC(1,3)的指针LiCPointer(1,3),LiC(2,1)的指针LiCPointer(2,1),LiC(3,1)的指针LiCPointer(3,1),LiC(4,3)的指针LiCPointer(4,3)的状态如图16所示,LiC(1,3)的指针LiCPointer(1,3)指向LoC(1,1),LiC(2,1)的指针LiCPointer(2,1)指向LoC(2,1),LiC(3,1)的指针LiCPointer(3,1)指向LoC(3,3),LiC(4,3)的指针LiCPointer(4,3)指向LoC(4,2)。
假设此时四个中间模块的输出端口LoC(1,1),LoC(2,1),LoC(3,1),LoC(4,1)的指针LoCPointer(1,1),LoCPointer(2,1),LoCPointer(3,1),LoCPointer(4,1)状态如图17所示,LoCPointer(1,1)指向VOG(3,1),LoCPointer(2,1)指向VOG(4,1),LoCPointer(3,1)指向VOG(1,1),LoCPointer(4,1)指向VOG(2,1)。
假设此时四个中间模块的输出端口LoC(1,2),LoC(2,2),LoC(3,2),LoC(4,2)的指针LoCPointer(1,2),LoCPointer(2,2),LoCPointer(3,2),LoCPointer(4,2)状态如图18所示,LoCPointer(1,2)指向VOG(3,2),LoCPointer(2,2)指向VOG(4,2),LoCPointer(3,2)指向VOG(1,2),LoCPointer(4,2)指向VOG(2,2)。
假设上述指针均按顺时针轮转更新,则所说的贯序匹配调度算法步骤为 步骤1VOG(1,1)和VOG(3,1)分别通过各自所在的IM的每个输出端口向每个CM发送请求消息,LoC(1,1),LoC(2,1),LoC(3,1),LoC(4,1)将收到且处理这两个消息。VOG(1,2)通过IM(1)的每个输出端口向每个CM发送请求消息,LoC(1,2),LoC(2,2),LoC(3,2),LoC(4,2)将收到且处理这个消息。
如前所述,虚拟输出队列VOQ(i,p,o)进入输入模块IM(i)的第p个输入端口,目的为输出模块OM(o)的信元形成的虚拟输出队列。由VOQ(1,1,1),VOQ(1,3,1)非空可知其信元要发送到OM1,由VOQ(1,2,2),VOQ(1,3,2)非空可知其信元要发送到OM2,由VOQ(3,1,1)非空可知其信元要发送到OM1。所以当由VOQ(1,1,1)所在的VOG(1,1)和VOQ(3,1,1)所在的VOG(3,1)向每个CM发送请求消息后,从图3我们可知,只有LoC(1,1),LoC(2,1),LoC(3,1),LoC(4,1)与OM1相连,因此只有LoC(1,1),LoC(2,1),LoC(3,1),LoC(4,1)将收到且处理这两个消息。同理,当由VOQ(1,2,2)所在的VOG(1,2)向每个CM发送请求消息后,从图3我们可知,只有LoC(1,2),LoC(2,2),LoC(3,2),LoC(4,2)与OM2相连,因此只有LoC(1,2),LoC(2,2),LoC(3,2),LoC(4,2)将收到且处理这个消息。
步骤2考虑LoC(1,1)的轮转指针LoCPointer(1,1),由于此时该指针指向VOG(3,1),因此LoC(1,1)将向VOG(3,1)发送允许消息。LoC(2,1)的轮转指针LoCPointer(2,1)当前指向VOG(4,1),按照顺时针轮转的方式,VOG(1,1)距离当前指针最近,因此LoC(2,1)将向VOG(1,1)发送允许消息。同样的道理,LoC(3,1)将向VOG(1,1)发送允许消息;LoC(4,1)将向VOG(3,1)发送允许消息;LoC(1,2)将向VOG(1,2)发送允许消息;LoC(2,2)将向VOG(1,2)发送允许消息;LoC(3,2)将向VOG(1,2)发送允许消息;LoC(4,2)将向VOG(1,2)发送允许消息。
步骤3LoC(1,1)发送的允许消息的目的为VOG(3,1),这个消息必须经过LiC(1,3),因为图3已经示出CM1只有LiC(1,3)和VOG(3,1)所在的IM3相连;同理,LoC(1,2)发送的允许消息的目的为VOG(1,2),这个消息必须经过LiC(1,1),因此,在过滤阶段,CM1没有发生竞争,这两个允许消息都被放行。
LoC(2,1)发送的允许消息的目的为VOG(1,1),这个消息必须经过LiC(2,1),LoC(2,2)发送的允许消息的目的为VOG(1,2),这个消息必须经过LiC(2,1),在本例子中,LiC(2,1)这里发生了通行竞争,考虑LiCPointer(2,1),由于LiCPointer(2,1)指向LoC(2,1),因此放行LoC(2,1)发送的允许消息,而LoC(2,2)发送的允许消息被丢弃。
LoC(3,1)发送的允许消息的目的为VOG(1,1),这个消息必须经过LiC(3,1),LoC(3,2)发送的允许消息的目的为VOG(1,2),这个消息必须经过LiC(3,1),在本例子中,LiC(3,1)这里也发生了通行竞争,根据上面所述的解决方式,考虑LiCPointer(3,1),当前这个指针指向LoC(3,3),LoC(3,1)距其最近,于是放行LoC(3,1)发送的允许消息,而LoC(3,2)发送的允许消息被丢弃。
LoC(4,1)发送的允许消息的目的为VOG(3,1),这个消息必须经过LiC(4,3),LoC(4,2)发送的允许消息的目的为VOG(1,2),这个消息必须经过LiC(4,1),在本例子中,LiC(4,3)这里没有发生通行竞争,这两个允许消息都被放行。
步骤4VOG(1,1)收到来自LoC(2,1)和LoC(3,1)发送过来的允许消息,由于VOG(1,1)的内部指针VOGInnerPointer(1,1)当前指向VOQ(1,4,1),按照顺时针轮转的方式,VOQ(1,1,1)距当前指针最近,因此VOG(1,1)选择VOQ(1,1,1)发送信元。此时,VOG(1,1)的外部指针VOGExternPointer(1,1)当前指向LoC(4,1),按照顺时针轮转的方式,LoC(2,1)是距离当前指针最近的允许消息发送者,因此VOG(1,1)将首先向LoC(2,1)发送接受消息。这个接受消息沿LoC(2,1)发送允许消息完全相反的路径到达LoC(2,1),因此将经过LiC(2,1)。如此以来,VOQ(1,1,1)到LoC(2,1)之间通路已经完全建立, 步骤5VOQ(1,1,1)发送一个信元,经过LiC(2,1)到达LoC(2,1)。在这条路经上,VOGInnerPointer(1,1),VOGExternPointer(1,1),LiCPointer(2,1),LoCPointer(2,1)的指针顺时针前移到当前得到服务的目标的下一个位置。图19显示了这四个指针更新后的状态。
由于还有信元需要发送,以下继续重复步骤4、步骤5 步骤4VOG(1,1)的内部指针VOGInnerPointer(1,1)当前指向VOQ(1,2,1),按照顺时针轮转的方式,VOQ(1,3,1)距当前指针最近,因此VOG(1,1)准备选择VOQ(1,3,1)发送信元。VOG(1,1)的外部指针VOGExternPointer(1,1)当前指向LoC(3,1),按照顺时针轮转的方式,LoC(3,1)即是距离当前指针最近的允许消息发送者,因此VOG(1,1)将再向LoC(3,1)发送接受消息。这个接受消息沿LoC(3,1)发送允许消息完全相反的路径到达LoC(3,1),因此将经过LiC(3,1)。如此一来,VOQ(1,3,1)到LoC(3,1)之间通路已经完全建立, 步骤5VOQ(1,3,1)发送一个信元,经过LiC(3,1)到达LoC(3,1)。在这条路经上,VOGInnerPointer(1,1),VOGExternPointer(1,1),LiCPointer(3,1),LoCPointer(3,1)的指针顺时针前移到当前得到服务的目标的下一个位置。图20显示了这四个指针更新后的状态。
由于VOG(1,1)只有两个非空VOQ,至此VOG(1,1)已经处理完毕本轮匹配。由于还有VOQ(3,1,1)的信元需要发送到OM1,以下继续重复步骤4、步骤5 步骤4VOG(3,1)收到来自LoC(1,1)和LoC(4,1)的允许消息,VOG(3,1)的内部指针VOGInnerPointer(3,1)当前指向VOQ(3,3,1),按照顺时针轮转的方式VOQ(3,1,1)距当前指针最近,因此VOG(3,1)选择VOQ(3,1,1)发送信元。事实上,由于VOG(3,1)仅有一个非空VOQ(3,1,1),因此VOG(3,1)也必然选择VOQ(3,1,1)发送信元。VOG(3,1)的外部指针VOGExternPointer(3,1)当前指向LoC(2,1),按照顺时针轮转的方式,LoC(4,1)是距离当前指针最近的允许消息发送者,因此VOG(1,1)将首先向LoC(4,1)发送接受消息。这个接受消息沿LoC(4,1)发送允许消息完全相反的路径到达LoC(4,1),因此将经过LiC(4,3)。如此一来,VOQ(3,1,1)到LoC(4,1)之间通路已经完全建立, 步骤5VOQ(3,1,1)发送一个信元,经过LiC(4,3)到达LoC(4,1)。在这条路经上,VOGInnerPointer(3,1),VOGExternPointer(3,1),LiCPointer(4,3),LoCPointer(4,1)的指针顺时针前移到当前得到服务的目标的下一个位置。图21显示了这四个指针更新后的状态。
由于VOG(3,1)只有一个非空VOQ,至此VOG(3,1)已经处理完毕本轮匹配。以上就完成了需要发送到OM1的信元的匹配调度过程。下面的过程是对需要发送到OM2的信元的匹配调度。
步骤4VOG(1,2)收到来自LoC(1,2)和LoC(4,2)的允许消息,VOG(1,2)的内部指针VOGInnerPointer(1,2)当前指向VOQ(1,4,2),按照顺时针轮转的方式VOQ(1,2,2)距当前指针最近,因此VOG(1,2)准备选择VOQ(1,2,2)发送信元。VOG(1,2)的外部指针VOGExternPointer(1,2)当前指向LoC(4,2),按照顺时针轮转的方式,LoC(4,2)是距离当前指针最近的允许消息发送者,因此VOG(1,2)将首先向LoC(4,2)发送接受消息。这个接受消息沿LoC(4,2)发送允许消息完全相反的路径到达LoC(4,2),因此将经过LiC(4,1)。如此以来,VOQ(1,2,2)到LoC(4,2)之间通路已经完全建立, 步骤5VOQ(1,2,2)发送一个信元,经过LiC(4,1)到达LoC(4,2)。在这条路经上,VOGInnerPointer(1,2),VOGExternPointer(1,2),LiCPointer(4,1),LoCPointer(4,2)的指针顺时针前移到当前得到服务的目标的下一个位置。图22显示了这四个指针更新后的状态。
由于还有信元需要发送,以下继续重复步骤4、步骤5 步骤4VOG(1,2)的内部指针VOGInnerPointer(1,2)当前指向VOQ(1,3,2),按照顺时针轮转的方式,VOQ(1,3,2)距当前指针最近,因此VOG(1,2)准备选择VOQ(1,3,2)发送信元。VOG(1,2)的外部指针VOGExternPointer(1,1)当前指向LoC(1,2),按照顺时针轮转的方式,LoC(1,2)即是距离当前指针最近的允许消息发送者,因此VOG(1,1)将再向LoC(1,2)发送接受消息。这个接受消息沿LoC(1,2)发送允许消息完全相反的路径到达LoC(1,2),因此将经过LiC(1,1)。如此一来,VOQ(1,3,2)到LoC(1,2)之间通路已经完全建立, 步骤5VOQ(1,3,2)发送一个信元,经过LiC(1,1)到达LoC(1,2)。在这条路经上,VOGInnerPointer(1,2),VOGExternPointer(1,2),LiCPointer(1,1),LoCPointer(1,2)的指针顺时针前移到当前得到服务的目标的下一个位置。图23显示了这四个指针更新后的状态。
至此,就完成了所有需要发送的信元的匹配调度过程。
权利要求
1.一种基于Clos网络交换结构的贯序匹配调度算法,所说的Clos网络交换结构至少包括一个交换机机架及设置在机架上的线卡和背板,每个线卡上的前端芯片包括k个输入模块IM和k个输出模块OM,背板上的后端芯片包括m个中间模块CM,每个输入模块IM均具有m个输出端口,每个中间模块CM均具有k个输入端口和k个输出端口,其特征在于所说的贯序匹配调度算法步骤为
步骤1请求阶段,每个包含非空虚拟输出队列VOQ的虚拟输出组VOG,根据信元最终要送达的输出模块OM,通过其所在的输入模块IM的m个输出端口向每个中间模块CM的相应的输出端口发出请求消息,
步骤2允许阶段,每个中间模块CM的输出端口根据输出端口指针LoC Pointer的位置选定一个发出请求消息的虚拟输出组VOG并向其发出允许消息,
步骤3过滤阶段,判断是否发生通行竞争,如没有则直接放行相应输出端口发出的允许消息,如发生通行竞争,则每个中间模块CM的输入端口根据输入端口指针LiC Pointer的位置选定一个该中间模块CM的输出端口并放行该输出端口发出的允许消息,
步骤4接受阶段,每个收到允许消息的虚拟输出组VOG,通过VOG内部指针VOGInnerPointer选定一个非空虚拟输出队列VOQ,再根据VOG外部指针VOGExternPointer的位置选定一个发出允许消息的中间模块CM的输出端口,虚拟输出组VOG向该输出端口发送接受消息以完成从虚拟输出队列VOQ到该输出端口的通道建立过程,
步骤5指针更新阶段,非空虚拟输出队列VOQ通过虚拟输出组VOG发送一个信元,依次更新VOG内部指针VOGInnerPointer、VOG外部指针VOGExternPointer、中间模块CM的输入端口指针LiCPointer和中间模块CM的输出端口指针LoCPointer,重复步骤4、步骤5直至所有非空虚拟输出队列VOQ的信元都被发送或者所有的允许消息都已被接受。
2.如权利要求1所述的基于Clos网络交换结构的贯序匹配调度算法,其特征在于输入模块IM中虚拟输出队列VOQ的组织方式为VOQ(i,p,o),i为输入模块的编号,p为输入模块的输入端口编号,o为输出模块的编号;输入模块IM中虚拟输出组VOG的组织方式为VOG(i,o),i为输入模块的编号,o为输出模块的编号,虚拟输出组VOG由n个成员VOQ(i,p,o)组成,其中1≤p≤n,n为每个输入模块的输入端口的个数。
3.如权利要求1或2所述的基于Clos网络交换结构的贯序匹配调度算法,其特征在于VOG内部指针VOGInnerPointer、VOG外部指针VOGExternPointer、中间模块CM的输入端口指针LiCPointer和中间模块CM的输出端口指针LoCPointer更新后,指针指向当前匹配目标的下一个位置。
全文摘要
一种基于Clos网络交换结构的贯序匹配调度算法,涉及网络交换调度算法领域。其步骤为步骤1输入模块的m个输出端口向每个中间模块的相应的输出端口发出请求消息,步骤2每个中间模块的输出端口选定一个发出请求消息的虚拟输出组并向其发出允许消息,步骤3每个中间模块的输入端口选定一个该中间模块的输出端口并放行该输出端口发出的允许消息,步骤4完成从虚拟输出队列到输出端口的通道建立过程,步骤5发送信元并更新指针,重复执行步骤4、步骤5直至所有信元都被发送或者所有的允许消息都已被接受。本发明所述的调度算法采用直通式匹配,整个匹配过程一次完成,同时采取多对多的“请求-允许-接受”方式,最大程度利用了调度机会。
文档编号H04L12/56GK101304374SQ20081008426
公开日2008年11月12日 申请日期2008年3月28日 优先权日2008年3月28日
发明者洋 汪, 余少华 申请人:武汉烽火网络有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1