用于支持高性能计算环境中的子网间分区的系统和方法与流程

文档序号:14213359阅读:282来源:国知局
用于支持高性能计算环境中的子网间分区的系统和方法与流程

版权声明

本专利文档公开内容的一部分包含受版权保护的素材。版权拥有者不反对任何人对专利文档或专利公开内容按照在专利商标局的专利文件或记录中出现得那样进行的传真复制,但是除此之外在任何情况下都保留所有版权。

本发明一般而言涉及计算机系统,并且特别地涉及支持高性能计算环境中的子网间分区。



背景技术:

随着更大的云计算体系架构的推出,与传统网络和存储相关联的性能和管理瓶颈已成为重要的问题。人们对使用诸如infiniband(ib)技术等高性能无损互连作为云计算架构的基础越来越感兴趣。这是本发明的实施例旨在解决的一般领域。



技术实现要素:

本文描述的是用于支持高性能计算环境中的子网间分区的方法和系统。示例性方法可以在包括一个或多个微处理器的一个或多个计算机处提供第一子网,第一子网包括:多个交换机,该多个交换机至少包括叶交换机,其中该多个交换机中的每个交换机包括多个交换机端口;多个主机通道适配器,每个主机通道适配器包括至少一个主机通道适配器端口;多个端节点,其中端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联,以及子网管理器,该子网管理器在多个交换机和多个主机通道适配器中的一个上运行。该方法可以在包括一个或多个微处理器的一个或多个计算机处提供架构管理器,该架构管理器驻留在高性能计算环境中。该方法可以将多个交换机中的交换机上的多个交换机端口中的交换机端口配置为路由器端口。该方法可以逻辑上将配置为路由器端口的交换机端口连接到虚拟路由器,虚拟路由器包括至少两个虚拟路由器端口。该方法可以由架构管理器定义多个分区键值内的分区键(p_key)值的范围,所定义的分区键值的范围包括子网间分区(isp)p_key范围。该方法可以由架构管理器将ispp_key范围传送给子网管理器。

根据实施例,(第一子网或第二子网中的任一个的)多个主机通道适配器中的一个或多个可以包括至少一个虚拟功能、至少一个虚拟交换机和至少一个物理功能。(第一子网或第二子网的)多个端节点可以包括物理主机、虚拟机或者物理主机与虚拟机的组合,其中虚拟机与至少一个虚拟功能相关联。

附图说明

图1示出了根据实施例的infiniband环境的图示。

图2示出了根据实施例的分区集群环境的图示。

图3示出了根据实施例的网络环境中的树形拓扑的图示。

图4示出了根据实施例的示例性共享端口体系架构。

图5示出了根据实施例的示例性vswitch体系架构。

图6示出了根据实施例的示例性vport体系架构。

图7示出了根据实施例的具有预填充的lid的示例性vswitch体系架构。

图8示出了根据实施例的具有动态lid分配的示例性vswitch体系架构。

图9示出了根据实施例的具有动态lid分配和预填充的lid的具有vswitch的示例性vswitch体系架构。

图10示出了根据实施例的示例性多子网infiniband架构。

图11示出了根据实施例的在高性能计算环境中的两个子网之间的互连。

图12示出了根据实施例的在高性能计算环境中经由双端口虚拟路由器配置的两个子网之间的互连。

图13示出了根据实施例的用于支持高性能计算环境中的双端口虚拟路由器的方法的流程图。

图14是图示根据实施例的dr路由的vsmp分组的流程图。

图15是图示根据实施例的对dr路由的vsmp分组的响应的流程图。

图16是图示根据实施例的lid路由的vsmp分组的流程图。

图17是图示根据实施例的对lid路由的vsmp分组的响应的流程图。

图18是示出根据实施例的子网间分区p_key范围的定义的框图。

图19是根据实施例的支持子网间分区的框图。

图20是根据实施例的支持子网间分区的框图。

图21是根据实施例的用于支持子网间分区的示例性方法的流程图。

具体实施方式

在附图的各图中通过示例而非限制的方式图示了本发明,附图中相同的标号指示类似的元件。应当注意的是,在本公开中对“一个”或“一些”实施例的引用不一定是相同的实施例,并且这种引用意味着至少一个。虽然讨论了特定的实现,但是应当理解的是,特定实现仅仅是为了说明性目的而提供。相关领域的技术人员将认识到,在不脱离本发明的范围和精神的情况下,可以使用其它部件和配置。

贯穿附图和具体实施方式可以使用共同的标号来指示相同的元素;因此,如果元素在其它地方进行了描述,那么在图中使用的标号可以或可以不在特定于该图的具体描述中引用。

本文描述的是支持高性能计算环境中的子网间分区的系统和方法。

本发明的以下描述使用infinibandtm(ib)网络作为高性能网络的示例。贯穿以下描述,可以参考infinibandtm规范(也被不同地称为infiniband规范、ib规范或传统ib规范)。这样的参考被理解为是指可在http://www.inifinibandta.org获得的于2015年3月发布的tradeassociationarchitecturespecification,卷1,版本1.3,其全部内容通过引用被结合于此。对于本领域技术人员来说显而易见的是,可以使用其它类型的高性能网络而没有限制。以下描述还使用胖树拓扑作为架构拓扑的示例。对于本领域技术人员来说显而易见的是,可以使用其它类型的架构拓扑而没有限制。

为了满足当前时代(例如,exascale时代)的云的需求,期望虚拟机能够利用诸如远程直接存储器访问(rdma)的低开销网络通信范例。rdma绕过os堆栈并且直接与硬件通信,因此可以使用像单根i/o虚拟化(sr-iov)网络适配器这样的直通技术。根据实施例,对于高性能无损互连网络中的适用性可以提供虚拟交换机(vswitch)sr-iov体系架构。由于网络重新配置时间对于使实时迁移成为实用选项是至关重要的,因此,除了网络体系架构之外,还可以提供可伸缩的和拓扑无关的动态重新配置机制。

根据实施例,并且除此之外,可以提供使用vswitch的虚拟化环境的路由策略,并且可以提供用于网络拓扑(例如,胖树拓扑)的高效路由算法。动态重新配置机制可以被进一步微调以使胖树中施加的开销最小化。

根据本发明的实施例,虚拟化可以有益于云计算中的高效资源利用和弹性资源分配。实时迁移使得有可能通过以应用透明的方式在物理服务器之间移动虚拟机(vm)来优化资源使用。因此,虚拟化可以通过实时迁移实现整合、资源的按需供给以及弹性。

infinibandtm

infinibandtm(ib)是由infinibandtm贸易协会开发的开放标准无损网络技术。该技术基于提供高吞吐量和低延迟通信的串行点对点全双工互连,特别针对高性能计算(hpc)应用和数据中心。

infinibandtm体系架构(iba)支持双层拓扑划分。在下层,ib网络被称为子网,其中子网可以包括使用交换机和点对点链路互连的主机集合。在上层,ib架构构成可以使用路由器互连的一个或多个子网。

在子网内,可以使用交换机和点对点链路来连接主机。此外,可以存在主管理实体,子网管理器(sm),其驻留在子网中的指定设备上。子网管理器负责配置、激活和维护ib子网。另外,子网管理器(sm)可以负责在ib架构中执行路由表计算。这里,例如,ib网络的路由旨在在本地子网中的所有源和目的地对之间进行适当的负载平衡。

通过子网管理接口,子网管理器与子网管理代理(sma)交换被称为子网管理分组(smp)的控制分组。子网管理代理驻留在每个ib子网设备上。通过使用smp,子网管理器能够发现架构、配置端节点和交换机,并从sma接收通知。

根据实施例,ib网络中的子网内路由可以基于存储在交换机中的线性转发表(lft)。lft由sm根据使用中的路由机制来计算。在子网中,端节点和交换机上的主机通道适配器(hca)端口使用本地标识符(lid)进行寻址。线性转发表(lft)中的每个条目包括目的地lid(dlid)和输出端口。表中只支持每lid一个条目。当分组到达交换机时,其输出端口通过在交换机的转发表中查找dlid来确定。路由是确定性的,因为分组在网络中在给定的源-目的地对(lid对)之间采用相同的路径。

一般而言,除了主子网管理器之外的所有其它子网管理器为了容错都在备用模式下起作用。但是,在主子网管理器发生故障的情况下,由备用子网管理器协商新的主子网管理器。主子网管理器还执行子网的周期性扫描,以检测任何拓扑变化并相应地重新配置网络。

此外,可以使用本地标识符(lid)来寻址子网内的主机和交换机,并且可以将单个子网限制为49151个单播lid。除了作为在子网内有效的本地地址的lid之外,每个ib设备还可以具有64位全局唯一标识符(guid)。guid可以用于形成作为ib层三(l3)地址的全局标识符(gid)。

在网络初始化时,sm可以计算路由表(即,子网内每对节点之间的连接/路由)。此外,每当拓扑改变时,都可以更新路由表,以便确保连接性和最佳性能。在正常操作期间,sm可以执行网络的周期性轻扫描以检查拓扑变化。如果在轻扫描期间发现变化,或者如果sm接收到通过发信号通知网络变化的信息(陷阱),那么sm可以根据发现的变化来重新配置网络。

