用于在交换机中路由数据的装置和方法与流程

文档序号:11637142阅读:181来源:国知局
用于在交换机中路由数据的装置和方法与流程

本公开涉及网络的领域。更具体地,本公开涉及在交换机中路由数据。



背景技术:

本文提供的背景描述是为了大致呈现本公开的上下文的目的。除非本文中另有说明,否则本节中描述的材料不是本申请中权利要求书的现有技术,并且不因包含在该部分而被认为现有技术。

交换机通常包括多个路由路径以将数据分组从交换机的多个输入端口之一路由到交换机的多个输出端口之一。输入端口和输出端口之间的路由路径可能会变得拥塞。

附图说明

通过结合附图的以下详细描述将容易理解实施例。为了便于说明,相似的附图标记表示相似的结构元素。实施例在附图的图中以示例而非限制的方式示出。

图1示出了根据所公开的实施例的交换机的框图。

图2示出了根据所公开的实施例的用于在交换机中路由数据的过程。

图3示出了根据所公开的实施例的适合用于实践本公开的各个方面的示例性计算系统。

图4示出了根据所公开的实施例的具有用于实践本文描述的方法的指令的存储介质。

具体实施方式

本文提供了与交换机中的路由数据相关联的装置、方法和存储介质。在实施例中,交换机可以包括多个输入端口和多个输出端口。交换机可以在要路由到目的地节点的输入端口处接收数据分组。交换机可以包括耦合到输入端口的路由查找电路,以确定可用于将数据分组发送到目的地节点的第一组输出端口。查找电路还可以基于与第一组输出端口相关联的相应拥塞级别而从第一组输出端口选择针对第二组输出端口的多个输出端口。

交换机的输入队列可以缓冲数据分组并路由与第二组输出端口相关联的信息。交换机还可以包括路由选择电路,用于基于与第二组输出端口的输出端口相关联的更新的拥塞级别而从第二组输出端口选择目的地输出端口。例如当数据分组准备好被从输入队列中移除时或者在数据分组被从输入队列中移除之后,可以选择目的地输出端口。交换机还可以包括将数据分组路由到所选择的目的地输出端口(例如经由相关联的输出队列)的交叉开关(crossbar)。

在下面的详细描述中,参考形成其一部分的附图,其中相似的附图标记始终表示相似的部分,并且其中通过说明示出可以实践的实施例。应当理解,在不脱离本公开的范围的情况下,可以使用其他实施例并且可以进行结构或逻辑改变。因此,以下详细描述不应被认为是限制性的,并且实施例的范围由所附权利要求及其等同物限定。

在所附的说明书中公开了本公开的各方面。可以设计出本公开及其等同物的替代实施例,而不脱离本公开的精神或范围。应当注意,下面公开的相似元件在附图中由相似的附图标记表示。

可以以对于所要求保护的主题的理解最有帮助的方式将各种操作依次描述为多个离散动作或操作。然而,描述的顺序不应被解释为意味着这些操作必然是依赖于顺序的。特别地,这些操作可能不按照呈现的顺序执行。所描述的操作可以以与所描述的实施例不同的顺序执行。在另外的实施例中,可以执行各种附加操作和/或可以省略描述的操作。

为了本公开的目的,短语“a和/或b”是指(a),(b)或(a和b)。为了本公开的目的,短语“a,b和/或c”是指(a),(b),(c),(a和b),(a和c),(b和c),或(a,b和c)。

该描述可以使用短语“在实施例中”或“在多个实施例中”,其可以各自指代相同或不同的实施例中的一个或多个。此外,关于本公开的实施例使用的术语“包括”,“包含”,“具有”等等是同义的。

如本文所使用的,术语“模块”可以指代执行一个或多个软件或固件程序、组合逻辑电路和/或提供所描述的功能的其它合适的组件的专用集成电路(asic)、电子电路、处理器(共享、专用或组)和/或存储器(共享、专用或组),是它们的一部分或包括它们。

