用于在高性能网络结构中进行可扩展本地寻址的技术的制作方法

文档序号:11637179阅读:196来源:国知局
用于在高性能网络结构中进行可扩展本地寻址的技术的制造方法与工艺



背景技术:

高性能计算(hpc)集群、云计算数据中心以及其他大型计算网络可以通过高速输入/输出结构(诸如infinibandtm结构)进行通信。infinibandtm架构可以使用端节点之间的交换点到点通道传送数据。在infinibandtm架构中,可以使用16位本地标识符(lid)在子网内标识端节点。16位lid地址空间的固定部分专用于多播地址。

附图说明

在附图中通过示例的方式而非限制性的方式展示了在此所描述的概念。为了说明的简单和清晰起见,附图中所展示的元件不一定按比例绘制。在认为适当的情况下,在附图当中重复参考标号以表示相应或相似的元件。

图1是用于可扩展本地寻址的系统的至少一个实施例的简化框图;

图2是可以由图1的系统建立的不同环境的至少一个实施例的简化框图;

图3是可以由图1和图2的系统的受管网络设备执行的用于数据分组寻址和转发的方法的至少一个实施例的简化流程图;并且

图4是可以由图1和图2的系统的计算节点执行的用于本地多播地址转换的方法的至少一个实施例的简化流程图。

具体实施方式

虽然本公开的概念易有多种不同修改和替代形式,但通过举例在附图中已经示出本公开的具体实施例并且在此将对其进行详细描述。然而,应当理解的是,并不旨在将本公开的概念限制于所公开的特定形式,而相反,意图是覆盖与本公开和所附权利要求书一致的所有修改型式、等效型式和替代型式。

在说明书中提到的“一个实施例”、“实施例”、“说明性实施例”等指示所描述的实施例可以包括具体特征、结构或特性,但每一个实施例可能或者可能不一定包括该具体特征、结构或特性。而且,此类短语不一定指相同的实施例。此外,当关于实施例而描述了特定特征、结构或特性时,应当认为的是,无论是否进行了明确描述,结合其他实施例来实现这种特征、结构或特性都在本领域的技术人员的知识内。另外,应当认识到,包括在采用“a、b和c中的至少一者”的形式的列表中的项可以意指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。类似地,采用“a、b或c中的至少一者”的形式列出的项可以意指(a);(b);(c);(a和b);(a和c);(b和c);或(a、b和c)。

在一些情况下,可以在硬件、固件、软件或其任何组合中实施所公开的实施例。所公开的实施例还可以实现为一个或多个瞬态或非瞬态机器可读(例如,计算机可读)存储介质所携带或其上所存储的指令,这些指令可以由一个或多个处理器读取和执行。机器可读存储介质可以具体化为任何存储设备、机制、或用于存储或传输采用机器可读形式的信息的其他物理结构(例如,易失性或非易失性存储器、介质盘或其他介质设备)。

在附图中,一些结构特征或方法特征可能以特定安排和/或顺序示出。然而,应当理解的是,可以不需要这种特定安排和/或顺序。相反,在一些实施例中,可以采用与在说明性附图中所示出的方式和/或顺序不同的方式和/或顺序来安排这类特征。另外,在具体的图中包括结构特征或方法特征并不意味着暗示在所有实施例中都需要这种特征,并且在一些实施例中,可以不包括这种特征或者这种特征可以与其他特征组合。

现在参照图1,在一个实施例中,用于可扩展本地寻址的系统100包括经由若干结构链路106进行通信的数个受管网络设备102和数个计算节点104。系统100的受管网络设备102、计算节点104以及其他属性可以由一个或多个结构管理器108来管理。在使用中,如在下文更详细地讨论的,每个计算节点104可以通过结构链路106将数据分组传输到受管网络设备102。每个数据分组可以包括标识目的地计算节点104或具有两个或更多个计算节点104的多播组的本地标识符(lid)。lid包括变化数量的二进制数据位(例如,16、20、24或32位)。受管网络设备102和计算节点104检查lid的变化数量的位以判定数据分组是否被定址到目的地计算节点104或多播组,并相应地转发数据分组。在一些实施例中,受管网络设备102和计算节点104还可以检查lid的变化数量的位以判定数据分组是否被定址到集中操作地址空间,并且如果是则执行加速集中操作(例如,广播、分散、集中等)。

尽管被展示为包括三个计算节点104a至104c以及两个受管网络设备102a和102b,但是系统100可以包括更多受管网络设备102和计算节点104。具体地,系统100可以允许本地子网扩展以包括超出16位infinibandtmlid中可表示的量的大量计算节点104。此外,系统100不是包括固定的多播地址空间,而是允许在多播地址与单播地址的比率内以及在多播地址与集中地址的比率内进行配置与控制。系统100还为单播、多播以及集中地址保留连续地址空间,并且可以是与16位infinibandtm设施可互操作的。

每个受管网络设备102可以具体化为能够转发或控制结构通信量的任何网络设备,例如受管交换机。说明性受管网络设备102包括多个结构端口120、一个开关逻辑122以及一个管理逻辑124。每个结构端口120可以连接到结构链路106上,该结构链路106进而可以连接到远程设备诸如计算节点104或另一个受管网络设备102上。说明性受管网络设备102包括三个结构端口120a至120c;然而,在其他实施例中,受管网络设备102可以包括另外的或更少的端口120以支持不同数量的结构链路106。

开关逻辑122可以具体化为被配置成用于将在端口120上接收的数据分组转发到适当的目的地端口120的任何硬件、固件、软件或其组合。例如,开关逻辑122可以具体化为共享存储器开关或纵横开关,并且可以包括调度器、分组处理管道、多播转发表和/或任何其他开关逻辑。在一些实施例中,开关逻辑122可以具体化为一个或多个应用专用集成电路(asic)。