例如,当网络拓扑改变时,诸如当链路断开时、当添加设备时或者当链路被去除时,sm可以重新配置网络。重新配置步骤可以包括在网络初始化期间执行的步骤。此外,重新配置可以具有限于其中发生网络变化的子网的局部范围。此外,用路由器对大型架构进行分段可以限制重新配置的范围。

图1中示出了示例infiniband架构,其示出了根据实施例的infiniband环境100的图示。在图1所示的示例中,节点a-e、101-105使用infiniband架构120经由相应的主机通道适配器111-115通信。根据实施例,各种节点(例如,节点a-e、101-105)可以由各种物理设备来表示。根据实施例,各种节点(例如,节点a-e、101-105)可以由诸如虚拟机的各种虚拟设备来表示。

在infiniband中分区

根据实施例,ib网络可以支持分区作为安全机制,以提供对共享网络架构的系统的逻辑组的隔离。架构中的节点上的每个hca端口可以是一个或多个分区的成员。分区成员资格由集中式分区管理器管理,集中式分区管理器可以是sm的一部分。sm可以将每个端口上的分区成员资格信息配置为16位分区键(p_key)的表。sm还可以用包含与通过这些端口发送或接收数据流量的端节点相关联的p_key信息的分区实施表来配置交换机和路由器端口。此外,在一般情况下,交换机端口的分区成员资格可以表示与在出口(朝链路)方向经由端口路由的lid间接相关联的所有成员资格的联合。

根据实施例,分区是端口的逻辑组,使得组的成员只能与同一逻辑组的其它成员通信。在主机通道适配器(hca)和交换机处,可以使用分区成员资格信息对分组进行过滤以实施隔离。一旦分组到达传入端口,具有无效分区信息的分组就可以被丢弃。在分区的ib系统中,可以使用分区来创建租户集群。在分区实施就位的情况下,节点不能与属于不同租户集群的其它节点通信。以这种方式,即使存在受损或恶意的租户节点时,系统的安全性也能够得到保证。

根据实施例,对于节点之间的通信,除管理队列对(qp0和qp1)以外,队列对(qp)和端到端上下文(eec)可以被分配给特定分区。然后,可以将p_key信息添加到发送的每个ib传输分组。当分组到达hca端口或交换机时,可以针对由sm配置的表验证其p_key值。如果找到无效的p_key值,那么立即丢弃该分组。以这种方式,只有在共享分区的端口之间才允许通信。

图2中示出了ib分区的示例,其中示出了根据实施例的分区的集群环境的图示。在图2所示的示例中,节点a-e、101-105使用infiniband架构120经由相应的主机通道适配器111-115通信。节点a-e被布置到分区中,即分区1,130、分区2,140和分区3,150。分区1包括节点a101和节点d104。分区2包括节点a101、节点b102和节点c103。分区3包括节点c103和节点e105。由于分区的布置,节点d104和节点e105不被允许通信,因为这些节点不共享分区。同时,例如,节点a101和节点c103被允许通信,因为这些节点都是分区2,140的成员。

infiniband中的虚拟机

在过去的十年中,虚拟化高性能计算(hpc)环境的前景已得到相当大的提高,因为cpu开销已通过硬件虚拟化支持被实际上消除;存储器开销已通过虚拟化存储器管理单元被显著降低;存储开销已通过使用快速san存储装置或分布式网络文件系统被减少;并且网络i/o开销已通过使用比如单根输入/输出虚拟化(sr-iov)的设备直通技术被减少。现在,云有可能使用高性能互连解决方案来容纳虚拟hpc(vhpc)集群,并提供必要的性能。

但是,当与诸如infiniband(ib)的无损网络耦合时,由于在这些解决方案中使用的复杂寻址和路由方案,某些云功能(诸如虚拟机(vm)的实时迁移)仍然是个问题。ib是提供高带宽和低延迟的互连网络技术,因此非常适合hpc和其它通信密集型工作负载。

用于将ib设备连接到vm的传统方法是通过利用具有直接分配的sr-iov。但是,使用sr-iov实现分配有ib主机通道适配器(hca)的vm的实时迁移已被证明是具有挑战性的。每个ib连接的节点具有三个不同的地址:lid、guid和gid。当发生实时迁移时,这些地址中的一个或多个改变。与迁移中的vm(vm-in-migration)通信的其它节点会丢失连接性。当发生这种情况时,通过向ib子网管理器(sm)发送子网管理(sa)路径记录查询来定位要重新连接到的虚拟机的新地址,可以尝试更新丢失的连接。

ib使用三种不同类型的地址。第一种类型的地址是16位本地标识符(lid)。sm向每个hca端口和每个交换机分配至少一个唯一的lid。lid用于在子网内路由流量。由于lid为16位长,因此可以做出65536个唯一地址组合,其中只有49151个(0x0001-0xbfff)可以用作单播地址。因此,可用单播地址的数量限定了ib子网的最大尺寸。第二种类型的地址是由制造商分配给每个设备(例如,hca和交换机)和每个hca端口的64位全局唯一标识符(guid)。sm可以向hca端口分配附加的子网唯一guid,其在使用sr-iov时是有用的。第三种类型的地址是128位全局标识符(gid)。gid是有效的ipv6单播地址,并且向每个hca端口分配至少一个。gid通过组合由架构管理器分配的全局唯一64位前缀和每个hca端口的guid地址形成。

胖树(ftree)拓扑和路由

根据实施例,基于ib的hpc系统中的一些采用胖树拓扑来利用胖树提供的有用属性。由于每个源目的地对之间有多条路径可用,因此这些属性包括完全的二分带宽和固有的容错。胖树背后的最初想法是,当树朝着拓扑的根移动时,在节点之间采用具有更多可用带宽的较胖链路。较胖链路可以帮助避免上层交换机中的拥塞并且维持二分带宽。

图3示出了根据实施例的网络环境中的树形拓扑结构的图示。如图3所示,一个或多个端节点201-204可以在网络架构200中连接。网络架构200可以基于包括多个叶交换机211-214和多个主干交换机或根交换机231-234的胖树拓扑。此外,网络架构200可以包括一个或多个中间交换机,诸如交换机221-224。

同样如图3所示,端节点201-204中的每一个可以是多宿主节点,即,通过多个端口连接到网络架构200的两个或更多个部分的单个节点。例如,节点201可以包括端口h1和h2,节点202可以包括端口h3和h4,节点203可以包括端口h5和h6,并且节点204可以包括端口h7和h8。

此外,每个交换机可以具有多个交换机端口。例如,根交换机231可以具有交换机端口1-2,根交换机232可以具有交换机端口3-4,根交换机233可以具有交换机端口5-6,并且根交换机234可以具有交换机端口7-8。

根据实施例,胖树路由机制是用于基于ib的胖树拓扑的最流行的路由算法之一。胖树路由机制也在ofed(开放结构企业分发-用于构建和部署基于ib的应用的标准软件栈)子网管理器opensm中实现。

胖树路由机制旨在生成在网络架构中跨链路均匀传播最短路径路由的lft。该机制按索引次序遍历架构并将端节点的目标lid(以及因此对应的路由)分配给每个交换机端口。对于连接到相同叶交换机的端节点,索引次序可以取决于端节点连接到的交换机端口(即端口编号顺序)。对于每个端口,该机制可以维护端口使用计数器,并且可以在每次添加新路由时使用这个端口使用计数器来选择最少使用的端口。

根据实施例,在分区的子网中,不允许不是公共分区的成员的节点通信。在实践中,这意味着由胖树路由算法分配的一些路由不用于用户流量。当胖树路由机制以与它针对其它功能路径所做的相同的方式为那些路由生成lft时,会出现该问题。由于节点按索引的次序进行路由,因此这种行为会导致链路上的平衡降级。由于路由可以在与分区无关的情况下执行,因此,一般而言,胖树路由的子网提供分区之间较差的隔离。

根据实施例,胖树是可以利用可用网络资源进行伸缩的分层网络拓扑。而且,使用放置在不同级别层次上的商用交换机容易构建胖树。通常可以获得胖树的不同变体,包括k-ary-n-trees、扩展的广义胖树(xgft)、平行端口广义胖树(pgft)和现实生活胖树(rlft)。

k-ary-n-tree是具有kn个端节点和n·kn-1个交换机的n级胖树,每个具有2k个端口。每个交换机在树中具有相同数量的上下连接。xgft胖树通过允许交换机不同数量的上行连接和下行连接以及在树中每个级别的不同数量的连接来扩展k-ary-n-tree。pgft定义进一步拓宽了xgft拓扑,并且允许交换机之间的多个连接。可以使用xgft和pgft来定义各种各样的拓扑。但是,为了实践的目的,引入了作为pgft受限版本的rlft来定义当今hpc集群中常见的胖树。rlft在胖树的所有级别使用相同端口计数的交换机。

输入/输出(i/o)虚拟化