图1示出了根据各种实施例的交换机100。交换机100可以包括多个输入端口102a-c和多个输出端口104a-c。在一个实施例中,交换机100可以包括64个输入端口102a-c和64个输出端口104a-c,尽管其他实施例可以包括任何合适数量的输入端口102a-c和输出端口104a-c。交换机100可以将在输入端口102a-c处接收的数据(例如,数据分组)路由到输出端口104a-c之一。在一些实施例中,交换机可能能够将数据从任何输入端口102a-c路由到任何输出端口104a-c。在一些实施例中,交换机100可以耦合到多个处理器(未示出),并且可以用于在多个处理器之间路由数据。在一些实施例中,多个交换机(例如,交换机100)可以彼此耦合以形成结构或网络以在多个处理器之间路由数据。可以将结构或网络的多个交换机互连以在两个处理器之间提供多个路由路径。

在各种实施例中,交换机100还可以包括耦合到相应输入端口102a-c的路由查找电路106a-c,耦合到相应路由查找电路106a-c的输入队列108a-c,以及耦合到相应的输入队列108a-c的路由选择电路110a-c,如图1所示。交换机100还可以包括耦合到多个路由选择电路110a-c和交换机的多个输出队列114a-c的交叉开关112(也称为交叉开关电路112)。各个输出队列114a-c可以耦合到相应的输出端口104a-c。

下面描述在输入端口102a处接收的数据分组的示例路由处理。路由处理的方面可以由与输入端口102a相关联的路由查找电路106a、输入队列108a和路由选择电路110a执行,如下面进一步解释的。类似的路由过程可以用于在交换机100的其他输入端口102b-c处接收的数据分组,并且可以由相关联的路由查找电路106b-c、输入队列108b-c以及路由选择电路110b-c执行。

在各种实施例中,输入端口102a可以接收要发送到目的地节点(例如,其耦合到目的地处理器)的数据分组。例如,输入端口102a可以接收与数据分组相关联的目的地本地标识符(dlid)。dlid可以标识目的地节点。在一些实施例中,dlid可以被包括在数据分组中。

在各种实施例中,数据分组可以是要由交换机100自适应路由的自适应数据分组。对于自适应数据分组,多个输出端口104a-c可用于将自适应数据分组路由到目的地节点。交换机100可以例如基于拥塞信息来选择路由自适应数据分组的目的地输出端口104a-c,如下面进一步讨论的。自适应数据分组与确定性数据分组区分开,对于该确定性数据分组来说,路由确定性数据分组的目的地输出端口104a-c是预先确定的,并且不可以被交换机100改变。在实施例中,数据分组可以包括指示符(例如,位)以指示数据分组是自适应数据分组还是确定性数据分组。

在各种实施例中,路由查找电路106a可以确定第一组输出端口,包括可用于将数据分组发送到目的地节点的多个输出端口104a-c。在一些实施例中,路由查找电路106a可以基于一个或多个路由表来确定被包括在第一组中的输出端口104a-c。

在各种实施例中,路由查找电路106a可以获得指示与第一组输出端口中的输出端口104a-c相关联的相应拥塞级别的拥塞信息。例如,与给定输出端口104a-c相关联的拥塞级别可指示交叉开关112的路由的拥塞级别,其可用于将数据分组从输入队列108a发送到给定输出端口104a-c。路由查找电路106a可以通过检查存储在与输出端口104a-c相关联的各个输出队列114a-c处的数据分组的量和/或检查输出端口104a-c中的数据流量来获得拥塞信息。

在各种实施例中,路由查找电路106a可以从第一组输出端口的输出端口104a-c选择第二组输出端口的多个输出端口104a-c。因此,第二组输出端口可以包括被包括在第一组输出端口中的输出端口104a-c的子集。路由查找电路106a可以基于拥塞信息(例如,基于与输出端口104a-c相关联的拥塞级别)来选择用于第二组输出端口的输出端口104a-c。例如,路由查找电路106a可以选择具有最低拥塞水平的第一组输出端口中的输出端口104a-c。

