用于在高性能计算环境中支持可伸缩的基于位图的P_Key表的系统和方法与流程

文档序号:14036490阅读:308来源:国知局
用于在高性能计算环境中支持可伸缩的基于位图的P_Key表的系统和方法与流程

版权声明

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

本发明一般而言涉及计算机系统,并且具体而言涉及在高性能计算环境中支持可伸缩的基于位图的p_key表。



背景技术:

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



技术实现要素:

本文描述了用于在高性能计算环境中支持可伸缩的基于位图的p_key(p键)表的系统和方法。示例性方法可以提供包括至少一个子网,该至少一个子网包括:一个或多个交换机、多个主机通道适配器、多个物理主机和管理程序、以及多个虚拟机。该一个或多个交换机至少包括叶子交换机,其中该一个或多个交换机中的每个交换机包括多个交换机端口;其中主机通道适配器中的一个或多个包括至少一个虚拟功能、至少一个虚拟交换机和至少一个物理功能,其中多个主机通道适配器中的每个主机通道适配器包括多个主机通道适配器端口,并且其中多个主机通道适配器经由一个或多个交换机互连;其中多个物理主机和管理程序中的每一个与多个主机通道适配器中的至少一个主机通道适配器相关联;其中多个虚拟机中的每个虚拟机与至少一个虚拟功能相关联。该方法可以将多个物理主机和虚拟机中的每一个与多个分区中的至少一个分区相关联,其中多个分区中的每个分区与p_key值相关联。该方法可以将一个或多个交换机端口中的每个交换机端口与多个基于位图的p_key表中的基于位图的p_key表相关联。该方法可以将主机通道适配器端口中的每个主机通道适配器端口与多个基于位图的p_key表中的基于位图的p_key表相关联。

本文描述的是用于在高性能计算环境中使用基于位图的硬件实现方案来支持传统p_key表抽象的系统和方法。示例性方法可以在包括一个或多个微处理器的一个或多个计算机处提供至少一个子网,该至少一个子网包括:一个或多个交换机,该一个或多个交换机至少包括叶子交换机,其中该一个或多个交换机中的每个交换机包括多个交换机端口;多个主机通道适配器,每个主机通道适配器包括至少一个主机通道适配器端口,其中多个主机通道适配器经由一个或多个交换机互连;多个端节点,其中多个端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联。该方法可以将端节点中的每个端节点与多个分区中的至少一个分区相关联,其中多个分区中的每个分区与p_key值相关联。该方法可以将一个或多个交换机端口中的每个交换机端口与多个基于位图的p_key表中的基于位图的p_key表相关联。该方法可以将主机通道适配器端口中的每个主机通道适配器端口与多个基于位图的p_key表中的基于位图的p_key表相关联。该方法可以将多个基于位图的p_key表中的每个基于位图的p_key表与虚拟p_key表相关联。

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

附图说明

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

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

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

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

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

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

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

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

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

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

图11示出了根据实施例的具有用于分区隔离的关联表的示例性infiniband架构。

图12示出了根据实施例的具有用于分区隔离的位图的示例性infiniband架构。

图13是根据实施例的用于在高性能计算环境中支持可伸缩的基于位图的p_key表的方法的流程图。

图14示出了根据实施例的具有用于分区隔离的位图和用于传统管理实体的p_key抽象的示例性架构。

图15示出了根据实施例的具有用于分区隔离的位图和用于传统管理实体的p_key抽象的示例性架构。

图16是根据实施例的用于在高性能计算环境中支持可伸缩的基于位图的p_key表的方法的流程图。

图17是根据实施例的用于在高性能计算环境中使用基于位图的硬件实现方案来支持传统p_key表抽象的方法的流程图。

具体实施方式

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

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

本文描述的是在高性能计算环境中使用基于位图的硬件实现方案来支持可配置的传统p_key表抽象的系统和方法。

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

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

并且除此之外,根据实施例,可以提供针对使用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根据使用中的路由机制来计算。在子网中,使用本地标识符(lid)对端节点和交换机上的主机通道适配器(hca)端口进行寻址。lft中的每个条目包括目的地lid(dlid)和输出端口。表中只支持每lid一个条目。当分组到达交换机时,通过在该交换机的转发表中查找dlid来确定其输出端口。路由是确定性的,因为分组在给定的源-目的地对(lid对)之间采取网络中的相同路径。

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

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