根据实施例,i/o虚拟化(iov)可以通过允许虚拟机(vm)访问底层物理资源来提供i/o的可用性。存储流量和服务器间通信的组合强加了可能淹没单个服务器的i/o资源的增加的负载,从而导致积压和由于处理器在等待数据而导致的空闲处理器。随着i/o请求数量的增加,iov可以提供可用性;并且可以提高(虚拟化)i/o资源的性能、可伸缩性和灵活性,以匹配现代cpu虚拟化中所看到的性能水平。

根据实施例,iov是期望的,因为它可以允许共享i/o资源并且提供vm对资源的受保护的访问。iov将暴露于vm的逻辑设备与其物理实现分离。当前,可以存在不同类型的iov技术,诸如仿真、半虚拟化、直接分配(da)和单根i/o虚拟化(sr-iov)。

根据实施例,一种类型的iov技术是软件仿真。软件仿真可以允许分离的前端/后端软件体系架构。前端可以是置于vm中、与由管理程序实现的以提供i/o访问的后端通信的设备驱动程序。物理设备共享比高,并且vm的实时迁移可能只需几毫秒的网络停机时间。但是,软件仿真引入了附加的、非期望的计算开销。

根据实施例,另一种类型的iov技术是直接设备分配。直接设备分配涉及将i/o设备耦合到vm,其中在vm之间没有设备共享。直接分配或设备直通以最小的开销提供接近本地性能。物理设备绕过管理程序并且直接附连到vm。但是,这种直接设备分配的缺点是有限的可伸缩性,因为在虚拟机之间不存在共享—一个物理网卡与一个vm耦合。

根据实施例,单根iov(sr-iov)可以允许物理设备通过硬件虚拟化表现为相同设备的多个独立的轻量级实例。这些实例可以被分配给vm作为直通设备,并作为虚拟功能(vf)被访问。管理程序通过唯一的(每设备)、全特征物理功能(pf)访问设备。sr-iov使纯直接分配的可伸缩性问题变得容易。但是,sr-iov呈现出的问题是它可能会影响vm迁移。在这些iov技术中,sr-iov可以扩展pciexpress(pcie)规范,其意味着允许从多个vm直接访问单个物理设备,同时维持接近本地性能。因此,sr-iov可以提供良好的性能和可伸缩性。

sr-iov允许pcie设备通过向每个客户分配一个虚拟设备来暴露可以在多个客户之间共享的多个虚拟设备。每个sr-iov设备具有至少一个物理功能(pf)和一个或多个相关联的虚拟功能(vf)。pf是由虚拟机监视器(vmm)或管理程序控制的正常pcie功能,而vf是轻量级的pcie功能。每个vf都具有其自己的基地址(bar),并被分配有唯一的请求者id,其使得i/o存储器管理单元(iommu)能够区分来自/去往不同vf的流量。iommu还在pf和vf之间应用存储器和中断转换。

但是,令人遗憾的是,直接设备分配技术在其中数据中心优化期望虚拟机的透明实时迁移的情况下对云提供商造成障碍。实时迁移的实质是将vm的存储器内容复制到远程管理程序。然后在源管理程序处暂停vm,并且在目的地处恢复vm的操作。当使用软件仿真方法时,网络接口是虚拟的,因此其内部状态被存储到存储器中并且也被复制。因此,可以使停机时间下降到几毫秒。

但是,当使用诸如sr-iov的直接设备分配技术时,迁移变得更加困难。在这种情况下,网络接口的完整内部状态不能被复制,因为它与硬件绑定。作为替代,分配给vm的sr-iovvf被分离,实时迁移将运行,并且新的vf将在目的地处被附连。在infiniband和sr-iov的情况下,该处理会引入在秒的数量级上的停机时间。而且,在sr-iov共享端口模型中,在迁移之后,vm的地址将改变,从而导致sm中的附加开销并对底层网络架构的性能产生负面影响。

infinibandsr-iov体系架构-共享端口

可以存在不同类型的sr-iov模型,例如,共享端口模型、虚拟交换机模型和虚拟端口模型。

图4示出了根据实施例的示例性共享端口体系架构。如图所示,主机300(例如,主机通道适配器)可以与管理程序310交互,管理程序310可以将各种虚拟功能330、340、350分配给多个虚拟机。同样,物理功能可以由管理程序310处理。

根据实施例,当使用诸如图4所示的共享端口体系架构时,主机(例如,hca)在网络中出现为具有单个共享lid和在物理功能320和虚拟功能330、340、350之间的共享队列对(qp)空间的单个端口。但是,每个功能(即,物理功能和虚拟功能)可以具有其自己的gid。

如图4所示,根据实施例,可以将不同的gid分配给虚拟功能和物理功能,并且特殊队列对qp0和qp1(即,用于infiniband管理分组的专用队列对)由物理功能拥有。这些qp也被暴露给vf,但是vf不允许使用qp0(从vf到qp0的所有smp都被丢弃),并且qp1可以充当由pf拥有的实际qp1的代理。

根据实施例,共享端口体系架构可以允许不受(通过分配给虚拟功能附连到网络的)vm的数量限制的高度可伸缩的数据中心,因为lid空间仅被网络中的物理机器和交换机消耗。

但是,共享端口体系架构的缺点是无法提供透明的实时迁移,从而阻碍了灵活vm放置的可能性。由于每个lid与特定管理程序相关联,并且在驻留在管理程序上的所有vm之间共享,因此迁移的vm(即,迁移到目的地管理程序的虚拟机)必须将其lid改变为目的地管理程序的lid。此外,由于受限的qp0访问,子网管理器不能在vm内部运行。

infinibandsr-iov体系架构模型-虚拟交换机(vswitch)

图5示出了根据实施例的示例性vswitch体系架构。如图所示,主机400(例如,主机通道适配器)可以与管理程序410交互,管理程序410可以将各种虚拟功能430、440、450分配给多个虚拟机。同样,物理功能可以由管理程序410处理。虚拟交换机415也可以由管理程序401处理。

根据实施例,在vswitch体系架构中,每个虚拟功能430、440、450是完整的虚拟主机通道适配器(vhca),这意味着分配给vf的vm被分配完整的ib地址集合(例如,gid、guid、lid)和硬件中的专用qp空间。对于网络的其余部分和sm,hca400看起来像经由虚拟交换机415、具有连接到它的附加节点的交换机。管理程序410可以使用pf420,并且vm(附连到虚拟功能)使用vf。

根据实施例,vswitch体系架构提供透明的虚拟化。但是,由于每个虚拟功能都被分配唯一的lid,因此可用lid的数量被迅速消耗。同样,在使用许多lid地址(即,每个物理功能和每个虚拟功能都有一个lid地址)的情况下,必须由sm计算更多的通信路径,并且必须将更多的子网管理分组(smp)发送到交换机,以便更新其lft。例如,通信路径的计算在大型网络中可能花费几分钟。因为lid空间限于49151个单播lid,并且由于每个vm(经由vf)、物理节点和交换机每个占用一个lid,因此网络中的物理节点和交换机的数量限制了活动vm的数量,反之亦然。

infinibandsr-iov体系架构模型-虚拟端口(vport)

图6示出了根据实施例的示例性vport概念。如图所示,主机300(例如,主机通道适配器)可以与管理程序410交互,管理程序410可以将各种虚拟功能330、340、350分配给多个虚拟机。同样,物理功能可以由管理程序310来处理。

根据实施例,vport概念被松散地定义以便赋予供应商实现的自由(例如,定义不规定实现必须是特定于sriov的),并且vport的目标是使vm在子网中的处理方式标准化。利用vport概念,可以定义可在空间和性能域都更可伸缩的类似sr-iov的共享端口和类似vswitch的体系架构或两者的组合。vport支持可选的lid,并且与共享端口不同,即使vport不使用专用lid,sm也知道子网中可用的所有vport。

infinibandsr-iov体系架构模型-具有预填充lid的vswitch

根据实施例,本公开提供了用于提供具有预填充的lid的vswitch体系架构的系统和方法。

图7示出了根据实施例的具有预填充的lid的示例性vswitch体系架构。如图所示,多个交换机501-504可以在网络交换环境600(例如,ib子网)内提供在架构(诸如infiniband架构)的成员之间的通信。架构可以包括多个硬件设备,诸如主机通道适配器510、520、530。主机通道适配器510、520、530中的每个又可以分别与管理程序511、521和531交互。每个管理程序又可以与其交互的主机通道适配器结合建立多个虚拟功能514、515、516、524、525、526、534、535、536并将它们分配给多个虚拟机。例如,虚拟机1550可以由管理程序511分配给虚拟功能1514。管理程序511可以附加地将虚拟机2551分配给虚拟功能2515,并且将虚拟机3552分配给虚拟功能3516。管理程序531又可以将虚拟机4553分配给虚拟功能1534。管理程序可以通过主机通道适配器中的每一个上的全特征物理功能513、523、533访问主机通道适配器。

根据实施例,交换机501-504中的每一个可以包括多个端口(未示出),这些端口用于设置线性转发表以便引导网络交换环境600内的流量。