管理逻辑124可以具体化为可以用来配置并控制受管网络设备102的任何控制电路、微处理器或其他逻辑块。例如,管理逻辑124可以初始化受管网络设备102及其组件、控制受管网络设备102及其组件的配置、向受管网络设备102提供测试接口、或者提供其他管理功能。管理逻辑124可以通过改变全局寄存器空间中的数个寄存器的值来配置。结构管理器108可以使用带内管理接口通过经由结构链路106传输特殊格式化的管理数据报(mad)来与管理逻辑124进行通信。另外地或可替代地,管理逻辑124可以通过管理接口(诸如一个或多个pciexpress主机接口)、测试接口或一个或多个低速接口(诸如i2c接口、jtag接口、spi接口、mdio接口、led接口或gpio接口)来与结构管理器108进行通信。

每个计算节点104可以具体化为能够执行在此所描述的功能的任何类型的计算或计算机设备,包括但不限于计算机、服务器、机架式服务器、刀片服务器、网络设备、web设备、多处理器系统、分布式计算系统、基于处理器的系统、移动计算设备和/或消费者电子设备。如图1中所示,每个计算节点104说明性地包括处理器140、输入/输出子系统144、存储器146、数据存储设备148以及通信电路150。当然,在其他实施例中,计算节点104可以包括其他或另外的组件,诸如计算机中常见的那些(例如,不同输入/输出设备)。另外,在一些实施例中,说明性组件中的一个或多个组件可以结合在另一组件中、或者以其他方式可以形成另一组件的一部分。例如,在一些实施例中,存储器146或其部分可以结合在处理器140中。

处理器140可以具体化为能够执行在此所描述的功能的任何类型的处理器。例如,处理器140可以具体化为(多个)单核或多核处理器、数字信号处理器、微控制器、或者其他处理器或处理/控制电路。处理器140进一步包括主机结构接口142。主机结构接口142可以具体化为能够通过结构链路106实现处理器140与其他远程计算节点104和/或其他远程设备之间的通信的任何通信接口,诸如网络接口控制器、通信电路、设备或其集合。主机结构接口142可以被配置成用于使用任何一种或多种通信技术以及相关联协议(例如,全向路径架构)来实现这种通信。尽管被展示为包括单处理器140,但应当理解,每个计算节点104可以包括多个处理器140,并且每个处理器140可以包括集成主机结构接口142。

类似地,存储器146可以具体化为能够执行在此所描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器146可以存储在计算节点104的操作过程中使用的不同的数据和软件,诸如操作系统、应用、程序、库以及驱动程序。存储器146经由i/o子系统144通信地耦合到处理器140上,i/o子系统可以具体化为用于促进与计算节点104的处理器140、存储器146、以及其他组件的输入/输出操作的电路和/或组件。例如,i/o子系统144可以具体化为或以其他方式包括用于促进输入/输出操作的存储器控制器中枢、输入/输出控制中枢、固件设备、通信链路(即,点到点链路、总线链路、线、电缆、光导、印刷电路板迹线等)和/或其他组件和子系统。在一些实施例中,i/o子系统144可以形成片上系统(soc)的一部分并且可以与计算节点104的处理器140、存储器146以及其他组件一起结合在单个集成电路芯片上。数据存储设备148可以具体化为被配置成用于对数据进行短期或长期存储的任何类型的一种或多种设备,例如像,存储器设备和电路、存储器卡、硬盘驱动器、固态驱动器或其他数据存储设备。

计算节点104的通信电路150可以具体化为能够实现计算节点104与一个或多个远程计算节点104、受管网络设备102、交换机、远程主机或其他设备之间的通信的任何通信接口,诸如通信电路、设备或其集合。通信电路150可以被配置成用于使用任何一种或多种通信技术(例如,有线或无线通信)以及相关联协议(例如,全向路径架构、以太网、wimax等)来实现这种通信。具体地,通信电路150包括连接到结构链路106上的端口152。虽然被展示为包括单端口152,但是在一些实施例中,每个计算节点104可以包括多个端口152。

结构链路106中的每一个可以具体化为能够连接系统100的两个端口120、152的任何点到点通信链路。例如,结构链路106可以将计算节点104的端口152与受管网络设备102的端口120连接起来、可以将两个受管网络设备102的两个端口120连接起来等等。每个结构链路106允许在两个方向上进行通信。每个结构链路106可以具体化为串行数据通信链路,诸如铜电缆、铜背板、光纤电缆或硅光子链路,并且可以包括多个通信道(例如,四条道)以增大总带宽。每个结构链路106可以按一定导线速率(诸如12.5gb/s或25.78125gb/s)来以信号方式发送数据。

结构管理器108被配置成用于初始化并以其他方式管理系统100的受管网络设备102、计算节点104以及其他主机、网关和/或其他设备。结构管理器108可以具体化为能够执行在此所描述的功能的任何类型的服务器计算设备、网络设备或设备的集合。在一些实施例中,系统100可以包括多个结构管理器108,可以从该多个结构管理器中选择主结构管理器108。这样,结构管理器108可以具体化为单个服务器计算设备或服务器与相关联设备的集合。因此,虽然结构管理器108在图1中被展示为具体化为单个计算设备,但是应当理解,结构管理器108可以具体化为一起协同操作以促进下文所描述的功能性的多个设备。

现在参照图2,在说明性实施例中,每个受管网络设备102在操作期间都建立环境200。说明性环境200包括分组入口模块202、多播处理模块204、集中处理模块206、单播处理模块208以及管理模块210。环境200的不同模块可以具体化为硬件、固件、软件或其组合。例如,环境200的不同模块、逻辑以及其他组件可以形成受管网络设备102的开关逻辑122、管理逻辑124或其他硬件组件的一部分或以其他方式由该开关逻辑、该管理逻辑或这些其他硬件组件建立。这样,在一些实施例中,环境200的模块中的任何一个或多个模块可以具体化为电气设备的电路或集合(例如,分组入口电路、多播处理电路等)。

分组入口模块202被配置成用于接收并处理来自端口120的数据分组。具体地,分组入口模块202被配置成用于从所接收数据分组提取目的地本地标识符(dlid)。dlid可以具体化为具有变化长度(例如,32、24、20或16位宽、或任何其他适当宽度)的二进制值。dlid标识数据分组的目的地端点或目的地多播组。

