用于包括无阻塞交换结构和线路卡接口的系统的包调度的利记博彩app

文档序号:7907003阅读:402来源:国知局
专利名称:用于包括无阻塞交换结构和线路卡接口的系统的包调度的利记博彩app
技术领域
本发明专门涉及通信和计算机系统,更具体地说,本发明涉及特别适用于但是不限于包括无阻塞交换结构和同构或异构线路卡接口的系统的包调度。
背景技术
通信产业正迅速改变以适应新兴技术和不断增长的用户需求。用户对新应用和已有应用的提高了的性能的需求正促使通讯网络和系统供应者采用具有更高速度和容量(例如,更宽的带宽)的网络和系统。在实现这些目标的努力中,一种很多通信供应者采用的普遍方法是采用包交换技术。日益增长地利用各种包技术,如IP(Internet Protocol,网际协议),建立和扩大公共和私有的通讯网络。
SLIP是一种用于通过一个N×N交换机调度包发送的迭代算法。在一个实施例中,执行了以下三个步骤1.每个不匹配输入向每个它为之具有一个排队的信元的输出发送一个请求,2.如果一个不匹配输出接收到任何请求,它选择在一个从最高选择优先权单元开始的固定的循环调度(round-robinschedule)中接下来出现的那个。该输出通知每一个输入其请求是否被授权。当且仅当在第一次迭代的步骤3中授权被接收时,指向循环调度表的最高选择优先权单元的指针增加(模N)到在被授权的输入之外的一个位置。在随后的迭代中指针不增加。
3.如果输入接收到一个授权,它接受在一个从最高选择优先权单元开始的固定的循环调度表中接下来出现的那个。指向循环调度表的最高选择优先权单元的指针增加(模N)到一个在被接受的输出之外的一个位置。
I-SLIP是一种包括多次SLIP算法迭代来确定每一轮包发送的包调度(而不是仅仅一次SLIP迭代)的调度算法。
每个输出调度器利用循环的选择优先权在排序的竞争的一组请求之间作决定。当一个请求的输入被授权,并且该输入接受了授权时,下一个单元时间中该输入在那个输出上将具有最低的选择优先权。同时,不论输入具有什么,在每一个连续的时隙中一个输出上的最高选择优先权都将被授权,直到它被服务。这保证了连接不会被空缺(starved)在不多于N个单元时间内,一个输出上的最高选择优先权连接总会被一个输入所接受。
移动指针不仅防止空缺,它也会使调度器失去同步。每个在前一个时隙中被匹配的输出将具有一个不同的最高选择优先权输入。这样,它们每个会授权给不同的输入。考虑一个例子,其中两个输入都请求相同的两个输出。最初,两个输出可能授权给同一个输入;那种情况下在第一次迭代中只有一个连接被建立了。
成功的输出将增加它的指针,在下一个单元时间,输出将不再竞争一个将继续移动以授权给另一个输入,而另一个将授权给和以前相同的输入。这带来下一个单元时间的第一次迭代中的更好的匹配。这是因为输出调度器们相对于彼此变得失去同步(或“错开的”)。这带来了高性能,即使是对于单独一次SLIP迭代。
由于指针的循环移动,该算法将在竞争的连接之间提供带宽的公平分配,并且减少爆炸(Burst-reducing)。在所有输入队列都被占用的高负载情况下,爆炸减少是最容易被理解的该算法将依次访问每一个竞争的连接,因此即使要求同一个输出的几个单元的爆炸到达输入,如果存在竞争通信,该爆炸也会及时地被分散。
但是,I-SLIP算法被设计为适应交叉交换结构(Cross-barSwitching),其中输入端口是独立的并且同构的。某些无阻塞交换结构的实施例具有容量不同的异构线路卡。这些系统需要的是在不同容量的线路卡中提供比较公平的带宽分配的调度器,而独立于线路卡的构造。即使在不同速度的线路卡连接到数量成比例增长的输入端口的系统中,该I-SLIP调度算法一般也不提供足够公平的带宽分配。需要的是用于在无阻塞交换结构和同构或者异构线路卡接口中调度包的新方法和设备。