根据实施例,虚拟交换机512、522和532可以由它们相应的管理程序511、521、531处理。在这样的vswitch体系架构中,每个虚拟功能是完整的虚拟主机通道适配器(vhca),这意味着分配给vf的vm被分配完整的ib地址(例如,gid、guid、lid)集合和硬件中专用的qp空间。对于网络的其余部分和sm(未示出),hca510、520和530看起来像经由虚拟交换机、具有连接到它们的附加节点的交换机。

根据实施例,本公开提供了用于提供具有预填充的lid的vswitch体系架构的系统和方法。参考图7,lid被预填充到各种物理功能513、523、533以及虚拟功能514-516、524-526、534-536(甚至那些当前未与活动虚拟机相关联的虚拟功能)。例如,物理功能513用lid1预填充,而虚拟功能1534用lid10预填充。当网络被引导时,lid在启用sr-iovvswitch的子网中被预填充。即使并非所有的vf都在网络中被vm占用,填充的vf也被分配有lid,如图7所示。

根据实施例,非常类似于物理主机通道适配器可以具有多于一个的端口(为了冗余两个端口是常见的),虚拟hca也可以用两个端口表示,并且经由一个、两个或更多个虚拟交换机连接到外部ib子网。

根据实施例,在具有预填充lid的vswitch体系架构中,每个管理程序可以通过pf为自己消耗一个lid,并为每个附加的vf消耗再多一个lid。在ib子网中的所有管理程序中可用的所有vf的总和给出了允许在子网中运行的vm的最大数量。例如,在子网中每管理程序具有16个虚拟功能的ib子网中,那么每个管理程序在子网中消耗17个lid(16个虚拟功能中的每个虚拟功能一个lid加上用于物理功能的一个lid)。在这种ib子网中,对于单个子网的理论管理程序限制由可用单播lid的数量决定,并且是:2891个(49151个可用lid除以每管理程序17个lid),并且vm的总数(即,极限)是46256个(2891个管理程序乘以每管理程序16个vf)。(实际上,这些数字实际上较小,因为ib子网中的每个交换机、路由器或专用sm节点也消耗lid)。注意的是,vswitch不需要占用附加的lid,因为它可以与pf共享lid。

根据实施例,在具有预填充lid的vswitch体系架构中,网络第一次被引导时,为所有lid计算通信路径。当需要启动新的vm时,系统不必在子网中添加新的lid,否则该动作将导致网络完全重新配置,包括路径重新计算,这是最耗时的部分。作为替代,在管理程序之一中定位用于vm的可用端口(即,可用的虚拟功能),并且将虚拟机附连到可用的虚拟功能。

根据实施例,具有预填充lid的vswitch体系架构还允许计算和使用不同路径以到达由同一管理程序托管的不同vm的能力。本质上,这允许这样的子网和网络使用类似lid掩码控制(lmc)的特征向一个物理机器提供替代路径,而不受需要lid必须是连续的lmc的限制约束。当需要迁移vm并将其相关联的lid携带到目的地时,能够自由使用非连续lid尤其有用。

根据实施例,以及以上示出的具有预填充lid的vswitch体系架构的优点,可以考虑某些注意事项。例如,由于当网络被引导时,lid在启用sr-iovvswitch的子网中被预填充,因此初始路径计算(例如,在启动时)会比如果lid没有被预填充所花费的时间更长。

infinibandsr-iov体系架构模型-具有动态lid分配的vswitch

根据实施例,本公开提供了用于提供具有动态lid分配的vswitch体系架构的系统和方法。

图8示出了根据实施例的具有动态lid分配的示例性vswitch体系架构。如图所示,多个交换机501-504可以在网络交换环境700(例如,ib子网)内提供架构(诸如infiniband架构)的成员之间的通信。架构可以包括多个硬件设备,诸如主机通道适配器510、520、530。主机通道适配器510、520、530中的每一个又可以分别与管理程序511、521、531交互。每个管理程序又可以与其交互的主机通道适配器结合建立多个虚拟功能514、515、516、524、525、526、534、535、536并将它们分配给多个虚拟机。例如,虚拟机1550可以由管理程序511分配给虚拟功能1514。管理程序511可以附加地将虚拟机2551分配给虚拟功能2515,并且将虚拟机3552分配给虚拟功能3516。管理程序531又可以将虚拟机4553分配给虚拟功能1534。管理程序可以通过主机通道适配器中的每一个上的全特征物理功能513、523、533访问主机通道适配器。

根据实施例,交换机501-504中的每一个可以包括多个端口(未示出),这些端口用于设置线性转发表以便引导网络交换环境700内的流量。

根据实施例,虚拟交换机512、522和532可以由它们相应的管理程序511、521、531处理。在这样的vswitch体系架构中,每个虚拟功能是完整的虚拟主机通道适配器(vhca),这意味着分配给vf的vm被分配完整的ib地址(例如,gid、guid、lid)集合和硬件中专用的qp空间。对于网络的其余部分和sm(未示出),hca510、520和530看起来像经由虚拟交换机、具有连接到它们的附加节点的交换机。

根据实施例,本公开提供了用于提供具有动态lid分配的vswitch体系架构的系统和方法。参考图8,lid被动态分配给各种物理功能513、523、533,其中物理功能513接收lid1、物理功能523接收lid2并且物理功能533接收lid3。与活动虚拟机相关联的那些虚拟功能也可以接收动态分配的lid。例如,由于虚拟机1550是活动的并且与虚拟功能1514相关联,因此虚拟功能514可以被分配lid5。同样,虚拟功能2515、虚拟功能3516和虚拟功能1534每个与活动虚拟功能相关联。由此,这些虚拟功能被分配lid,其中lid7被分配给虚拟功能2515、lid11被分配给虚拟功能3516、并且lid9被分配给虚拟功能1534。与具有预填充lid的vswitch不同,那些当前未与活动虚拟机相关联的虚拟功能不接收lid分配。

根据实施例,利用动态lid分配,可以显著减少初始的路径计算。当网络第一次被引导并且不存在vm时,那么可以使用相对较少数量的lid用于初始的路径计算和lft分发。

根据实施例,非常类似于物理主机通道适配器可以具有多于一个的端口(为了冗余两个端口是常见的),虚拟hca也可以用两个端口表示,并且经由一个、两个或更多个虚拟交换机连接到外部ib子网。

根据实施例,当在利用具有动态lid分配的vswitch的系统中创建新的vm时,找到空闲的vm时隙,以便决定在哪个管理程序上引导新添加的vm,并且也找到唯一未使用的单播lid。但是,在网络中没有已知的路径和交换机的lft用于处理新添加的lid。为了处理新添加的vm而计算一组新的路径在其中每分钟可以引导几个vm的动态环境中是非期望的。在大型ib子网中,计算一组新的路由会花费几分钟,并且这个过程将在每次引导新的vm时必须重复。

有利地,根据实施例,由于管理程序中的所有vf与pf共享相同的上行链路,因此不需要计算一组新的路由。只需要遍历网络中所有物理交换机的lft、将转发端口从属于管理程序(其中创建vm)的pf的lid条目复制到新添加的lid、并且发送单个smp以更新特定交换机的对应lft块。因此,该系统和方法避免了计算一组新的路由的需要。

根据实施例,在具有动态lid分配体系架构的vswitch中分配的lid不一定是连续的。当将具有预填充lid的vswitch中的每个管理程序上的vm上分配的lid与具有动态lid分配的vswitch进行比较时,应当注意的是,在动态lid分配体系架构中分配的lid是非连续的,而被预填充的那些lid本质上是连续的。在vswitch动态lid分配体系架构中,当创建新的vm时,在vm的整个生命周期中使用下一个可用的lid。相反,在具有预填充lid的vswitch中,每个vm都继承已经分配给对应vf的lid,并且在没有实时迁移的网络中,连续附连到给定vf的vm获得相同的lid。

根据实施例,具有动态lid分配体系架构的vswitch可以以一些附加的网络和运行时sm开销为代价,利用预填充lid体系架构模型来解决vswitch的缺点。每次创建vm时,子网中的物理交换机的lft用与创建的vm相关联的新添加的lid进行更新。对于这个操作,需要发送每交换机一个子网管理分组(smp)。因为每个vm正在使用与其主机管理程序相同的路径,因此类似lmc的功能也不可用。但是,对所有管理程序中存在的vf的总量没有限制,并且vf的数量可以超过单播lid限制的数量。当然,如果是这种情况,那么并不是所有vf都允许同时附连到活动vm上,但是,当操作接近单播lid极限时,具有更多的备用管理程序和vf增加了灾难恢复和分段网络优化的灵活性。

infinibandsr-iov体系架构模型-具有动态lid分配和预填充lid的vswitch

图9示出了根据实施例的具有动态lid分配和预填充lid的具有vswitch的示例性vswitch体系架构。如图所示,多个交换机501-504可以在网络交换环境800(例如,ib子网)内提供架构(诸如infiniband架构)的成员之间的通信。架构可以包括多个硬件设备,诸如主机通道适配器510、520、530。主机通道适配器510、520、530中的每一个又可以分别与管理程序511、521和531交互。每个管理程序又可以与其交互的主机通道适配器结合建立多个虚拟功能514、515、516、524、525、526、534、535、536并将它们分配给多个虚拟机。例如,虚拟机1550可以由管理程序511分配给虚拟功能1514。管理程序511可以附加地将虚拟机2551分配给虚拟功能2515。管理程序521可以将虚拟机3552分配给虚拟功能3526。管理程序531又可以将虚拟机4553分配给虚拟功能2535。管理程序可以通过主机通道适配器的每一个上的全特征物理功能513、523、533访问主机通道适配器。