多播处理模块204被配置成用于编制多播掩码并且使用该多播掩码来判定数据分组是否包括在多播地址空间之中。多播掩码可以具体化为与dlid具有相同宽度的二进制值,其中一定数量的最高位被设定来限定多播地址空间。设定位的数量(并且因此多播地址空间的大小)可以是硬编码的,或者在一些实施例中,可以是可配置的。例如,在一些实施例中,设定位的数量可以是在一位与七位之间可配置的。多播处理模块204被进一步配置成用于将多播地址空间内的具有dlid的数据分组转发到适当的多播组。

集中处理模块206被配置成用于编制集中掩码并且使用该集中掩码来判定数据分组是否包括在集中地址空间之中。集中掩码可以具体化为与dlid具有相同宽度的二进制值,其中一定数量的最高位被设定来限定集中地址空间。与多播掩码相比,集中掩码可以具有在零个与八个之间的附加设定最高位;因此,集中地址空间可以具体化为多播地址空间的上子集。附加设定位的数量可以是硬编码的,或者在一些实施例中,可以是可配置的。例如,在一些实施例中,附加设定位的数量可以是在零位与七位之间可配置的。集中处理模块206被进一步配置成用于针对集中地址空间内的具有dlid的数据分组执行一个或多个集中加速操作。

单播处理模块208被配置成用于在数据分组的dlid不是包括在多播地址空间中时,将数据分组转发到单播地址。例如,单播处理模块208可以确定与单播dlid相关联的输出端口120,并将数据分组转发到该端口120。

管理模块210被配置成用于管理受管网络设备102的配置。管理模块210可以存储或以其他方式管理可以用来配置受管网络设备102的一个或多个配置寄存器。例如,在一些实施例中,管理模块210可以管理限定多播地址空间的大小的多播掩码配置寄存器和/或限定集中地址空间的大小的集中掩码配置寄存器。管理模块210可以被配置成用于从结构管理器108接收命令或以其他方式与结构管理器108进行交互。

仍参照图2,在说明性实施例中,每个计算节点104在操作期间都建立环境220。说明性环境220包括地址转换模块222,该地址转换模块可以具体化为硬件、固件、软件或其组合。例如,环境220的不同的模块、逻辑以及其他组件可以形成计算节点104的处理器140或其他硬件组件的一部分或以其他方式由该处理器或这些其他硬件组件建立。这样,在一些实施例中,环境220的模块中的任何一个或多个模块可以具体化为电气设备的电路或集合(例如,地址转换电路等)。

地址转换模块222被配置成用于将多播lid在不同位宽度之间进行转换。例如,地址转换模块222可以将32位lid转换为24位lid等等。具体地,地址转换模块222被配置成用于针对lid的原始宽度编制多播掩码,并且使用该多播掩码来确定lid的偏移量。地址转换模块222被进一步配置成用于针对lid的新宽度编制多播掩码,并且将该偏移量与该新多播掩码相组合以生成转换的lid。

现在参考图3,在使用中,受管网络设备102可以执行用于数据分组寻址和转发的方法300。在一些实施例中,计算节点104可以执行方法300的操作中的一些或全部操作。方法300开始于框302,在该框中,受管网络设备102或计算节点104在端口120上接收数据分组,并从该数据分组提取目的地本地标识符(dlid)。数据分组可以具体化为包括dlid的二进制数据的任何适当的集合。在框304中,受管网络设备102或计算节点104提取32、24、20或16位宽度的dlid。受管网络设备102或计算节点104可以被配置成用于通过例如结构管理器108提取正确大小的dlid。dlid的宽度可以针对受管网络设备102和/或以每端口120为基础全局地配置。

在框306中,受管网络设备102或计算节点104编制多播掩码。多播掩码是与dlid具有相同宽度(例如,32、24、20或16位宽)的二进制值。多播掩码可以存储在由受管网络设备102或计算节点104维持的掩码寄存器或其他存储位置之中。多播掩码中的一定数量的高位可以被设定,这建立了多播地址空间。例如,在一些实施例中,针对32、24或20位多播掩码,可以设定该多播掩码的高四位。在这些实施例中,多播掩码因此可以对应地由十六进制值0xf0000000、0xf00000以及0xf0000表示。多播掩码可以在接收分组时编制,或者在一些实施例中,可以在接收分组之前编制。如果提前编制,受管网络设备102可以针对每个lid宽度(例如,16、20、24或32位)维持一个预编制多播掩码。

在一些实施例中,在框308中,受管网络设备102或计算节点104可以基于多播配置寄存器的内容来设定多播掩码的可配置数量(例如,在一些实施例中,多达八位)的高位。多播配置寄存器可以具体化为三位寄存器,并且可以适用于整个受管网络设备102或适用于特定端口120。多播掩码可以包括至少最设定高位,并且基于多播配置寄存器的值,可以包括多达七个附加设定位。因此,在包括三位多播配置寄存器的实施例中,多播地址空间可以被配置成是在总地址空间的1/2(一个设定位)与1/256(八个设定位)之间。在一些实施例中,在框310中,受管网络设备102或计算节点104可以使用针对16位dlid的硬编码多播掩码。多播掩码可以是与infinibandtm多播寻址兼容的。例如,多播掩码可以具有设定高两位,并且可以由十六进制值0xc000表示。

在框312中,受管网络设备102或计算节点104编制集中掩码。集中掩码是与dlid具有相同宽度(例如,32、24、20或16位宽)的二进制值。集中掩码可以存储在由受管网络设备102或计算节点104维持的掩码寄存器或其他存储位置之中。集中掩码中的一定数量的高位可以被设定,这建立了集中地址空间。集中地址空间位于多播地址空间的顶部。因此,集中地址空间可以包括至少与多播掩码一样多的设定高位。在一些实施例中,与多播掩码相比,集中掩码可以包括一个附加设定位。例如,如果多播掩码针对32位、24位以及20位多播掩码包括四个设定高位,集中掩码可以对应地由十六进制值0xf8000000、0xf80000以及0xf8000表示。对于由0xc000表示的16位多播掩码,集中掩码可以由十六进制值oxe000表示。集中掩码可以在接收分组时编制,或者在一些实施例中,可以在接收分组之前编制。如果提前编制,受管网络设备102可以针对每个lid宽度(例如,16、20、24或32位)维持一个预编制集中掩码。