在各种实施例中,路由查找电路106a可以将数据分组传递到输入队列108a用于缓冲。路由查找电路106a可以额外地或替代地将与数据分组相关联的路由信息传递到输入队列108a用于缓冲。路由信息可以包括标识第二组输出端口的输出端口104a-c的信息。在各种实施例中,输入队列108a可以缓冲(例如,临时存储)数据分组和相关联的路由信息。输入队列108a可以在数据分组等待路由(例如,通过交叉开关112)到目的地输出队列114a-c和/或目的地输出端口104a-c的同时存储多个数据分组和相关联的路由信息。因此,输入队列108a可以用于通过存储数据分组直到路由资源(例如,在交叉开关112中)可用于将数据分组路由到目的地输出队列114a-c和/或目的地输出端口104a-c来管理交换机100中的拥塞。

在各种实施例中,在将数据分组缓冲在输入队列108a中之后,路由选择电路110a可以获得与第二组输出端口的输出端口104a-c相关联的更新的拥塞信息。更新的拥塞信息可以指示与第二组输出端口中的输出端口104a-c相关联的各个拥塞级别。

在各种实施例中,路由选择电路110a可以基于更新的拥塞信息来选择针对数据分组的目的地输出端口(例如,输出端口104a-c之一)。然后,路由选择电路110a可以将数据分组传递到交叉开关112以路由到目的地输出端口。路由选择电路110a可以例如当数据分组准备好从输入队列108a拉出(pull)时或在数据分组从输入队列108a拉出之后获得更新的拥塞信息和/或选择目的地输出端口。例如,当数据分组到达队列108a的头部时,可准备好从输入队列108a拉出数据分组。

在各种实施例中,交叉开关112可以将数据分组路由到目的地输出端口。例如,交叉开关112可以将数据分组路由到与目的地输出端口相关联的输出队列。作为示例,如果选择输出端口104b作为目的地输出端口,则交叉开关112可以将数据分组路由到输出队列114b。输出队列114b可以缓冲数据分组,直到数据分组准备好被传递到输出端口104b。

因此,如上所述,路由查找电路106a可以在数据分组被缓冲到输入队列108a中之前的第一时间点处基于拥塞信息来从第一组输出端口选择第二组输出端口的多个输出端口。此外,路由选择电路110a可以在数据分组被缓冲在输入队列108a中之后的第二时间点处(例如,当数据分组准备好从输入队列108a拉出,或者在数据分组从输入队列108a拉出之后)基于拥塞信息而从第二组输出端口选择目的地输出端口。与存储第一组输出端口的所有输出端口104a-c的路由信息相比较,从第一组输出端口选择第二组输出端口可以减小存储在输入队列108a中的路由信息的大小。此外,当数据分组准备好被从输入队列108a拉出时或者在数据分组从输入队列108a拉出之后,可以从第二组输出端口中选择目的地输出端口,从而允许交换机100使用最新的拥塞信息,并且适应在数据分组被缓冲在输入队列108a中时可能发生的拥塞的任何改变。

在各种实施例中,第二组输出端口可以包括任何合适数量的输出端口104a-c。例如,在一些实施例中,第二组输出端口可以包括两个到四个输出端口,诸如两个输出端口。

在各种实施例中,除自适应数据分组之外,交换机100还可以处理确定性数据分组。例如,输入端口102a可以接收要发送到目的地节点(例如,耦合到目的地处理器)的确定性数据分组。例如,输入端口102a可以接收与标识目的地节点的确定性数据分组相关联的dlid。

在各种实施例中,路由查找电路106a可以识别单个目的地输出端口(例如,输出端口104a-c之一),其中要向其发送确定性数据分组。路由查找电路106a可以例如基于一个或多个路由表来识别目的地输出端口。路由查找电路106a可以在确定性数据分组缓冲在输入队列108a中之前识别目的地输出端口。

