用于在高性能网络结构中进行中等粒度自适应路由的技术的制作方法

文档序号:11637164阅读:218来源:国知局
用于在高性能网络结构中进行中等粒度自适应路由的技术的制造方法与工艺



背景技术:

高性能计算(hpc)集群、云计算数据中心以及其他大型计算网络可以通过高速输入/输出结构(诸如infinibandtm结构)进行通信。infinibandtm体系结构可以使用端节点之间的交换点到点通道传送数据。在infinibandtm体系结构中,可以使用16位本地标识符(lid)在子网内标识端节点。infinibandtm网络中的路由是分布式的,基于每个交换机中所存储的转发表。infinibandtm交换机的转发表可以存储每个lid的单个目的地端口。因此,infinibandtm中的路由可以是静态的且确定性的。

当对网络链路的需求超过可用带宽或其他网络资源时会发生网络通信的拥塞。在infinibandtm网络中,拥塞控制代理可以监视网络拥塞并与网络主机通信从而减少造成拥塞的网络流量的数据注入速率。

附图说明

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

图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的目的地本地标识符(dlid)。受管网络设备102检查所述dlid从而判定所述数据分组的静态路由目的地端口的结构电路106是否拥塞。拥塞一般对受管网络设备102之间而非计算节点104与受管网络设备102之间的结构链路106发生。如果拥塞,所述受管网络设备102可以在端口组中查找dlid并选择所述端口组的新目的地端口。每个端口组包括所述受管网络设备102的两个或更多个端口,并且所述端口组可以重叠(即,多个端口组可以包括相同的端口)。结构管理器108可以配置所述端口组以及系统100的每个受管网络设备102的端口组转发表。因而,在系统100中,结构管理器108可以提供关于拓扑结构以及使用策略的全局信息,同时由每个受管网络设备102进行实时流量监测和自适应路由。因而,系统100所提供的自适应路由可以支持缩放至大量受管网络设备102。相应地,虽然被展示为包括三个计算节点104a至104c及两个受管网络设备102a和102b,应该理解的是,系统100可以包括更多的受管网络设备102和计算节点104。

每个受管网络设备102可以被实施为能够转发或控制结构流量的任何网络设备,比如受管交换机。示意性受管网络设备102包括多个结构端口120、交换逻辑122、以及管理逻辑124。每个结构端口120可以与结构链路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标识数据分组的目的地端点(例如,目的地计算节点104)。

静态路由模块204被配置成用于根据所述dlid确定受管网络设备102的静态路由目的地端口120。静态路由模块204可以例如使用dlid在转发表中查找目的地端口120。静态路由模块204可以被配置成用于将数据分组转发至静态路由目的地端口120,如果这个目的地端口120不拥塞的话。

拥塞监测模块206被配置成用于判定所述静态路由目的地端口120是否拥塞。拥塞监测模块206可以使用任何适当的拥塞度量或其他监测技术来判定目的地端口120是否拥塞。在一些实施例中,拥塞监测模块206可以判定用于目的地端口120的结构链路106的具体分支是否拥塞(例如,具体虚拟道路、服务信道、或相关联的服务水平)。

自适应路由模块208被配置成基于dlid确定端口分组。每个端口分组标识受管网络设备102的两个或更多个端口120。端口分组可以重叠,并且每个dlid可以准确地与一个端口组相关联。自适应路由模块208进一步被配置成用于:当静态路由目的地端口120拥塞时动态地选择端口组中的目的地端口120,并且然后将数据分组转发至所述动态选择的目的地端口120。自适应路由模块208可以使用任何一种或多种策略来选择所述目的地端口120(例如,随机选择、贪婪/最小负载选择、和/或贪婪随机选择)。

管理模块210被配置成用于管理受管网络设备102的配置。管理模块210可以存储或另外管理一个或多个配置寄存器、数据表、或可以用来配置受管网络设备102的其他管理信息。例如,在一些实施例中,管理模块210可以管理线性转发表、组播转发表、端口组转发表、和/或端口组表。管理模块210可以被配置成用于从结构管理器108接收命令、数据、和其他管理信息。