在一些实施例中,在框314中,受管网络设备102或计算节点104可以基于集中配置寄存器的内容来设定集中掩码中的可配置数量(例如,在一些实施例中,多达八个附加位)的附加高位。集中配置寄存器可以具体化为三位寄存器,并且可以适用于整个受管网络设备102或计算节点104或适用于特定端口120。因此,在包括三位集中配置寄存器的实施例中,集中地址空间可以被配置成是在多播地址空间的1/1(无附加设定位)与1/128(七个附加设定位)之间。应当注意,受管网络设备102或计算节点104可以针对任意宽度(例如32、24、20或16位)的dlid在集中掩码中使用可配置数量的附加位。

在一些实施例中,在框316中,受管网络设备102或计算节点104可以将dlid标识为预定义的许可lid。许可lid可以用来指示用于某些子网管理分组的直接路由选择。许可lid地址可以具体化为地址空间中的高位地址(例如,针对32位、24位、20位或16位地址空间,对应地是0xffffffff、0xffffff、0xfffff或0xffff)。

在框318中,受管网络设备102或计算节点104对dlid应用集中掩码。受管网络设备102可以执行任何计算、运算或算法来判定dlid是否包括在由集中掩码限定的集合地址空间之中。例如,受管网络设备102或计算节点104可以用集中掩码来掩蔽dlid的高八位(例如,使用逐位and运算),并且随后判定结果是否与集中掩码精确匹配(例如,使用逐位xor运算)。作为例证,为了判定dlid是否包括在集中地址空间中,受管网络设备102或计算节点104可以评估以下在方程1中所描述的等式表达式。

(dlid&掩码)λ掩码==0(1)

在框320中,受管网络设备102或计算节点104判定dlid是否在集中地址空间内。如果不在,方法300前进到框324,如下文所描述。如果dlid在集中地址空间内,方法300分支到框322,在该框中,受管网络设备102或计算节点104加速集中操作。受管网络设备102或计算节点104可以例如执行加速的广播、分散、集中、归约或同步操作。在执行加速的集中操作之后,方法300循环回到框302以继续处理数据分组。

回顾框320,如果dlid不在集中地址空间内,方法300前进到框324,在该框中,受管网络设备102或计算节点104对dlid应用多播掩码。受管网络设备102或计算节点104可以执行任何计算、运算或算法来判定dlid是否包括在由多播掩码限定的多播地址空间之中。例如,受管网络设备102或计算节点104可以用多播掩码来掩蔽dlid的高八位(例如,使用逐位and运算),并且随后判定结果是否与多播掩码精确匹配(例如,使用逐位xor运算)。作为例证,受管网络设备102或计算节点104可以评估以上在方程1中所描述的等式表达式。

在框326中,受管网络设备102或计算节点104判定dlid是否在多播地址空间内。如果不在,方法300前进到框332,如下文所描述。如果dlid在多播地址空间内,方法300分支到框328,在该框中,受管网络设备102或计算节点104使用多播掩码来确定dlid在多播转发表中的偏移量。受管网络设备102或计算节点104可以例如通过执行多播掩码和dlid的逐位xor运算来确定偏移量。作为例证,受管网络设备102或计算节点104可以评估以下在方程2中所描述的表达式。

dlidλ掩码(2)

在框330中,受管网络设备102将数据分组转发到由dlid标识的多播组。例如,受管网络设备102可以使用如以上所描述在块328中确定的偏移量来在多播转发表中查找多播组条目。多播组条目可以标识多播组中所包括的受管网络设备102的两个或更多个端口120。例如,多播组条目可以具体化为标识端口120的位图或其他数据。受管网络设备102随后可以将数据分组复制到每个输出端口120(除了在其上接收数据分组的端口120之外)。如果多播偏移量超过受管网络设备102上的多播资源的数量,可以使用集中资源执行多播,在这种情况下,该值(偏移量—受管网络设备102中的多播条目的数量)变成集中资源的偏移量,并且给定集中资源以降级模式被用来执行简单的多播。在转发多播分组之后,方法300循环回到框302以继续处理数据分组。

回顾框326,如果dlid不在多播地址空间内,方法300前进到框332,在该框中,受管网络设备102将数据分组转发到单播dlid。具体地,受管网络设备102可以选择输出端口120并将数据分组转发到那个端口120。在一些实施例中,在框334中,受管网络设备102可以使用平面线性地址空间来标识目的地端口120。例如,受管网络设备102可以维持将dlid映射到目的地端口120的一个或多个转发表。在一些实施例中,在框336中,受管网络设备102可以使用层级地址空间来标识目的地端口120。在层级地址空间中,dlid可以被再分为不同的字段(例如,组id、交换机id、端口号等)。在一些实施例中,在框338中,受管网络设备102可以标识一个或多个在架构上限定的dlid并且相应地处理数据分组。例如,在一些实施例中,预定义的地址可以用于尚未被分配地址的未初始化的端点端口,或者用于表示无效或未定义的地址。例如,未初始化的地址可以具体化为零地址(例如,针对32位、24位、20位或16位地址空间,对应地是0x00000000、0x000000、0x00000或0x0000)。在转发单播数据分组之后,方法300循环回到框302以继续处理数据分组。

虽然图3的方法300被展示为按顺序地执行,但是应当理解,在一些实施例中,受管网络设备102或计算节点104可以并行地、同时地或以任何其他顺序执行方法300的操作。例如,在一些实施例中,可以由受管网络设备102或计算节点104的硬件资源并行地执行操作。

现在参考图4,在使用中,计算节点104可以执行用于将多播本地标识符(lid)在不同的位宽度之间进行转换的方法400。计算节点104可以例如在写出数据分组报头时转换lid。方法400开始于框402,在该框中,计算节点104确定多播lid。多播dlid可以具体化为具有可配置长度(例如,32、24、20或16位宽、或任何其他适当宽度)的二进制值。例如,在一些实施例中,在计算节点104上执行的软件实体可以使用32位lid。