sm可以在网络初始化时计算路由表(即,子网内每对节点之间的连接/路由)。此外,每当拓扑改变时,都可以更新路由表,以便确保连接性和最佳性能。在正常操作期间,sm可以执行对网络的周期性轻扫描以检查拓扑改变。如果在轻扫描期间发现改变,或者如果sm接收到发信号通知网络改变的信息(俘获(trap)),那么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存储装置或分布式联网文件系统减少了存储开销;并且已通过使用像单根输入/输出虚拟化(sr-iov)这样的设备直通技术减少了网络i/o开销。现在,云有可能使用高性能互连解决方案来容纳虚拟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时,会出现问题。由于节点是按索引的次序进行路由的,因此这种行为会导致链路上的平衡恶化。由于路由可以在分区不知情(oblivious)的情况下执行,因此,一般而言,胖树路由的子网提供分区间不好的隔离。

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

k元n级树是具有kn个端节点和n·kn-1个交换机的n级胖树,每个交换机具有2k个端口。每个交换机在树中具有相同数量的上连接和下连接。xgft胖树通过允许交换机的不同数量的上连接和下连接以及在树中每个级别处的不同数量的连接来扩展k元n级胖树。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之间没有设备共享。直接分配或设备直通以最小的开销提供接近本地(neartonative)的性能。物理设备绕过管理程序并且直接附连到vm。然而,这种直接设备分配的缺点是有限的可伸缩性,因为在虚拟机之间不存在共享—一个物理网卡与一个vm耦合。

根据实施例,单根iov(sr-iov)可以允许物理设备通过硬件虚拟化表现为同一设备的多个独立的轻量级实例。这些实例可以被分配给vm作为直通设备,并作为虚拟功能(vf)被访问。管理程序通过唯一的(每设备的)、全特征(fullyfeatured)物理功能(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,该唯一的请求者id使得i/o存储器管理单元(iommu)能够区分来自/去往不同vf的流量流。iommu还在pf和vf之间应用存储器和中断转换。

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

然而,当使用诸如sr-iov的直接设备分配技术时,迁移变得更加困难。在这种情况下,网络接口的完整内部状态不能被复制,因为它与硬件绑定。作为替代,分配给vm的sr-iovvf被分离(detach),实时迁移将运行,并且新的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、350、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。当网络被引导(root)时,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)的特征提供朝向一个物理机器的替代路径,而不受lmc的限制(其要求lid必须是顺序的)约束。当需要迁移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时,用与所创建的vm相关联的新添加的lid来更新子网中的物理交换机的lft。对于这个操作,需要发送每交换机一个子网管理分组(smp)。因为每个vm正在使用与其主机管理程序相同的路径,所以类似lmc的功能也不可用。然而,对所有管理程序中存在的vf的总量没有限制,并且vf的数量可以超过单播lid极限的数量。当然,如果是这种情况,那么并不是所有vf都被允许同时附连到活动vm上,然而,当操作接近单播lid极限时,具有更多的备用管理程序和vf增加了分段网络的优化和灾难恢复的灵活性。

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

图9示出了根据实施例的具有vswitch的示例性vswitch体系架构,其中vswitch具有动态lid分配和预填充lid。如图所示,多个交换机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被预填充,而虚拟功能2525和虚拟功能3526使其lid被动态分配(即,虚拟功能2525可用于动态lid分配,并且虚拟功能3526由于虚拟机3552被附连而具有动态分配的lid11)。最后,与管理程序3531相关联的功能(物理功能和虚拟功能)可以使其lid被动态分配。这使得虚拟功能1534和虚拟功能3536可用于动态lid分配,而虚拟功能2535由于虚拟机4553被附连到那里所以具有动态分配的lid9。

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

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

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

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

图10示出了根据实施例的示例性多子网infiniband架构。如图所示,在子网a1000内,多个交换机1001-1004可以在子网a1000(例如,ib子网)内提供架构(诸如infiniband架构)的成员之间的通信。该架构可以包括多个硬件设备,诸如例如通道适配器1010。主机通道适配器1010又可以与管理程序1011交互。该管理程序又可以与和其交互的主机通道适配器结合来设立多个虚拟功能1014。该管理程序可以附加地将虚拟机分配给虚拟功能中的每一个,诸如虚拟机110105被分配给虚拟功能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。