根据实施例,交换机501-504中的每一个可以包括多个端口(未示出),这些端口用于设置线性转发表以便引导网络交换环境800内的流量。

根据实施例,虚拟交换机512、522和532可以由它们相应的管理程序511、521、531处理。在这样的vswitch体系架构中,每个虚拟功能是完整的虚拟主机通道适配器(vhca),这意味着分配给vf的vm被分配完整的ib地址(例如,gid、guid、lid)集合和硬件中专用的qp空间。对于网络的其余部分和sm(未示出),hca510、520和530看起来像经由虚拟交换机、具有连接到它们的附加节点的交换机。

根据实施例,本公开提供了用于提供具有动态lid分配和预填充lid的混合vswitch体系架构的系统和方法。参考图9,管理程序511可以用具有预填充lid体系架构的vswitch进行布置,而管理程序521可以用具有预填充lid和动态lid分配的vswitch进行布置。管理程序531可以用具有动态lid分配的vswitch进行布置。因此,物理功能513和虚拟功能514-516使其lid被预填充(即,即使那些未附连到活动虚拟机的虚拟功能被分配了lid)。物理功能523和虚拟功能1524可以使其lid被预填充,而虚拟功能2和3、525和526使其lid被动态分配(即,虚拟功能2525可用于动态lid分配,并且由于虚拟机3552被附连,因此虚拟功能3526具有动态分配的lid11)。最后,与管理程序3531相关联的功能(物理功能和虚拟功能)可以使其lid被动态分配。这使得虚拟功能1和3、534和536可用于动态lid分配,而虚拟功能2535由于虚拟机4553被附连到那里因此具有动态分配的lid9。

根据诸如图9所示、其中(在任何给定管理程序内独立地或组合地)利用了具有预填充lid的vswitch和具有动态lid分配的vswitch两者的实施例,每主机通道适配器的预填充lid的数量可以由架构管理员定义,并且可以在0<=预填充的vfs<=总vf(每主机通道适配器)的范围内,并且可用于动态lid分配的vf可以通过从vf的总数(每主机通道适配器)减去预填充vf的数量找到。

根据实施例,非常类似于物理主机通道适配器可以具有多于一个的端口(为了冗余两个端口是常见的),虚拟hca也可以用两个端口表示,并且经由一个、两个或更多个虚拟交换机连接到外部ib子网。

infiniband-子网间通信(架构管理器)

根据实施例,除了在单个子网内提供infiniband架构之外,本公开的实施例还可以提供跨越两个或更多个子网的infiniband架构。

图10示出了根据实施例的示例性多子网infiniband架构。如图所示,在子网a1000内,多个交换机1001-1004可以在子网a1000(例如,ib子网)内提供架构(诸如infiniband架构)的成员之间的通信。架构可以包括多个硬件设备,诸如,例如通道适配器1010。主机通道适配器1010又可以与管理程序1011交互。管理程序又可以与其交互的主机通道适配器结合建立多个虚拟功能1014。管理程序可以附加地将虚拟机分配给每个虚拟功能,诸如虚拟机11015被分配给虚拟功能11014。管理程序可以通过主机通道适配器中的每一个上的全特征物理功能(诸如物理功能1013)访问其相关联的主机通道适配器。在子网b1040内,多个交换机1021-1024可以在子网b1040(例如,ib子网)内提供架构(诸如infiniband架构)的成员之间的通信。架构可以包括多个硬件设备,诸如,例如通道适配器1030。主机通道适配器1030又可以与管理程序1031交互。管理程序又可以与其交互的主机通道适配器建立多个虚拟功能1034。管理程序可以附加地将虚拟机分配给虚拟功能中的每一个,诸如虚拟机21035被分配给虚拟功能21034。管理程序可以通过主机通道适配器中的每一个上的全特征物理功能(诸如物理功能1033)访问其相关联的主机通道适配器。应当注意的是,虽然在每个子网(即,子网a和子网b)内仅示出了一个主机通道适配器,但是应该理解的是,每个子网内可以包括多个主机通道适配器及其对应的部件。

根据实施例,主机通道适配器中的每一个可以附加地与虚拟交换机(诸如虚拟交换机1012和虚拟交换机1032)相关联,并且每个hca可以用不同的体系架构模型来建立,如上所述。虽然图10内的两个子网都被显示为使用具有预填充lid体系架构模型的vswitch,但这并不意味着暗示所有此类子网配置都必须遵循相似的体系架构模型。

根据实施例,每个子网内的至少一个交换机可以与路由器相关联,诸如子网a1000内的交换机1002与路由器1005相关联,并且子网b1040内的交换机1021与路由器1006相关联。

根据实施例,至少一个设备(例如,交换机、节点等)可以与架构管理器(未示出)相关联。架构管理器可以用于例如发现子网间架构拓扑、创建架构简档(例如,虚拟机架构简档)、构建虚拟机相关的数据库对象,这些数据库对象形成用于构建虚拟机架构简档的基础。此外,结构管理器可以根据哪些子网被允许经由哪些路由器端口使用哪些分区号进行通信来定义合法的子网间连接性。

根据实施例,当始发源(诸如子网a内的虚拟机1)处的流量被寻址到不同子网(诸如子网b内的虚拟机2)中的目的地时,该流量可以被寻址到子网a内的路由器,即,路由器1005,路由器1005然后可以经由它与路由器1006的链路将流量传递到子网b。

虚拟双端口路由器

根据实施例,双端口路由器抽象可以提供一种简单的方式用于使得能够基于除了执行正常的基于lrh的交换之外还具有进行grh(全局路由报头)到lrh(本地路由报头)转换能力的交换机硬件实现来定义子网到子网的路由器功能。

根据实施例,虚拟双端口路由器可以逻辑地连接在对应交换机端口的外部。这种虚拟双端口路由器可以向标准管理实体(诸如子网管理器)提供符合infiniband规范的视图。

根据实施例,双端口路由器模型意味着可以以其中每个子网完全控制分组的转发以及到子网的入口路径中的地址映射并且不影响任一不正确连接的子网内的路由和逻辑连接性的方式连接不同的子网。

根据实施例,在涉及不正确连接的架构的情况下,使用虚拟双端口路由器抽象还可以允许诸如子网管理器和ib诊断软件的管理实体在存在与远程子网的非预期的物理连接性时正确地表现。

图11示出了根据实施例的在高性能计算环境中的两个子网之间的互连。在利用虚拟双端口路由器进行配置之前,子网a1101中的交换机1120可以通过交换机1120的交换机端口1121经由物理连接1110连接到子网b1102中的交换机1130,该连接经由交换机1130的交换机端口1131。在这样的实施例中,每个交换机端口1121和1131即可以充当交换机端口又可以充当路由器端口。

根据实施例,这种配置的问题在于诸如infiniband子网中的子网管理器的管理实体不能区分既是交换机端口又是路由器端口的物理端口。在这种情况下,sm可以将交换机端口视为具有连接到该交换机端口的路由器端口。但是,如果交换机端口经由例如物理链路连接到具有另一个子网管理器的另一个子网,则子网管理器可以能够在物理链路上发送发现消息。但是,这样的发现消息不能在另一个子网上被允许。

图12示出了根据实施例的在高性能计算环境中经由双端口虚拟路由器配置的两个子网之间的互连。

根据实施例,在配置之后,可以提供双端口虚拟路由器配置,使得子网管理器看到正确的端节点,从而表明子网管理器负责的子网的端部。

根据实施例,在子网a1201中的交换机1220处,交换机端口可以经由虚拟链路1223连接(即,逻辑上连接)到虚拟路由器1210中的路由器端口1211。虚拟路由器1210(例如,双端口虚拟路由器)(当其在实施例中被示出为在交换机1220的外部时,其逻辑上可以被包含在交换机1220内)还可以包括第二路由器端口:路由器端口ii1212。根据实施例,可以具有两个端部的物理链路1203可以经由路由器端口ii1212和包含在子网b1202中的虚拟路由器1230中的路由器端口ii1232,经由物理链路的第一端将子网a1201经由物理链路的第二端与子网b1202连接。虚拟路由器1230可以附加地包括路由器端口1231,其可以经由虚拟链路1233连接(即,逻辑上连接)到交换机1240上的交换机端口1241。

根据实施例,子网a上的子网管理器(未示出)可以检测虚拟路由器1210上的路由器端口1211,作为子网管理器控制的子网的端点。双端口虚拟路由器抽象可以允许子网a上的子网管理器以通常的方式(例如,如按照inifiniband规范所定义的方式)处理子网a。在子网管理代理级别,可以提供双端口虚拟路由器抽象,使得sm看到正常的交换机端口,并且然后在sma级别,抽象出连接到交换机端口的另一个端口,并且这个端口是双端口虚拟路由器上的路由器端口。在本地sm中,可以继续使用常规的架构拓扑(sm将端口视为拓扑中的标准交换机端口),并且因此sm将路由器端口视为端部端口。物理连接可以在两个交换机端口之间进行,这两个交换机端口也被配置为两个不同子网中的路由器端口。