在框404中,计算节点104编制与多播lid具有相同宽度(例如,32、24、20或16位)的多播掩码。多播掩码中的一定数量的高位可以被设定,这建立了多播地址空间。例如,在一些实施例中,针对32、24或20位多播掩码,可以设定该多播掩码的高四位。在这些实施例中,多播掩码因此可以对应地由十六进制值0xf0000000、0xf00000以及0xf0000表示。针对16位多播掩码,可以设定该多播掩码的高两位。在这些实施例中,多播掩码可以由十六进制值0xc000表示。在一些实施例中,可以设定多播掩码的可配置数量的高位。例如,在一些实施例中,可以设定多播掩码的在一个与七个之间的高位,这意味着在这些实施例中,多播地址空间可以被配置成是在总地址空间的1/2(一个设定位)与1/128(七个设定位)之间。

在框406中,计算节点104使用多播掩码来确定多播lid的偏移量。计算节点104可以例如通过执行多播掩码和lid的逐位xor运算来确定偏移量。作为例证,计算节点104可以评估以上在方程2中所描述的表达式。

在框408中,计算节点104针对新的位宽度编制新的多播掩码。例如,当从由软件使用的32位lid转换到由结构链路106使用的24位、20位或16位lid时,计算节点104可以对应地生成24位、20位或16位宽的多播掩码。新的多播掩码可以与以上结合框404所描述的原始多播掩码具有相同数量的设定高位。例如,当从32位lid转换到20位lid时,原始多播掩码可以具体化为0xf0000000,并且新的多播掩码可以具体化为0xf0000。

在框410中,计算节点104将新的位宽度的新的多播掩码与lid偏移量组合起来以确定转换的多播lid。例如,计算节点104可以执行逐位or运算以组合新的掩码和偏移量。作为例证,计算节点104可以评估以下在方程3中所描述的表达式。在确定转换的多播lid之后,方法400循环回到框402以继续转换多播lid。

新掩码|偏移量(3)

示例

以下提供了在本文中所公开的技术的说明性示例。所述技术的实施例可以包括以下所描述的示例中的任何一个或多个示例及其任何组合。

示例1包括一种用于数据分组转发的网络设备,所述网络设备包括:分组入口模块,用于从数据分组中提取目的地本地标识符(dlid),其中,所述dlid包括具有第一长度的二进制值;以及多播处理模块,用于编制多播掩码,其中,所述多播掩码包括具有所述第一长度的二进制值,并且其中,所述多播掩码指示所述dlid的地址空间的高位部分;使用所述多播掩码来判定所述dlid是否包括在所述地址空间的所述高位部分之中;响应于确定所述dlid包括在所述地址空间的所述高位部分之中,根据所述dlid确定多播组;并且响应于所述确定所述dlid包括在所述地址空间的所述高位部分之中,将所述数据分组转发到所述多播组。

示例2包括如示例1所述的主题,并且其中,所述第一长度包括20位、24位或32位。

示例3包括如示例1和2中任一项所述的主题,并且其中,编制所述多播掩码包括确定所述多播掩码的待设定的最高位的数量。

示例4包括如示例1-3中任一项所述的主题,并且其中,确定所述多播掩码的待设定的所述最高位的数量包括基于所述网络设备的多播掩码配置寄存器来确定所述最高位的数量。

示例5包括如示例1-4中任一项所述的主题,并且其中,编制所述多播掩码包括编制具有四个设定最高位的掩码。

示例6包括如示例1-5中任一项所述的主题,并且其中,使用所述多播掩码来判定所述dlid是否包括在所述地址空间的所述高位部分之中包括使用所述多播掩码来掩蔽所述dlid以产生中间值;并且判定所述多播掩码是否与所述中间值精确匹配。

示例7包括如示例1-6中任一项所述的主题,并且其中,使用所述多播掩码来掩蔽所述dlid包括对所述多播掩码和所述dlid执行逐位and运算以产生所述中间值;并且判定所述多播掩码是否与所述中间值精确匹配包括对所述多播掩码和所述中间值执行逐位xor运算。

示例8包括如示例1-7中任一项所述的主题,并且其中,根据所述dlid确定所述多播组包括对所述多播掩码和所述dlid执行逐位xor运算以产生多播组索引;并且使用所述多播组索引对多播组转发表进行索引。

示例9包括如示例1-8中任一项所述的主题,并且进一步包括集中处理模块,所述集中处理模块用于编制集中掩码,其中,所述集中掩码包括具有所述第一长度的二进制值,并且其中,所述集中掩码指示所述dlid的所述地址空间的所述高位部分的第二高位部分;使用所述集中掩码来判定所述dlid是否包括在所述地址空间的所述第二高位部分之中;并且响应于确定所述dlid包括在所述地址空间的所述第二高位部分之中,执行集中加速操作。

示例10包括如示例1-9中任一项所述的主题,并且其中,编制所述多播掩码包括确定所述多播掩码的待设定的最高位的第一数量;并且编制所述集中掩码包括(i)设定所述集中掩码的所述第一数量的最高位并且(ii)确定所述集中掩码的待设定的最高位的附加数量。

示例11包括如示例1-10中任一项所述的主题,并且其中,确定所述集中掩码的待设定的所述最高位的另外数量包括基于所述网络设备的集中掩码配置寄存器来确定所述最高位的另外数量。

示例12包括如示例1-11中任一项所述的主题,并且其中,编制所述多播掩码包括编制具有四个设定最高位的掩码;并且编制所述集中掩码包括编制具有五个设定最高位的掩码。

示例13包括如示例1-12中任一项所述的主题,并且其中,所述集中处理模块进一步用于判定是否超过所述网络设备的多播资源限值;并且响应于确定超过所述网络设备的所述多播资源限值,以降级模式使用集中资源作为多播资源。