可伸缩的基于位图的p_key表

根据实施例,由于使用虚拟机提供的扩张的infiniband网络,内部可能的分区的数量已经显著增加。然而,在当前的用于处置p_key管理和路由的方法下,当流量经过架构时,会添加显著的开销时间。传统上,infiniband规范将p_key表定义为sm可以当作索引表来访问的16位p_key值的数组。该规范的硬件实现方案意味着使用关联存储器执行查找,从而以线速(wire-speed)分组速率执行对ib分组的分区检查。实践中,这将硬件实现方案的p_key表的可能尺寸限制为比16位p_key值所表示的64k值空间小几个数量级。

根据实施例,infiniband规范通过16位p_key来定义分区成员资格,并且通过在构架内的每个端口处使用固定的p_key值的表来实施分区隔离。子网管理器可以在不同的表条目中编写不同的p_key值。当分组(其中,在该分组的报头中标记有基于其分区关联性的p_key)到达端口时,底层硬件可以将传入分组与p_key表中与检查硬件相关联的所有值进行比较(即,在该表处执行关联查找)。然而,这种查找不能很好地与大量的分区一起伸缩,并且可能在对表内的多个分区执行查找时引入不想要的开销。

图11示出了根据实施例的具有用于分区隔离的关联表的示例性infiniband架构。如图11所示,一个或多个端节点1141-1144可以在网络架构1100中连接。网络架构1100可以基于胖树拓扑,该胖树拓扑包括多个叶子交换机1111-1114和多个主干交换机或根交换机1131-1134。此外,网络架构1100可以包括一个或多个中间交换机,诸如交换机1121-1124。同样如图11所示,端节点1141-1144中的每个端节点可以是多宿主节点。

根据实施例,节点1141-1144中的每个节点可以属于多个分区中的一个或多个分区,其中每个分区与p_key值相关联。如上所述,p_key值可以被包括在架构内所发送的每个分组中,并且可以允许子网内的不同程度的分区实施。p_key值中的每个p_key值被存储在多个表中,例如表1101-1108(在本文中也被称为“端口p_key表”),其中每个表例如与架构的另一个成员或交换机的端口(诸如属于主机节点的hca端口)相关联。每个表1101-1108可以由子网管理器设置。

根据实施例,每个端口p_key表可以包括有n个条目的数组,其中每个条目可以包含16位的p_key值,并且n的值是端口的能力(由sm作为发现端口的状态和能力的一部分而检索到)。当sm具有暗示端口应该是分区的成员(即,完全成员或受限成员)的策略信息时,sm可以找到端口p_key表中的下一个可用条目,并且然后将相关的16位p_key值存储在该条目中。一旦p_key值已被成功存储(由sma向sm确认),sm就可以预期端口硬件包括新p_key表条目与经过该端口的所有分组的匹配,并且具有与更新后的p_key表条目中的新值匹配的分组p_key值的分组可以被接受(即,通过端口)。

根据实施例,当子网中的端口不再应该是分区的成员时,sm可以清除(将零写入到)相关的p_key表条目。一旦p_key值已被成功清除(由sma向sm确认),sm就可以预期端口硬件对于经过端口的具有与刚从端口p_key表中清除的p_key值对应的分组p_key值的所有分组的p_key匹配失败,并且然后丢弃该分组。

根据实施例,sm可以用新值替换有效的p_key表条目而不首先清除现有值。在这种情况下的预期效果与条目内容首先被清除并且然后用新值随后更新的效果是相同的。

如已经描述的,图11中绘出的实施例可以在没有大量分区的子网的范围内很好地伸缩。然而,一旦在任何给定子网(诸如,例如利用端节点的虚拟化和一个或多个vswitch体系架构的子网)内存在大量的分区,上述关联表查找就会导致开销时间大幅增加,并且如果要满足ib规范定义的相关链路速度要求,那么上述关联表查找甚至不可能在硬件中实现。

根据实施例,示例性方法和系统可以替代地利用位图来在硬件中实现所有可能的p_key值的表示——16位(即,64k个可能的值),而不是利用与ib架构中的每个端口相关联的p_key表。在这样的方法和系统中,在硬件实现方案内,每个可能的p_key值可以被表示为单个位,其中该单个位的值(例如,1或0)可以定义该p_key值是被允许(即,分组被允许通过执行分区检查的端口)还是不与端口相关联(即,然后可以基于将分组p_key与用于该分区编号的(根据由ib规范定义的用于相关端口类型的p_key实施规则的)受限成员条目和完全成员条目两者的位图条目进行相关,来根据分区实施规则检查ib分组)。