现在参照图3,在使用中,受管网络设备102可以执行用于中等粒度自适应路由的方法300。方法300在框302开始,在所述框中,受管网络设备102在端口120上接收数据分组并从所述数据分组提取目的地本地标识符(dlid)。所述dlid标识所述数据分组的目的地(例如,目的地计算节点104)。所述数据分组被实施为包括dlid的二进制数据的任何适当集合。所述dlid可以被实施为具有可配置长度(例如,32、24、20、或16位)的二进制值。受管网络设备102可以被配置成提取正确大小的dlid,例如借助结构管理器108。可以针对受管网络设备102和/或基于每个端口120全局地配置dlid的宽度。在一些实施例中,可以将可能的dlid的子集指定给组播和/或集体地址空间,并且某些dlid可以具有预定的意义(例如,未经初始化的地址或许可的lid)。可以使用专用组播操作、集体操作、或其他操作来处理那些dlid,为了清楚起见在方法300中未示出这些操作。

在框304中,受管网络设备102基于dlid确定静态路由目的地端口120。静态路由目的地端口120可以是受管网络设备102的已经与dlid相关联的预定目的地端口120。受管网络设备102可以在一个或多个数据表中查找静态路由目的地端口120。那些数据表可以由结构管理器108配置或另外维护。在一些实施例中,在框306中,受管网络设备102可以在线性转发表中查找目的地端口120。受管网络设备102可以使用dlid作为向线性转发表内的索引并检索端口号或他标识目的地端口120的其数据。

在框308中,受管网络设备102判定静态路由目的地端口120是否拥塞。目的地端口120会拥塞,如果这个端口120上所提供的负载超过结构链路106的另一侧的接收器(例如,进行接收的受管网络设备102或计算节点104)的喷射率的话。受管网络设备102可以使用任何监测技术来判定目的地端口120是否拥塞。例如,受管网络设备102可以使用拥塞控制代理,监测从远端设备接收的拥塞通知,分析流量控制数据,或进行任何其他适当监测。受管网络设备102可以基于每条虚拟道路、基于服务信道、基于服务水平、或基于结构链路106的任何其他逻辑或物理分支判定目的地端口120是否拥塞。在一些实施例中,在框310中,受管网络设备102分析接收器处的可用流量控制信用以及有待由受管网络设备102发射的未决流量控制信用。如果流量控制信用在接收器处不可用或者受管网络设备102的未决流量控制信用正在提高,则目的地端口120会拥塞。在一些实施例中,在框312中,受管网络设备102可以分析拥塞日志中的拥塞标志事件。在一些实施例中,响应于检测到拥塞,受管网络设备102可以在检测到拥塞时向接收器发送转发明确拥塞通知(fecn),例如通过设置离开受管网络设备102的数据分组上的fecn。当用fecn位标记数据分组时,受管网络设备102还可以将这个标志事件记录在拥塞日志中。

在框314中,受管网络设备102判定静态路由目的地端口120是否拥塞。如果不拥塞,则方法300分支前进到框332,如下所述。如果静态路由目的地端口120拥塞,则方法300前进到框316。

在框316中,受管网络设备102基于dlid确定目的地端口组。目的地端口组可以被标识为受管网络设备102的任意两个或更多个目的地端口120的集合。目的地端口组可以重叠,意思是端口120可以包括在不止一个端口组中。如下面进一步描述的,每个端口组可以映射至一个或多个dlid,并且每个dlid准确地与一个端口组相关联。结构管理器108可以发现通过所述结构的路径并且然后相应地配置端口组以及端口组映射。当针对具体dlid(例如,单个目的地端口120)仅存在一个通过所述结构的可能路径时,这个dlid可以被指定给未定义的端口组(例如,空集、空值、零值等)。

在一些实施例中,在框318中,受管网络设备102可以在端口组转发表中查找端口组。例如,受管网络设备102可以使用用于标识目的地端口组的唯一端口组标识符的dlid来索引端口组转发表。端口组转发表可以具有与线性转发表类似的结构,并且与线性转发表类似地可以由结构管理器108访问或另外维护。现在参照图4,示意图400展示了端口组转发表402的一个潜在实施例。在示意性实施例中,可以用dlidlidi对表402进行索引从而生成相应的端口组标识符pg_idi。因而,在示意性实施例中,每个dlid可以用来准确地检索一个端口组标识符,但每个端口组标识符可以被不止一个dlid引用。每个dlid可以被实施为例如16位的二进制值,并且每个端口组标识符可以被实施为八位的二进制值。未定义的端口组可以具有端口组标识符零(0x00),并且有效端口组可以具有从零到255(0x01到0xff)的标识符。在一些实施例中,受管网络设备102可以支持少于潜在最大255个端口组;然而,在许多实施例中,受管网络设备102可以支持至少受管网络设备102具有端口120的两倍多的端口组。