示例14包括如示例1-13中任一项所述的主题,并且其中,使用所述集中掩码来判定所述dlid是否包括在所述地址空间的所述第二高位部分之中包括使用所述集中掩码来掩蔽所述dlid以产生中间值;并且判定所述集中掩码是否与所述中间值精确匹配。

示例15包括如示例1-14中任一项所述的主题,并且其中,使用所述集中掩码来掩蔽所述dlid包括对所述集中掩码和所述dlid执行逐位and运算以产生所述中间值;并且判定所述集中掩码是否与所述中间值精确匹配包括对所述集中掩码和所述中间值执行逐位xor运算。

示例16包括如示例1-15中任一项所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位,并且其中,如果所述第一长度是16位则编制所述多播掩码包括编制具有两个设定最高位的掩码;并且如果所述第一长度大于16位则编制所述多播掩码包括基于所述网络设备的多播掩码配置寄存器来确定所述多播掩码的待设定的最高位的数量。

示例17包括如示例1-16中任一项所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位,并且其中,如果所述第一长度是16位则编制所述多播掩码包括编制具有两个设定最高位的掩码;并且如果所述第一长度大于16位则编制所述多播掩码包括编制具有四个设定最高位的掩码。

示例18包括如示例1-17中任一项所述的主题,并且进一步包括单播处理模块,所述单播处理模块用于响应于确定所述dlid未包括在所述地址空间的所述高位部分之中而将所述数据分组转发到单播地址。

示例19包括一种用于转换多播地址的计算设备,所述计算设备包括地址转换模块,所述地址转换模块用于确定多播本地标识符(lid),其中,所述lid包括具有第一长度的二进制值;编制多播掩码,其中,所述多播掩码包括具有所述第一长度的二进制值,并且其中,所述多播掩码指示所述lid的地址空间的高位部分;使用所述多播掩码来确定所述lid的偏移量;编制第二多播掩码,其中,所述第二多播掩码包括具有第二长度的二进制值;并且将所述第二多播掩码与所述lid的所述偏移量组合起来以产生第二lid,其中,所述第二lid包括具有所述第二长度的二进制值,并且其中,所述第二多播掩码指示所述第二lid的地址空间的高位部分。

示例20包括如示例19所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位;所述第二长度包括16位、20位、24位或32位;并且所述第一长度不等于所述第二长度。

示例21包括如示例19和20中任一项所述的主题,并且其中,所述第一长度包括32位。并且所述第二长度包括16位、20位或24位。

示例22包括如示例19-21中任一项所述的主题,并且其中,编制所述多播掩码包括设定所述多播掩码的第一数量的最高位;并且编制所述第二多播掩码包括设定所述第二多播掩码的所述第一数量的最高位。

示例23包括如示例19-22中任一项所述的主题,并且其中,使用所述多播掩码来确定所述lid的所述偏移量包括对所述lid和所述多播掩码执行逐位xor运算以产生所述lid的所述偏移量。

示例24包括如示例19-23中任一项所述的主题,并且其中,将所述第二多播掩码与所述lid的所述偏移量组合起来以产生所述第二lid包括对所述第二多播掩码和所述lid的所述偏移量执行逐位or运算以产生所述第二lid。

示例25包括一种用于数据分组转发的方法,所述方法包括:由网络设备从数据分组中提取目的地本地标识符(dlid),其中,所述dlid包括具有第一长度的二进制值;由所述网络设备编制多播掩码,其中,所述多播掩码包括具有所述第一长度的二进制值,并且其中,所述多播掩码指示所述dlid的地址空间的高位部分;由所述网络设备使用所述多播掩码来判定所述dlid是否包括在所述地址空间的所述高位部分之中;响应于确定所述dlid包括在所述地址空间的所述高位部分之中,由所述网络设备根据所述dlid确定多播组;并且响应于确定所述dlid包括在所述地址空间的所述高位部分之中,由所述网络设备将所述数据分组转发到所述多播组。

示例26包括如示例25所述的主题,并且其中,所述第一长度包括20位、24位或32位。

示例27包括如示例25和26中任一项所述的主题,并且其中,编制所述多播掩码包括确定所述多播掩码的待设定的最高位的数量。

示例28包括如示例25-27中任一项所述的主题,并且其中,确定所述多播掩码的待设定的所述最高位的数量包括基于所述网络设备的多播掩码配置寄存器来确定所述最高位的数量。

示例29包括如示例25-28中任一项所述的主题,并且其中,编制所述多播掩码包括编制具有四个设定最高位的掩码。

示例30包括如示例25-29中任一项所述的主题,并且其中,使用所述多播掩码来判定所述dlid是否包括在所述地址空间的所述高位部分之中包括使用所述多播掩码来掩蔽所述dlid以产生中间值;并且判定所述多播掩码是否与所述中间值精确匹配。

示例31包括如示例25-30中任一项所述的主题,并且其中,使用所述多播掩码来掩蔽所述dlid包括对所述多播掩码和所述dlid执行逐位and运算以产生所述中间值;并且判定所述多播掩码是否与所述中间值精确匹配包括对所述多播掩码和所述中间值执行逐位xor运算。

示例32包括如示例25-31中任一项所述的主题,并且其中,根据所述dlid确定所述多播组包括对所述多播掩码和所述dlid执行逐位xor运算以产生多播组索引;并且使用所述多播组索引对多播组转发表进行索引。

示例33包括如示例25-32中任一项所述的主题,并且进一步包括:由所述网络设备编制集中掩码,其中,所述集中掩码包括具有所述第一长度的二进制值,并且其中,所述集中掩码指示所述dlid的所述地址空间的所述高位部分的第二高位部分;由所述网络设备使用所述集中掩码来判定所述dlid是否包括在所述地址空间的所述第二高位部分之中;并且响应于确定所述dlid包括在所述地址空间的所述第二高位部分之中,由所述网络设备执行集中加速操作。

示例34包括如示例25-33中任一项所述的主题,并且其中,编制所述多播掩码包括确定所述多播掩码的待设定的最高位的第一数量;并且编制所述集中掩码包括(i)设定所述集中掩码的所述第一数量的最高位并且(ii)确定所述集中掩码的待设定的最高位的附加数量。