图12示出了根据实施例的具有用于分区隔离的位图的示例性infiniband架构。如图12所示,一个或多个端节点1241-1244可以在网络架构1200中连接。网络架构1200可以基于胖树拓扑,该胖树拓扑包括多个叶子交换机1211-1214和多个主干交换机或根交换机1231-1234。此外,网络架构1200可以包括一个或多个中间交换机,诸如交换机1221-1224。也如图12所示,端节点1241-1244中的每个端节点可以是多宿主节点。

根据实施例,节点1241-1244中的每个节点可以属于多个分区中的一个或多个分区,其中每个分区与p_key值相关联。如上所述,p_key值可以被包括在架构内所发送的每个分组中,并且可以允许子网内的不同程度的分区实施。p_key值中的每个p_key值可以在诸如位图1201-1208的多个位图中被引用,其中每个位图与例如架构的另一个成员或交换机的端口(诸如属于主机节点(或与主机节点相关联)的hca端口)相关联。每个位图1201-1208可以由子网管理器设置。

根据实施例,通过在位图中表示p_key而不是关联表查找,这可以允许架构中用于分区隔离和分组路由的更大灵活性以及减少的开销时间。任何节点都可以是任何分区的成员。这可以允许任何交换机端口只允许已被sm配置为允许的p_key通过该交换机端口(否则分组可以被丢弃)。通过利用基于位图的p_key表,方法和系统可以允许仅几个分区或者允许几百个分区。这样的方法和系统可以确保只有那些应该通过交换机的分区才被允许。即使在更多数量的可用分区的情况下,这样的方法和系统也可以允许更大的分区隔离。

根据实施例,通过使用位图方案,硬件可以从分组报头取得p_key值,而不是具有p_key值的关联查找,并且它不是将值发送到关联查找机制中,而是替代地取得p_key值并将其索引到(例如,64k个位的)位数组中。然后可以基于将分组p_key与用于该分区编号的(根据由ib规范定义的用于相关端口类型的p_key实施规则的)受限成员条目和完全成员条目两者的位图条目进行相关,来根据分区实施规则检查ib分组。这可以例如导致增加的伸缩性(即,允许更多数量的分区p_key而不损失性能)。

根据实施例,除了在端节点处实施分区隔离之外,上述的位图方案还可以在中间交换机处(诸如在直接连接到端节点的端口的第一叶子交换机处、在第一叶子交换机和根交换机之间的任何交换机处、以及在最后叶子交换机处)附加地支持分区实施。取决于架构的路由,许多不同的节点使用交换机到交换机的链路。在传统的系统中,分区实施主要用在端节点上,并且它可能已经在直接连接到端节点的端口的最后的叶子交换机处实施,但没有在高于叶子交换机的级别处的交换机处实施(即,在交换机之间的链路上没有使用分区实施)。然而,在通过使用与被允许和不被允许的p_key相关联的分区位图获得的速度和效率的情况下,分区实施可以在这些中间链路处发生。通过确保每个交换机端口只允许被允许跨该端口发送的分区,在中间链路处遇到其不被允许通过的端口的这种分组可以被更早地丢弃(而不是在端节点处或在叶子交换机处被丢弃),就链路带宽利用率而言,对于最终将被丢弃的分组,这允许较少的性能浪费。

根据实施例,sm可以取决于分区来在位图处确定和设置哪些流量被允许路由到完整架构中的什么地方。sm然后可以使用位图来设立分区实施。sm可以接收关于哪些端节点是哪个分区的成员的策略配置。基于该策略信息,sm可以(通过位图)在端节点上设立分区实施。sm还可以配置交换机到交换机的连接性。在完成这一点之后,sm然后可以使用位图来限制架构中的流量流动。sm将位图中每分区的值设置为1或0、通过或丢弃(即,被允许或不被允许)。这确保不被允许的流量可以在流量的路由中提前被丢弃,而不是在目的地节点处或在目的地节点之前的最后叶子交换机处被丢弃。