根据实施例,双端口虚拟路由器还可以解决物理链路可能被错误地连接到相同子网中的某个其它交换机端口或者连接到不旨在提供到另一个子网的连接的交换机端口的问题。因此,本文描述的方法和系统还提供了关于子网外部的内容的表示。

根据实施例,在子网(诸如子网a)内,本地sm确定交换机端口,并且然后确定连接到该交换机端口的路由器端口(例如,经由虚拟链路1223连接到交换机端口1221的路由器端口1211)。由于sm将路由器端口1211视为sm管理的子网的端部,因此sm不能超过这个点(例如,向路由器端口ii1212)发送发现消息和/或管理消息。

根据实施例,上述双端口虚拟路由器提供的益处是双端口虚拟路由器抽象完全由双端口虚拟路由器所属的子网内的管理实体(例如,sm或sma)管理。通过允许仅在本地侧进行管理,系统不必提供外部独立的管理实体。即,子网到子网连接的每一侧都可以负责配置其自己的双端口虚拟路由器。

根据实施例,在其中被寻址到远程目的地(即,在本地子网外部)的诸如smp的分组到达未经由如上所述的双端口虚拟路由器配置的本地目标端口的情况下,那么本地端口可以返回指定它不是路由器端口的消息。

本发明的许多特征可以在硬件、软件、固件或其组合中、利用硬件、软件、固件或其组合、或者在硬件、软件、固件或其组合帮助下执行。因此,本发明的特征可以使用(例如,包括一个或多个处理器的)处理系统来实现。

图13示出了根据实施例的用于支持高性能计算环境中的双端口虚拟路由器的方法。在步骤1310处,该方法可以在包括一个或多个微处理器的一个或多个计算机处提供第一子网,第一子网包括:多个交换机,该多个交换机至少包括叶交换机,其中该多个交换机中的每个交换机包括多个交换机端口;多个主机通道适配器,每个主机通道适配器包括至少一个主机通道适配器端口;多个端节点,其中端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联;以及子网管理器,该子网管理器在多个交换机和多个主机通道适配器中的一个上运行。

在步骤1320处,该方法可以将多个交换机中的交换机上的多个交换机端口中的交换机端口配置为路由器端口。

在步骤1330处,该方法可以将配置为路由器端口的交换机端口逻辑地连接到虚拟路由器,该虚拟路由器包括至少两个虚拟路由器端口。

路由器sma抽象,以便允许基于smp的连接性检查

根据实施例,不允许子网管理分组(smp)具有意味着分组将被发送到路由器端口之外的寻址信息。但是,为了允许在(虚拟)路由器端口的远程侧发现物理连接性(即,远程连接性的本地发现),可以定义一组新的sma属性,其中每个这样的新属性表示“远程信息”以及或者标准或者特定于供应商的sma属性的指示。

根据实施例,当路由器sma处理表示“远程”信息/属性的属性时,那么对应的smp请求可以以对原始请求的发送者完全透明的方式在外部物理链路上发送。

根据实施例,本地sma可以选择独立于传入请求来执行远程发现并且然后在本地高速缓存相关信息,或者它可以像简单的代理一样起作用并且每次它接收到指定“远程”信息/属性的请求时生成到外部链路的对应请求。

根据实施例,通过跟踪请求“远程”属性的smp是从本地子网侧(即,逻辑上连接到本地交换机端口的虚拟路由器端口)还是从外部链路(即,虚拟路由器的远程侧)被接收到,sma实现可以跟踪远程请求在或者表示本地子网中的原始请求或者表示来自对等路由器端口的代理请求方面在多大程度上有效。

根据实施例,对于符合ib规范的sm,路由器端口是子网中的端部端口。由此,低级别的smp(用于发现和配置子网)不能跨越路由器端口被发送。但是,为了维护对子网间流量的路由,本地sm或架构管理器需要在它对本地资源做出任何配置之前能够观察物理链路的远程侧的物理连接性。但是,关于这种看到远程连接性的期望,不允许sm配置物理链路的远程侧(即,sm的配置必须被包含在其自己的子网内)。

根据实施例,sma模型增强允许发送寻址到本地路由器端口的分组(即,smp)的可能性。其中分组被寻址的sma可以接收分组,并且然后应用定义所请求的信息在(例如,通过物理链路跨子网连接的)远程节点上的新属性。

根据实施例,sma可以作为代理操作(接收smp并发送另一个请求),或者sma可以修改原始分组并将其作为子网间分组继续发送。sma可以更新分组中的地址信息。这种更新向smp添加了1跳直接路由路径。smp然后可以被远程节点(路由器端口)接收。smp可以独立于远端上的节点是以相同的方式(例如,作为虚拟路由器)配置还是被配置为基本交换机端口(例如,与传统交换机实现的物理连接性)来工作。然后,接收节点将看到的请求分组是基本的请求,并且它将以通常的方式响应。请求源自子网之外的事实对于接收节点是透明的(不可见的)。

根据实施例,这允许本地子网通过利用抽象来发现远程子网。所提供的sma抽象允许从远程子网(例如,跨物理链路)检索信息,而远程侧不会意识到它已经被本地(即,对于其上执行子网发现是远程的)子网查询。

寻址方案

根据实施例,为了保持符合ib规范,smp分组被子网的边界限定(即,不允许sm“查看”或发现它与之相关联的子网外部的信息。但是,仍然需要从虚拟路由器端口的远端(即,超出子网边界的一“跳”)检索信息,诸如连接性信息。这种信息可以被编码成特定类型的smp,其可以被称为特定于供应商的smp(vsmp)。

根据实施例,vsmp通常可以利用与一般smp(子网限定的smp)类似的寻址方案,可以使用dr(有向路由-其中当从一个交换机到另一个交换机时smp可以明确指示它存在于哪个端口)和lid路由两者。但是,对于可以应用到路由器端口的远端的那些属性,可以使用属性修饰符中的单个位来指示本地端口与远程端口。如果设置了属性的远程位,那么在表示路由器端口的sma处可能发生附加的处理。

根据实施例,寻址方案的一个重要方面是,即使在系统的错误配置或布线的情况下,路由器端口的远程对等端口也能够对请求进行响应。例如,如果虚拟路由器经由例如物理链路连接到远程子网的通用交换机端口处的远程子网,那么处理远程子网的通用交换机端口的sma可以用指示不支持远程属性的状态值对请求进行响应,并且响应可以到达请求的sm。

根据实施例,可以或者通过使用dr路径或者经由路由器端口的lid将smp(即,vsmp)发送到本地路由器端口。如果所请求的信息是用于路由器端口的远程对等端口,那么可以设置属性修饰符的远程标志/位。当sma接收到这样的vsmp时,它可以更改分组并且添加寻址远端的附加dr步骤。

根据实施例,可以使用分组属性的一部分(例如,16位属性修饰符的一位)来发信号通知vsmp是本地的还是远程的。例如,通过将这个部分设置为1的值可以意味着远程对等端口是vsmp的最终目的地。属性的这个部分可以被称为远程标志。

根据实施例,除了远程标志之外,还可以存在附加的标志,该附加的标志可以指示沿着到最终目的地的路途哪个目的地实例应该处理vsmp。分组属性的两个附加部分(例如,属性修饰符的两个位)可以用于此目的。被称为第一接收器标志的第一部分(例如,位20)可以指示分组预期在被本地路由器端口(其应该与原始请求的目的地地址匹配)接收到时进行处理。当第一接收器处的所有预期处理都完成时,可以设置分组属性的第二部分(例如,属性修饰符的位21),并将分组转发到远端。这个第二部分可以被称为第二接收器标志。

dr路由的分组

根据实施例,作为示例,dr路由的分组可以遵循示例性流程。在lida处的源节点可以发起指定路由器1作为目的地节点的请求分组。示例性dr路由的分组配置在这里:

·madhdr.class=0x81(dr路由的smp)

·madhdr.method=0x1(获取)

·lrh.slid=lrh.dlid=0xffff(许可的lid)

·madhdr.drslid=madhdr.drdlid=0xffff

·madhdr.attrid=<vsmpattrid>

·madhdr.attrmod.remote=1

·madhdr.attrmod.first_receiver=1

·madhdr.initpath=drpathtortr1(lidb)

·madhdr.hopcnt=n

·madhdr.hopptr=0

当请求分组到达路由器1时,它可以被继续传递到对应的sma,该对应的sma然后可以验证请求是有效的。在验证请求的有效性之后,sma然后可以修改分组。这种修改可以包括用额外的一跳扩展dr路径,并设置第二接收器标志。这里示出了这样的示例性配置修改:

·madhdr.hopcnt=n+1(用额外的一跳扩展dr路径)

·madhdr.initpath[n+1]=(虚拟路由器外部端口号(即2))

·madhdr.attrmod.second_receiver=1

根据实施例,sma的smi(子网管理接口)层可以在sma将vsmp转发出到物理链路上之前用额外的跳来更新dr。

根据实施例,对于在物理链路的远程侧接收vsmp的sma,由vsmp使用的寻址方案可以看起来像是正常的ib定义的分组的寻址方案。

根据实施例,当在物理链路的远程侧上接收vsmp的sma是vsmp的最终目的地时,vsmp可以通过接收到的sma进行验证。验证可以包括相对于标志设置检查输入端口。如果远程标志以及第一接收标志和第二接收标志都被设置,那么分组可以在物理端口上(即,从配置有虚拟路由器的端口的外部链路侧)被接收。如果远程标志和仅第一接收器标志被设置,那么分组可以到达虚拟链路(即,从虚拟路由器端口的内部交换机侧)。如果验证失败,那么状态可以被设置为适当的错误消息。

图14是图示根据实施例的dr路由的vsmp分组的流程图。

在步骤1401处,根据实施例,在子网a内,诸如子网a的子网管理器的实体可以经由dr路由的vsmp请求连接性信息。dr路由的vsmp的目的地可以是子网a内的路由器,例如路由器1。

在步骤1402处,dr路由的vsmp可以到达路由器1。在实施例中并且如上所述,路由器1可以被包含在诸如交换机1的交换机中。dr路由的vsmp可以被传递到交换机1的sma用于验证。

在步骤1403处,根据实施例,sma可以修改dr路由的vsmp。该修改可以包括扩展跳计数器(用于跨物理链路到第二子网的跳),并设置第二接收器标志。

在步骤1404处,根据实施例,smi(与交换机/路由器的sma相关联的smi)可以更新vsmp的跳指针。

在步骤1405处,根据实施例,smi可以在物理链路上跨子网a1420和子网b1430之间的子网边界转发drvsmp,其中物理链路的第一端可以连接到子网a内的路由器并且物理链路的第二端可以连接到子网b内的路由器。

在步骤1406处,根据实施例,子网b1430内的路由器2的sma'可以从物理链路接收vsmp。

在步骤1407处,根据实施例,smi'(与sma'相关联)可以验证vsmp请求。