然后,输入队列108a可以将确定性数据分组与标识目的地输出端口的路由信息一起缓冲。当确定性数据分组准备好路由到目的地输出端口时,输入队列108a可以将确定性数据分组传递到交叉开关112。交叉开关112可以将确定性数据分组路由到目的地输出端口。

在各种实施例中,在数据分组被缓冲在输入队列108a中之前针对确定性数据分组的目的地输出端口的识别可以允许输入队列108a使用虚拟输出排队和/或其他机制来基于它们相关联的路由信息(例如,它们相关联的目的地输出端口)存储和/或处理输入队列108a内的数据分组。

图2示出了根据各种实施例的用于在交换机中路由自适应数据的方法200。方法200可以由例如交换机100执行。在一些实施例中,交换机可以包括或能够访问具有存储在其上的指令的一个或多个非暂时性计算机可读介质,当执行指令时,使交换机执行方法200。

在方法200的框202处,交换机可以接收要路由到目的地节点的数据分组。数据分组可以例如由交换机的输入端口接收。在一些实施例中,交换机可以接收与数据分组相关联的dlid以指示目的地节点。

在方法200的框204处,交换机可以识别包括多个输出端口(其可用于将数据分组路由到目的地节点)的第一组输出端口。块204可以由例如交换机的路由查找电路来执行。

在方法200的框206处,交换机可以在数据分组被缓存在交换机的输入队列之前的第一时间点处基于与第一组输出端口的输出端口相关联的第一拥塞信息,来选择要被包括在第二组输出端口中的第一组输出端口的输出端口的子集。在实施例中,第二组输出端口可以包括多个输出端口。在一些实施例中,交换机可以选择具有如第一拥塞信息所指示的最低拥塞级别的第一组输出端口的输出端口。框206可以由例如交换机的路由查找电路执行。

在方法200的框208处,交换机可以在交换机的输入队列中缓冲数据分组和与数据分组相关联的路由信息。路由信息可以包括标识被包括在第二组输出端口中的输出端口的信息。

在方法200的框210处,交换机可以在数据分组被缓冲在输入队列中之后的第二时间点处基于与第二组输出端口的输出端口相关联的第二拥塞信息,来选择目的地输出端口,其中数据分组将由交换机路由到的所述目的地输出端口。目的地输出端口可以从第二组输出端口的输出端口中选择。在一些实施例中,第二时间点可以对应于数据分组准备好离开输入队列的时间或数据分组已经从输入队列中移除之后的时间。框208可以由例如交换机的路由选择电路来执行。

在方法200的框212处,交换机可以将数据分组路由到目的地输出端口。框212可以由例如交换机的交叉开关执行。

图3示出了适合用于实践本公开的所选方面的示例性计算系统300(以下称为“系统300”)。如图所示,系统300可以包括多个计算机301和耦合到计算机的结构或网络320。结构或网络320可以包括彼此耦合以在计算机301之间(例如,在计算机301的处理器302之间)路由数据的多个交换机330。交换机330中的一个或多个可以对应于本文所述的交换机100和/或可以执行本文所述的方法200。

计算机301可以耦合到多个交换机330以在两个计算机301之间提供多个路由路径。虽然在图3中仅示出了两个计算机301,但是将理解的是,结构或网络320和/或交换机330可以用于在任何合适数量的计算机301(包括两台以上的计算机301)之间路由数据。交换机可以包括路由管理逻辑340以执行本文描述的路由过程的一个或多个方面。在一些实施例中,交换机330可以耦合到计算机301的通信接口310。可替代地或另外,交换机330可以耦合到单个计算机301的多个处理器302,以在处理器302之间路由数据。在一些实施例中,交换机330可以与一个或多个处理器一起被包含在相同的封装中(例如,在片上系统(soc)中)。