根据实施例,每个位图可以是位数组,该位数组包括用于每个端口的p_key实施的64k位数组。这种位图可以与任何种类的ib端口相关联:交换机外部端口、交换机管理端口(即,交换机端口0)、(例如,用于ib-以太网桥/网关节点实现方案的)tca端口、hca端口以及路由器端口。然后可以基于将分组p_key与用于该分区编号的(根据由ib规范定义的用于相关端口类型的p_key实施规则的)受限成员条目和完全成员条目两者的位图条目进行相关,来根据分区实施规则检查ib分组。

根据实施例,单个分区编号可以与两个位数组索引相关联——一个表示受限成员资格,而另一个表示完全成员资格。因此,取决于端口是应该仅表示完全成员资格还是表示完全成员资格和受限成员资格两者,必须设立仅完全成员索引或完全和受限成员两者索引,以允许对应的成员资格流量。然而,由于受限的分区成员不被允许与另一个受限的成员通信而完全成员被允许与完全成员和受限成员两者通信的事实,因此查找实现方案必须考虑到这一点,使得正在发起分组的端节点在它只是分区的受限成员时只被允许发送受限成员分组,但是对应地它将只被允许接收完全成员分组。

图13是根据实施例的用于在高性能计算环境中支持可伸缩的基于位图的p_key表的方法的流程图。

在步骤1310处,分组可以起源自源(例如,源节点或源虚拟机)并且被寻址到目的地(例如,目的地节点或目的地虚拟机)。分组可以包含报头,该报头除了包括其它信息之外还可以包括与分区信息(诸如源和目的地之间的公共分区)对应的p_key值。

在步骤1320处,分组可以沿着计算出的路由开始穿过架构(诸如infiniband架构)。路由可以例如由子网管理器来计算。

在步骤1330处,分组可以沿着架构内的路由路径到达交换机的寻址端口(addressedport)。

在步骤1340处,寻址端口所在的交换机可以针对位图的内容来检查分组p_key(即,然后可以基于将分组p_key与用于该分区编号的(根据由ib规范定义的用于相关端口类型的p_key实施规则的)受限成员条目和完全成员条目两者的位图条目进行相关,来根据分区实施规则检查ib分组)。

在步骤1350处,如果检查的结果是“被允许”,则这允许分组沿着路由路径前进到目的地(dlid)。

在步骤1360处,如果检查的结果是“不被允许”,则交换机可以在寻址端口处丢弃分组,并且不允许分组沿着路由路径前进。

应该理解的是,虽然图13中所示的和以上描述的实施例公开了仅在架构内的一个交换机处检查分组p_key,但是沿着路由路径的每个交换机和节点都可以在每个寻址端口处使用相关联的位图来执行对p_key的检查,以确定分组是被允许还是不被允许。

使用基于位图的hw实现方案的可配置的传统p_key表抽象

根据实施例,以上基于位图的实现方案的缺点在于它不能被传统子网管理器实现方案直接使用。这是因为目前定义的管理实体(诸如infiniband规范(即,2015年3月发布的tradeassociationarchitecturespecification,卷1,版本1.3)中定义的子网管理器)没有被定义为与基于位图的p_key实现方案交互——而是它们被定义为与由ib规范定义的基于传统p_key表的方案交互。

根据实施例,可以通过使用实现映射表的基于软件的sma来实现dram中的映射表。利用这个映射表,有可能提供基于位图的p_key表的传统兼容(legacycompliant)视图。这种传统兼容视图可以被称为虚拟p_key表,或者可配置的传统p_key表抽象。

根据实施例,虚拟p_key表的尺寸受可为此目的分配的dram的量的限制。在某些实施例中,可访问的该数量的dram被包含在交换机或与虚拟p_key表相关联的其它设备(诸如端节点)内。在某些实施例中,可以利用dram的外部源,以便做出可以被管理实体访问的更大的虚拟p_key表。

根据实施例,每个虚拟p_key表可以具有配置参数(或头文件常量)定义的尺寸,并且可以由与相关sma属性实例相关联的对应存储器数据结构(例如,嵌入式处理器子系统存储器数据结构(eps))来实现。

根据实施例,每当管理实体(例如,子网管理器)将p_key值存储在当前被清除(包含零值)的(虚拟)p_key表条目中时,sma实现方案可以调用hw访问层以将由该p_key值索引的hw位数组设置为一,并且然后可以更新虚拟p_key表条目(例如,eps存储器数据结构),使得由sm指定的p_key表条目数将包含指定的p_key值。