发明内容
本发明公开了用于调度包的一种方法,该方法包括识别对应于希望通过包交换机从多个输入被发送到一个特定输出的包的一组请求,保存授权起始位置,确定授权提前位置,确认在预定队列中从授权起始位置开始的第一个n个请求,其中n小于或等于在单个包时间内能发送到特定输出的包的最大数目,以及响应于包括了对应于授权提前位置的特定授权的第一个n个授权,更新授权起始位置。
本发明还公开了包含可用于执行上述方法的计算机可执行指令的计算机可读介质。
本发明公开了用于调度包的另一种方法,该方法包括产生对应于希望通过包交换机从一个特定输入被发送到多个输出的包的一组请求,识别响应于该组请求而产生的一组授权,保存接受起始位置,确定接受提前位置,识别预定队列中从接受起始位置开始的第一个m个授权,其中m小于或者等于来自特定输入的在单个包时间内能被使用的连接的最大数目,以及响应于包括了对应于接受提前位置的特定接受的第一个m个授权,更新接受起始位置。
本发明还公开了包含可用于执行上述方法的计算机可执行指令的计算机可读介质。
本发明公开了用于调度包的设备,该设备包括多个请求发生器、耦合到该多个请求发生器的多个授权仲裁器、耦合到该多个授权仲裁器的接受仲裁器,其中多个请求发生器中的每一个都被配置成用来产生交换机的多个输入中的它所联系的输入的请求,多个授权仲裁器中的每一个都被配置成用来基于一个或多个接收到的请求来产生授权,所述授权对应于准许项该交换机的多个输出中它所联系的输出发送;其中所述产生授权包括保存授权起始位置,确定授权提前位置,识别预定队列中从授权起始位置开始的第一个n个请求,其中n小于或者等于在单个包时间内能被发送到所述所联系的输出的包的最大数目,以及响应于包括了对应于授权提前位置的特定授权的第一个n个授权,更新授权起始位置;并且其中多个接受仲裁器中的每一个都被配置成用来基于一个或多个接收到的授权产生接受,所述接受对应于多个输入中它所联系的输入。
本发明公开了用于调度包的另一种设备,该设备包括用来识别希望通过包交换机从多个输入被发送到一个特定输出的包的一组请求的装置,用来保存授权起始位置的装置,用来确定授权提前位置的装置,用来识别在预定队列中从授权起始位置开始的第一个n个请求的装置,其中n小于或等于在单个包时间内能被发送到特定输出的包的最大数目;和用来响应于包括了一个对应于授权提前位置的特定授权的第一个n个授权,更新授权起始位置的装置。
本发明公开了用于调度包的另一种设备,该设备包括用来产生对应于希望通过包交换机从一个特定输入被发送到多个输出的包的一组请求的装置,用来识别响应于该组请求而产生的一组授权的装置,用来保存接受起始位置的装置,用来确定接受提前位置的装置,用来识别在预定队列中从接受起始位置开始的第一个m个授权的装置,其中m小于或等于来自特定输入的在单个包时间内能被发送的包的最大数目,和用来响应于包括了对应于接受提前位置的一个特定接受的第一个m个授权,更新接受起始位置的装置。