返回参照图3,在框320中,受管网络设备102从与dlid相关联的端口组确定动态目的地端口120。受管网络设备102可以使用任何策略来选择动态目的地端口120。在一些实施例中,受管网络设备102可以保证动态目的地端口120与静态路由目的地端口120不相同,从而避免拥塞。在一些实施例中,受管网络设备102可以在端口组表中查找目的地端口120。例如,受管网络设备102可以使用用于标识与端口组相关联的端口掩码的端口组标识符来索引端口组表。端口掩码可以被实施为位掩码或其他标识受管网络设备102的包括在端口组中的目的地端口120的数据。端口组表和端口掩码表项可以具有与组播转发表类似的结构,并且与组播转发表类似地可以由结构管理器108访问或另外维护。再次参照图4,示意图400展示了端口组表404的一个潜在实施例。如所示的,从端口组转发表402检索的端口组标识符可以用来索引端口组表404。在示意性实施例中,端口组标识符可以被实施为八位的值。标识符零(0x00)映射至未定义的端口组。有效端口标识符一至255(0x01至0xff)各自映射至端口掩码,端口掩码被展示为256位的位掩码p255p254…p1p0。端口掩码的每一位pi对应于受管网络设备102的目的地端口120。因而,每个端口组中所包括的端口120中的每一个可以对应于相关联的端口掩码中所设置的位。位掩码中的超过受管网络设备102中的端口120数量的位在作为零写和读回时可以忽略,或者可以另外被忽视。虽然被展示为256位的位图,应该理解的是,端口掩码可以包括任何适当数据量。

返回参照图3,如上所述,受管网络设备102可以使用任何策略来从端口组选择目的地端口120。在一些实施例中,在框324中,受管网络设备102可以随机地从端口组选择目的地端口120。在一些实施例中,在框326中,受管网络设备102可以从端口组选择最小负载的目的地端口120。受管网络设备102可以使用任何适当的度量来确定最小负载的端口120,例如选择具有最小队列占有/深度、最少拥塞、或另外最小负载的目的地端口120。在一些实施例中,在框328中,受管网络设备102可以随机地从端口组中的最小负载的端口120中的两个或更多个进行选择。

在框330中,受管网络设备102用动态目的地端口120更新静态路由信息。受管网络设备102可以例如用动态确定的目的地端口120替换线性转发表中的静态路由目的地端口120的表项。

在框332中,受管网络设备102将数据分组转发至目的地端口120。受管网络设备102可以例如将数据分组转发至线性转发表中所描述的目的地端口120。如上所述,线性转发表中所描述的目的地端口120可以是如上所述在框304中确定的静态路由目的地端口120(如果这个端口120不拥塞的话),或如上文联系框320所述的动态确定的目的地端口120。在将数据分组转发至目的地端口120之后,方法300环回框302以继续处理数据分组。虽然图3的方法300被展示为顺序执行,应该理解的是,在一些实施例中,受管网络设备102可以并行、同时、或以任何其他顺序执行方法300的操作。例如,在一些实施例中,可以由受管网络设备102的硬件资源并行执行操作。

示例

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

示例1包括一种用于数据分组转发的网络设备,所述网络设备包括:分组入口模块,用于从数据分组中提取目的地本地标识符(dlid);静态路由模块,用于根据所述dlid确定所述网络设备的静态路由目的地端口;拥塞监测模块,用于判定所述静态路由目的地端口是否拥塞;以及自适应路由模块,用于:响应于确定所述静态路由目的地端口拥塞,根据所述dlid确定端口组,其中,所述端口组标识所述网络设备的两个或更多个端口;响应于确定所述静态路由目的地端口拥塞,选择所述端口组中的动态目的地端口;以及响应于确定所述静态路由目的地端口拥塞,将所述数据分组转发至所述动态目的地端口。

示例2包括如示例1所述的主题,并且其中,所述dlid包括32、24、20、或16位长的二进制值。

示例3包括如示例1和2中所述的主题,并且其中,确定所述静态路由目的地端口包括:借助所述dlid对线性转发表进行索引,从而确定所述静态路由目的地端口。