单独的计算机301可以包括一个或多个处理器或处理器核302和系统存储器304。为了包括权利要求的本申请的目的,术语“处理器”和“处理器核”可以被认为是同义的,除非上下文明确做其他要求。此外,计算机301可以包括大容量存储设备306(诸如软盘,硬盘驱动器,光盘只读存储器(cd-rom)等等),输入/输出设备308(诸如显示器,键盘,光标控件等等)和通信接口310(诸如网络接口卡,调制解调器等)。元件可以经由系统总线312彼此耦合,系统总线312可以表示一个或多个总线。在多个总线的情况下,它们可以由一个或多个总线桥(未示出)桥接。这些元件中的每一个可以执行其在本领域已知的常规功能。在一些实施例中,计算机301可以是固定设备、移动设备或服务器。

如本领域技术人员将理解的,本公开可以体现为方法或计算机程序产品。因此,除了如前所述以硬件体现之外,本公开可以采取完全软件实施例(包括固件、常驻软件、微代码等)的形式或组合软件和硬件方面的实施例的形式,其可以通常被称为“电路”,“模块”或“系统”。此外,本公开可以采用计算机程序产品的形式,所述计算机程序产品体现为具有在介质中体现的计算机可用程序代码的表达的任何有形的或非暂时性的介质。图4示出了可能适合用于存储指令的示例性的计算机可读非暂时性存储介质,其响应于装置执行指令而使装置实践本公开的所选方面。如图所示,非暂时性计算机可读存储介质402可以包括多个编程指令404。编程指令404可以被配置为使得设备,例如交换机100或交换机330,能够响应于编程指令的执行而执行本文描述的路由过程(例如,关于图1描述的路由过程或图2的方法200)。在替代实施例中,编程指令404可以被替换地布置在多个计算机可读非暂时性存储介质402上。在替代实施例中,编程指令404可以被布置在诸如信号的计算机可读暂时性存储介质402上。

可以使用一个或多个计算机可用或计算机可读介质的任何组合。计算机可用或计算机可读介质可以是例如但不限于电子,磁性,光学,电磁,红外或半导体系统,装置,设备或传播介质。计算机可读介质的更具体的示例(非穷尽列表)将包括以下内容:具有一条或多条电线的电连接,便携式计算机软盘,硬盘,随机存取存储器(ram),只读存储器(rom),可擦除可编程只读存储器(eprom或闪速存储器),光纤,便携式光盘只读存储器(cd-rom),光存储设备,诸如支持互联网或内联网的传输介质的传输介质,或磁存储设备。请注意,计算机可用或计算机可读介质甚至可以是打印有程序的纸张或其他合适的介质,因为程序可以经由例如纸张或其他介质的光学扫描被电子捕获,然后编译、解释或在必要时以合适的方法通过其他方式处理,然后存储在计算机存储器中。在本文档的上下文中,计算机可用或计算机可读介质可以是可以包含、存储、通信、传播或传送程序以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用的任何介质。计算机可用介质可以包括在其上体现有计算机可用程序代码的传播的数据信号,无论是在基带还是作为载波的一部分。计算机可用程序代码可以使用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等。

用于执行本公开的操作的计算机程序代码可以以一种或多种编程语言的任何组合来编写,包括面向对象的编程语言,例如java,smalltalk,c++等,以及常规过程编程语言,诸如“c”编程语言或类似的编程语言。程序代码可以以下方式执行:完全在用户的计算机上,部分地在用户的计算机上,作为独立的软件包,部分地在用户的计算机上且部分地在远程计算机上,或者完全在远程计算机或服务器上。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(lan)或广域网(wan),或者连接可以连接到外部计算机(例如,使用互联网服务提供商而通过互联网)。

参考根据本公开的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图来描述本公开。应当理解,可以由计算机程序指令来实现流程图说明和/或框图的每个块以及流程图说明和/或框图中的块的组合。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器以产生机器,使得经由计算机的处理器或其他可编程数据处理装置来执行的指令创建用于实现流程图和/或框图的一个框或多个框中指定的功能/动作的单元。