所附权利要求详细陈述了本发明的特征。从以下结合附图所作的详细说明中,可以最好地理解本发明及其优点。
图1A-E和图2是在具有无阻塞交换结构的系统中调度包的实施例的框图;图3A是在一个实施例中用于在三次迭代调度循环中调度单播和组播包的进程的流程图;
图3B是在一个实施例中用于在一次或多次迭代中调度单播和/或组播包的进程的流程图;图4A和4C是在一个实施例中用于向调度器发送单播和组播包指示的进程的流程图;图4B是在一个实施例中用于向调度器发送单播和组播包指示的消息格式的框图;图5是在一个实施例中用于产生请求的进程的流程图;图6A是在一个实施例中用于执行授权处理的进程的流程图;图6B-C是在一个实施例中用于执行授权处理的数据结构的框图;图7A是在一个实施例中用于执行接受处理的进程的流程图;图7B图示了在一个实施例中用于执行接受处理的数据结构的框图;图8是在一个实施例中用于组播指针处理的进程的流程图;和图9是在一个实施例中用于设置交换机和初始化在该交换机中发送数据的框图。
具体实施例方式
本发明公开了在例如,但不限于,具有无阻塞交换结构和同构或者异构线路卡接口的系统中用于调度包的方法和设备。这里所描述的实施例包括了各种元件或限制,其中没有一个元件或限制被认为是关键性的元件或限制。每一项权利要求独立完整地陈述本发明的一个方案。此外,所描述的一些实施例包括,但不限于,系统、网络、集成电路芯片、嵌入式处理器、ASIC(Application Specific Integrated Circuit,特定用途集成电路)、方法和包含指令的计算机可读介质。以下描述的实施例实现了在本发明范围和原则内的不同方案和构造,其中图说明了示例性的非限制性的构造。
术语“包”使用在这里指所有类型的包或者任何其它单位的信息或数据,包括,但不限于,固定长度的信元、可变长度的包,其中每一个可以或不可以分为更小的包或信元。术语“包”使用在这里也指包本身或包指示,例如,但不限于,包或包头的全部或部分、数据结构值、指针或索引,或者包的任何其他部分或标识。而且,这些包可以包含一种或多种类型的信息,包括,但不限于,语音、数据、视频和音频信息。在这里术语“项”用来指包或者任何其它单位或段的信息或数据。
术语“系统”在这里通用于描述任何数目的组件、元件、子系统、设备、包交换元件、包交换机、路由器、网络、计算机和/或通信设备或机构、或其组件的组合。术语“计算机”在这里通用于描述任何数目的计算机,包括,但不限于,个人电脑、嵌入式处理器和系统、控制逻辑、ASIC、芯片、工作站、大型机等。术语“设备”在这里通用于描述任何类型的机构,包括计算机或系统或其组成部分。术语“任务”和“进程”在这里通用于描述任何类型的运行的程序,包括,但不限于,计算机进程、任务、线程、执行应用程序、操作系统、用户进程、设备驱动程序、本地码、机器或其他语言等,并且可以是交互的和/或非交互的、本地和/或远程执行的、在前台和/或后台执行的、在用户和/或操作系统地址空间内执行的、二进制例程和/或独立的应用程序,并且不限于任何特定存储器分区技术。图中所示的步骤、连接和信号与信息的处理,包括,但不限于,任何框图、流程图和消息队列表,在保持在本发明范围和原则内的其他实施例中,可以以相同或不同的串行或并行次序和/或由不同组件和/或进程、线程等,和/或通过不同的连接并结合其他功能来执行。
此外,术语“网络”和“通信机构”在这里通用于描述一个或多个网络、通信媒体或通信系统,包括,但不限于,因特网,私有或公共电话,蜂窝状的、无线的、卫星的、电缆的、局域、大城市区的和/或广域的网络,通过电缆的电连接、总线等等,和例如消息传送、进程间通信、共享存储器等的内部通信机构。
术语“存储机构”包括任何类型的存储器、存储设备或其他用于以任何形式保存指令或数据的机构。“计算机可读介质”是一个可延伸术语,包括了任何存储器、存储设备、存储机构、和包括了例如网络接口卡及其缓存的接口和设备的其他存储和信号发送机构,以及任何通信设备和所接收和传送的信号,和计算机化的系统能够解释、接收和/或传送的其它当前和发展中的技术。术语“存储器”包括任何随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组件或元件。术语“存储设备”包括任何固态存储介质、盘驱动器、磁盘、网络化的服务、磁带驱动器和其他存储设备。存储器和存储设备可以存储由处理器和/或控制逻辑执行的计算机可执行指令,和由处理器和/或控制逻辑操纵的数据。术语“数据结构”是一个可延伸术语,指任何数据元素、变量、数据结构、数据库、和/或能应用于数据以方便解释该数据或对其执行操作的一个或多个或一个组织的体系(scheme),例如,但不限于,存储器位置或设备、集合、队列、树结构、堆栈、列表、链接列表、阵列、表格、指针等。一个数据机构一般保存在存储机构中。
术语“第一”、“第二”等在这里通常用来代表不同单元(如,第一元件、第二元件)。在这里使用这些术语不一定意味一个排序,如一个单元或事件比另一个发生或到来得更早,而是提供一个区别特定单元的机制。此外,短语“基于x”和“响应于x”用来表示最小的一组x项,从它衍生或引起了某些事物,其中“x”是可延伸的,并且不一定描述冠以“the”的完整列表的项等。另外,短语“耦合到”用来表示两个元件或设备之间的一定程度的直接或间接连接,而耦合设备修改或不修改被耦合的信号或通信的信息。术语“子集”用来表示包括了一个集合中元素的全部、少于全部或一个也没有的组。此外,术语“或”在这里用来表示连续项目中的一个或多个,包括全部,的或然选择。
本发明公开了在例如,但不限于,具有无阻塞交换结构和同构或异构的线路卡接口的系统中的,用于调度包的方法和设备。在一个实施例中,多个请求发生器、授权仲裁器和接受仲裁器联合工作来确定该调度。产生一组要求发送来自一个特定输入的包的请求。从授权起始位置开始,识别预定队列中的第一个n个请求,其中n小于或者等于在单个包时间内能被使用的到特定输出的连接的最大数目。响应于包括了一个对应于授权提前位置的特定授权的第一个n个授权,更新授权起始位置。在一个实施例中,基于该组请求产生的该组授权是利用接受起始位置和接受提前位置类似地确定的。
在一个实施例中,一个“包时间”是给定交换机配置的一个时间间隔,其间能够从一个或多个输入发送一个或多个包到一个或多个输出。在一个实施例中,包时间与被要求或分配来执行包调度的调度时间间隔一致,并因此,当在为下一个包时间确定包调度和相应的交换机配置时能够发送包。
图1图示了包括了无阻塞交换机(或者交换机结构)102、带有调度器和存储器的控制器101,和多个线路卡103-106的系统100的实施例。线路卡103标识为是“类型A”的,具有A1准入链路或端口104和A2准入链路或端口105。线路卡106标识为是“类型B”的,具有N1准入链路或端口107和N2准入链路或端口108。标记强调了具有不同速率和不同数目的到无阻塞交换机102的端口或连接的接口和线路卡得到支持。
图1B图示了一个线路卡110的实施例。线路接口111接收和传送包括了包或其他数据格式的信号。所示为单播和组播队列113,在一个实施例中,其中放置了进入的要调度的包。如以下所描述的,具有请求发生器、授权仲裁器和接受仲裁器的控制器112确定和调度包,包通过交换机接口114在它们各自的被调度的时间内从单播和组播队列113被发送。另外,通过交换机接口114在其他请求发生器、授权仲裁器和接受仲裁器之间通信调度请求、授权和接受。
图1C示出说明了一个实施例,其中请求发生器、授权仲裁器和接受仲裁器位于具有请求发生器、授权仲裁器和接受仲裁器的控制器122中央。具有单播和组播队列和包指示发生器的线路卡121发送包业务指示123到具有请求发生器、授权仲裁器和接受仲裁器的控制器122。返回的是到线路卡121的包的接受/调度指示124,它启动了在被调度时间对所接受的包的发送。另外,具有请求发生器、授权仲裁器和接受仲裁器的控制器122发送配置信息125给交换机120,这样交换机结构能够被配置来在交换机输入和输出端口与所连接的线路卡121之间通信所接受的包。
图1D图示了线路卡130的一个实施例。线路接口131接收和传送包括包或其他数据格式的信号。所示为N个单播队列133-134和一个组播队列135,其中放置了进入的要调度的包。一般,N对应于输出线路卡的数目或者线路卡能够向其发送包的交换机输出端口的数目。在一个实施例中,使用了额外的队列,例如,但不限于,多个组播队列和用于缓存具有不同优先权水平的包的队列。具有请求模块和存储器的控制器132通过交换机接口136发送包指示并接收接受和调度指示。
图1E图示了一个包括N个请求发生器154、授权仲裁器155和接受仲裁器156的系统150。通过交换机接口151从不同线路卡接收包指示,并存入N个单播队列152和N个组播队列153的对应的队列中。该N个请求发生器154基于队列152和153中的包指示产生单播和组播包请求(一般在分别的迭代中),并发送给N个授权仲裁器155中对应于包的目的地的授权仲裁器。接着,N个授权仲裁器155产生并发送它们的授权给N个接受仲裁器156中对应于所授权的包的来源的接受仲裁器。然后,或在多次迭代以后,该接受被发送到交换机接口151,用来中继到合适的线路卡和交换机配置控制器。在一个实施例中,一个组播控制器157被用来保存在选择授权哪一个组播请求中被授权仲裁器所使用的公用组播位置。
图2图示了系统200的一个实施例,它可以包括,但不限于,根据本发明用来调度包的一个或多个请求发生器、授权仲裁器和/或接受仲裁器。在一个实施例中,系统200包括处理器201、存储器202、存储设备203和交换机/控制器接口204,它们一般通过一个或多个通信机构209(为了说明的目的示为一个总线)耦合。系统200的不同实施例可以包括更多或更少的元件。系统200的运行一般由处理器201利用存储器202和存储设备203来控制以执行一个或多个调度任务或进程。存储器202是一种类型的计算机可读介质,一般包括随机访问存储器(RAM)、只读存储器(ROM)、闪存、集成电路和/或其他存储器组成部分。存储器202一般存储要被处理器201执行的计算机可执行指令和/或由处理器201操纵的数据,以实现本发明的功能。存储设备203为另一种类型的计算机可读介质,一般包括固态存储介质、盘驱动器、磁盘、网络化的服务器、磁带驱动器和其他存储设备。存储设备203一般存储要被处理器201执行的计算机可执行指令和/和由处理器201操纵的数据,以实现本发明的功能。
图3A示出说明了在一个实施例中用于利用三次调度迭代调度包的进程。进程开始于进程框300,并前进到进程框302,其中执行了第一次单播调度迭代。接着,在进程框304,执行第二次单播调度迭代。在进程框306,执行组播调度迭代。接着,在进程框308,根据被调度的包,配置交换机(和它的交换结构),在进程框310发送包。对于接下来一轮调度,处理前进到进程框312,其中执行了组播调度迭代。接着在进程框314,执行第一次单播调度迭代。在进程框316,执行第二次单播调度迭代。接着,在进程框318,根据被调度的包配置交换机(和它的交换结构),在进程框319包被发送。处理回到进程框302来执行更多的包调度。
图3B图示了用于在一个实施例中利用一次或多次调度迭代来调度包的进程,其中所述调度迭代包括按照任何希望的顺序的单播和/或组播迭代。处理开始于进程框320。在进程框322中确定,如果接下来是一次单播迭代,则在进程框324执行该单播调度迭代;否则在进程框326执行组播迭代。在进程框328中确定,如果此次调度循环还有其它调度迭代要执行,则处理返回到进程框322去执行下一次调度迭代。否则,在进程框330配置交换机,在进程框340包被发送,然后处理返回到进程框322。
图4A图示了在一个实施例中用来产生包指示消息的进程。处理开始于进程框400,并前进到进程框402,其中包指示数据结构被清零。在进程框404中确定,如果还有其它单播包要发送,则在进程框406选择单播队列中第一个或下一个位置。在进程框408,向数据结构中加入处于目标队列中被选择的位置的包的目的地的一个位图或其他表示。在一个用于单播和/或组播包的实施例中,如果一个特定的目的地是废能的,不服务的、或基于背压(backpressure)或其他流控制信息目前是不能到达的,在进程框408或414该目的地的指示不加入数据结构中。
否则,在进程框410中确定,如果有其它组播包要发送,则在进程框412选择组播队列中的第一个或下一个位置。在进程框414,向数据结构中加入处于组播队列的被选择的位置的组播包的目的地的一个位图或其他表示,并且处理返回到进程框410。
否则,在进程框430数据结构被发送到调度器。在进程框432,从调度器接收要发送的包的指示,并且如果少于特定包的所有目的地被允许,则更新该组播队列。在进程框434启动这些包的发送。处理返回到进程框402。
图4B说明了用于一个实施例中的数据结构/消息格式450的框图。数据结构450一般具有多个入口,每一个具有一个用来指示该入口对应单播还是组播包指示的标识区451,和一个用来指示包的目的地的位图区452。
图4C示出说明了在一个实施例中被集中式调度系统用来为不同的发送线路卡收集包指示的进程。处理开始于进程框470,并前进到进程框472,其中接收了一个消息。在进程框474,更新一个或多个包指示队列或其他数据结构,处理返回到进程框472。
图5示出说明了在一个实施例中被每一个请求发生器使用的进程,一般每一个与无阻塞包交换机联系的线路卡对应一个请求发生器。处理开始于进程框500。在进程框502中确定,如果存在第一次迭代,则在进程框504将MAX的值设置为在一个包时间内该线路卡能够发送的包的最大数目,该最大数目一般对应于线路卡所连接的交换机输入端口的数目。每一个请求发生器一般会超过在一个调度循环中它所能服务的请求的累积数目。
在进程框506确定,如果这是单播迭代,则处理前进到进程框508将一组请求指示给每一个授权仲裁器。当在进程框508确定还有其它输出时,在进程框510选择一个输出,并且在进程框512确定希望被发送到该特定输出的包的数目(最高到在一个包时间内目的地能够实际接收的包的最大数目)。如果在进程框514中确定该数目大于MAX的值,则在进程框516将该数目设定为MAX。在进程框518,用信号将请求通知给相应的授权仲裁器。所有输出已经被处理之后,接着在进程框520授权仲裁器等待当前单播迭代的接受阶段的结束。然后,在进程框522,MAX减少对应于在此次迭代中先前从该授权仲裁器发送的请求的接受的数目,处理返回进程框502。
在进程框506确定,如果这是组播迭代,则处理前进到进程框530将CNT设置为1并且将组播请求数据结构清零。当在进程框532确定CNT不大于MAX并且存在要处理的组播请求时,执行进程框534和进程框536。在进程框534,基于处于组播队列中CNT位置的组播包的目的地来填充数据结构,并且在进程框536将CNT加1。完成后,处理前进到进程框538发送组播请求给每一个授权仲裁器(当然,它可以为一个非组播包的请求)或者至少那些有来自该请求发生器的待解决的组播请求的授权仲裁器。然后处理进入进程框520。
图6A示出说明了在一个实施例中被授权仲裁器使用的进程的流程图。处理开始于进程框600,并前进到进程框602,其中初始化了一个授权起始位置。接下来,在进程框604接收来自请求发生器的请求,这些请求被用来填充数据结构。在一个实施例中,使用了图6B所示数据结构650,数据结构650包括一个每个插槽(slot)(例如,来自每个请求发生器)所接收的请求的数目的位图一元表示。
在一个实施例中,如数据结构660中所示,这些位图表示是向右对齐的。在一个实施例中,这些位图表示是向左对齐时,而在一个实施例中,这些位图表示以一种表示线路卡或插槽的物理端口的方式被保存。在这样一个位图中的该请求位的对齐方式一般通过影响授权起始位置的更新来影响包的调度。当位图是向右对齐时,用来选择位(例如,对应于授权或接受的位)的起始位置更有可能提前到对应于下一个线路卡或插槽的位。但是,提前的速率还是由,包括但不限于,由请求、授权和接受的产生速率指示的交换机的吞吐量和线路卡的通信速率,以及对应于特定请求、授权和接受的线路卡和端口扼制。
回到图6A的处理,在进程框606中确定,如果这是当前一轮调度的第一次迭代,则在进程框608,MAX被设置为在一个包时间内对应于该授权仲裁器的线路卡能够接收的包的最大数目。接着,在进程框610确定,如果这是一个单播迭代,则在进程框612确定GAP(Grant AdvancementPosition,授权提前位置)。如果在第一次迭代中(或者在一个实施例中在任何迭代中)对应于授权提前位置的授权被接受,则授权起始位置将被修改,这样在下一轮调度中授权将从一个不同的位置开始被产生。
在一个实施例中,授权提前位置是请求数据结构中指示在授权起始位置之后的一个请求的第一个位置。向前参照图6C,数据结构660示出说明了两个向右对齐的位图。如果授权起始位置在位置661,则授权提前位置在位置662。如果授权起始位置在位置662,则授权提前位置在位置663。如果授权起始位置在位置663,则授权提前位置在位置664。
回到图6A的处理和进程框614,如果迭代不是单播迭代,则在进程框616,从组播指针位置(在一个实施例中在所有授权仲裁器之间公用)开始产生最多MAX个组播请求,并且这些授权被发送给对应的接受仲裁器。
否则,在进程框618,从授权起始位置开始产生最多MAX个单播授权。接着,在进程框620,这些产生的授权和是否包括在授权提前位置上的授权的指示一起,被发送给对应的接受仲裁器。接着,在进程框622,接收所接受的授权的指示,并且MAX减少由该授权仲裁器产生的被接受的授权的数目。如果,在进程框624中确定这是当前调度循环的第一次迭代,则在进程框626确定,如果位于授权提前位置的包被接受了,则在进程框628设立提前标记。在进程框630中确定,如果这是当前调度循环的最后一次迭代,则在进程框632中确定,如果设立了提前标记,则在进程框634将授权起始位置提前到授权提前位置后的下一个位置。然后处理返回到进程框604。
图7A示出说明了在一个实施例中被接受仲裁器所使用的进程的流程图。处理开始于进程框700,并前进到进程框702,其中初始化了接受起始位置。接着,在进程框704从授权仲裁器接收到授权和授权提前位置指示,该数据被用于填充一个或多个数据结构。在一个实施例中,图7B所示GAP数据结构740被用于为每一个授权仲裁器(在一个实施例中对应于线路卡插槽)保存授权接受指示,授权数据结构750包括每一个插槽(例如,来自每一个请求发生器)所接收的授权数目的位图一元表示。这些位图可以或可以不是向右对齐的。
回到图7A的处理和进程框706,如果这是一个单播迭代和调度循环的第一次迭代,则在进程框708,一般以与这里所述的对授权提前位置的相同的方式来确定接受提前位置。
接着,在进程框710中确定,如果这是组播迭代,则在进程框712接受所有的授权(由于发送线路卡没有发送多于它能够服务的组播请求),传送接受指示,并且处理返回进程框704。
否则,在进程框714,接受最多MAX个单播授权,从处于接受提前位置的授权开始,接着是来自授权起始位置的授权。接着,在进程框716,通知相应的授权仲裁器它们的被接受的授权和是否它们的GAP授权被接受。然后,在进程框718,MAX减少由接受仲裁器产生的被接受的授权的数目。在进程框720中确定,如果这是当前调度循环的第一次迭代,则在进程框722中确定,如果处于接受提前位置的授权被接受了,则在进程框724设立提前标记。在进程框726确定,如果这是当前调度循环的最后一次迭代,则在进程框728确定,如果设立了提前标记,则在进程框730将接受起始位置提前到接受提前位置之后的下一个位置。然后处理返回进程框704。
图8示出说明了在一个实施例中被组播控制器用来更新组播指针的进程。处理开始于进程框800,并且前进到进程框802,其中初始化了组播起始位置。接着,在进程框804,从不同请求发生器接收组播请求消息。在进程框806,将组播提前位置设置为在组播起始位置或其后有组播请求的下一个位置。在进程框808,接收组播接受指示。在进程框810确定,如果队列头部的对应于组播起始位置的组播包的所有请求都被接受了(例如,将被从输入发送的对应于MAP位置的第一个组播包被完全地接受了),则在进程框812将组播起始位置设置为组播提前位置之后的下一个位置。处理返回进程框804。
图9示出说明了在一个实施例中用来配置交换机(例如,无阻塞交换机结构)和发送被接受的包的进程。处理开始于进程框900,并且前进到进程框902,其中接收被接受的连接的指示。在进程框904,在合适的时间配置交换机以连接对应于被接受的请求的交换机的合适的输入和输出端口。然后,在进程框906,启动包的发送并且发送。处理返回到进程框902。
由于我们的发明原理可以被应用于很多可能的实施例,可以发现这里参照图画/插图所描述的本发明的实施例和方案仅仅是例证性的,而不应该被当作是对本发明的限制。例如,并且这对熟悉本领域的人员是显然的,很多进程框操作可以被重新排序以在其他操作之前、之后或几乎同时执行。而且,许多不同格式的数据结构可以被用于各种实施例中。这里描述的本发明考虑了可能落入以下权利要求及其等同物范围中的所有这样的
权利要求
1.一种方法,包括识别对应于希望通过包交换机从多个输入被发送到一个特定输出的包的一组请求;保存授权起始位置;确定授权提前位置;识别在预定队列中从授权起始位置开始的第一个n个请求,其中n小于或等于在单个包时间内能发送到特定输出的包的最大数目;以及响应于包括了对应于授权提前位置的特定授权的第一个n个授权,更新授权起始位置。
2.如权利要求1所述的方法,其中所述更新授权起始位置只有当第一个n个授权包括了对应于授权提前位置的特定授权时才被执行。
3.如权利要求1所述的方法,其中所述更新授权起始位置包括将授权起始位置的值设置为授权提前位置之外的一个位置。
4.如权利要求1所述的方法,还包括保存指示该组请求的位图数据结构,其中授权起始位置和授权提前位置标识位图数据结构中的一个或多个位置。
5.如权利要求4所述的方法,其中位图数据结构包括一个对应于多个输入中的每一个的位图表示。
6.如权利要求5所述的方法,其中位图表示是向右对齐的。
7.如权利要求1所述的方法,其中该组请求包括来自多个输入中的每一个输入的最多n个请求。
8.如权利要求1所述的方法,其中该组请求包括来自多个输入中的每一个特定输入的,最多在单个包时间内所述每一个特定输入能够发送的最大数目的包。
9.如权利要求8所述的方法,其中该组请求包括来自多个输入中的每一个输入的最多n个请求。
10.一种计算机可读介质,包含用于执行权利要求1所述的方法的计算机可执行指令。
11.一种方法,包括产生对应于希望通过包交换机从一个特定输入被发送到多个输出的包的一组请求;识别响应于该组请求而产生的一组授权;保存接受起始位置;确定接受提前位置;识别预定队列中从接受起始位置开始的第一个m个授权,其中m小于或者等于来自特定输入的在单个包时间内能被使用的连接的最大数目;和响应于包括了对应于接受提前位置的特定接受的第一个m个授权,更新接受起始位置。
12.如权利要求11所述的方法,其中所述的更新接受起始位置只有当第一个m个授权包括了对应于接受提前位置的特定接受时才被执行。
13.如权利要求11所述的方法,其中所述的更新接受起始位置包括将接受起始位置的值设置为接受提前位置之外的一个位置。
14.如权利要求11所述的方法,还包括保存指示该组授权的位图数据结构,其中接受起始位置和接受提前位置标识位图数据结构中的一个或多个位置。
15.如权利要求14所述的方法,其中位图数据结构包括一个对应于多个输出中的每一个的位图表示。
16.如权利要求15所述的方法,其中位图表示是向右对齐的。
17.如权利要求11所述的方法,其中该组请求包括来自特定输入的最多m个请求。
18.如权利要求11所述的方法,其中该组请求包括给多个输出中的每一个特定输出的最多在单个包时间内能被发送到所述每一个特定输出的最大数目的包。
19.如权利要求18所述的方法,其中该组请求包括来自特定输入的最多m个请求。
20.一种计算机可读介质,包含用于执行权利要求11所述方法的计算机可执行指令。
21.一种设备,包括多个请求发生器;耦合到该多个请求发生器的多个授权仲裁器;耦合到该多个授权仲裁器的多个接受仲裁器;其中多个请求发生器中的每一个都被配置成用来产生交换机的多个输入中的它所联系的输入的请求;其中多个授权仲裁器中的每一个都被配置成用来基于一个或多个接收到的请求来产生授权,所述授权对应于准许向该交换机的多个输出中它所联系的输出发送,其中所述产生授权包括保存授权起始位置,确定授权提前位置,识别预定队列中从授权起始位置开始的第一个n个请求,其中n小于或等于在单个包时间内能被发送到所述所联系的输出的包的最大数目;以及响应于包括了对应于授权提前位置的特定授权的第一个n个授权,更新授权起始位置;并且其中多个接受仲裁器中的每一个都被配置为用来基于一个或多个接收到的授权产生接受,所述接受对应于多个输入中它所联系的输入。
22.如权利要求21所述的设备,还包括多个包指示发生器,多个包指示发生器中的每一个都与多个输入中的不同输入以及多个请求发生器中的不同请求发生器相联系;其中多个包指示发生器中的每一个都被配置以将排队的包的指示和它们各自的目的地发送到多个请求发生器中它所联系的一个。
23.如权利要求21所述的设备,其中包是根据所述接受通过交换机从交换机的多个输入被发送到交换机的多个输出的。
24.如权利要求23所述的设备,其中所述的接受包括第一单播组的接受、第二单播组的接受和一个组播组的接受。
25.如权利要求21所述的设备,其中所述的产生接受包括保存接受起始位置,确定接受提前位置,识别预定队列中从接受起始位置开始的第一个m个授权,其中m小于或等于来自所述所联系的输入的在单个包时间内能被使用的连接的最大数目,以及响应于包括了对应于接受提前位置的一个特定接受的第一个m个授权,更新接受起始位置。
26.如权利要求21所述的设备,还包括被配置来保存组播指针的组播控制器。
27.如权利要求26所述的设备,其中组播控制器还被配置来确定组播提前位置,和响应于一个对应于组播提前位置被授权的特定请求,一个对应于组播提前位置被接受的授权,或一个对应于组播提前位置的被发送的组播包,更新组播指针。
28.一种设备,包括用来识别对应于希望通过包交换机从多个输入被发送到一个特定输出的包的一组请求的装置;用来保存授权起始位置的装置;用来确定授权提前位置的装置;用来识别在预定队列中从授权起始位置开始的第一个n个请求的装置,其中n小于或等于在单个包时间内能被发送到特定输出的包的最大数目;和用来响应于包括了一个对应于授权提前位置的特定授权的第一个n个授权,更新授权起始位置的装置。
29.如权利要求28所述的设备,其中所述用来更新授权起始位置的装置包括用来将授权起始位置的值设置为授权提前位置之外的一个位置的装置。
30.如权利要求28所述的设备,还包括用来保存指示该组请求的位图数据结构的装置;其中授权起始位置和授权提前位置标识位图数据结构中的一个或多个位置。
31.一种设备,包括用来产生对应于希望通过包交换机从一个特定输入被发送到多个输出的包的一组请求的装置;用来识别响应于该组请求而产生的一组授权的装置;用来保存接受起始位置的装置;用来确定接受提前位置的装置;用来识别在预定队列中从接受起始位置开始的第一个m个授权的装置,其中m小于或等于来自特定输入的在单个包时间内能被送出的包的最大数目;和用来响应于包括了对应于接受提前位置的一个特定接受的第一个m个授权,更新接受起始位置的装置。
32.如权利要求31所述的设备,其中所述用于更新接受起始位置的装置包括用于将接受起始位置的值设置为接受提前位置之外的一个位置的装置。
33.如权利要求31所述的设备,还包括用来保存指示该组授权的位图数据结构的装置;其中接受起始位置和接受提前位置标识位图数据结构中的一个或多个位置。
全文摘要
公开了例如在具有无阻塞交换结构和同构或异构线路卡接口的系统中的,用于调度包的方法和设备。在一个实施例中,多个请求发生器、授权仲裁器和接受仲裁器联合工作来确定该调度。产生要求发送来自一个特定输入的数据包的一组请求。从授权起始位置开始,识别预定队列中的第一个n个请求,其中n小于或等于在单个包时间内能被使用的到特定输出的连接的最大数目。响应于包括了对应于授权提前位置的一个特定授权的第一个n个授权,更新授权起始位置。在一个实施例中,基于该组请求产生的该组授权是利用接受起始位置和接受提前位置类似地确定的。
文档编号H04Q3/66GK1449160SQ0312157
公开日2003年10月15日 申请日期2003年3月31日 优先权日2002年3月30日
发明者弗拉维欧·乔瓦尼·博诺米, 帕特里克·A·科斯特洛, 罗伯特·E·勃兰特 申请人:思科技术公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1