示例4包括如示例1至3中任一项所述的主题,并且其中,判定所述静态路由目的地端口是否拥塞包括:分析与所述目的地端口相关联的可用流量控制信用。

示例5包括如示例1至4中任一项所述的主题,并且其中,判定所述静态路由目的地端口是否拥塞包括:分析与所述目的地端口相关联的拥塞日志。

示例6包括如示例1至5中任一项所述的主题,并且其中,根据所述dlid确定所述端口组包括:确定端口组标识符,其中,所述端口组标识符包括在1到255之间的整数值,包括两端值。

示例7包括如示例1至6中任一项所述的主题,并且其中,根据所述dlid确定所述端口组包括:借助所述dlid对端口组转发表进行索引,从而确定端口组标识符。

示例8包括如示例1至7中任一项所述的主题,并且其中,选择所述端口组中的所述动态目的地端口包括:借助所述端口组标识符对端口组表进行索引从而确定端口组掩码,其中,所述端口组掩码指示所述dlid的多个有效目的地端口;以及从所述端口组掩码的所述多个有效目的地端口中选择所述动态目的地端口。

示例9包括如示例1至8中任一项所述的主题,并且其中,所述端口组掩码包括包含256位的二进制值,并且其中,所述端口组掩码的每一位与所述网络设备的相应端口相关联。

示例10包括如示例1至9中任一项所述的主题,并且其中,从所述多个有效目的地端口中选择所述动态目的地端口包括:从所述多个有效目的地端口中随机选择所述动态目的地端口。

示例11包括如示例1至10中任一项所述的主题,并且其中,从所述多个有效目的地端口中选择所述动态目的地端口包括:选择所述多个有效目的地端口中负载最小的目的地端口作为所述动态目的地端口。

示例12包括如示例1至11中任一项所述的主题,并且其中,从所述多个有效目的地端口中选择所述动态目的地端口包括:从所述多个有效目的地端口中的多个负载最小的目的地端口中随机选择所述动态目的地端口。

示例13包括如示例1至12中任一项所述的主题,并且其中,所述静态路由模块进一步用于:响应于确定所述静态路由目的地端口不拥塞,将所述数据分组转发至所述静态路由目的地端口。

示例14包括一种用于进行自适应数据分组路由的方法,所述方法包括:由网络设备从数据分组中提取目的地本地标识符(dlid);由所述网络设备根据所述dlid确定所述网络设备的静态路由目的地端口;由所述网络设备判定所述静态路由目的地端口是否拥塞;由所述网络设备响应于确定所述静态路由目的地端口拥塞而根据所述dlid确定端口组,其中,所述端口组标识所述网络设备的两个或更多个端口;响应于确定所述静态路由目的地端口拥塞,由所述网络设备选择所述端口组中的动态目的地端口;以及响应于确定所述静态路由目的地端口拥塞,由所述网络设备将所述数据分组转发至所述动态目的地端口。

示例15包括如示例14所述的主题,并且其中,所述dlid包括32、24、20、或16位长的二进制值。

示例16包括如示例14和15中所述的主题,并且其中,确定所述静态路由目的地端口包括:借助所述dlid对线性转发表进行索引,从而确定所述静态路由目的地端口。

示例17包括如示例14至16中任一项所述的主题,并且其中,判定所述静态路由目的地端口是否拥塞包括:分析与所述目的地端口相关联的可用流量控制信用。

示例18包括如示例14至17中任一项所述的主题,并且其中,判定所述静态路由目的地端口是否拥塞包括:分析与所述目的地端口相关联的拥塞日志。

示例19包括如示例14至18中任一项所述的主题,并且其中,根据所述dlid确定所述端口组包括:确定端口组标识符,其中,所述端口组标识符包括在1到255之间的整数值,包括两端值。

示例20包括如示例14至19中任一项所述的主题,并且其中,根据所述dlid确定所述端口组包括:借助所述dlid对端口组转发表进行索引,从而确定端口组标识符。

示例21包括如示例14至20中任一项所述的主题,并且其中,选择所述端口组中的所述动态目的地端口包括:借助所述端口组标识符对端口组表进行索引从而确定端口组掩码,其中,所述端口组掩码指示所述dlid的多个有效目的地端口;以及从所述端口组掩码的所述多个有效目的地端口中选择所述动态目的地端口。

示例22包括如示例14至21中任一项所述的主题,并且其中,所述端口组掩码包括包含256位的二进制值,并且其中,所述端口组掩码的每一位与所述网络设备的相应端口相关联。