根据实施例,每当sm从虚拟p_key表中的条目清除p_key值时,sma实现方案可以使用来自存储器数据结构的旧p_key值,并且然后在虚拟p_key表条目(即eps存储器数据结构)也被清除之前经由hw访问接口清除对应的hw位数组索引。

根据实施例,每当sm将新的p_key值写入当前未被清除的(虚拟)p_key表条目时,sma实现方案可以首先使用来自eps存储器数据结构的旧的p_key值,并且然后经由hw访问接口清除对应的hw位数组索引。在旧值已被清除之后,sma实现方案可以设置与新添加的p_key值对应的位数组条目,并且然后更新存储器数据结构,使得指定的p_key表条目现在将包含指定的p_key值。

图14示出了根据实施例的具有用于分区隔离的位图和用于传统管理实体的p_key抽象的示例性架构。在图中示出的实施例中,交换机1400可以包括多个端口1420,并且这些端口中的每个端口可以与用于p_key实施的基于位图的p_key表1410相关联,如上所述。交换机1400可以附加地包括存储器(例如,dram)1430。

根据实施例,子网管理器1440(例如,传统子网管理器)可能不能查询/设置基于位图的p_key表1410。在这种情况下,可以在交换机的存储器1430内提供p_key表抽象1450(即,“虚拟p_key表”)。然后,以子网管理器将基于关联存储器/查找与传统p_key表交互的相同方式,子网管理器可以查询虚拟p_key表并且与虚拟p_key表交互。更具体而言,sm1440可以与和交换机1400相关联的sma1441对接。这种接口可以利用ib规范定义的sma属性和用于p_key管理的方法,并且因此sm不知晓底层实现方案。

根据实施例,由于包含在虚拟p_key表中的每个p_key包括16个位,并且由于要被包含在虚拟p_key表中的潜在p_key值的数量(即,上至64k个p_key),所以虚拟p_key表的尺寸会受到交换机中包含的和/或由交换机分配给虚拟p_key表的存储器1430的量的限制。例如,为了表示用于36个端口的交换机中的每个端口的64k个p_key,需要的存储器大小会大于4兆字节(megabyte)。

图15示出了根据实施例的具有用于分区隔离的位图和用于传统管理实体的p_key抽象的示例性架构。在图中示出的实施例中,交换机1400可以包括多个端口1420,并且这些端口中的每个端口可以与用于p_key实施的基于位图的p_key表1410相关联,如上所述。交换机1400可以访问外部存储器1530。

根据实施例,子网管理器1440(例如,传统子网管理器)可能不能查询/设置基于位图的p_key表1410。在这种情况下,可以在外部存储器1530内提供p_key表抽象1450(即,“虚拟p_key表”)。然后,以子网管理器将基于关联存储器/查找与传统p_key表交互的相同方式,子网管理器可以查询虚拟p_key表并且与虚拟p_key表交互。更具体而言,sm1440可以与和交换机1400相关联的sma1441对接以执行这种查询。这种接口可以利用ib规范定义的sma属性和用于p_key管理的方法,并且因此sm不知晓底层实现方案。

根据实施例,由于包含在虚拟p_key表中的每个p_key包括16位,并且由于要被包含在虚拟p_key表中的潜在p_key值的数量(即,上至64k个p_key),所以虚拟p_key表的尺寸会受到外部存储器1530的量的限制。与上面描述的情况不同,外部存储器通常可以比被包含在交换机本身处的存储器的量大得多。在这种情况下,虚拟p_key表的潜在尺寸远大于以上关于图14所描述的尺寸。在这种情况下,例如,将有可能为每个交换机端口表示64k个p_key。

图16是根据实施例的用于在高性能计算环境中支持可伸缩的基于位图的p_key表的方法的流程图。在步骤1610处,该方法可以在包括一个或多个微处理器的一个或多个计算机处提供至少一个子网,该至少一个子网包括:一个或多个交换机,该一个或多个交换机至少包括叶子交换机,其中该一个或多个交换机中的每个交换机包括多个交换机端口;多个主机通道适配器,每个主机通道适配器包括至少一个主机通道适配器端口;以及多个端节点,其中多个端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联。

在步骤1620处,该方法可以将多个物理主机和虚拟机中的每一个与多个分区中的至少一个分区相关联,其中该多个分区中的每个分区与p_key值相关联。