示例35包括如示例25-34中任一项所述的主题,并且其中,确定所述集中掩码的待设定的所述最高位的另外数量包括基于所述网络设备的集中掩码配置寄存器来确定所述最高位的另外数量。

示例36包括如示例25-35中任一项所述的主题,并且其中,编制所述多播掩码包括编制具有四个设定最高位的掩码;并且编制所述集中掩码包括编制具有五个设定最高位的掩码。

示例37包括如示例25-36中任一项所述的主题,并且进一步包括:由所述网络设备判定是否超过所述网络设备的多播资源限值;以及响应于确定超过所述网络设备的所述多播资源限值而由所述网络设备以降级模式使用集中资源作为多播资源。

示例38包括如示例25-37中任一项所述的主题,并且其中,使用所述集中掩码来判定所述dlid是否包括在所述地址空间的所述第二高位部分之中包括使用所述集中掩码来掩蔽所述dlid以产生中间值;并且判定所述集中掩码是否与所述中间值精确匹配。

示例39包括如示例25-38中任一项所述的主题,并且其中,使用所述集中掩码来掩蔽所述dlid包括对所述集中掩码和所述dlid执行逐位and运算以产生所述中间值;并且判定所述集中掩码是否与所述中间值精确匹配包括对所述集中掩码和所述中间值执行逐位xor运算。

示例40包括如示例25-39中任一项所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位,并且其中,如果所述第一长度是16位,则编制所述多播掩码包括编制具有两个设定最高位的掩码;并且如果所述第一长度大于16位,则编制所述多播掩码包括基于所述网络设备的多播掩码配置寄存器来确定所述多播掩码的待设定的最高位的数量。

示例41包括如示例25-40中任一项所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位,并且其中,如果所述第一长度是16位,则编制所述多播掩码包括编制具有两个设定最高位的掩码;并且如果所述第一长度大于16位,则编制所述多播掩码包括编制具有四个设定最高位的掩码。

示例42包括如示例25-41中任一项所述的主题,并且进一步包括:响应于确定所述dlid未包括在所述地址空间的所述高位部分之中,由所述网络设备将所述数据分组转发到单播地址。

示例43包括一种用于转换多播地址的方法,所述方法包括:由计算设备确定多播本地标识符(lid),其中,所述lid包括具有第一长度的二进制值;由所述计算设备编制多播掩码,其中,所述多播掩码包括具有所述第一长度的二进制值,并且其中,所述多播掩码指示所述lid的地址空间的高位部分;由所述计算设备使用所述多播掩码来确定所述lid的偏移量;由所述计算设备编制第二多播掩码,其中,所述第二多播掩码包括具有第二长度的二进制值;并且由所述计算设备将所述第二多播掩码与所述lid的所述偏移量组合起来以产生第二lid,其中,所述第二lid包括具有所述第二长度的二进制值,并且其中,所述第二多播掩码指示所述第二lid的地址空间的高位部分。

示例44包括如示例43所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位;所述第二长度包括16位、20位、24位或32位;并且所述第一长度不等于所述第二长度。

示例45包括如示例43和44中任一项所述的主题,并且其中,所述第一长度包括32位。并且所述第二长度包括16位、20位或24位。

示例46包括如示例43-45中任一项所述的主题,并且其中,编制所述多播掩码包括设定所述多播掩码的第一数量的最高位;并且编制所述第二多播掩码包括设定所述第二多播掩码的所述第一数量的最高位。

示例47包括如示例43-46中任一项所述的主题,并且其中,使用所述多播掩码来确定所述lid的所述偏移量包括对所述lid和所述多播掩码执行逐位xor运算以产生所述lid的所述偏移量。

示例48包括如示例43-47中任一项所述的主题,并且其中,将所述第二多播掩码与所述lid的所述偏移量组合起来以产生所述第二lid包括对所述第二多播掩码和所述lid的所述偏移量执行逐位or运算以产生所述第二lid。

示例49包括一种计算设备,包括:处理器;以及存储器,具有存储于其中的多条指令,所述指令当由所述处理器执行时使所述计算设备执行示例25-48中任一项所述的方法。

示例50包括一种或多种机器可读存储介质,包括存储于其上的多条指令,所述指令响应于被执行而使计算设备执行示例25-48中任一项所述的方法。

示例51包括一种计算设备,包括用于执行示例25-48中任一项所述的方法的装置。

示例52包括一种用于数据分组转发的网络设备,所述网络设备包括:用于从数据分组中提取目的地本地标识符(dlid)的装置,其中,所述dlid包括具有第一长度的二进制值;用于编制多播掩码的装置,其中,所述多播掩码包括具有所述第一长度的二进制值,并且其中,所述多播掩码指示所述dlid的地址空间的高位部分;用于使用所述多播掩码来判定所述dlid是否包括在所述地址空间的所述高位部分之中的装置;用于响应于确定所述dlid包括在所述地址空间的所述高位部分之中而根据所述dlid确定多播组的装置;以及用于响应于确定所述dlid包括在所述地址空间的所述高位部分之中而将所述数据分组转发到所述多播组的装置。

示例53包括如示例52所述的主题,并且其中,所述第一长度包括20位、24位或32位。

示例54包括如示例52和53中任一项所述的主题,并且其中,所述用于编制所述多播掩码的装置包括用于确定所述多播掩码的待设定的最高位的数量的装置。

示例55包括如示例52-54中任一项所述的主题,并且其中,所述用于确定所述多播掩码的待设定的所述最高位的数量的装置包括用于基于所述网络设备的多播掩码配置寄存器来确定所述最高位的数量的装置。

示例56包括如示例52-55中任一项所述的主题,并且其中,所述用于编制所述多播掩码的装置包括用于编制具有四个设定最高位的掩码的装置。

示例57包括如示例52-56中任一项所述的主题,并且其中,所述用于使用所述多播掩码来判定所述dlid是否包括在所述地址空间的所述高位部分之中的装置包括:用于使用所述多播掩码来掩蔽所述dlid以产生中间值的装置;以及用于判定所述多播掩码是否与所述中间值精确匹配的装置。

