CN102449961A - 用于分组路由的方法和装置 - Google Patents
用于分组路由的方法和装置 Download PDFInfo
- Publication number
- CN102449961A CN102449961A CN2010800226243A CN201080022624A CN102449961A CN 102449961 A CN102449961 A CN 102449961A CN 2010800226243 A CN2010800226243 A CN 2010800226243A CN 201080022624 A CN201080022624 A CN 201080022624A CN 102449961 A CN102449961 A CN 102449961A
- Authority
- CN
- China
- Prior art keywords
- node
- layer
- unit
- network
- point
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/64—Routing or path finding of packets in data switching networks using an overlay routing layer
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/04—Interdomain routing, e.g. hierarchical routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/02—Topology update or discovery
- H04L45/06—Deflection routing, e.g. hot-potato routing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/40—Wormhole routing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Small-Scale Networks (AREA)
- Multi Processors (AREA)
Abstract
描述了用于在网络中路由分组的方法和装置。所述网络具有以包括n个层的节点层级结构为特征的拓扑。L表示所述结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层。所述方法包括:在第一节点至少接收分组的分组报头;基于所述分组报头,确定是否将所述分组传送到层L、层L+1或层L-1中的第二节点。在所述第一节点处一接收所述分组就将所述分组传送到第二节点而并不等待接收到整个分组并且不在从所述第一节点进行传输之前复制所述分组。
Description
技术领域
本发明涉及电子通信。
背景技术
网络节点和链路的布置由网络拓扑来定义。网络拓扑能够确定网络节点之间的物理和逻辑互连,其中每个节点具有到一个或多个其它节点的一个或多个链路。网络的物理拓扑由节点之间的物理连接的配置所确定。该配置可以通过例如环、星、线、晶格、超立方体、环的多维几何形状来表示。网络的逻辑拓扑由节点之间的数据流动所所确定。
处理节点的网络可以被用于超级计算应用。例如,大型超级计算应用可以被分为在网络的不同处理节点上运行的不同指令子集。为了减少等待时间并提高效率,跨整个网络的业务分布以及本地级别的节点间的最大通信是优选的。
典型地,网络的寻址和路由方案的复杂度随着网络拓扑的复杂度的增加而增加。复杂的路由表会需要大量的中央处理单元(CPU)时间来实现。传统的分组路由要求在能够对分组报头中的目的地地址能够进行解码并且能够转发分组之前必须在节点完全接收该分组,这导致了等待时间。等待时间也会随着复杂的寻址方案而增加。复杂的网络拓扑会具有高的跳数与节点比,其中每一跳引入了分组等待时间的若干个时钟周期。
发明内容
本说明书描述了与网络拓扑相关的系统、方法和计算机程序产品。通常,在一个方面,本发明公开了一种包括节点的层级结构的网络。节点的结构包括n个层,所述n个层包括n-1个切换(switch)节点层以及1个计算节点层。该结构中的每一层包括分组成单元的mn-L个节点,其中m表示一个单元中节点的数目并且为大于1的整数。L表示结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层。除了计算层外的层中的每个节点包括用于该结构中下一个较低层中的单元的切换节点。对于每个单元,该单元中的每个节点通过点对点链路连接到该单元中的每个其它节点,该单元中的每个节点通过点对点链路连接到用于该单元的本地切换节点,并且该单元中的每个节点通过用于该单元的本地广播网络连接到该单元中的每个其它节点以及本地切换节点。
所述网络的实施方式可以包括以下特征中的一个或多个。每个计算节点可以包括可操作以执行一个或多个应用的指令的处理元件。该结构中的最低层可以是计算节点层并且可以包括mn个计算节点。单元中的每个节点可以通过以太网连接到单元中的每个其它节点以及本地切换节点。每个计算节点可以包括处理元件、控制器和存储器。每个计算节点可以包括实现为现场可编程门阵列的通信硬件。
通常,在另一方面,本发明公开了一种包括节点的层级结构的网络,所述层级结构包括n个层。所述n个层包括n-1个切换节点层以及1个计算节点层。该结构中的每一层包括一个或多个节点单元,其中L表示该结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层,并且一个单元中节点的数目大于1。除了计算层外的层中的每个节点包括用于该结构中下一个较低层中的单元的切换节点。对于每个单元而言,该单元中的每个节点通过点对点链路连接到该单元中的每个其它节点,该单元中的每个节点通过点对点链路连接到用于该单元的本地切换节点,并且该单元中的每个节点通过用于该单元的本地广播网络连接到该单元中的每个其它节点和本地切换节点。
所述网络的实施方式可以包括以下特征中的一个或多个。一个或多个单元中所包括的一个或多个点对点链路可以被无效。该结构中的一个层中的每个单元可以具有相同数量的节点。该结构中的每一个层中的每个单元可以具有相同数量的节点。每个单元可以包括由包括8个节点的2×2×2立方体所表示的本地三维网络拓扑。每个计算节点可以包括可操作以执行一个或多个应用的指令的处理元件。
该结构中的最低层可以是计算节点层。单元中的每个节点可以通过以太网连接到该单元中的每个其它节点和本地切换节点。每个计算节点可以包括处理元件、控制器和存储器。每个计算节点可以包括实现为现场可编程门阵列的通信硬件。
通常,在另一方面,本发明公开了一种包括节点的层级结构和处理器的联网设备。所述节点的层级结构包括n个层,所述n个层包括n-1个切换节点层以及1个计算节点层。L表示该层级结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层。所述处理器被配置为对分组中所接收的n个位组进行处理,其中每个计算节点完全通过所述n个位组进行寻址,而层L的每个切换节点完全通过n-L个最高有效位组进行寻址。
所述联网设备的实施方式可以包括以下特征中的一个或多个。所述n个位组中的每一个可以包括相同数量的位。在一些实施方式中,每一层包括一个或多个节点单元,每个单元包括本地2×2×2的立方体网络,其在三个维度x、y和z的每一个中的每条边具有两个节点,并且使用范围从{0,0,0}到{1,1,1}的三维地址{x,y,z}在所述立方体网络内逻辑地定位每个节点,其中逻辑地定位所述立方体网络内的每个节点的三维地址包括所述n个位组中的一个。在一些实施方式中,每一层包括一个或多个节点单元,每个单元包括本地2×4×4的网络,所述网络在x维度中每条边具有两个节点并且在y和z维度中的每一个中的每条边具有四个节点,并且使用范围从{0,0,0,0,0}到{1,1,1,1,1}的三维地址{x,y1,y2,z1,z2}在所述本地网络内逻辑地定位每个节点,其中逻辑地定位所述本地网络内的每个节点的三维地址包括所述n个位组中的一个。
通常,在另一方面,本发明公开了一种在网络中路由分组的方法。所述网络具有以包括n个层的节点层级结构为特征的拓扑。所述n个层包括n-1个切换节点层以及1个计算节点层,其中L表示该结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层。分组在该结构的层L的切换节点被接收。所述分组包括报头,所述报头具有包括n个位组的第一地址。所述切换节点具有包括n-L个位组的第二地址。所述分组基于所述第一地址和第二地址的比较而被转发到层L、层L+1或层L-1中的节点。
在一些实施方式中,如果第一地址的n-L个最高有效位组与第二地址的n-L个位组相匹配,则消息可以在点对点链路上被转发至该结构的层L-1中完全由第一地址的n-L+1个最高有效位组所寻址的节点。如果所述n-L个组不相匹配但是第一地址的n-L-1个最高有效位组与第二地址的n-L-1个最高有效位组相匹配,则所述消息可以在点对点链路上被转发至该结构的层L中完全由第一地址的n-L个最高有效位组所寻址的切换节点。如果第一地址的n-L-1个最高有效位组与第二地址的n-L-1个最高有效位组不匹配,则所述消息可以在点对点链路上被转发至该结构的层L+1中完全由第二地址的n-L-1个最高有效位组所寻址的切换节点。
通常,在另一个方面,本发明公开了一种在网络中路由分组的方法,所述网络具有以包括n个层的节点层级结构为特征的拓扑。所述n个层包括n-1个切换节点层以及1个计算节点层,其中L表示该结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层。分组可以从层L的计算节点传送到层L的第二计算节点或者层L+1的切换节点。所述分组包括具有包括n个位组的第一地址的报头,并且所述计算节点具有包括n个位组的第二地址。所述分组可以基于所述第一和第二地址的比较进行传送。
在一些实施方式中,如果第一地址的n-1个最高有效位组与第二地址的n-1个最高有效位组相匹配,则消息可以在点对点链路上被转发至该结构的层L中完全由第一地址的n个位组所寻址的第二计算节点。如果所述n-1个组不相匹配,则所述消息可以在点对点链路上被转发至该结构的层L+1中完全由第二地址的n-1个最高有效位组所寻址的切换节点。
通常,在另一方面,本发明公开了一种在网络中路由分组的方法,所述网络具有以包括n个层的节点层级结构为特征的拓扑。L表示该结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层。所述方法包括在第一节点至少接收分组的分组报头,并且基于所述分组报头确定是否将所述分组传送到层L、层L+1或层L-1中的第二节点。所述分组在其在第一节点处被接收之后立刻被传送到第二节点而并不等待接收整个分组并且不在从第一节点进行传输之前复制所述分组。
所述方法的实施方式可以包括以下特征中的一个或多个。所述n个层可以包括n-1个切换节点层以及1个计算节点层。该结构中的每一层可以包括被分组成单元的节点,每个单元具有多于一个的节点,并且除了计算层外的层中的每个节点可以包括用于该结构中下一个较低层中的单元的切换节点。所述第一节点可以是切换节点,并且向层L中的第二节点传送分组可以包括通过点对点链路向在与所述第一节点相同的单元中的第二节点传送所述分组。向层L+1或层L-1中的第二节点传送分组可以包括通过点对点链路向在与所述第一节点不同的单元中的第二节点传送所述分组。
通常,在另一方面,本发明公开了一种包括节点的层级结构的系统,所述结构包括n个层。所述n个层包括n-1个切换节点层以及1个计算节点层,其中该层级结构中的每一层包括一个或多个节点单元。L表示该结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层,并且一个单元中的节点数目大于1。所述切换节点被配置为:至少接收分组的分组报头;基于所述分组报头确定是否将所述分组传送到层L、层L+1或层L-1中的第二节点;并且在切换节点处一接收形成消息的一个或多个分组就向第二节点传送所述分组而并不等待接收整个分组并且不在从切换节点进行传输之前复制所述分组。
所述系统的实施方式可以包括以下特征中的一个或多个。所述计算节点可以每一个包括至少一个处理器、通信硬件和存储器。所述至少一个处理器可以包括应用处理器和操作系统处理器。所述通信硬件可以包括现场可编程门阵列(FPGA)。所述通信硬件可以被配置为监视到计算节点的业务。所述通信硬件可以被配置为将在计算节点所接收的消息引导至所述处理器,并且从所述处理器接收消息以便传输到不同节点。除了计算层外的层中的每个节点可以包括用于该结构中下一个较低层中的单元的切换节点。对于每个单元,该单元中的每个节点可以通过点对点链路连接到该单元中的每个其它节点,该单元中的每个节点可以通过点对点链路连接到用于该单元的本地切换节点,并且该单元中的每个节点可以通过用于该单元的本地广播网络连接到该单元中的每个其它节点和本地切换节点。所述切换节点每一个可以包括处理器和通信硬件。
实施方式能够实现以下优势中的一个或多个。层级三维(3-D)网络拓扑允许简单的寻址方案,其中路由固有地链接至网络拓扑,促使以减少的等待时间进行快速的消息传递。所述网络拓扑还提供了处理节点的紧密本地群组的好处,便利了本地等级的业务分布。所述网络拓扑导致了用于点对点和广播通信的低的跳数与节点比。该协议是流化的(streamed),这允许切换节点在分组已经在该切换节点处被完全接收之前转发消息,进一步使得等待时间最小化。组播和广播通信仅使用分组传递所必要的网络层而并不用利用整个网络。
本发明的一个或多个实施例的细节在附图和以下描述中所给出。本发明的其它特征、目标和优势将根据所述描述和附图以及权利要求而变得显而易见。
附图说明
图1图示了具有网络拓扑的示例网络。
图2图示了示例的层级树形网络。
图3图示了示例的层级3-D网络。
图4图示了用于图2的层级树形网络的示例寻址方案。
图5图示了层级3-D网络的2×2×2单元的示例寻址。
图6图示了层级3-D网络的2×4×4单元的示例寻址。
图7图示了具有网络拓扑的示例网络。
图8图示了示例的层级树形网络。
图9图示了用于图8的层级树形网络的示例寻址方案。
图10是使用图4的寻址方案对在图2的层级树形网络中的切换节点所接收的消息进行路由的示例过程的流程图。
图11是使用图4的寻址方案对源于图2的层级树形网络中的计算节点的消息进行路由的示例过程的流程图。
图12是示例的计算机系统的示意图。
相同的附图标记在各图中指示相同的要素。
具体实施方式
描述了一种具有包括节点的层级结构的网络拓扑的网络。在一些实施方式中,所述层级结构可以包括n个层:n-1个切换节点层以及1个计算节点层。该结构中的每一层可以包括一个或多个单元,单元包括一组节点。一层内的每个单元可以具有与不同层中的单元相同或不同数量的节点。除了计算层外的层中的每个节点可以包括用于该结构中下一个较低层中的单元的切换节点。单元中的每个节点可以通过点对点链路连接到该单元中的每个其它节点以及该单元的本地切换节点。单元中的每个节点还可以通过用于该单元的本地广播网络连接到该单元中的每个其它节点以及本地切换节点。
所述网络拓扑是层级(例如,树形)网络拓扑和全连接网络拓扑的混合。在一些实施方式中,该层级结构中一层的每个单元具有2×2×2布置的八个完全连接的节点,其可以被形象化为三个维度中的每一个的每边具有两个节点的立方体网络。可以使用简单的寻址方案通过该3-D网络对消息进行路由。单元本地的该3-D网络可以通过该结构的层而分层级地重复以贯穿整个网络保持相同的属性。这种布置允许在不需要复杂路由表或占用大量CPU时间实现的其它复杂方案的情况下实现复杂网络。
图1中图示了网络拓扑100的示例。具体地,图1图示了处于网络拓扑100的层级结构中最底层的计算节点104的单元102。单元102的本地网络拓扑由八个环绕的被称作叶节点的计算节点104所形成。
在一些实施方式中,每个计算节点104包括可操作以执行一个或多个应用的指令的处理元件。在一些实施方式中,不同计算节点104包括不同的处理元件。在一些实施方式中,一些计算节点104包括不同或独特的处理元件,而其余计算节点104则包括统一的处理元件。在一些实施方式中,一个或多个切换节点108包括例如用于业务管理的处理元件。
每个计算节点104通过点对点链路106(例如,高速节点对节点链路)连接到单元102的每个其它计算节点104。每个计算节点104通过点对点链路110(例如,高速的切换至节点的链路)连接到下一个较高层中的单元的切换节点108。每个计算节点104还通过用于单元102的本地广播网络112连接到单元102的每个其它计算节点104以及切换节点108。切换节点108可以将用于单元102的本地广播网络112桥接到网络拓扑100的层级结构的其它单元的其它本地广播网络。本地广播网络112允许与单元102的所有计算节点104或者单元102的计算节点104的子集进行通信。
操作系统(OS)软件可以遍布网络在每个节点和切换进行分布。OS软件可以包括本地服务以及系统级监管功能。在一些实施方式中,每个计算节点104还通过以太网114连接到单元102的每个其它计算单元104和切换节点108。以太网114可以被用于独立于应用软件的系统管理功能(例如,低数据速率系统维护和监视)。以太网114上的通信示例包括与CPU温度、时间同步和传输控制协议(TCP)相关的日志信息。在一些实施方式中,如果网络拓扑100不包括以太网114,则系统管理消息可以在点对点链路(例如,节点到节点链路以及切换到节点的链路)上进行传输。
在一些实施方式中,网络拓扑100的层级结构中每一层的每个单元具有相同的节点布置。然而,对于在最低层之上的层,单元的每个节点是用于在下面的层中的单元的切换节点。例如,切换节点108是第二个最低层(即,层L=1)中的单元的节点,并且用作最低层(即,层L=0)中单元102的切换。在一些实施方式中,层中单元的切换节点完全通过点对点(即,切换到切换)链路进行连接。例如,第二个最低层中的单元的切换节点108通过切换到切换链路116连接到相同单元中的所有其它切换节点以及上一层中的单元的切换节点。如以上所提到的,在其它实施方式中,单元中的节点的数目可以跨层而有所变化。
多维的层级可扩展网络可以使用图1的示例性网络拓扑100。在层级结构中每一层的每个单元具有八个节点的2×2×2立方的本地3-D网络拓扑的实施方式中,可以使用从{0,0,0}到{1,1,1}的3-D地址逻辑地在八位组内定位每个节点。也就是说,使用三个位在单元内寻址每个节点。该层级结构的最低层的计算节点的完整地址是被分为三位组的二进制数。所述二进制数的三个最低有效位(LSB)的组识别最低层的单元的特定计算节点(即,叶节点),而更高有效位的每个组则对应于该层级结构中较高层的特定切换节点。以下关于图4-5更为详细地描述对多维层级可扩展网络进行寻址。
所描述的多维层级网络可以按照需要利用连续较大的层级层进行缩放以适应超级计算应用。所述多维层级网络提供了超级规模的计算中所需要的有效且灵活的高速通信。例如,在单元的本地网络拓扑内使用专用的点对点通信使得本地吞吐量最大化。用于单元的本地广播网络允许独立于点对点链路的群组通信。每个切换节点是具有点对点和广播链路的另一个单元的一部分,其提供遍及该灵活的网络的点对点、组播和广播通信。
所述多维层级网络可以被设计为去除系统开销以便相对于成本和能耗而使得等待时间最小化并且使得性能最大化。例如,实现所述多维层级网络的系统可以利用用于消息传送的工业标准应用编程接口(API)提供以最小的软件开销实现的软件应用。
图2图示了示例性的层级树形网络200。该示例性的层级树形网络200图示了观看图1的示例性网络拓扑100的层级结构的一种方式。
示例性的层级树形网络200包括n个层,所述n个层包括n-1个切换节点108的层以及1个计算节点104的层,其中n=10。如所图示的,计算节点104的层210是最低层(即,层L=0)。切换节点108的层210是较高的n-1=9个层(即,层L=1,2,…,9)。每个层L包括mn-L个节点,其中m表示单元中节点的数目并且是大于1的整数。在图2的示例中,单元中的节点数目m是8。因此,最低层的每个单元包括8个计算节点104,并且较高层的每个单元包括8个切换节点108。每个切换节点108作为下一个较低层210中单元的节点的切换。对于该n=10且m=8的示例,最低层(即,层L=0)包括810-0=1,073,741,824个计算节点104。每个计算节点104可以包括可操作以执行一个或多个软件应用的指令的处理元件。
为了图2的简明,仅图示了一部分切换到节点链路110和切换至切换链路116。最低层的单元的计算节点104之间的节点到节点链路106以及较高层的单元的切换节点108之间的切换至切换链路116没有被图示。除了层L=1之外,仅图示了来自切换节点108的每一层210的一个子树。广播网络112也没有进行图示。
图3图示了示例性的层级3-D网络300。示例性的层级3-D网络300图示了观看图1的示例性网络拓扑100的层级结构的另一种方式。图3图示了示例性层级3-D网络300的节点的三个层310-312,所述节点包括层310、311中的切换节点(例如,切换节点108)以及层312中的计算节点(例如,计算节点104)。示例性的层级3-D网络300可以包括附加的层(未示出)。为了图3的简明,仅图示了层311和312中每一个的一部分。
在该实施方式中,层级3-D网络300中一层的每个单元320具有作为立方网络的以2×2×2布置的8个完全连接的节点,其中三个维度的每一个中的每边具有两个节点。在较高的两层310和311中,每个节点(即,切换节点108)分别作为下一个较低层中单元320的节点的切换,所述下一个较低层即层311和312。层的单元320的每个切换节点108链接到相同层中相同单元320的每个其它切换节点108以及下一个较低层中单元320的每个节点。例如,层310中的单元320包括8个切换节点322a-h。切换节点322a-h中的每一个作为下一个下方层中所包括的单元的切换节点,所述下一个下方层即层311。在该示例中,切换节点322h作为包括8个节点324a-h的层311中的单元320的切换节点。8个节点324a-h也是切换节点,其中切换节点324a-h中的每一个作为下一个下方层即层312中包括的单元的切换节点。例如,切换节点324h作为具有8个节点326a-h的层312中所包括的单元320的切换节点。在该示例中,8个节点326a-h是计算节点。
图4图示了用于图2的层级树形网络200的示例性寻址方案400,该寻址方案可以通过包括处理器的联网设备来实现。示例性的寻址方案400以四字节地址字为消息提供作为30位地址405(即,从位0到位29)的目的地地址。30位地址405被分为10个3位的组410,即位字段Add0,Add1,…,Add9。所述四字节地址字的两个最高有效位(MSB)(即,位30和位31)可以另外设置为供未来使用的保留位字段420。
30位地址405的三个最低有效位(LSB)的组410(即,位字段Add0)识别层级树形网络200的最低层中单元的特定计算节点104,而更高有效位的每个组410(即,位字段Add1至Add9)对应于该层级结构中连续较高层中单元的特定切换节点108。也就是说,最低层L=0中单元的8个计算节点104通过Add0进行寻址,而层L=1至L=9的切换节点108则分别通过Add1至Add9进行寻址。
每个计算节点104完全通过整个30位地址405(即,通过位字段Add0至Add9)进行寻址。给定层的每个切换节点108完全通过使用从该给顶层的位字段组410到MSB的组410的部分地址进行寻址。例如,层L=3的切换节点108完全通过位字段Add3至Add9进行寻址。
在一些实施方式中,每个消息分组包括具有多个字段的报头,所述字段例如包括目的地地址、消息分组的大小、消息分组的校验和以及源地址。所述报头可以由操作系统(OS)软件和硬件在数据传输时部分地置于数据之前。所述分组报头提供完整传递分组所需的所有数据。所述校验和可以由OS在进行发送时添加以提供整个分组有效的简单校验。可以在目的地进行校验。在一个示例中,所使用的校验和是如互联网协议(RFC971)中所使用的1的补码和。
保留的位字段420可以被用于地址范围扩展,允许灵活的地址字数目同时为寻址方案400保持相同的整体结构。例如,四字节地址字的MSB(即,位31)可以是指示目的地地址是否完全由该四字节地址字所指定或者该四字节地址字中的目的地地址是否是多字目的地地址的高位部分的继续位。后续的地址字也可以使用MSB来指示多字目的地地址的另一部分。
所述四字节地址字的第二个MSB(即,位30)可以指示目的地地址是否为点对点协议地址,或者目的地地址是否指定了目的地组(例如,多个节点)的描述符。如果第二个MSB指示目的地地址指定了组描述符,则目的地地址的位可以包括目的地组的标识符。在一个实施方式中,如以下所描述的,节点的通信硬件可以使用组描述符来分配用于传送消息的链路。
使用示例性寻址方案400的消息路由不需要复杂的路由方案,例如复杂的路由表。对于从最低层的单元的源计算节点104所发送的单个目的地消息,在其上发送消息分组的链路是指向相同单元的其它七个对等计算节点104中的一个或者源计算节点104(例如,通过图1的切换到节点链路110)所连接的切换节点108。如果位字段Add1至Add9的组410在源计算节点104的地址和消息分组的报头中所指定的目的地计算节点104的地址之间是相等的,则消息在链路(例如,图1的节点至节点的链路106)被发送到其它七个对等计算节点104中的一个。如果位字段Add1至Add9的组410在源计算节点104的地址和目的地计算节点104的地址之间不是相等的,则消息在链路上被发送到所连接的第二层的切换节点108。
对于在切换节点108处的消息路由,执行类似的地址位字段比较。例如,对于给顶层L的单元的给定切换节点108,在其上发送单个目的地消息分组的链路是指向给定切换节点108所连接到的层L+1的切换节点108(例如,通过图1的切换至切换链路116),相同单元的其它七个对等切换节点108中的一个(例如,通过图1的切换至切换的链路116),或者给定切换节点108所连接到的层L-1的八个节点中的一个。在其上发送消息分组的链路是通过将给定切换节点108的地址的位范围Add(L)至Add9与目的地节点的地址的相应位范围进行比较来确定的。以下关于图10-11对消息的路由进一步进行描述。
用于层级树形网络200的示例性寻址方案400针对点对点或组播而提供了低的跳数与节点比。在该示例性网络200中,从单元的任意第一计算节点104所传送的消息可以以最大18跳而到达不同单元的任意第二计算节点104。例如,从处于层L=0的第一单元的第一计算节点104,消息采用九跳到达该层级结构的最高层(即,层L=9),并且采用另外九跳到达最低层(即,层L=0),以便被路由到最低层的第二单元的第二计算节点104。然而,如果消息由于更高有效位的一个或多个组410在源计算节点104和目的地计算节点104之间是共同的而不需要被路由到最高层,则该消息可以少于最多18跳而被路由。
在一些实施方式中,四字节地址字是所接收的消息分组报头的第一部分。所述四字节地址字可以后跟分组大小字段,其指示多少数据要传送。该配置促成了流化链路协议,允许任意切换节点108一旦在接收到所述四字节地址字时并且在已经在切换节点108完全接收消息分组之前开始转发消息,除非分组由于拥塞而需要被缓存,否则这使得等待时间最小化。对于每跳两个周期的等待时间,如果协议被流化并且消息分组无需进行缓存,则从源计算节点104开始发送消息到在目的地计算节点104开始接收消息的最大等待时间是36个周期。
图5图示了用于例如图3的示例性层级3-D网络300的层级3-D网络的2×2×2单元的示例性寻址500。该单元具有以2×2×2布置作为立方体网络的八个完全连接的节点,其中在三个维度X、Y和Z的每一个中每边具有两个节点。可以使用从{0,0,0}到{1,1,1}的3-D地址{X,Y,Z}在所述立方体网络内逻辑地定位每个节点。也就是说,每个节点在单元内使用3个位进行寻址,每个位用于三个维度中的每一个。
图2的层级树形网络200图示了通过在层之间垂直以及在单元内水平地简单遍历树形网络而从任意其它节点到达任意节点的情形。图3的层级3-D网络300图示了可通过网络获得的复杂度和灵活性。实现层级3-D网络拓扑的系统可以由层级树形网络200和层级3-D网络300表示,并且可以使用图4的寻址方案400,其中每个2×2×2单元的寻址是通过图5的寻址500进行的。从层级树形网络200看,3位的地址字段可以识别单元的八个节点中的一个。从层级3-D网络300看,3位的地址字段可以被用作本地立方体网络的3-D笛卡尔坐标上的索引。
图6图示了用于层级3-D网络的2×4×4单元的示例性寻址方案600。单元具有以2×4×4布置作为3-D网络的32个完全连接的节点(没有全部示出),其中X维度中每边两个节点而在Y和Z维度的每一个中每边四个节点。可以使用从{0,0,0,0,0}到{1,1,1,1,1}的三维地址{X,Y1,Y2,Z1,Z2}在所述本地网络内逻辑地定位每个节点。也就是说,每个节点在单元内使用五个位进行寻址:X维度一个位,Y维度两个位,以及Z维度两个位。虽然图5和6图示了用于层级3-D网络的单元的两种寻址示例(即,2×2×2和2×4×4布置),但是在层级3-D网络拓扑中能够实现用于其它3-D节点布置的不同寻址。
在一些实施方式中,节点之间的一个或多个点对点链路可以被无效。例如,在利用用于层级网络的2×4×4单元的示例性寻址600实现层级3-D网络的系统上,如果在该系统上运行的应用仅需要每个单元18个节点,则所述2×4×4单元可以被连接为2×3×3单元,其中Y和Z维度中的节点之间的某些逻辑链路被无效。
在一些实施方式中,层级网络的所有层的单元具有相同的本地3-D网络拓扑。在这些实施方式中,识别层的单元中的节点的每个地址位组具有相同数目的位。
在一些实施方式中,层级网络的不同层的单元可以具有不同的本地3-D网络拓扑。在这些实施方式中,识别不同层的单元中的节点的地址位组可以具有不同数目的位。例如,最低层的计算节点的单元可以具有本地2×4×4网络拓扑,其中单元的每个计算节点通过5位的地址字段(例如,{X,Y1,Y2,Z1,Z2})来识别,而较高层的切换节点的单元可以具有本地2×2×2网络拓扑,其中单元的每个切换节点通过3位的地址字段(例如,{X,Y,Z})进行识别。
层级网络拓扑可以被实现为高于三的维度的网络。例如,系统可以实现层级四维(4-D)网络拓扑。图7图示了可以具有四个维度的示例性网络拓扑700。
图7图示了处于网络拓扑700的层级结构中最低层的计算节点704的单元702。单元702的本地网络拓扑由环绕的十六个计算节点704形成。在一个示例中,单元702的本地网络拓扑可以是2×2×2×2网络拓扑。
每个计算节点704通过点对点链路706连接到单元702的每个其它计算节点704。每个计算节点704通过点对点链路710连接到下一个较高层中的单元的切换节点708。每个计算节点704还通过用于单元702的本地广播网络712连接到单元702的每个其它计算节点704以及切换节点708。切换节点708可以将用于单元702的本地广播网络712桥接到网络拓扑700的层级结构的其它单元的其它本地广播网络。在一些实施方式中,每个计算节点704还通过以太网(未示出)连接到单元702的每个其它计算节点704以及切换节点708。
图8图示了示例性的层级树形网络800。示例性的层级树形网络800图示了查看图7的示例性网络拓扑700的层级结构的一种方式。在一个示例中,示例性层级树形网络800中的每个单元的本地网络拓扑可以是2×2×2×2网络拓扑。
示例性层级树形网络800包括切换节点708的一个层以及计算节点804的一个层。计算节点704的层是较低层,而切换节点708的层是较高层。示例性层级树形网络800中一层的每个单元中有十六个节点。每个切换节点708作为较低层中单元的节点的切换。对于该示例,较低层包括162=256个计算节点704。
为了图8的简明,仅图示了来自切换节点708的较高层的两个子树。因此,仅图示了一部分切换到节点链路710。此外,较低层的单元的计算节点704之间的节点至节点链路以及较高层的单元的切换节点708之间的切换至切换链路没有进行图示。
图9图示了用于图8的层级树形网络800的示例性寻址方案900。示例性寻址方案900提供了作为一个字节的8位地址905(例如,从位0到位7)的用于消息的目的地地址。8位地址905被分为两个四位组910,即位字段Add0和Add1。如果层级树形网络800的每个单元具有本地2×2×2×2网络拓扑,则每个节点在单元内使用用于四个维度中每一个的一个位进行寻址。在一些实施方式中,用于图8的层级树形网络800的寻址方案能够使用多于一个的字节,其中多余位(未示出)保留供未来使用。
8位地址905的四个LSB的组910(即,位字段Add0)识别层级树形网络800的较低层的单元的特定计算节点704,而四个MSB的组910(即,位字段Add1)则对应于该层级结构中较高层的特定切换节点708。每个计算节点704完全通过完整的8位地址905(即,通过位字段Add0和Add1)进行寻址。较高层的每个切换节点708完全通过使用MSB的位字段组910(即,位字段Add1)的部分地址进行寻址。例如,图8的切换节点810和820分别完全通过Add1={0,0,0,0}和Add1={1,1,1,1}进行寻址。图8的计算节点825通过点对点链路连接到切换节点820,并且完全通过{Add1,Add2}={1,1,1,1,0,0,0,1}进行寻址。
图10是使用图4的寻址方案400对在图2的层级树形网络200中的切换节点所接收的消息进行路由的示例性过程1000的流程图。为了方便,参见图1-2和4以及执行过程1000的系统对示例性过程1000进行描述。
示例性过程1000是用于网络拓扑(例如,图1的网络拓扑100)的寻址系统。所述网络拓扑具有包括n个层的节点的层级结构。所述n个层包括n-1个切换节点层以及1个计算节点层。该结构中的层由“L”表示,其为整数,其中L=0表示最低层而L=n-1表示最高层。对于在该结构的层L中的给定单元的切换节点处所接收的消息,示例性过程1000将该消息向上路由至该结构中的一层(例如,路由至层L+1中直接连接到所述给定单元的切换节点的切换节点),向下路由至该结构中的一层(例如,层L-1中直接连接到所述切换节点的节点中的一个),或者路由至给定单元的其它对等切换节点中的一个。
所述系统在该结构的层L的切换节点接收消息,其中所述消息包括报头,所述报头具有包括n个位组的第一地址(例如,目的地地址),并且所述切换节点具有包括n-L个位组的第二地址(步骤1010)。例如,所述寻址系统可以是图4的示例性寻址方案400,其中每个计算节点的30位地址405包括10个位组410。
所述系统确定所述第一地址的n-L个MSB组是否与第二地址的n-L个位组相匹配(判定1020)。例如,所述系统可以通过对第一和第二地址各自的位组应用位掩码来确定所述位组是否匹配。
如果系统确定所述n-L个组匹配(判定1020的“是”分支),则所述系统将消息在点对点链路上转发至该结构的层L-1中完全由第一地址的n-L+1个MSB组进行寻址的节点(步骤1030)。例如,所述系统能够向层级树形网络200的下一个级别将消息在切换至切换链路(例如,图1-2的切换至切换链路116)上转发到切换节点,或者在切换至节点链路(例如,图1-2的切换至节点的链路110)上转发到计算节点。
所述系统确定接收所述消息的节点(即,层L-1中完全由第一地址的n-L+1个MSB组进行寻址的节点)是否是目的地节点(判定1070)。例如,所述系统能够确定接收消息的节点是否是完全由第一地址的所有位进行寻址的计算节点。如果所述系统确定接收消息的节点是目的地节点(判定1070的“是”分支),则示例性过程1000结束。如果所述系统确定接收消息的节点不是目的地节点(判定1070的“否”分支),则示例性过程1000从步骤1010进行重复,其中在层L-1的节点接收所述消息。
如果所述系统确定所述n-L个组不匹配(判定1020的“否”分支),则系统确定第一地址的n-L-1个MSB组是否与第二地址的n-L-1个MSB组相匹配(判定1040)。如果系统确定所述n-L-1个组相匹配(判定1040的“是”分支),则系统将消息在点对点链路上转发到该结构的层L中完全由第一地址的n-L个MSB组进行寻址的切换节点(步骤1050)。例如,该系统可以在切换到切换链路(例如,图1-2的切换至切换链路116)上将消息在层级树形网络200的层L的单元内水平转发至相同单元的对等切换节点中的一个。示例性过程1000从步骤1010进行重复,其中在层L的节点接收所述消息。
如果系统确定所述n-L-1个组不匹配(判定1040的“否”分支),则系统在点对点链路上将所述消息转发至该结构的层L+1中完全由第二地址的n-L-1个MSB组进行寻址的切换节点(步骤1060)。例如,所述系统能够向层级树形网络200的上一个级别将消息在切换至切换链路(例如,图1-2的切换至切换链路116)上仅转发到等L+1中直接连接到该单元的切换节点的切换节点。示例性过程1000从步骤1010进行重复,其中在层L+1的节点接收所述消息。
图11是使用图4的寻址方案400将源于图2的层级树形网络200中的计算节点的消息路由至目的地节点的示例性过程1100的流程图。为了方便,参见图1-2和4以及执行过程1100的系统对示例性过程1100进行描述。
示例性过程1100是用于网络拓扑(例如,图1的网络拓扑100)的寻址系统。所述网络拓扑具有包括n个层的节点的层级结构。所述n个层包括n-1个切换节点层以及1个计算节点层。该结构中的层由“L”表示,其为整数,其中L=0表示最低层而L=n-1表示最高层。对于源于该结构的层L中的给定单元的计算节点的消息,示例性过程1100将该消息向上路由至该结构中的一层(即,路由至层L+1中直接连接到所述给定单元的计算节点的切换节点)或者路由至给定单元的其它对等计算节点中的一个。
所述消息从该结构的层L的计算节点进行路由。所述消息包括报头,所述报头具有包括n个位组的第一地址(例如,目的地地址),并且所述计算节点具有包括n个位组的第二地址(例如,源地址)。例如,所述寻址系统可以是图4的示例性寻址方案400,其中每个计算节点的30位地址405包括10个位组410。
所述系统确定所述第一地址的n-1个MSB组是否与第二地址的n-1个MSB组相匹配(判定1120)。该检查确定目的地节点是否处于给定单元中。如果所述系统确定所述n-1个组相匹配(判定1120的“是”分支),这指示目的地节点处于给定单元中,则所述系统将消息在点对点链路上转发至该结构的层L中完全通过第一地址的n个位组进行寻址的计算节点(步骤1130)。例如,所述系统能够在层级树形网络200的层L的单元内在节点对节点链路(例如,图1的节点到节点链路106)上将消息水平转发至相同单元的对等计算节点中的一个。层L中接收转发消息的计算节点是所述第一地址所指定的目的地地址。在步骤1130之后,示例性过程1100结束。
如果所述系统确定所述n-1个组不匹配(判定1120中的“否”分支),这指示目的地节点处于不同单元中,则所述系统将消息在点对点链路上转发至该结构的层L+1中完全由第二地址的n-1个MSB组进行寻址的切换节点(步骤1140)。例如,所述系统能够向层级树形网络200的上一个级别将消息在切换至节点链路(例如,图1-2的切换至节点链路110)上仅转发到等L+1中直接连接到该单元的计算节点的切换节点。示例性过程1100继续进行至图10的步骤1010,其中在层L+1的切换节点接收消息。
在一些实施方式中,所述系统使用来自服务器的以太网链路进行初始化(例如,引导)。该初始化过程可以在配置文件中指定系统的网络拓扑的情况下传达节点地址和级别信息。在一些实施方式中,所述系统能够自动检测网络拓扑。所述系统能够验证实际系统与所指定的网络拓扑相匹配。
在一些实施方式中,系统能够使用一个或多个所连接的半导体设备利用层级3-D网络拓扑(例如,层级树形网络200和层级3-D网络300所表示的网络拓扑)进行设计。例如,所述系统可以在多个可编程逻辑设备上实现,诸如用于每个节点的现场可编程门阵列(FPGA)。在一些实施方式中,每个节点利用专用集成电路(ASIC)来实现。在其它实施方式中,多个节点(例如,八个节点)的每个单元利用ASIC来实现,在用于该单元的ASIC内集中了单元的所有点对点通信链路,在单元内提供快速的本地通信。
在一些实施方式中,系统的一个或多个节点包括控制器、处理器和存储器。在一些实施方式中,多个节点(例如,作为集线器而被八个计算节点所环绕的一个切换节点)的控制器、处理器和存储器被集成在硅晶片的一个或多个晶元上。
在一些实施方式中,系统的每个计算节点包括例如中央处理单元(CPU)的处理器以及例如实现为控制器的通信硬件。在链路上从其它节点所接收的业务可以通过给定计算节点的通信硬件而被传递至给定计算节点的处理器。可以使用所述通信硬件的软件可读寄存器对业务进行监视以收集与链路条件相关的统计。可以通过给定计算节点的通信硬件来发送来自给定计算节点的业务。例如,如果业务的目的地是单个点,则给定计算节点的通信硬件能够适当地将该业务路由至相同单元的另一个计算节点或者连接到给定计算节点的切换节点。如果所述业务的目的地是多个点(例如,针对节点组的组播),则处理器软件能够使用组描述符来指派用于发送数据的链路,其中所述链路可以是到其它节点的链路或者广播网络上的链路。给定计算节点的通信硬件接着在所指派的链路上发送数据。在一些实施方式中,计算节点的通信硬件被实现为FPGA。
在一些实施方式中,所述系统的一个或多个切换节点包括处理器和通信硬件。在给定切换节点处接收的业务可以由给定切换节点的通信硬件在适当链路上进行转发。在给定切换节点处接收的组业务可以由给定切换节点的处理器进行解释并且由给定切换节点的通信硬件在根据组描述符指派的链路上进行转发。
在一些实施方式中,在切换节点或计算节点,节点的通信硬件能够在节点处接收到目的地地址时并且在整个分组到达之前开始发送分组。包括分组的目的地地址和大小作为消息报头的前两个要素便利了该过程。由于所有的通信链路都能够以相同的数据速率运行,所以在数据到达速率和数据传输速率之间没有差别。分组的检查能够在到达目的地时进行。
可以提供先进先出(FIFO)数据结构以允许在系统接近或正在过载时的拥塞期间进行消息的缓存。FIFO的使用数能够向分布式的OS软件指示需要改变应用的分布。例如,如果对每个分组使用一个FIFO,则指示了特定链路的过度使用并且OS可以采取行动以缓解瓶颈。例如,应用的分布能够由OS软件动态改变。
在一些实施方式中,消息分组的传输由计算节点的处理器执行。这允许从一个节点发送到另一个节点的数据从已经产生了该数据的缓冲直接发送,置于要利用该数据的缓冲中,而切换节点的处理器不必复制该数据,由此改善了处理时间。也就是说,OS软件不复制数据,这提高了效率,原因在于软件复制要求两个存储器总线访问—一个用于读而一个用于写,并且典型地,数据必须从存储器取出到高速缓存并且被复制到另一个高速缓存,而所述高速缓存随后需要被刷新。与之相比,这里所描述的系统能够使用节点处的OS硬件使得数据落入存储器中。用来接收数据的存储器缓冲可以预先进行选择并准备接收数据。如果缓冲出于任何原因而没有准备好,则OS软件仍然能够接收该数据,尽管可能需要进行复制。在一些实例中,应用能够确定是否有为该应用所准备的数据,并接着请求针对该数据的指针而并不是请求OS将该数据复制到应用的缓冲。
在一些实施方式中,当分组被调度以便从计算节点进行发送时,应用向OS进行调用以将分组的控制传递给OS以便进行发送。在示例性的实施方式中,计算节点包括应用处理器和OS处理器。OS跨整个网络进行分布并且划分在硬件和软件之间。被发送的消息从应用被传递至应用处理器上运行的OS桩软件。分组接着被传递至节点上的OS硬件,其由OS处理器上运行的OS软件进行管理。虽然该示例使用了两个处理器,但并非要求如此。在一些实施方式中,节点处的OS硬件被设计为与多个具有FPGA的处理器进行对接,并且在以上示例中,功能划分在FPGA及其板上处理器之间。
通过将用于分组传输的硬件集成到计算节点的存储器管理硬件中,OS硬件和软件能够在应用指示分组准备好进行发送时访问数据存储器。所述数据存储器访问是处理器透明的,允许处理器在OS软件发送分组的同时执行其它任务。在另一种示例性实施方式中,高速缓存控制器被集成到分组硬件中,使得数据从高速缓存存储器发送或者接收到高速缓存存储器而不是主存储器。所述高速缓存控制器被用来向和从主存储器移动数据。
从源计算节点传送到目的地计算节点的分组可以穿过一个或多个中间切换节点。在中间切换节点不需要复制操作,这是因为所述中间切换节点的通信硬件基于作为消息分组的第一部分所接收的目的地地址字段而确定在哪条链路上传送到来的消息。只要所确定的链路可用,这就允许中间切换节点在所确定的链路上开始转发分组而无需复制消息。在一些实施方式中,在所确定的链路正在使用的情况下使用FIFO数据结构以防止分组丢失。与之相比,在传统网络中,由于多个消息可能需要在单条链路上进行传送而通常需要复杂的路由(例如,使用路由表)。复杂的路由经常需要在从分组报头解码出目的地地址并且消息被转发之前临时复制所述消息。
当分组被调度以在计算节点进行接收时,应用能够预见到到达的分组并且在计算节点的存储器中为所述分组分配数据缓冲。计算节点的分组传输硬件(例如,通信硬件或控制器,其例如利用FPGA、ASIC或硅晶片实现)能够将分组置于所分配的数据缓冲中。如果应用没有预见到到达的分组,则OS软件可以在计算节点的存储器中为分组指派数据缓冲。当应用软件进行调用以访问分组数据时,计算节点的存储器管理硬件能够将所述分组置于所指派的数据缓冲中供应用访问。
因此,分组数据不需要从一个存储器区域复制到另一个存储器区域,相反,数据可以被放入存储器而无需软件复制,由此减少了等待时间并提高了性能。存储器复制操作每个字花费两个存储器访问,即一个读访问和一个写访问。这里所描述的零复制方案消除了这些存储器访问,减少了分组传输的处理时间。此外,在传统系统中,计算节点的处理器在存储器复制期间将无法使用。与之相比,在所描述的系统中,计算节点保持可用。在具有密集分组发送的系统中的这两种因素(即,存储器访问和处理器的不可使用)是系统中宽带损失的主要原因。
图12是示例性计算机系统1200的示意图。系统1200可以被用于执行以上所描述的动作和方法。采用以上所描述的网络拓扑的系统的部分或方面可以利用示例性计算机系统1200的一个或多个元件来实现。系统1200可以包括处理器1218、存储器1216、存储设备1252以及输入/输出设备1254。组件1218、1216、1252和1254中的每一个使用系统总线1256进行互连。处理器1218能够处理系统1200内的指令。这些指令能够实现以上所描述的系统、组件和技术的一个或多个方面。在一些实施方式中,处理器1218是单线程处理器。在其它实施方式中,处理器1218是多线程处理器。处理器1218可以包括多个处理核心,并且能够处理存储在存储器1216中或存储设备1252上的指令以在输入/输出设备1254上显示用户界面的图形信息。
存储器1216是存储系统1200内的信息的诸如易失性或非易失性的计算机可读介质。例如,存储器1216能够存储与网络路由功能相关的过程。存储设备1252能够为系统1200提供持久性存储。存储设备1252可以包括软盘设备、硬盘设备、光盘设备或带设备,或者其它适当的持久性存储介质。存储设备1252可以存储以上所描述的各种数据库。输入/输出设备1254为系统1200提供输入/输出操作。输入/输出设备1254可以包括键盘、指示设备以及用于显示图形用户界面的显示单元。
图12所示的计算机系统仅是一个示例。通常,该说明书中所描述的主题和操作的实施例可以以数字电子电路来实现,或者以包括该说明书中所公开的结构及其结构等同物的计算机软件、固件或硬件来实现,或者以它们中一个或多个的组合来实现。该说明书中所描述主题的实施例可以被实现为在计算机存储介质上编码以便由数据处理装置执行或者控制其操作的一个或多个计算机程序,即计算机程序指令的一个或多个模块。可替换地或除此之外,程序指令可以编码在人工生成的传播信号中,例如机器生成的电、光或电磁信号,其被生成以对信息进行编码以便传输到适当接收器装置供数据处理装置执行。所述计算机存储介质可以是计算机可读存储设备、计算机可读存储基片、随机或串行访问存储器阵列或设备,或者它们中一个或多个的组合,或者包括于其中。
术语“数据处理装置”包含用于处理数据的所有装置、设备和机器,例如包括可编程处理器、计算机,或者多个处理器或计算机。除了硬件之外,所述装置可以包括为所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中一个或多个的组合的代码。
计算机程序(也被称作程序、软件、软件应用、脚本或代码)可以以任意形式的编程语言进行编写,包括编译或解释语言,或者声明或过程语言,并且其可以被配置为任意形式,包括作为独立程序或者作为适于在计算环境中使用的模块、组件、子程序或其它单元。计算机程序不必对应于文件系统中的文件。程序可以存储在保持其它程序或数据的文件的一部分中(例如,标记语言文档中所存储的一个或多个脚本),存储在专用于所讨论程序的单个文件中,或者存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。计算机程序可以被部署为在一台计算机上执行,或者在位于一个地点或跨多个地点分布并且通过通信网络进行互连的多台计算机上执行。
该说明书中所描述的过程和逻辑流程可以由一个或多个可编程处理器来执行,所述可编程处理器通过对输入数据进行操作并且生成输出来执行一个或多个计算机程序以执行功能。所述过程和逻辑流程还可以由专门用途的逻辑电路来执行,并且装置也可以被实现为专门用途的逻辑电路,所述逻辑电路例如FPGA或ASIC。
适于执行计算机程序的处理器例如包括通用和专用的微处理器,以及任意类型的数字计算机的任意一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或者其二者接收指令和数据。计算机的实质性元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器。通常,计算机还将包括一个或多个用于存储数据的大型存储设备或者操作耦合到所述大型存储设备以从接收数据或向其传输数据或者其二者,所述大型存储设备例如磁、磁光盘或光盘。然而,计算机无需具有这样的设备。此外,计算机可以嵌入另一个设备之中,所述设备例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器,仅举出几个示例。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以被补充专用逻辑电路或者合并于其中。
为了提供与用户的交互,该说明书中所描述主题的实施例可以在具有显示设备以及键盘和指示设备的计算机上实现,所述显示设备例如CRT(阴极射线管)或LCD(液晶显示)监视器,用于向用户显示信息,所述指示设备例如用户能够通过其向计算机提供输入的鼠标或轨迹球。也可以使用其它类型的设备来提供与用户的交互;例如提供给用户的反馈可以是任意形式的感知反馈,例如视觉反馈、听觉反馈或触觉反馈;并且来自用户的输入可以以任意形式被接收,包括声音、语音或触觉输入。
该说明书中所描述主题的实施例可以在计算系统中实现,所述计算机系统包括例如作为数据服务器的后端组件,或者包括例如应用服务器的中间件组件,或者包括例如客户端计算机的前端组件,或者一个或多个这样的后端、中间件或前端组件的任意组合,所述客户端计算机具有图形用户界面或web浏览器,用户能够通过其与本说明书所描述主题的实施方式进行交互。所述系统的组件可以通过例如通信网络的任意形式或介质的数字数据通信进行互连。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且典型地通过通信网络进行交互。客户端和服务器的关系源自于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序。
虽然本说明书包含了许多特定的实施方式细节,但是这些不应当被理解为对于任意发明或可要求保护的范围的限制,而是作为可特定于特定发明的特定实施例的特征的描述。该说明书中以分立实施例的背景中描述的某些特征也可以组合在单个实施例中实施。相反,在单个实施例的背景中描述的各种特征也可以在多个实施例中单独实施或者以任意适当的子组合来实施。此外,虽然特征可以在以上被描述为以某些组合进行工作,甚至最初要求这样,但是来自所要求的组合的一个或多个特征在一些情况下可以从所述组合中排除,并且所要求的组合可以针对于子组合或者子组合的变化形式。
类似地,虽然操作在图中以特定顺序描绘,但是这不应当被理解为要求这样的操作以所示出的特定顺序或连续顺序来执行,或者所图示的所有操作都要被执行才能实现预期的结果。在某些环境中,多任务和并行处理可能是有益的。此外,以上所描述实施例中各种系统组件的分离不应当被理解为在所有实施例中都要求这样的分离,并且应当理解的是,所描述的程序组件和系统通常能够在单个软件产品中被集成在一起或者打包到多个软件产品中。
已经对本发明的多个实施例进行了描述。然而,应当理解的是,可以进行各种修改而并不背离本发明的精神和范围。因此,其它实施例也落入权利要求的范围之内。
Claims (10)
1.一种在网络中路由分组的方法,所述网络具有以包括n个层的节点层级结构为特征的拓扑,其中L表示所述结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层,所述方法包括:
在第一节点至少接收分组的分组报头;
基于所述分组报头,确定是否将所述分组传送到层L、层L+1或层L-1中的第二节点;以及
在所述第一节点处一接收所述分组就将所述分组传送到所述第二节点而并不等待接收到整个分组并且不在从所述第一节点进行传输之前复制所述分组。
2.如权利要求1所述的方法,其中所述n个层包括n-1个切换节点层以及1个计算节点层,所述结构中的每一层包括被分组成单元的节点,每个单元具有多于一个的节点,并且除了所述计算层外的层中的每个节点包括用于所述结构中下一个较低层中的单元的切换节点;并且
其中所述第一节点是切换节点;并且
将分组传送到层L中的第二节点包括通过点对点链路将所述分组传送到在与所述第一节点相同的单元中的所述第二节点;和
将分组传送到层L+1或层L-1中的第二节点包括通过点对点链路将所述分组传送到在与所述第一节点不同的单元中的所述第二节点。
3.一种系统,包括:
节点的层级结构,所述层级结构包括n个层,所述n个层包括n-1个切换节点层以及1个计算节点层,其中所述层级结构中的每一层包括一个或多个节点单元,其中L表示所述结构中的层并且为整数,其中L=0表示最低层而L=n-1表示最高层,并且一个单元中的节点数目大于1;
其中所述切换节点被配置为:
至少接收分组的分组报头;
基于所述分组报头,确定是否将所述分组传送到层L、层L+1或层L-1中的第二节点;以及
在所述切换节点处一接收到包括消息的一个或多个分组就向所述第二节点传送所述分组而并不等待接收到整个分组并且不在从所述切换节点进行传输之前复制所述分组。
4.如权利要求3所述的系统,其中所述计算节点每一个包括:
至少一个处理器;
通信硬件;和
存储器。
5.如权利要求4所述的系统,其中所述至少一个处理器包括应用处理器和操作系统处理器。
6.如权利要求4所述的系统,其中所述通信硬件包括现场可编程门阵列(FPGA)。
7.如权利要求4所述的系统,其中所述通信硬件被配置为监视到所述计算节点的业务。
8.如权利要求4所述的系统,其中所述通信硬件被配置为:
将在所述计算节点接收到的消息引导至所述处理器;并且
从所述处理器接收消息以便传输到不同节点。
9.如权利要求3所述的系统,其中在除了所述计算层外的层中的每个节点包括用于所述结构中下一个较低层中的单元的切换节点;并且
其中对于每个单元:
所述单元中的每个节点通过点对点链路连接到所述单元中的每个其它节点;
所述单元中的每个节点通过点对点链路连接到所述单元中的本地切换节点;并且
所述单元中的每个节点通过所述单元的本地广播网络连接到所述单元中的每个其它节点和所述本地切换节点。
10.如权利要求3所述的系统,其中所述切换节点每一个包括:
处理器;和
通信硬件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/412,289 | 2009-03-26 | ||
US12/412,289 US7957385B2 (en) | 2009-03-26 | 2009-03-26 | Method and apparatus for packet routing |
PCT/CA2010/000414 WO2010108263A1 (en) | 2009-03-26 | 2010-03-25 | Method and apparatus for packet routing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102449961A true CN102449961A (zh) | 2012-05-09 |
Family
ID=42780098
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800226243A Pending CN102449961A (zh) | 2009-03-26 | 2010-03-25 | 用于分组路由的方法和装置 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7957385B2 (zh) |
EP (1) | EP2412131A4 (zh) |
JP (1) | JP2012521687A (zh) |
KR (1) | KR20120030340A (zh) |
CN (1) | CN102449961A (zh) |
CA (1) | CA2756501A1 (zh) |
WO (1) | WO2010108263A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416624A (zh) * | 2016-06-27 | 2019-03-01 | 高通股份有限公司 | 用于使用分布式通用串行总线(usb)主机驱动器的系统和方法 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100250784A1 (en) * | 2009-03-26 | 2010-09-30 | Terascale Supercomputing Inc. | Addressing Scheme and Message Routing for a Networked Device |
US7957400B2 (en) * | 2009-03-26 | 2011-06-07 | Terascale Supercomputing Inc. | Hierarchical network topology |
US9007941B1 (en) * | 2012-07-25 | 2015-04-14 | Cisco Technology, Inc. | Self-organizing and scalable MPLS VPN transport for LTE |
US9077616B2 (en) * | 2012-08-08 | 2015-07-07 | International Business Machines Corporation | T-star interconnection network topology |
US9621429B2 (en) | 2014-06-20 | 2017-04-11 | Cisco Technology, Inc. | System, method, and apparatus for incorporating a centralized self organizing network (SON) in a network |
JP6342351B2 (ja) * | 2015-03-02 | 2018-06-13 | 東芝メモリ株式会社 | ストレージシステム |
US10601520B2 (en) | 2018-02-07 | 2020-03-24 | Infinera Corporation | Clock recovery for digital subcarriers for optical networks |
US11368228B2 (en) | 2018-04-13 | 2022-06-21 | Infinera Corporation | Apparatuses and methods for digital subcarrier parameter modifications for optical communication networks |
US11095389B2 (en) | 2018-07-12 | 2021-08-17 | Infiriera Corporation | Subcarrier based data center network architecture |
US11258528B2 (en) | 2019-09-22 | 2022-02-22 | Infinera Corporation | Frequency division multiple access optical subcarriers |
US11095364B2 (en) | 2019-03-04 | 2021-08-17 | Infiriera Corporation | Frequency division multiple access optical subcarriers |
US11336369B2 (en) | 2019-03-22 | 2022-05-17 | Infinera Corporation | Framework for handling signal integrity using ASE in optical networks |
US11032020B2 (en) | 2019-04-19 | 2021-06-08 | Infiriera Corporation | Synchronization for subcarrier communication |
US10972184B2 (en) | 2019-05-07 | 2021-04-06 | Infinera Corporation | Bidirectional optical communications |
US11476966B2 (en) | 2019-05-14 | 2022-10-18 | Infinera Corporation | Out-of-band communication channel for subcarrier-based optical communication systems |
US11177889B2 (en) | 2019-05-14 | 2021-11-16 | Infinera Corporation | Out-of-band communication channel for sub-carrier-based optical communication systems |
US11296812B2 (en) | 2019-05-14 | 2022-04-05 | Infinera Corporation | Out-of-band communication channel for subcarrier-based optical communication systems |
US11489613B2 (en) | 2019-05-14 | 2022-11-01 | Infinera Corporation | Out-of-band communication channel for subcarrier-based optical communication systems |
US11190291B2 (en) | 2019-05-14 | 2021-11-30 | Infinera Corporation | Out-of-band communication channel for subcarrier-based optical communication systems |
US11239935B2 (en) | 2019-05-14 | 2022-02-01 | Infinera Corporation | Out-of-band communication channel for subcarrier-based optical communication systems |
US11290393B2 (en) * | 2019-09-05 | 2022-03-29 | Infinera Corporation | Dynamically switching queueing schemes for network switches |
US12081269B2 (en) | 2019-10-10 | 2024-09-03 | Infinera Corporation | Hub-leaf laser synchronization |
EP4042606A1 (en) | 2019-10-10 | 2022-08-17 | Infinera Corporation | Optical subcarrier dual-path protection and restoration for optical communications networks |
US11743621B2 (en) | 2019-10-10 | 2023-08-29 | Infinera Corporation | Network switches systems for optical communications networks |
CN114026551A (zh) * | 2020-03-26 | 2022-02-08 | 图核有限公司 | 具有两个嵌入式环的网络计算机 |
US12111776B2 (en) | 2021-11-01 | 2024-10-08 | Samsung Electronics Co., Ltd. | Multi-dimensional memory cluster |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2000074305A2 (en) * | 1999-05-14 | 2000-12-07 | Dunti Corporation | Method for routing in hierarchical networks |
WO2002033898A2 (en) * | 2000-10-19 | 2002-04-25 | Interactic Holdings, Llc | Scaleable multiple-path wormhole interconnect |
US20070245044A1 (en) * | 2006-04-12 | 2007-10-18 | Cesar Douady | System of interconnections for external functional blocks on a chip provided with a single configurable communication protocol |
US20070263535A1 (en) * | 2006-05-14 | 2007-11-15 | Lior Shabtay | Policy aware frame loss measurement |
US7412557B2 (en) * | 2000-12-22 | 2008-08-12 | Cisco Technology, Inc. | Apparatus and method for preventing loops in a computer network |
US7426214B2 (en) * | 1995-07-21 | 2008-09-16 | Interactic Holdings, Llc | Multiple level minimum logic network |
CN100459517C (zh) * | 2004-06-30 | 2009-02-04 | 国际商业机器公司 | 用于自行配置网络中的路由设备的方法和装置 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8915135D0 (en) * | 1989-06-30 | 1989-08-23 | Inmos Ltd | Message routing |
US5471580A (en) | 1991-10-01 | 1995-11-28 | Hitachi, Ltd. | Hierarchical network having lower and upper layer networks where gate nodes are selectively chosen in the lower and upper layer networks to form a recursive layer |
US5509123A (en) * | 1994-03-22 | 1996-04-16 | Cabletron Systems, Inc. | Distributed autonomous object architectures for network layer routing |
US5606551A (en) | 1994-12-21 | 1997-02-25 | Lucent Technologies Inc. | Bidirectional mesh network |
JP3063650B2 (ja) * | 1996-12-04 | 2000-07-12 | 日本電気株式会社 | 共通線信号方式およびそのルーティング方法 |
US6389031B1 (en) * | 1997-11-05 | 2002-05-14 | Polytechnic University | Methods and apparatus for fairly scheduling queued packets using a ram-based search engine |
JPH11215186A (ja) * | 1998-01-23 | 1999-08-06 | Sony Corp | ネットワークシステム |
US6212184B1 (en) * | 1998-07-15 | 2001-04-03 | Washington University | Fast scaleable methods and devices for layer four switching |
US6597661B1 (en) * | 1999-08-25 | 2003-07-22 | Watchguard Technologies, Inc. | Network packet classification |
US7002958B1 (en) | 1999-09-10 | 2006-02-21 | Pluris, Inc. | Method for load-balancing with FIFO guarantees in multipath networks |
US7089240B2 (en) * | 2000-04-06 | 2006-08-08 | International Business Machines Corporation | Longest prefix match lookup using hash function |
US6853635B1 (en) | 2000-07-24 | 2005-02-08 | Nortel Networks Limited | Multi-dimensional lattice network |
WO2002032058A2 (en) * | 2000-10-13 | 2002-04-18 | General Instrument Corporation | Spanning tree alternate routing bridge protocol |
US6973229B1 (en) | 2001-02-28 | 2005-12-06 | Lambda Opticalsystems Corporation | Node architecture for modularized and reconfigurable optical networks, and methods and apparatus therefor |
GB2377286B (en) * | 2001-07-05 | 2003-09-24 | 3Com Corp | Binary search trees and methods for establishing and operating them |
US7212531B1 (en) * | 2001-11-27 | 2007-05-01 | Marvell Semiconductor Israel Ltd. | Apparatus and method for efficient longest prefix match lookup |
AU2003219765A1 (en) * | 2002-02-14 | 2003-09-04 | Transwitch Corporation | Efficient ipv4/ipv6 best matching prefix method and apparatus |
US20040073659A1 (en) * | 2002-10-15 | 2004-04-15 | Carl Rajsic | Method and apparatus for managing nodes in a network |
CA2500166A1 (en) | 2002-10-29 | 2004-05-13 | British Telecommunications Public Limited Company | Method and apparatus for network management |
JP2006507580A (ja) | 2002-11-21 | 2006-03-02 | ノキア コーポレイション | 移動通信装置用の装置管理用ツリーの設定を可能にするオブジェクトを定義する方法および装置 |
US7394809B2 (en) * | 2003-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for packet classification using a forest of hash tables data structure |
US7418454B2 (en) | 2004-04-16 | 2008-08-26 | Microsoft Corporation | Data overlay, self-organized metadata overlay, and application level multicasting |
JP4894590B2 (ja) | 2007-03-30 | 2012-03-14 | ブラザー工業株式会社 | ネットワークシステム、情報処理装置及び情報処理用プログラム |
US7653716B2 (en) | 2007-08-15 | 2010-01-26 | International Business Machines Corporation | Determining a bisection bandwidth for a multi-node data communications network |
US20100076856A1 (en) | 2008-09-25 | 2010-03-25 | Microsoft Corporation | Real-Time Auction of Cloud Computing Resources |
US8208481B2 (en) | 2008-12-19 | 2012-06-26 | Cisco Technology, Inc. | Determination of packet loss locations |
US20100250784A1 (en) | 2009-03-26 | 2010-09-30 | Terascale Supercomputing Inc. | Addressing Scheme and Message Routing for a Networked Device |
US7957400B2 (en) | 2009-03-26 | 2011-06-07 | Terascale Supercomputing Inc. | Hierarchical network topology |
-
2009
- 2009-03-26 US US12/412,289 patent/US7957385B2/en not_active Expired - Fee Related
-
2010
- 2010-03-25 JP JP2012501090A patent/JP2012521687A/ja active Pending
- 2010-03-25 KR KR1020117025379A patent/KR20120030340A/ko not_active Withdrawn
- 2010-03-25 EP EP10755353A patent/EP2412131A4/en not_active Withdrawn
- 2010-03-25 WO PCT/CA2010/000414 patent/WO2010108263A1/en active Application Filing
- 2010-03-25 CA CA2756501A patent/CA2756501A1/en not_active Abandoned
- 2010-03-25 CN CN2010800226243A patent/CN102449961A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7426214B2 (en) * | 1995-07-21 | 2008-09-16 | Interactic Holdings, Llc | Multiple level minimum logic network |
WO2000074305A2 (en) * | 1999-05-14 | 2000-12-07 | Dunti Corporation | Method for routing in hierarchical networks |
WO2000074305A3 (en) * | 1999-05-14 | 2001-08-23 | Dunti Corp | Method for routing in hierarchical networks |
WO2002033898A2 (en) * | 2000-10-19 | 2002-04-25 | Interactic Holdings, Llc | Scaleable multiple-path wormhole interconnect |
WO2002033898A3 (en) * | 2000-10-19 | 2003-04-03 | Interactic Holdings Llc | Scaleable multiple-path wormhole interconnect |
US7412557B2 (en) * | 2000-12-22 | 2008-08-12 | Cisco Technology, Inc. | Apparatus and method for preventing loops in a computer network |
CN100459517C (zh) * | 2004-06-30 | 2009-02-04 | 国际商业机器公司 | 用于自行配置网络中的路由设备的方法和装置 |
US20070245044A1 (en) * | 2006-04-12 | 2007-10-18 | Cesar Douady | System of interconnections for external functional blocks on a chip provided with a single configurable communication protocol |
US20070263535A1 (en) * | 2006-05-14 | 2007-11-15 | Lior Shabtay | Policy aware frame loss measurement |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416624A (zh) * | 2016-06-27 | 2019-03-01 | 高通股份有限公司 | 用于使用分布式通用串行总线(usb)主机驱动器的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
US20100246581A1 (en) | 2010-09-30 |
CA2756501A1 (en) | 2010-09-30 |
WO2010108263A1 (en) | 2010-09-30 |
US7957385B2 (en) | 2011-06-07 |
EP2412131A1 (en) | 2012-02-01 |
KR20120030340A (ko) | 2012-03-28 |
JP2012521687A (ja) | 2012-09-13 |
EP2412131A4 (en) | 2012-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102449961A (zh) | 用于分组路由的方法和装置 | |
CN102439915A (zh) | 用于联网设备的寻址方案和消息路由 | |
CN102439910A (zh) | 包括分组成单元的节点的层级结构的网络拓扑 | |
US11237880B1 (en) | Dataflow all-reduce for reconfigurable processor systems | |
US20220198117A1 (en) | Executing a neural network graph using a non-homogenous set of reconfigurable processors | |
Sistare et al. | Optimization of MPI collectives on clusters of large-scale SMP's | |
CN100392602C (zh) | 用于在网络处理器中动态排序的系统和方法 | |
Nowatzyk et al. | The S3. mp scalable shared memory multiprocessor | |
US7738443B2 (en) | Asynchronous broadcast for ordered delivery between compute nodes in a parallel computing system where packet header space is limited | |
CN1020972C (zh) | 超大规模计算机 | |
JP2512661B2 (ja) | 非バイナリ・ハイパ―キュ―ブ形式のコンピュ―タ・システムおよびネットワ―クにおける複数ノ―ドの接続方法 | |
US5797035A (en) | Networked multiprocessor system with global distributed memory and block transfer engine | |
JP3836838B2 (ja) | マルチプロセッサ・システムでのプロセッサ相互接続を使用するマイクロプロセッサ通信の方法およびデータ処理システム | |
Almási et al. | Design and implementation of message-passing services for the Blue Gene/L supercomputer | |
Siegel et al. | Using the multistage cube network topology in parallel supercomputers | |
CN1493042A (zh) | 在一个分布式存储器的并行多节点计算机上的多维快速傅里叶变换的高效实现 | |
Kobus et al. | Gossip: Efficient communication primitives for multi-gpu systems | |
US20140229633A1 (en) | Optimising data transmission in a hypercube network | |
JP3836839B2 (ja) | クラスタベースのマルチプロセッサ・システムでのマイクロプロセッサ通信の方法およびデータ処理システム | |
Kumar | Optimizing communication for massively parallel processing | |
US7251248B2 (en) | Connection device | |
d'Auriol et al. | A parameterized linear array with a reconfigurable pipelined bus system: LARPBS (p) | |
Schomberg | A transputer-based shuffle-shift machine for image processing and reconstruction | |
Kelly et al. | eee Microsystems Computer Corporporation Sun, Microsystem Laboratory Incorporated |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120509 |