在步骤1630处,该方法可以将交换机端口中的每个交换机端口与多个基于位图的p_key表中的基于位图的p_key表相关联。

在步骤1640处,该方法可以将主机通道适配器端口中的每个主机通道适配器端口与多个基于位图的p_key表中的基于位图的p_key表相关联。

图17是根据实施例的用于在高性能计算环境中使用基于位图的硬件实现方案来支持传统p_key表抽象的方法的流程图。该方法可以在包括一个或多个微处理器的一个或多个计算机处提供至少一个子网,该至少一个子网包括:一个或多个交换机,该一个或多个交换机至少包括叶子交换机,其中该一个或多个交换机中的每个交换机包括多个交换机端口;多个主机通道适配器,每个主机通道适配器包括至少一个主机通道适配器端口,其中多个主机通道适配器经由该一个或多个交换机互连;多个端节点,其中该多个端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联;以及多个虚拟机,其中该多个虚拟机中的每个虚拟机与至少一个虚拟功能相关联。

在步骤1720处,该方法可以将多个端节点中的每个端节点与多个分区中的至少一个分区相关联,其中该多个分区中的每个分区与p_key值相关联。

在步骤1730处,该方法可以将一个或多个交换机的交换机端口中的每个端口与多个基于位图的p_key表中的基于位图的p_key表相关联。

在步骤1740处,该方法可以将主机通道适配器端口中的每个主机通道适配器端口与多个基于位图的p_key表中的基于位图的p_key表相关联。

在步骤1750处,该方法可以将多个基于位图的p_key表中的每个基于位图的p_key表与虚拟p_key表相关联。

根据实施例,一种用于在高性能计算环境中使用基于位图的硬件实现方案来支持传统p_key表抽象的系统包括:一个或多个微处理器,至少一个子网。该至少一个子网包括:一个或多个交换机,该一个或多个交换机至少包括叶子交换机,该一个或多个交换机中的每个交换机包括多个交换机端口;多个主机通道适配器,每个主机通道适配器包括至少一个主机通道适配器端口;以及多个端节点,其中该多个端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联;其中多个端节点中的每个端节点与多个分区中的至少一个分区相关联;其中该多个分区中的每个分区与p_key值相关联;其中交换机端口中的一个或多个交换机端口与多个基于位图的p_key表中的基于位图的p_key表相关联;其中主机通道适配器端口中的一个或多个主机通道适配器端口与多个基于位图的p_key表中的基于位图的p_key表相关联;并且其中该多个基于位图的p_key表中的每个基于位图的p_key表与虚拟p_key表相关联。

根据实施例,上述系统还包括子网管理器,该子网管理器经由多个端节点中的一个端节点进行操作;其中子网管理器确定通过一个或多个交换机中的每个交换机上的多个端口的被允许的流量和不被允许的流量。

根据实施例,在上述系统中,子网管理器基于对通过一个或多个交换机中的每个交换机上的多个端口中的每个端口的被允许的流量和不被允许的流量的确定,经由相关联的虚拟p_key表来配置基于位图的p_key表中的每个基于位图的p_key表。

根据实施例,在上述系统中,虚拟p_key表中的每个虚拟p_key表被托管在相应交换机和主机通道适配器处的存储器上。

根据实施例,在上述系统中,虚拟p_key表中的每个虚拟p_key表的尺寸基于相应交换机和主机通道适配器处的存储器的量而受到限制。

根据实施例,在上述系统中,虚拟p_key表中的每个虚拟p_key表被托管在相应交换机和主机通道适配器外部的存储器上。

根据实施例,上述系统包括两个或更多个子网,该两个或更多个子网中的每一个子网通过该两个或更多个子网中的每个子网中的至少一个路由器端口互连。

根据实施例,一种用于在高性能计算环境中使用基于位图的硬件实现方案来支持传统p_key表抽象的方法包括:在包括一个或多个微处理器的一个或多个计算机处提供至少一个子网,该至少一个子网包括一个或多个交换机、多个主机通道适配器以及多个端节点,该一个或多个交换机至少包括叶子交换机,该一个或多个交换机中的每个交换机包括多个交换机端口,每个主机通道适配器包括至少一个主机通道适配器端口,其中端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联;以及将多个端节点中的每个端节点与多个分区中的至少一个分区相关联,其中多个分区中的每个分区与p_key值相关联;将一个或多个交换机端口中的每个交换机端口与多个基于位图的p_key表中的基于位图的p_key表相关联;将主机通道适配器端口中的每个主机通道适配器端口与多个基于位图的p_key表中的基于位图的p_key表相关联;以及将多个基于位图的p_key表中的每个基于位图的p_key表与虚拟p_key表相关联。