根据实施例,响应实体(例如,物理链路的远程侧的路由器)可以完成smp响应并且设置指示响应的方向属性。这里示出了这样的示例性配置:

·madhdr.method=0x81(getresp)

·madhdr.direction=1(指示响应)

根据实施例,smi层然后可以递减跳指针并且在物理链路上将响应转发出返回到本地侧。在本地路由器处的sma可以恢复对请求做出的修改。本地侧路由器处的smi可以执行正常的处理,包括递减跳数,并在虚拟链路上向交换机发送出响应(即,在交换机端口和虚拟路由器端口之间的内部虚拟链路上)。对于下一跳,smi可以再次递减跳数,并在请求最初到达的物理交换机端口上将分组发送出。

图15是图示根据实施例的对dr路由的vsmp分组的响应的流程图。

在步骤1501处,根据实施例,路由器2的sma'可以填充对vsmp的响应信息(例如,连接性信息),并且设置方向标志以指示响应。

在步骤1502处,根据实施例,smi'可以递减响应的跳指针,并且在例如具有两端的物理链路上将响应从子网b1530转发回到子网a1520。物理链路的第一端可以连接到子网a内的路由器,并且物理链路的第二端可以连接到子网b内的路由器。

在步骤1503处,根据实施例,路由器1处的sma可以接收响应并且恢复对vsmp进行的修改。

在步骤1504处,根据实施例,路由器1处的smi可以处理对vsmp的响应并且在链路(例如,虚拟路由器1和物理交换机之间的虚拟链路)上将响应发送到物理交换机。

在步骤1505处,根据实施例,smi可以递减跳指针计数器,并在最初接收到vsmp的物理交换机端口上将分组发送出。

lid路由的分组

根据实施例,作为示例,lid路由的分组可以遵循示例性流程。在lida处的源节点可以发起指定路由器1作为目的地节点的请求分组。这样的示例性分组可以具有以下配置:

·madhdr.class=0x01(lid路由的smp)

·madhdr.method=0x1(获取)

·lrh.slid=lida

·lrh.dlid=lidb

·madhdr.attrid=<vsmpattrid>

·madhdr.attrmod.remote=1

·madhdr.attrmod.first_receiver=1

根据实施例,当请求分组到达路由器1时,它可以被继续传递到对应的sma,该对应的sma然后可以验证请求是有效的。在验证请求的有效性之后,sma可以修改分组。这种修改可以包括在最后添加单个dr路径。因此,这意味着完全地址可以是lid路由的分组和dr路由的跳的组合。示例性配置在这里:

·madhdr.class=0x81(dr路由的smp)

·madhdr.hopcnt=1

·madhdr.hopptr=0

·madhdr.direction=0(出站)

·madhdr.initpath[1]=(虚拟路由器外部端口号(即2))

·madhdr.drslid=lrh.slid(即,lrh.slid包含来自原始请求者的lida)

·madhdr.drdlid=0xffff

·madhdr.attrmod.second_receiver=1

根据实施例,路由器处的smi层可以正常处理出站分组,并在物理链路上将它发送出。示例性配置在这里:

·lrh.slid=lrh.dlid=0xffff

·madhdr.hopptr=1(递增1)

根据实施例,(在物理链路的另一端处的)目的地路由器处的smi可以确定它是请求的目的地并且将vsmp传递到相关联的sma上。

图16是图示根据实施例的lid路由的vsmp分组的流程图。

在步骤1601处,根据实施例,在子网a内,诸如子网a的子网管理器的实体可以经由lid路由的vsmp请求连接性信息。lid路由的vsmp的目的地可以是子网a内的路由器,例如路由器1。

在步骤1602处,lid路由的vsmp可以到达路由器1。在实施例中并且如上所述,路由器1可以被包含在诸如交换机1的交换机中。lid路由的vsmp可以被传递到交换机1的sma用于验证。

在步骤1603处,根据实施例,sma可以修改dr路由的vsmp。该修改可以包括将单跳dr路由的路径添加到地址的末尾、扩展跳计数器(用于跨物理链路到第二子网的跳)、并设置第二接收器标志。

在步骤1604处,根据实施例,smi(与交换机/路由器的sma相关联的smi)可以更新vsmp的跳指针。

在步骤1605处,根据实施例,smi可以在物理链路上跨子网a1620与子网b1630之间的子网边界转发最初lid路由的vsmp,其中物理链路的第一端可以连接到子网a内的路由器,并且物理链路的第二端可以连接到子网b内的路由器。

在步骤1606处,根据实施例,子网b1630内的路由器2的sma'可以从物理链路接收现在dr路由的vsmp。

在步骤1607处,根据实施例,smi'(与sma'相关联)可以验证vsmp请求。

根据实施例,对于响应流程,路由器2处的sma可以验证vsmp。验证可以包括相对于标志设置检查输入端口。如果远程标志以及第一接收标志和第二接收标志都被设置,那么分组可以在物理端口上(即,从配置有虚拟路由器的端口的外部链路侧)被接收。如果远程标志和仅第一接收器标志被设置,那么分组可以到达虚拟链路(即,从虚拟路由器端口的内部交换机侧)。如果验证失败,那么状态可以被设置为适当的错误消息。

根据实施例,路由器2处的sma'可以完成smp响应并且设置指示响应的方向属性。这里示出了这样的示例性配置:

·madhdr.method=0x81(getresp)

·madhdr.direction=1(指示响应)

·lrh.slid=0xffff

·lrh.dlid=reqmad.madhdr.slid=0xffff

路由器2处的smi'然后可以递减跳指针,并在物理链路上将响应转发出返回到路由器1。然后,路由器1处的sma然后可以在将响应转发出物理交换机端口返回到源之前恢复对原始请求执行的修改。这种恢复之后的示例性配置在这里:

·madhdr.class=0x01

·lrh.dlid=madhdr.drslid(即,包含来自原始请求者的lida)

·lrh.slid=locallid=b

根据实施例,sma可以附加地清除vsmp的特定于dr的字段,使得当响应到达原始请求者时,响应看起来与原始vsmp完全一致。

根据实施例,一旦响应返回到达源处,源将看到正常的路由器lid响应,就好像它已经完全在路由器1处被处理一样。

图17是图示根据实施例的对lid路由的vsmp分组的响应的流程图。

在步骤1701处,根据实施例,路由器2的sma'可以填充对vsmp的响应信息(例如,连接性信息),并且设置方向标志以指示响应。

在步骤1702处,根据实施例,smi'可以递减响应的跳指针并且在例如具有两端的物理链路上将响应从子网b1730转发到子网a1720。物理链路的第一端可以连接到子网a内的路由器,并且物理链路的第二端可以连接到子网b内的路由器。

在步骤1703处,根据实施例,路由器1处的sma可以接收到响应并且恢复对vsmp进行的修改,包括取消dr路由的跳。

在步骤1704处,根据实施例,路由器1处的smi可以处理对vsmp的响应,并且在最初接收到vsmp的物理交换机端口上将lid路由的响应发送出。

子网间分区