这些计算机程序指令还可以存储在计算机可读介质中,该介质可以引导计算机或其他可编程数据处理装置以特定方式工作,使得存储在计算机可读介质中的指令产生包括实现流程图和/或框图的一个框或多个框中指定的功能/动作的指令单元的制品。

计算机程序指令还可以被加载到计算机或其他可编程数据处理装置上,以使得在计算机或其他可编程装置上执行一系列操作步骤以产生计算机实现的过程,使得在计算机或其他可编程装置上执行的指令提供用于实现流程图和/或框图的一个框或多个框中指定的功能/动作的处理。

附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。在这方面,流程图或框图中的每个框可以表示模块、段或代码的部分,其包括用于实现指定的逻辑功能的一个或多个可执行指令。还应该注意的是,在一些替代的实现中,框中提及的功能可能不按照图中所示的顺序进行。例如,依次示出的两个框实际上可以基本上同时执行,或者有时可以以相反的顺序执行框,这取决于所涉及的功能。还将注意到,框图和/或流程图说明的每个框,和框图和/或流程图说明中的框的组合可以由执行指定功能或动作的基于专用硬件的系统、或专用硬件和计算机指令的组合来实现。

本文使用的术语仅用于描述特定实施例的目的,并不旨在限制本公开。如本文所使用的,单数形式“一(a)”、“一个(an)”和“该(the)”意图也包括复数形式,除非上下文另有明确指出。将进一步理解,当在本说明书中使用时,术语“包括”和/或“包括有”指定所述特征、整体、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整体、步骤、操作、元件、组件和/或其组合的存在或添加。

实施例可以被实现为计算机进程,计算系统或者诸如计算机可读介质的计算机程序产品之类的制品。计算机程序产品可以是计算机系统可读的并编码用于执行计算机进程的计算机程序指令的计算机存储介质。

所附权利要求书中的所有单元或步骤加功能元素的对应结构、材料、动作和等效物旨在包括与特别要求保护的其它要求保护的元素结合执行功能的任何结构、材料或动作。本公开的描述是为了说明和描述的目的而呈现的,但并不旨在穷举或被限制于所公开的形式的公开。在不脱离本公开的范围和精神的情况下,许多修改和变化对于普通技术人员将是显而易见的。选择和描述实施例以便最好地解释本公开的原理和实际应用,并且使得本领域其他的普通技术人员能够理解具有适合于所预期的特定用途的各种修改的实施例的公开。

各种实施例的一些非限制性示例在下面给出。

示例1是交换机,包括:用于接收要发送到目的地节点的数据分组的输入端口,以及耦合到输入端口的路由查找电路。路由查找电路用于:确定可用于将数据分组发送到目的地节点的第一多个输出端口;并且基于与所述第一多个输出端口中的各个输出端口相关联的相应拥塞级别,从所述第一多个输出端口中选择第二多个输出端口。示例1的交换机还包括耦合到路由查找电路的输入队列,输入队列用于缓冲数据分组;以及耦合到所述输入队列的路由选择电路,所述路由选择电路基于与所述第二多个输出端口相关联的更新的拥塞级别,从所述第二多个输出端口选择输出端口,其中要向所述输出端口发送数据分组。

示例2是示例1的交换机,其中输入队列还用于缓冲与数据分组相关联的路由信息,包括标识第二组输出端口的输出端口的路由信息。

示例3是示例1的交换机,还包括交叉开关电路,所述交叉开关电路耦合到路由选择电路以将数据分组从输入队列路由到从第二多个输出端口选择的输出端口。

示例4是示例1的交换机,其中输入端口还进一步接收标识目的地节点的目的地本地标识符(dlid)。

示例5是示例1的交换机,其中路由查找电路在数据分组被缓冲在输入队列中之前选择第二多个输出端口。

示例6是示例5的交换机,其中当数据分组准备好从输入队列中拉出时或者在数据分组被从输入队列拉出后,路由选择电路从第二多个输出端口中选择输出端口。