根据实施例,上述方法还在包括一个或多个微处理器的所述一个或多个计算机处提供子网管理器,该子网管理器经由多个端节点中的一个端节点来进行操作;以及由子网管理器确定通过一个或多个交换机中的每个交换机上的多个端口的被允许的流量和不被允许的流量。

根据实施例,上述方法还包括:基于对通过一个或多个交换机中的每个交换机上的多个端口中的每个端口的被允许的流量和不被允许的流量的确定,由子网管理器经由相关联的虚拟p_key表来配置基于位图的p_key表中的每个基于位图的p_key表。

根据实施例,在上述方法中,虚拟p_key表中的每个虚拟p_key表被托管在相应交换机和主机通道适配器处的存储器上。

根据实施例,在上述方法中,虚拟p_key表中的每个虚拟p_key表的尺寸基于相应交换机和主机通道适配器处的存储器的量而受到限制。

根据实施例,在上述方法中,虚拟p_key表中的每个虚拟p_key表被托管在相应交换机和主机通道适配器外部的存储器上。

根据实施例,在上述方法中,一个或多个子网包括两个或更多个子网,该两个或更多个子网中的每个子网通过两个或更多个子网中的每个子网中的至少一个路由器互连。

根据实施例,一种非暂态计算机可读存储介质,包括存储在其上的指令,该指令用于在高性能计算环境中使用基于位图的硬件实现方案来支持传统p_key表抽象,所述指令当由一个或多个计算机读取和执行时,使一个或多个计算机执行包括以下各项的步骤:在包括一个或多个微处理器的一个或多个计算机处提供至少一个子网,该至少一个子网包括一个或多个交换机、多个主机通道适配器以及多个端节点,该一个或多个交换机至少包括叶子交换机,该一个或多个交换机中的每个交换机包括多个交换机端口,每个主机通道适配器包括至少一个主机通道适配器端口,其中端节点中的每个端节点与多个主机通道适配器中的至少一个主机通道适配器相关联;以及将多个端节点中的每个节点与多个分区中的至少一个分区相关联,其中多个分区中的每个分区与p_key值相关联;将一个或多个交换机端口中的每个交换机端口与多个基于位图的p_key表中的基于位图的p_key表相关联;将主机通道适配器端口中的每个主机通道适配器端口与多个基于位图的p_key表中的基于位图的p_key表相关联;以及将多个基于位图的p_key表中的每个基于位图的p_key表与虚拟p_key表关联。

根据实施例,在上述非暂态计算机可读存储介质中,所述步骤还包括:在包括所述一个或多个微处理器的一个或多个计算机处还提供子网管理器,该子网管理器经由多个端节点中的一个端节点来进行操作;以及由子网管理器确定通过一个或多个交换机中的每个交换机上的多个端口的被允许的流量和不被允许的流量。

根据实施例,在上述非暂态计算机可读存储介质中,所述步骤还包括:基于对通过一个或多个交换机中的每个交换机上的多个端口中的每个端口的被允许的流量和不被允许的流量的确定,由子网管理器经由相关联的虚拟p_key表来配置基于位图的p_key表中的每个基于位图的p_key表。

根据实施例,在上述非暂态计算机可读存储介质中,虚拟p_key表中的每个虚拟p_key表被托管在相应交换机和主机通道适配器处的存储器上。

根据实施例,在上述非暂态计算机可读存储介质中,虚拟p_key表中的每个虚拟p_key表的尺寸基于相应交换机和主机通道适配器处的存储器的量而受到限制。

根据实施例,在上述非暂态计算机可读存储介质中,虚拟p_key表中的每个虚拟p_key表被托管在相应交换机和主机通道适配器外部的存储器上。

根据实施例,一种计算机程序包括以机器可读格式的程序指令,该程序指令当由计算机系统执行时使计算机系统执行上述方法。

根据实施例,一种计算机程序产品包括存储在非暂态机器可读数据存储介质中的上述计算机程序。

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

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

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

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

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

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

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

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

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