根据实施例,某些分区可以被分类为“子网间分区”(本文也被称为isp)。当这样的某些分区因此被分类时,子网管理实体(例如sm)可以确保只有适当分类的分区被允许用于到远程子网的数据流量。

根据实施例,架构管理器可以分配ispp_key值的范围,并且诸如子网间管理器(ism)的全局管理实体可以实现和实施所有isp可以位于其内的这种特定p_key范围(例如,在这样的环境中的任何isp必须具有如由ism定义的p_key范围内的p_key)。通过确保从特定的p_key范围分配isp,有可能确保一些p_key范围可以由不同的子网用于不同的目的,而用于isp的p_key范围被所有相关的子网一致地使用。

根据实施例,通过观察哪些端节点是哪些isp的成员并将其与其中本地路由器端口是相同isp的成员相关联,可以在每个本地子网内以及在连接的子网之间确定可能的子网间路径的集合。

根据实施例,通过观察来自不同子网的直接连接的路由器端口都是同一isp集合的成员,可以确定在两个子网中的配置是一致的,而无需在子网之间交换附加的信息。

图18是示出根据实施例的子网间分区p_key范围的定义的框图。

根据实施例,在诸如infiniband架构的网络架构1800内存在诸如oracle架构管理器的架构管理器1801。架构管理器可以明确地创建和定义多个子网间分区,并且还可以在子网之间建立isp以便允许数据流量。架构管理器可以通过从用于整个架构的单个配置范围分配ispp_key值来确保isp在网络架构中是唯一的。这个定义的ispp_key范围1802可以被传送(在图中用虚线示出)到多个子网,诸如子网a-h1810-1817。

根据实施例,子网a-h中的每一个可以包括相关联的子网管理器1820-1827。子网管理器中的每一个可以将在定义的ispp_key范围1802内的p_key分配给每个子网管理器的相应子网内的路由器端口。

根据实施例,通过将定义的ispp_key范围内的p_key分配给子网中的路由器端口,这可以允许在例如链路1830-1837上的子网间通信。

图19是根据实施例的支持子网间分区的框图。为了在两个子网之间具有数据流量,必须对isp(子网间分区)-应该在两个子网之间公用的分区达成协议。

根据实施例,在验证两个子网之间存在连接性(以上讨论)之后,子网a1810中的子网管理器1820可以向路由器端口1910分配p_key值(例如,p_keya)。同样,子网管理器1821可以向路由器端口1920分配p_key值(例如,p_keya)。p_keya可以在如由架构管理器定义的并且分发给子网和子网管理器的ispp_key值的范围内。

根据实施例,通过将p_key值分配给落入定义的ispp_key范围内的每个路由器端口,路由器端口1910和1920可以跨物理链路1830相互通信。

根据实施例,管理实体(即,ism)可以与其它子网中的管理实体关于存在哪些isp(例如,p_key值)交换信息,并且关于哪些节点应该被允许通信/可访问交换信息。

根据实施例,虽然在图中没有绘出,但是如上所述,路由器端口1910和1920可以被配置为双端口虚拟路由器。

图20是根据实施例的支持子网间分区的框图。在子网之间建立通信并且关于isp达成一致之后,子网a1810中的子网间管理器2010可以通知子网b1811内子网管理器2020关于包含在子网a1810中的节点以及每个节点属于哪些分区。但是,只有与连接子网的路由器端口共享isp成员资格的节点有关的信息才需要被交换。换句话说,在其中只有子网内全部端节点(虚拟和/或物理)的一小部分是允许它们与特定远程子网中的节点进行通信的isp的成员的情况下,交换关于每个子网中的所有节点的信息将是浪费的。此外,从安全角度来看,期望将关于端节点的信息交换限制在所涉及的子网/ism之间严格“需要知道”的基础上。当两个连接的子网由不同的架构管理器管理以及还有在架构级别的不同域进行管理时,尤其是这种情况。只要分区达成一致并且在定义的isp范围内,这就可以允许在不同子网的节点之间的子网间通信。

根据实施例,例如,ism2010可以通知ism2020子网a包括节点a2030和节点b2031,并且这些节点是具有p_keya的isp分区的成员。

根据实施例,ism2020可以通知ism2010子网b包括节点e2040和节点h2043,并且这些是具有p_keya的isp分区的成员(虽然节点h附加地包括p_keyd)。注意的是,具有p_keyb的分区,虽然不包含在定义的isp范围中,但是仍然可以存在于两个子网中。

根据实施例,连接性由每个子网内的ism控制,意味着不存在配置每一侧控制所有事物的中央管理。每个子网内或子网间连接两侧的管理实体(例如子网管理器)负责建立isp成员资格,并且然后对应的ism负责交换相关信息。

根据实施例,除了以上讨论的静态p_key分布之外,系统和方法还可以支持动态p_key分布。例如,在图20中看,sm可以继续交换关于每个端节点是其部分的分区和p_key的信息。例如,如果子网管理器1820确定节点a2030不再是具有p_keya的isp分区的一部分,那么ism2010可以然后与ism2020通信,即节点a不再是isp分区的一部分,并且不能再参与子网间通信。路由、地址映射硬件的操纵在每个子网的本地发生。

根据实施例,虽然在图中没有绘出,但是如上所述,路由器端口1910和1920可以被配置为双端口虚拟路由器。

图21是根据实施例的用于支持子网间分区的示例性方法的流程图。

在步骤2110处,该方法可以在包括一个或多个微处理器的一个或多个计算机处提供第一子网,第一子网包括:多个交换机,该多个交换机至少包括叶交换机,其中该多个交换机中的每个交换机包括多个交换机端口;多个主机通道适配器,每个主机通道适配器包括至少一个主机通道适配器端口;多个端节点,其中端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联;子网管理器,该子网管理器在多个交换机和多个主机通道适配器中的一个上运行;以及子网间管理器,该子网间管理器在多个交换机和多个主机通道适配器中的一个上运行。

在步骤2120处,该方法可以在包括一个或多个微处理器的一个或多个计算机处提供驻留在高性能计算环境中的架构管理器。

在步骤2130处,该方法可以将多个交换机中的交换机上的多个交换机端口中的交换机端口配置为路由器端口。

在步骤2140处,该方法可以逻辑地将配置为路由器端口的交换机端口连接到虚拟路由器,该虚拟路由器包括至少两个虚拟路由器端口。

在步骤2150处,该方法可以由架构管理器定义多个分区键值内的分区键(p_key)值的范围,定义的分区键值的范围包括子网间分区(isp)p_key范围。

在步骤2160处,该方法可以由架构管理器将ispp_key范围传送给子网管理器。

本发明的特征可以在计算机程序产品中、利用计算机程序产品、或者在计算机程序产品的帮助下执行,其中计算机程序产品是具有其上/其中存储有可用来编程处理系统以执行本文所呈现的任何特征的指令的存储介质或计算机可读介质。存储介质可以包括,但不限于,任何类型的盘,包括软盘、光盘、dvd、cd-rom、微驱动器、以及磁光盘、rom、ram、eprom、eeprom、dram、vram、闪存存储器设备、磁或光卡、纳米系统(包括分子存储器ic)、或适于存储指令和/或数据的任何类型的媒体或设备。

存储在任何一种机器可读介质中,本发明的特征可以被结合到软件和/或固件中,用于控制处理系统的硬件,并且用于使处理系统能够利用本发明的结果与其它机制交互。这种软件或固件可以包括,但不限于,应用代码、设备驱动程序、操作系统和执行环境/容器。

本发明的特征也可以利用例如诸如专用集成电路(asic)的硬件部件在硬件中实现。硬件状态机的实现使得执行本文所描述的功能对相关领域的技术人员将是显而易见的。

此外,本发明可以方便地利用一个或多个常规的通用或专用数字计算机、计算设备、机器或微处理器来实现,其中包括一个或多个处理器、存储器和/或根据本公开内容的教导编程的计算机可读存储介质。适当的软件编码可以容易地由熟练的程序员基于本公开内容的教导来准备,如对软件领域的技术人员将显而易见的。

虽然以上已经描述了本发明的各种实施例,但是应该理解的是,它们已作为示例而不是限制给出。对相关领域的技术人员来说,将很显然,在不背离本发明的精神和范围的情况下,其中可以做出各种形式和细节上的变化。

本发明已经借助说明具体功能及其关系的执行的功能构建块进行了描述。这些功能构建块的边界在本文中通常是为了方便描述而任意定义的。可以定义可替代的边界,只要具体的功能及其关系被适当地执行。任何这种可替代的边界因此在本发明的范围和精神之内。

本发明的以上描述是为了说明和描述的目的提供。它不是穷尽的或者要把本发明限定到所公开的精确形式。本发明的广度和范围不应该由任何上述示例性实施例来限制。许多修改和变化对本领域技术人员来说将显而易见。修改和变化包括所公开特征的任何相关组合。实施例的选择与描述是为了最好地解释本发明的原理及其实践应用,从而使本领域其它技术人员能够理解本发明用于各种实施例并且可以进行适于预期特定用途的各种修改。本发明的范围要由以下权利要求及其等价物来定义。

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