示例23包括如示例14至22中任一项所述的主题,并且其中,从所述多个有效目的地端口中选择所述动态目的地端口包括:从所述多个有效目的地端口中随机选择所述动态目的地端口。

示例24包括如示例14至23中任一项所述的主题,并且其中,从所述多个有效目的地端口中选择所述动态目的地端口包括:选择所述多个有效目的地端口中负载最小的目的地端口作为所述动态目的地端口。

示例25包括如示例14至24中任一项所述的主题,并且其中,从所述多个有效目的地端口中选择所述动态目的地端口包括:从所述多个有效目的地端口中的多个负载最小的目的地端口中随机选择所述动态目的地端口。

示例26包括如示例14至25中任一项所述的主题,并且进一步包括:响应于确定所述静态路由目的地端口不拥塞,由所述网络设备将所述数据分组转发至所述静态路由目的地端口。

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

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

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

示例30包括一种用于数据分组转发的网络设备,所述网络设备包括:用于从数据分组中提取目的地本地标识符(dlid)的装置;用于根据所述dlid确定所述网络设备的静态路由目的地端口的装置;用于判定所述静态路由目的地端口是否拥塞的装置;用于响应于确定所述静态路由目的地端口拥塞而根据所述dlid确定端口组的装置,其中,所述端口组标识所述网络设备的两个或更多个端口;用于响应于确定所述静态路由目的地端口拥塞,选择所述端口组中的动态目的地端口的装置;以及用于响应于确定所述静态路由目的地端口拥塞,将所述数据分组转发至所述动态目的地端口的装置。

示例31包括如示例30所述的主题,并且其中,所述dlid包括32、24、20、或16位长的二进制值。

示例32包括如示例30和31中所述的主题,并且其中,所述用于确定所述静态路由目的地端口的装置包括:用于借助所述dlid对线性转发表进行索引从而确定所述静态路由目的地端口的装置。

示例33包括如示例30至32中任一项所述的主题,并且其中,所述用于判定所述静态路由目的地端口是否拥塞的装置包括:用于分析与所述目的地端口相关联的可用流量控制信用的装置。

示例34包括如示例30至33中任一项所述的主题,并且其中,判所述用于定所述静态路由目的地端口是否拥塞的装置包括:用于分析与所述目的地端口相关联的拥塞日志的装置。

示例35包括如示例30至34中任一项所述的主题,并且其中,所述用于根据所述dlid确定所述端口组的装置包括:用于确定端口组标识符的装置,其中,所述端口组标识符包括在1到255之间的整数值,包括两端值。

示例36包括如示例30至35中任一项所述的主题,并且其中,所述用于根据所述dlid确定所述端口组的装置包括:用于借助所述dlid对端口组转发表进行索引从而确定端口组标识符的装置。

示例37包括如示例30至36中任一项所述的主题,并且其中,所述用于选择所述端口组中的所述动态目的地端口的装置包括:用于借助所述端口组标识符对端口组表进行索引从而确定端口组掩码的装置,其中,所述端口组掩码指示所述dlid的多个有效目的地端口;以及用于从所述端口组掩码的所述多个有效目的地端口中选择所述动态目的地端口的装置。

示例38包括如示例30至37中任一项所述的主题,并且其中,所述端口组掩码包括包含256位的二进制值,并且其中,所述端口组掩码的每一位与所述网络设备的相应端口相关联。

示例39包括如示例30至38中任一项所述的主题,并且其中,所述用于从所述多个有效目的地端口中选择所述动态目的地端口的装置包括:用于从所述多个有效目的地端口中随机选择所述动态目的地端口的装置。

示例40包括如示例30至39中任一项所述的主题,并且其中,所述用于从所述多个有效目的地端口中选择所述动态目的地端口的装置包括:用于选择所述多个有效目的地端口中负载最小的目的地端口作为所述动态目的地端口的装置。

示例41包括如示例30至40中任一项所述的主题,并且其中,所述用于从所述多个有效目的地端口中选择所述动态目的地端口的装置包括:用于从所述多个有效目的地端口中的多个负载最小的目的地端口中随机选择所述动态目的地端口的装置。

示例42包括如示例30至41中任一项所述的主题,并且进一步包括:用于响应于确定所述静态路由目的地端口不拥塞,将所述数据分组转发至所述静态路由目的地端口的装置。

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