示例7是示例1至6中任一个的交换机,其中数据分组是自适应数据分组。

示例8是示例7的交换机,其中:输入端口还用于接收确定性数据分组;并且路由查找电路在确定性数据分组被缓冲在输入队列中之前识别单个输出端口,其中要向所述单个输出端口发送确定性数据分组。

示例9是示例1的交换机,其中第二组输出端口包括两个输出端口。

示例10是示例1的交换机,其中交换机被包括在包括耦合到交换机的一个或多个处理器的设备中。

示例11是示例1的交换机,其中交换机包括64个输入端口和64个输出端口。

示例12是用于由交换机执行的路由数据的方法,所述方法包括:通过所述交换机的输入端口接收要路由到目的地节点的数据分组;由所述交换机的路由查找电路来识别可用于将所述数据分组路由到所述目的地节点的第一多个输出端口;由所述交换机的路由查找电路在数据分组被缓冲在交换机的输入队列之前的第一时间点处基于与第一多个输出端口的各个输出端口相关联的第一拥塞信息,选择要被包括在第二多个输出端口中的第一多个输出端口的子集;以及由所述交换机的路由选择电路在所述数据分组被缓冲在所述输入队列中之后的第二时间点处基于与所述第二多个输出端口的各个输出端口相关联的第二拥塞信息,选择目的地输出端口,其中要由所述交换机向所述目的地输出端口路由所述数据分组。

示例13是示例12的方法,还包括在输入队列中缓冲数据分组和与数据分组相关联的路由信息,路由信息包括标识被包括在第二多个输出端口中的输出端口的路由信息。

示例14是示例12的方法,还包括将数据分组从输入队列路由到目的地输出端口。

示例15是示例12的方法,其中接收数据分组包括接收自适应数据分组。

示例16是示例12的方法,还包括:接收确定性数据分组;以及在所述确定性数据分组被缓冲在输入队列中之前,识别单个输出端口,其中要向所述单个输出端口发送所述确定性数据分组。

示例17是示例12的方法,其中第二时间点对应于数据分组准备好离开输入队列的时间或数据分组已经从输入队列中移除之后的时间。

示例18是一种或多种非暂时性计算机可读介质,其具有存储在其上的指令,当指令被一个或多个处理器执行时,使交换机执行示例12至17中任一个的方法。

示例19是一种计算系统,包括:多个处理器;以及耦合到所述多个处理器的交换机,用于在所述多个处理器之间路由数据。示例19的交换机包括:用于接收自适应数据分组和用于指示数据分组的目的地节点的相关联的目的地本地标识符(dlid)的输入端口。示例19的交换机还包括耦合到输入端口的路由查找电路,路由查找电路用于:确定第一组输出端口,包括可用于将数据分组发送到目的地节点的多个输出端口;获取与所述第一组输出端口的输出端口相关联的第一拥塞信息;并且基于所述第一拥塞信息,从所述第一组输出端口的输出端口中选择用于第二组输出端口的多个输出端口,所述第二组输出端口包括所述第一组输出端口中的输出端口的子集。示例19的交换机还包括耦合到路由查找电路的输入队列,所述输入队列用于存储数据分组和标识第二组输出端口的输出端口的路由信息。

示例20包括示例19的系统,还包括耦合到输入队列的路由选择电路,路由选择电路用于:获得与第二组输出端口的输出端口相关联的第二拥塞信息;并且基于第二拥塞信息,从第二组输出端口选择目的地输出端口,其中要向所述目的地输出端口路由数据分组。

示例21是示例20的系统,其中交换机还包括耦合到路由选择电路的交叉开关,用于将数据分组从输入队列路由到目的地输出端口。

示例22是示例20的系统,其中当数据分组准备好被从输入队列中移除时或者在数据分组从输入队列中移除之后,路由选择电路将选择目的地输出端口。

示例23是示例19的系统,其中交换机包括64个输入端口和64个输出端口。