示例58包括如示例52-57中任一项所述的主题,并且其中,所述用于使用所述多播掩码来掩蔽所述dlid的装置包括用于对所述多播掩码和所述dlid执行逐位and运算以产生所述中间值的装置;并且所述用于判定所述多播掩码是否与所述中间值精确匹配的装置包括用于对所述多播掩码和所述中间值执行逐位xor运算的装置。

示例59包括如示例52-58中任一项所述的主题,并且其中,所述用于根据所述dlid确定所述多播组的装置包括:用于对所述多播掩码和所述dlid执行逐位xor运算以产生多播组索引的装置;以及用于使用所述多播组索引对多播组转发表进行索引的装置。

示例60包括如示例52-59中任一项所述的主题,并且进一步包括用于编制集中掩码的装置,其中,所述集中掩码包括具有所述第一长度的二进制值,并且其中,所述集中掩码指示所述dlid的所述地址空间的所述高位部分的第二高位部分;用于使用所述集中掩码来判定所述dlid是否包括在所述地址空间的所述第二高位部分之中的装置;以及用于响应于确定所述dlid包括在所述地址空间的所述第二高位部分之中而执行集中加速操作的装置。

示例61包括如示例52-60中任一项所述的主题,并且其中,所述用于编制所述多播掩码的装置包括用于确定所述多播掩码的待设定的最高位的第一数量的装置;并且所述用于编制所述集中掩码的装置包括(i)用于设定所述集中掩码的所述第一数量的最高位的装置以及(ii)用于确定所述集中掩码的待设定的最高位的附加数量的装置。

示例62包括如示例52-61中任一项所述的主题,并且其中,所述用于确定所述集中掩码的待设定的所述最高位的另外数量的装置包括用于基于所述网络设备的集中掩码配置寄存器来确定所述最高位的另外数量的装置。

示例63包括如示例52-62中任一项所述的主题,并且其中,所述用于编制所述多播掩码的装置包括用于编制具有四个设定最高位的掩码的装置;并且所述用于编制所述集中掩码的装置包括用于编制具有五个设定最高位的掩码的装置。

示例64包括如示例52-63中任一项所述的主题,并且进一步包括用于判定是否超过所述网络设备的多播资源限值的装置;以及用于响应于确定超过所述网络设备的所述多播资源限值而以降级模式使用集中资源作为多播资源的装置。

示例65包括如示例52-64中任一项所述的主题,并且其中,所述用于使用所述集中掩码来判定所述dlid是否包括在所述地址空间的所述第二高位部分之中的装置包括用于使用所述集中掩码来掩蔽所述dlid以产生中间值的装置;以及用于判定所述集中掩码是否与所述中间值精确匹配的装置。

示例66包括如示例52-65中任一项所述的主题,并且其中,所述用于使用所述集中掩码来掩蔽所述dlid的装置包括用于对所述集中掩码和所述dlid执行逐位and运算以产生所述中间值的装置;并且所述用于判定所述集中掩码是否与所述中间值精确匹配的装置包括用于对所述集中掩码和所述中间值执行逐位xor运算的装置。

示例67包括如示例52-66中任一项所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位,并且其中,如果所述第一长度是16位,则所述用于编制所述多播掩码的装置包括用于编制具有两个设定最高位的掩码的装置;并且如果所述第一长度大于16位,则所述用于编制所述多播掩码的装置包括用于基于所述网络设备的多播掩码配置寄存器来确定所述多播掩码的待设定的最高位的数量的装置。

示例68包括如示例52-67中任一项所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位,并且其中,如果所述第一长度是16位,则所述用于编制所述多播掩码的装置包括用于编制具有两个设定最高位的掩码的装置;并且如果所述第一长度大于16位,则所述用于编制所述多播掩码的装置包括用于编制具有四个设定最高位的掩码的装置。

示例69包括如示例52-68中任一项所述的主题,并且进一步包括用于响应于确定所述dlid未包括在所述地址空间的所述高位部分之中而将所述数据分组转发到单播地址的装置。

示例70包括一种用于转换多播地址的计算设备,所述计算设备包括:用于确定多播本地标识符(lid)的装置,其中,所述lid包括具有第一长度的二进制值;用于编制多播掩码的装置,其中,所述多播掩码包括具有所述第一长度的二进制值,并且其中,所述多播掩码指示所述lid的地址空间的高位部分;用于使用所述多播掩码来确定所述lid的偏移量的装置;用于编制第二多播掩码的装置,其中,所述第二多播掩码包括具有第二长度的二进制值;以及用于将所述第二多播掩码与所述lid的所述偏移量组合起来以产生第二lid的装置,其中,所述第二lid包括具有所述第二长度的二进制值,并且其中,所述第二多播掩码指示所述第二lid的地址空间的高位部分。

示例71包括如示例70所述的主题,并且其中,所述第一长度包括16位、20位、24位或32位;所述第二长度包括16位、20位、24位或32位;并且所述第一长度不等于所述第二长度。

示例72包括如示例70和71中任一项所述的主题,并且其中,所述第一长度包括32位。并且所述第二长度包括16位、20位或24位。

示例73包括如示例70-72中任一项所述的主题,并且其中,所述用于编制所述多播掩码的装置包括用于设定所述多播掩码的第一数量的最高位的装置;并且所述用于编制所述第二多播掩码的装置包括用于设定所述第二多播掩码的所述第一数量的最高位的装置。

示例74包括如示例70-73中任一项所述的主题,并且其中,所述用于使用所述多播掩码来确定所述lid的所述偏移量的装置包括用于对所述lid和所述多播掩码执行逐位xor运算以产生所述lid的所述偏移量的装置。

示例75包括如示例70-74中任一项所述的主题,并且其中,所述用于将所述第二多播掩码与所述lid的所述偏移量组合起来以产生所述第二lid的装置包括用于对所述第二多播掩码和所述lid的所述偏移量执行逐位or运算以产生所述第二lid的装置。

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