示例24是示例19的系统,其中:输入端口还用于接收要被确定性地路由的确定性数据分组;并且路由查找电路将在确定性数据分组被缓冲在输入队列中之前识别单个输出端口,其中要向所述单个输出端口发送确定性数据分组。

示例25是示例19的系统,还包括结构或网络,其包括与多个其它交换机耦合的交换机,用于在多个处理器之间路由数据。

示例26是交换机,包括:用于识别可用于向目的地节点发送数据分组的第一多个输出端口的单元;用于在所述数据分组被缓冲在所述交换机的输入队列之前的第一时间点处基于与所述第一多个输出端口的各个输出端口相关联的第一拥塞信息来选择要被包括在第二组输出端口中的所述第一多个输出端口的子集的单元;以及用于在所述数据分组被缓冲在所述输入队列中之后的第二时间点处基于与所述第二多个输出端口的各个输出端口相关联的第二拥塞信息来选择目的地输出端口的单元,其中所述数据分组要由交换机路由到所述目的地输出端口。

示例27是示例26的交换机,还包括用于在所述输入队列中缓冲所述数据分组和与所述数据分组相关联的路由信息的单元,所述路由信息包括标识被包括在所述第二多个输出端口中的输出端口的路由信息。

示例28是示例26的交换机,还包括用于将数据分组从输入队列路由到目的地输出端口的单元。

示例29是示例26的交换机,其中数据分组是自适应数据分组。

示例30是示例29的交换机,还包括:用于接收确定性数据分组的单元;以及用于在确定性数据分组被缓冲在输入队列中之前识别单个输出端口的单元,其中要向所述单个输出端口发送确定性数据分组。

示例31是示例26至30中任一个的交换机,其中第二时间点对应于数据分组准备好离开输入队列的时间或数据分组已经被从输入队列中移除之后的时间。

示例32是一个或多个非暂时性计算机可读介质,其包括在由交换机的一个或多个处理器执行指令时使得交换机执行以下操作的指令:识别可用于发送数据分组到目的地节点的第一多个输出端口;在所述数据分组被缓冲在所述交换机的输入队列之前的第一时间点处基于指示与所述第一多个输出端口的各个输出端口相关联的拥塞的第一拥塞信息,选择要被包括在第二多个输出端口中的第一多个输出端口的子集;并且在所述数据分组被缓冲在所述输入队列中之后的第二时间点处基于指示与所述第二多个输出端口的各个输出端口相关联的拥塞的第二拥塞信息,选择目的地输出端口,其中要由交换机将所述数据分组路由到所述目的地输出端口。

示例33是示例32的一个或多个非暂时性计算机可读介质,其中所述指令在被执行时,进一步使交换机在输入队列中缓冲数据分组和与数据分组相关联的路由信息,路由信息包括标识被包括在第二多个输出端口中的输出端口的路由信息。

示例34是示例32的一个或多个非暂时性计算机可读介质,其中所述指令在被执行时,进一步使所述交换机将数据分组从输入队列路由到目的地输出端口。

示例35是示例32的一个或多个非暂时性计算机可读介质,其中数据分组是自适应数据分组。

示例36是示例32的一个或多个非暂时性计算机可读介质,其中所述指令在被执行时进一步使所述交换机:接收确定性数据分组;并且在确定性数据分组被缓冲在输入队列中之前,识别单个输出端口,其中要向所述单个输出端口发送确定性数据分组。

示例37是示例32至36中任一示例的一个或多个非暂时性计算机可读介质,其中第二时间点对应于数据分组准备好离开输入队列的时间或数据分组已经被从输入队列中移除之后的时间。

对于本领域技术人员显而易见的是,在所公开的设备和相关联的方法的公开的实施例中可以进行各种修改和变化,而不脱离本公开的精神或范围。因此,本公开旨在涵盖以上所公开的实施例的修改和变化,只要这些修改和变化属于任何权利要求及其等同方案的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1