用于无损网络中的高效虚拟化的系统和方法与流程

文档序号:13741897阅读:348来源:国知局
用于无损网络中的高效虚拟化的系统和方法与流程

版权声明

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

本发明一般而言涉及计算机系统,并且具体地涉及使用sr-iovvswitch架构来支持计算机系统虚拟化和实时迁移。



背景技术:

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



技术实现要素:

本文描述的是用于支持子网中的虚拟机迁移的系统和方法。示例性方法可以在包括一个或多个微处理器的一个或多个计算机处提供:一个或多个交换机,该一个或多个交换机至少包括叶子交换机,其中一个或多个交换机中的每一个交换机包括多个端口;多个主机通道适配器,其中主机通道适配器中的每一个主机通道适配器包括至少一个虚拟功能、至少一个虚拟交换机和至少一个物理功能,并且其中多个主机通道适配器经由一个或多个交换机互连;多个管理程序,其中多个管理程序中的每一个管理程序与多个主机通道适配器中的至少一个主机通道适配器相关联;以及多个虚拟机,其中多个虚拟机中的每一个虚拟机与至少一个虚拟功能相关联。该方法可以将多个主机通道适配器布置为具有具有预填充的本地标识符(lid)架构的虚拟交换机或具有动态lid指派架构的虚拟交换机中的一个或多个。该方法可以向每个虚拟交换机指派lid,所指派的lid与相关联的物理功能的lid对应。该方法可以至少基于指派给虚拟交换机中的每一个虚拟交换机的lid来计算一个或多个线性转发表(lft),该一个或多个lft中的每一个lft与一个或多个交换机中的交换机相关联。

根据实施例,一种方法可以在包括一个或多个微处理器的一个或多个计算机处提供:一个或多个微处理器;一个或多个交换机,该一个或多个交换机至少包括叶子交换机,其中一个或多个交换机中的每一个交换机包括多个端口;多个主机通道适配器,其中主机通道适配器中的每一个主机通道适配器包括至少一个虚拟功能、至少一个虚拟交换机和至少一个物理功能,并且其中多个主机通道适配器经由一个或多个交换机互连;多个管理程序,其中多个管理程序中的每一个管理程序与多个主机通道适配器中的至少一个主机通道适配器相关联;以及多个虚拟机,其中多个虚拟机中的每一个虚拟机与至少一个虚拟功能相关联。该方法可以将多个主机通道适配器布置有具有预填充的本地标识符(lid)架构的虚拟交换机或具有动态lid指派架构的虚拟交换机中的一个或多个。该方法可以向虚拟交换机中的每一个虚拟交换机指派多个物理lid(plid)plid中的plid,所指派的plid与相关联的物理功能的plid对应。该方法还可以向多个虚拟机中的每一个虚拟机指派多个虚拟lid中的vlid,其中lid空间包括多个plid和多个vlid。

根据实施例,可以使用infiniband分组的本地路由报头中的标准slid和dlid字段来表示每个plid值。而且,每个vlid值可以使用结合表示扩展的两个或更多个附加比特的标准slid和dlid字段的组合来表示。

附图说明

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

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

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

图4示出了根据实施例的示例性vswitch架构。

图5示出了根据实施例的示例性vport架构。

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

图7示出了根据实施例的具有动态lid指派的示例性vswitch架构。

图8示出了根据实施例的具有带有动态lid指派和预填充的lid的vswitch的示例性vswitch架构。

图9示出了根据实施例的扩展的本地路由报头。

图10示出了根据实施例的两个示例性线性转发表。

图11示出了根据实施例的、支持无损互连网络中的高效虚拟化的图示。

图12示出了根据实施例的、支持无损互连网络中的高效虚拟化的图示。

图13示出了根据实施例的、支持无损互连网络中的高效虚拟化的图示。

图14示出了根据实施例的、支持无损互连网络中的高效虚拟化的图示。

图15示出了根据实施例的潜在虚拟机迁移。

图16示出了根据实施例的交换机元组。

图17示出了根据实施例的重新配置过程。

图18是根据实施例的、用于在无损互连网络中支持高效虚拟化的方法的流程图。

图19是根据实施例的、用于在无损互连网络中支持高效虚拟化的方法的流程图。

具体实施方式

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

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

本文描述的是支持无损互连网络中的高效虚拟化的系统和方法。

本发明的以下描述使用infinibandtm(无限带宽,ib)网络作为高性能网络的示例。对于本领域技术人员来说明显的是,可以使用其它类型的高性能网络而没有限制。以下描述还使用胖树拓扑作为构架(fabric)拓扑的示例。对于本领域技术人员来说明显的是,可以使用其它类型的构架拓扑而没有限制。

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

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

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

infinibandtm

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

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

在子网内,可以使用交换机和点对点链路来连接主机。此外,可以存在主管理实体,子网管理器(sm),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可以重新配置网络。重新配置步骤可以包括在网络初始化期间执行的步骤。此外,重新配置可以具有限于发生网络变化的子网的局部范围。此外,用路由器对大型构架进行分段可以限制重新配置的范围。

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

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

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

infiniband中的虚拟机

在过去的十年中,因为通过硬件虚拟化支持已几乎消除了cpu开销,所以虚拟化高性能计算(hpc)环境的前景已得到相当大的提高;通过使存储器管理单元虚拟化显著降低了存储器开销;通过使用快速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通信的其它节点可能丢失连接。当发生这种情况时,通过向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地址而形成gid。

胖树(ftree)拓扑和路由

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

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

同样如图2所示,端节点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(k元n树)、扩展的广义胖树(xgft)、并行端口广义胖树(pgft)和现实生活胖树(rlft)。

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

根据实施例,单根iov(sr-iov)可以允许物理设备通过硬件虚拟化而表现为相同设备的多个独立的轻量级实例。这些实例可以被指派给vm作为直通设备,并且可以作为虚拟功能(vf)被访问。管理程序通过(每设备)唯一的、全特征的物理功能(pf)访问设备。sr-iov使纯直接指派的可伸缩性问题得到缓解。但是,sr-iov呈现出的问题是它可能会影响vm迁移。在这些iov技术中,sr-iov可以允许利用从多个vm直接访问单个物理设备的手段来扩展pciexpress(pcie)规范,同时维持接近本地的性能。因此,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被分离,实时迁移将运行,并且新的vf将在目的地处被附连。在infiniband和sr-iov的情况下,该过程可以引入在秒的数量级上的停机时间。此外,在sr-iov共享端口模型中,在迁移之后,vm的地址将改变,从而导致sm中的附加开销并且对底层网络构架的性能产生负面影响。

infinibandsr-iov架构-共享端口

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

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

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

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

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

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

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

图4示出了根据实施例的示例性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)

图5示出了根据实施例的示例性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架构的系统和方法。

图6示出了根据实施例的具有预填充的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架构的系统和方法。参考图5,lid被预填充到各个物理功能513、523、533以及虚拟功能514-516、524-526、534-536(甚至当前未与活动虚拟机相关联的那些虚拟功能)。例如,物理功能513用lid1预填充,而虚拟功能1534用lid10预填充。当网络启动时,在启用sr-iovvswitch的子网中lid被预填充。即使当并非所有的vf都在网络中被vm占用时,填充的vf也被指派有lid,如图5所示。

根据实施例,非常类似于物理主机通道适配器可以具有多于一个端口(为了冗余两个端口是常见的),虚拟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架构的系统和方法。

图7示出了根据实施例的具有动态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架构的系统和方法。参考图7,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不一定是连续的(sequential)。当将具有预填充的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

图8示出了根据实施例的具有动态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架构的系统和方法。参考图7,管理程序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。

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

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

vswitch可伸缩性

根据实施例,当使用vswitch架构时的顾虑是有限的lid空间。为了克服与lid空间相关的可伸缩性问题,可以独立地或组合地使用以下三种替代方案(下面将进一步详细讨论每一种方案):使用多个子网、引入向后兼容的lid空间扩展、以及将vport和vswitch架构组合以形成轻量级的vswitch。

根据实施例,可以使用多个ib子网。lid是2层地址,并且在子网内必须是唯一的。当ib拓扑跨越多个子网时,lid不再是限制,但是如果vm需要迁移到不同的子网,那么它的lid地址可能改变,因为该地址可能已经在新的子网中被使用。跨越多个子网可以解决单个子网拓扑的lid限制,但是这也意味着必须使用3层gid地址进行子网间路由,从而给路由过程增加了附加开销和延迟,因为2层报头必须由位于子网边缘的路由器进行更改。而且,在当前的硬件、软件实现和松散的iba(infiniband架构)规范下,单独子网的sm无法了解全局拓扑,以便向跨越多个子网的集群提供优化的路由路径。

根据实施例,可以引入iba中的向后兼容的lid空间扩展。通过将lid比特的数目增加到例如24比特或32比特来增加稀缺的lid空间可能有问题。使lid空间增加这样的量可以导致向后兼容性的破坏,因为ib本地路由报头(lrh)将必须被大修(overhaul),并且遗留(legacy)硬件将无法用新标准进行工作。根据实施例,可以以使得向后兼容性被维持的方式来扩展lid空间,但是仍然允许新硬件利用该增强。lrh具有作为零被发送并且被接收器忽略的七个保留位。通过利用lrh中的这些保留位中的两个保留位用于源lid(slid)以及两位用于目的地lid(dlid),lid空间可以被扩展到18比特(lid空间的四倍)并且创建具有被指派给物理装备的物理lid(plid)和被指派给vm的虚拟lid(vlid)的方案。

根据实施例,当两个附加位作为零被发送时,如当前在iba中所定义的那样使用lid(48k个单播lid和16k个多播lid),并且交换机可以针对分组的转发而查找它们的主lft。否则,lid是vlid,并且它可以基于大小为192k的辅助lft被转发。由于vlid属于vm并且vm与具有plid的物理节点共享上行链路,因此当配置(例如,初始配置)或(例如,在拓扑改变之后)重新配置网络时,可以从路径计算阶段中排除vlid,但是交换机中的辅助lft表可以如上文之前所描述的被更新。当sm启动并发现网络时,sm可以识别是否所有硬件都支持扩展的lid空间。如果不是,那么sm可以以遗留兼容性模式回退,并且vm应当占用来自plid空间的lid。

图9示出了根据实施例的扩展的本地路由报头。如图所示,在本地路由报头内,虚通道(vl)900包括4个比特,链路版本(lver)901包括4个比特,服务级别(sl)902包括4个比特,lid扩展标志(lxtf)903包括1个比特,第一保留位(r1)904包括1个比特,链路下一个报头(lnh)905包括2个比特,目的地本地id(dlid)906包括16个比特,dlid前缀扩展(dpf)907包括2个比特,slid前缀扩展(spf)908包括2个比特,第二保留位(r2)909包括1个比特,分组长度(pktlen)910包括11个比特以及源本地id(slid)911包括16个比特。根据实施例,保留位904和909二者都可以被设置为零。

根据实施例,如上文所描述的,图9中所示的lrh利用七个(原始)保留位中的四个保留位作为目的地本地id906和源本地id908的前缀扩展。当与lid扩展标志相关地被利用时,这表示lrh与vlid相关地被使用,该vlid可以经由交换机中的辅助lft被路由。可替代地,当扩展907和908作为零被发送(并且然后被接收器忽略)时,那么lid与plid相关联并且如当前在iba中定义的那样被使用。

图10示出了根据实施例的两个示例性线性转发表。如图10所示,线性转发表916是与plid相关联的转发表。lft跨越条目912(条目0,由dlid=0索引)到条目913(条目48k-1,由dlid=48k-1索引),其中lft中的每个条目由标准的16比特dlid索引,并且包含标准的ib端口号。相反,线性转发表917是与vlid相关联的辅助转发表。lft跨越条目914(条目0,由18比特dpf+dlid=0索引)到条目915(条目256k-1,由18比特dpf+dlid=256k-1索引),其中每个条目由扩展的18比特dpf+dlid索引,并且包含标准的ib端口号。

根据实施例,可以使用混合架构来形成轻量级vswitch架构。能够将lid与迁移的vm一起迁移的vswitch架构相对于子网管理良好地伸缩,因为不需要附加的信令以便在迁移之后重新建立与对等体的连接性,这与lid将改变的共享-lid方案相反。另一方面,共享lid方案相对于lid空间良好地伸缩。在sm了解子网中可用的sr-iov虚拟功能的情况下,可以实现混合型vswitch+共享-vport模型,但是某些vf可以接收专用lid,而其它vf基于它们的gid以共享lid的方式被路由。利用vm节点角色的一些知识,可以向具有许多对等体(例如,服务器)的流行的vm指派专用的lid(例如,以便在网络中计算路由和执行负载平衡时被分开考虑),而不与许多对等体交互或运行无状态服务(并且不需要被迁移,但可以被重新产生)的其它vm可以共享lid。

基于vswitch的子网的路由策略

根据实施例,为了获得更好的性能,路由算法在计算路由时可以考虑vswitch架构。在胖树中,在拓扑发现过程中可以通过vswitch仅具有到对应叶子交换机的一条上行链路的独特特性来识别vswitch。一旦vswitch被识别,路由功能就可以为所有交换机生成lft,以使得来自每个vm的业务可以找到朝着网络中的所有其它vm的它的路径。每个vm具有其自己的地址,因此每个vm可以独立于附连到同一vswitch的其它vm被路由。这导致生成朝着拓扑中的vswitch的独立的多条路径的路由功能,每条路径将业务携带到特定vm。这种方法的一个缺点是,当vm分布在vswitch之间不均匀时,具有更多vm的vswitch可能被指派更大的网络资源。但是,从vswitch到对应叶子交换机的单条向上链路仍然是附连到特定vswitch的所有vm共享的瓶颈链路。因此,可能获得次优的网络利用率。最简单和最快的路由策略是生成所有vswitch-vswitch对之间的路径,并且利用与指派给对应vswitch相同的路径来路由vm。通过利用预填充的lid指派方案和动态lid指派方案两者,在sr-iov架构中每个vswitch具有由pf定义的lid。用于vswitch的这些pflid可以被用来在路由的第一阶段中生成lft,而在第二阶段中,可以将vm的lid添加到生成的lft。在预填充的lid方案中,可以通过复制对应vswitch的输出端口来添加用于vflid的条目。类似地,在新vm启动时进行动态lid指派的情况下,在所有lft中都添加具有vm的lid和由对应vswitch确定的输出端口的新条目。这个策略的问题是,由于在网络中共享相同的完整路径,属于碰巧共享vswitch的不同租户的vm可能具有在它们之间的固有干扰。为了解决这个问题同时仍然保持高的网络利用率,可以使用用于虚拟化子网的加权路由方案。

根据实施例,可以利用用于基于vswitch的虚拟化子网的加权路由方案。在这种机制中,向vswitch上的每个vm指派参数权重,该参数权重可以在计算路由时为了平衡而被考虑。权重参数的值反映了在vm的vswitch中分配给vm的vswitch到叶子交换机链路容量的比例。例如,简单的配置可以向每个vm指派等于1/num_vms的权重,其中num_vms是在对应vswitch管理程序上启动的vm的数量。另一种可能的实现可以是将更高比例的vswitch容量指派给最关键的vm,以优先考虑朝着它们流动的业务。但是,在所有vswitch上每个vswitch的vm的累计权重将是相等的,因此拓扑中的链路可以被平衡,而不受实际vm分布的影响。同时,该方案启用多路径路由,其中每个vm可以在网络中被独立路由,从而消除了在拓扑中的中间链路处相同vswitchvm之间的干扰。该方案可以与在每个vswitch上实行每vm速率限制相结合,以确保不允许vm超过它的所分配的容量。此外,在网络中存在多个租户组的情况下,可以将比如租户感知路由的技术与所提出的路由方案集成,以在租户之间提供网络范围的隔离。

根据实施例,以下是用于基于ib的胖树拓扑的加权路由。作为胖树路由算法,vswitchfattree递归地遍历胖树拓扑,以对于与子网中的每个vm相关联的lid在所有交换机中建立lft。该机制是确定性的并且支持基于目的地的路由,在基于目的地的路由中从目的地节点处开始向后计算所有路由。

用于虚拟化子网的加权胖树路由算法

1:procedureroutevirtualizednodes

2:foralls∈leafswitches[]do

3:以所连接的虚拟机的升序对vswitches进行排序

4:forallv∈vswitches[]do

5:num_vms←gettotalvms(v)

6:vm_weight←1/num_vms

7:forallvm∈vswitches[]do

8:vm.weight←vm_weight

9:s.lft[vm.lid]←v.port

10:routedowngoingbygoingup(s,vm)

11:endfor

12:endfor

13:endfor

14:endprocedure

15:procedureroutedowngoingbygoingup(s,vm)

16:p←getleastloadedport(s.upgroups[])

17:rswitch←p.switch

18:rswitch.lft[vm.lid]←p

19:p.dwn+=vm.weight

20:routeupgoingbygoingdown(s,vm)

21:routedowngoingbygoingup(rswitch,vm)

22:endprocedure

23:procedurerouteupgoingbygoingdown(s,vm)

24:forallg∈s.downgroups[]do

25:如果lft(vm.lid)是这个组的一部分,那么跳过g

26:p←getleastloadedport(g)

27:rswitch←p.switch

28:rswitch.lft[vm.lid]←p

29:p.up+=vm.weight

30:routeupgoingbygoingdown(rswitch,vm)

31:endfor

32:endprocedure

根据实施例,上面所示的vswitchfattree路由机制如下工作。每个vm被指派成比例的权重,该成比例的权重是通过将vswitch节点的权重(例如,取为常数1)除以在其上运行的vm的总数来计算的。还可以实现不同的加权方案。例如,实现可以选择基于vm类型来指派权重。但是,为了简单起见,这个讨论关注成比例的加权方案。对于每个叶子交换机,路由机制基于连接的vm以降序对连接的vswitch进行排序(第3行)。次序是为了确保具有较高权重的vm首先被路由,以便可以平衡指派给链路的路由。路由机制通过调用routedowngoingbygoingup遍历所有叶子交换机和它们对应的vswitch,从而从每个vm向上遍历树,以递归地分配朝着树中的vm的路径(第10行)。每个交换机处的下行端口基于所有可用的上行端口组中最小的累计向下权重被选择(routedowngoingbygoingup,第16行)。当选择下行端口时,机制可以使对应端口的累计向下重量增加正在被路由的vm的权重(routedowngoingbygoingup,第19行)。在设置了下行端口之后,路由机制可以通过沿着树下行来为朝着所有连接的向下交换机上的vm的路由指派向上端口(并且更新端口的对应的向上权重)(routeupgoingbygoingdown,第20行)。然后通过向上移动到树中的下一个级别来重复该过程。当所有vm都已被路由时,算法还以与vm相同的方式来路由vswitch的物理lid,虽然利用相同的权重以平衡拓扑中vswitch到vswitch的路径(伪代码中未示出)。当在实时迁移的情况下使用最小重新配置方法时,这是期望的以提供改进的平衡。而且,vswitch的基本物理lid上的路由路径可以被用作预先确定的路径以快速部署新的vm,而不需要重新配置。但是,在一段时间内,整体路由性能与原始的vswitchfattree路由相比将略有下降。为了限制性能降级,当超过某个性能阈值时,基于vswitchfattree的重新配置可以离线发生。

根据实施例,上面的路由机制可以相对于常规/遗留路由机制提供各种改进。与不考虑拓扑中的vswitch或vm的原始胖树路由算法不同,vswitchfattree标记vswitch,并且独立于连接到vswitch的其它vm来路由每个vm。同时,为了迎合vswitch之间不均匀的vm分布,每个vm被指派与在vswitch上它被分配的链路的比例对应的权重。权重在维持端口计数器时被使用,以用于平衡胖树中的路径分布。该方案还启用一般化的加权胖树路由,其中可以基于每个vm的业务简档或在网络中的角色优先级来向每个vm指派权重。

图11-图14示出了根据实施例的、支持无损互连网络中的高效虚拟化的图示。具体而言,图11示出了具有四个交换机(根交换机925-926和叶子交换机920-921)、与四个主机/管理程序930、940、950、960相关联的四个虚拟交换机(vs1931、vs2941、vs3951和vs4961)的两级胖树拓扑,其中四个虚拟交换机为八个虚拟机vm1932、vm2933、vm3942、vm4943、vm5952、vm6953、vm7954和vm8962提供连接性。

为了进一步阐述vswitchfattree路由,考虑如图11中所示的具有四个末端节点(vswitch)的简单虚拟化胖树拓扑。连接到叶子交换机920的vswitch(vs1和vs2)中的每一个具有两个运行的vm(对于vs1有vm1和vm2,并且对于vs2有vm3和vm4)。第二叶子交换机921具有带有三个vm(vm5、vm6、vm7)的vs3,而一个vm在主机vswitchvs4上运行。每个叶子交换机连接到两个根交换机925和926,因此存在可用于建立通过根朝着每个vm的路由的两条可替代路径。在图12中使用示出所选择的从根交换机向下的路径的圆圈来示出用于连接到vs1的vm的路由。使用925→920来路由vm1,而从926→920来路由vm2。对应的向下负载计数器在所选择的链路上被更新,对于每个vm增加0.5。类似地,如图13中所示,在添加用于vs2的路由之后,vm3和4分别通过链路925→920和926→920被路由。要注意的是,在路由连接到叶子交换机920的所有vm之后,即使vm被单独地路由,两个链路上的总向下负载也是相等的。连接到叶子交换机921的vswitch上的vm分布是不同的,因此具有一个vm的vswitch,vs4,将首先被路由。路由925→921将被分配给vm8,而连接到vs3的所有三个vm将从926→921被路由,以保持两条下行链路上的累积负载平衡。如图14中所示,给定拓扑中的vm分布,最终的路由在链路中的每条链路上具有平衡的负载,并且只要可能就具有朝着vm的独立路由。

在虚拟机实时迁移时的最小开销重新配置

根据实施例,当vm被迁移时,动态重新配置机制(可以被缩写为itrc(迭代重新配置))遍历所有交换机并且在必要时更新路由。但是,依赖于子网中的现有lft(即,在子网内的每个交换机中已经被计算和存在的那些lft),实际上仅需要更新交换机的子集。

图15示出了根据实施例的潜在的虚拟机迁移。更具体而言,图15示出了在叶子交换机内的vm的迁移的特殊情况,其中,不管网络拓扑如何,只有对应的叶子交换机需要lft更新。

如图15中所示,子网可以包括多个交换机(交换机1-交换机12、1301-1312)。这些交换机中的一些交换机可以包括叶子交换机,诸如交换机11301、交换机21302、交换机111311和交换机121312。子网还可以包括多个主机/管理程序1330、1340、1350和1360、多个虚拟交换机vs11331、vs21341、vs31351和vs41361。各个主机/管理程序可以经由虚拟功能在子网内托管虚拟机,诸如vm11332、vm21333、vm31334、vm41342、vm51343和vm61352。

根据实施例,当vm3从管理程序1330迁移(如由粗体箭头所示)以附连到管理程序1340处的空闲虚拟功能时,仅叶子交换机11301处的lft需要被更新,因为两个管理程序都连接到同一个叶子交换机,并且本地改变将不会影响网络的其余部分。例如,初始路由算法确定从管理程序1360朝着管理程序1330的业务遵循由实线标记的第一路径(即,12→9→5→3→1)。另外,从管理程序1360朝着管理程序1340的业务遵循由虚线标记的第二路径(即,12→10→6→4→1)。当vm3被迁移并且itrc被用来重新配置网络时,朝着vm3的业务在迁移之前遵循朝着管理程序1330的第一路径,并且在迁移之后将遵循朝着管理程序1340的第二路径。在这种情况下,假定胖树路由算法用于初始路由,那么itrc方法将更新全部交换机的一半(6/12),但是,为了使迁移后的vm保持连接仅需要更新单个叶子交换机。

根据实施例,通过限制在vm迁移之后交换机更新的数量,网络可以被较快地重新配置,并且与传统路由更新相比所需的时间和开销可以被减少。这可以经由用于支持胖树上的vm迁移的拓扑感知的快速重新配置方法(被称为ftreeminrc)来实现,该方法基于与拓扑无关的天际线(skyline)技术。

胖树中的子树和交换机元组

根据实施例,以下描述利用使用xgft作为示例性胖树网络的最小开销网络重新配置方法ftreeminrc。但是,这里给出的概念同样对pgft和rlft有效。xgft(n;m1,...,mn;w1,...,wn)是具有n+1个级别的节点的胖树。级别从0到n表示,计算节点在级别n,并且交换机在所有其它级别。除了没有孩子的计算节点以外,级别i(0≤i≤n-1)的所有节点都具有mi个子节点。类似的,除了没有父节点的根交换机之外,级别i(1≤i≤n)的所有其它节点都具有wi+1个父节点。

xgft(n+1;m1,...,mn+1;w1,...,wn+1)通过利用在新的最高级别的个附加交换机来连接xgft(n+1;m1,...,mn;w1,...,wn)的mn个独特的副本来递归地构建。通过使用这个定义,以下特性适用:对于n>0,具有n+1个级别的每个xgft由mn个子树组成(即,对于l级xgft中的具有n个级别的每个子树,l>n,存在连接mn个n级子树的具有n+1个级别的一个直接超树)。同样,从网络连接性的角度来看,xgft中的每个子树可以被认为是独特的xgft,并且子树中的最高级交换机定义朝着它的直接超树的它的天际线。

根据实施例,具有n+1个级别的xgft中的每个交换机可以由唯一的n元组(l,x1,x2,...,xn)表示。最左侧的元组值l表示树所位于的级别,而这些值中的其余值x1,x2,...,xn表示该交换机在树中与其它交换机对应的位置。特别地,当且仅当对于除i=l+1以外的所有值都存在ai=bi时,处于级别l的交换机a(l,a1,...,al,...,an)才连接到处于级别l+1的交换机b(l+1,b1,...,,bl,bl+1...,bn)。

图16示出了根据实施例的交换机元组。更具体而言,该图示出了由针对示例胖树xgft(4;2,2,2,2;2,2,2,1)实现的opensm的胖树路由算法分配的交换机元组。胖树1400可以包括交换机1401-1408、1411-1418、1421-1428和1431-1438。由于胖树具有n=4个交换机级别(在根级别被标记为行0,直到在叶子级别被标记为行3),胖树由m1=2个第一级子树组成,其中每个第一级子树有n’=n-1=3个交换机级别。这在图中由用虚线定义的两个方框示出,这两个方框围住了从级别1到级别3的交换机,每个第一级子树接收0或1的标识符。这些第一级子树中的每一个第一级字数由m2=2个第二级子树组成,其中每个第二级子树在叶子交换机之上具有n”=n’-1=2个交换机级别。这在图中由点线定义的四个方框示出,这四个方框围住了从级别2到级别3的交换机,每个第二级子树接收标识符0或1。类似地,还可以将叶子交换机中的每一个叶子交换机考虑为子树,如图中由点划线定义的八个方框所示出的,并且这些子树中的每个子树都接收标识符0或1。

根据实施例,并且如图中所例示的,可以将诸如四数字元组之类的元组指派给各个交换机,元组中的每个数字指示对于元组中的每个值的位置的具体子树对应性。例如,可以向交换机1413(其可以被称为交换机1_3)指派元组1.0.1.1,这表示它的位置在1级并且在第0个第一级子树处。

在实时迁移的情况下的利用ftreeminrc的胖树感知的最小化重新配置

根据实施例,交换机元组对关于交换机的与拓扑中的子树对应的位置的信息进行编码。ftreeminrc可以使用这个信息以在实时vm迁移的情况下启用快速重新配置。当vm被迁移时,元组信息可以被用来查找具有需要由sm重新配置的最少数量的交换机的天际线。特别地,当vm在胖树拓扑中的两个管理程序之间迁移时,表示需要被更新的最小数量的交换机的天际线由迁移中所涉及的所有子树的所有最高级交换机形成。

根据实施例,当vm被实时迁移时,交换机标记机制可以从连接源管理程序和目的地管理程序的两个叶子交换机开始,并且比较交换机的元组。如果元组匹配,那么机制可以确定vm正在叶子交换机内被迁移。因此,只有对应的叶子交换机被标记以进行重新配置。但是,当元组不匹配时,追踪来自源叶子交换机和目的地叶子交换机二者的向上链路。位于上一级的交换机是叶子级别子树所连接到的直接超树的最高级别交换机,并且是在向下遍历树时到达叶子交换机之前唯一可能的跳。然后,该机制可以在调整元组值以反映当前级别并且与当前树的(一个或多个)子树对应的值被通配之后将源和目的地叶子交换机元组与新追踪的交换机进行比较。同样,被追踪的交换机(对于对应的子树是最高级别交换机)被标记以进行更新,并且如果来自源和目的地交换机元组两者的比较匹配所有被追踪的交换机的元组,那么追踪停止。否则,重复相同的过程,直到该机制从两端定位共同的祖先交换机为止。在最坏的情况下,该机制可以在到达胖树拓扑的根交换机后停止。由于所有向上路径都是从叶子级别开始被追踪的,并且连续子树的天际线交换机被标记,因此当机制到达受迁移影响的最上面的子树时,机制已经在途中选择了作为朝着较低级别交换机的潜在业务网关的所有交换机、以及参与实时迁移的管理程序。因此,该机制已经标记了形成网络的由于实时迁移而受影响的部分的天际线的所有交换机。

根据实施例,交换机标记机制从物理连接性的角度找到需要被更新的交换机的最小数量。但是,并非这些交换机中的全部交换机都包含由路由算法计算的、朝着受重新配置影响的lid的活动路径的情况可能发生。因此,包含活动路由的交换机在更新过程中被优先化,而具有辅助路由的其余交换机可以稍后被更新。

根据实施例,胖树路由机制总是通过相同的根交换机将业务路由到给定的目的地。由于拓扑中在根交换机和端节点之间只存在单个路径,因此,一旦定位了已经被选择来表示给定端节点的根交换机,就可以找到用来将业务路由到端节点的中间交换机。为了找到活动路由,可以从参与的管理程序的源到目的地lid追踪路径,反之亦然。作为已经被选择用于进行重新配置的交换机的子集的交换机可以被标记,并且优先考虑这些交换机的lft更新。之后,为了保持所有的lft有效,可以更新其余的所选择的交换机。

图17示出了根据实施例的重新配置过程。胖树1400可以包括交换机1401-1408、1411-1418、1421-1428和1431-1438。由于胖树具有n=4个交换机级别(在根级别被标记为行0,直到在叶子级别被标记为行3),胖树由m1=2个第一级子树组成,其中每个第一级子树具有n’=n-1=3个交换机级别。这些第一级子树中的每一个由m2=2个第二级子树组成,其中每个第二级子树在叶子交换机之上具有n”=n’-1=2个交换机级别。类似地,叶子交换机中的每个叶子交换机也可以被认为是子树。

根据实施例,图17示出了在连接到具有元组3.0.0.0和3.0.1.1的叶子交换机的两个管理程序之间迁移vm的情况。当该机制从所选择的叶子交换机向上追踪路径时,这两个元组被用作比较的基础。在这个示例中,在级别1上找到共同的祖先交换机。级别0是根级别,并且级别3是叶子级别。具有所显示的元组信息的这些交换机之间的链路是在机制的整个执行过程中可以被追踪的链路,并且这些交换机都可以被标记为进行更新。交换机中的突出显示的五个交换机(交换机1431、1421、1411、1423和1434)以及它们之间的链路表示活动路由,并且它们的lft更新可以被优先化。

根据实施例,ftreeminrc使需要被发送到交换机的lft更新的数量最小化,以便在支持实时迁移的虚拟化数据中心中以最小开销提供快速连接。

图18是根据实施例的、用于支持无损互连网络中的高效虚拟化的方法的流程图。在步骤1810,该方法可以在包括一个或多个微处理器的一个或多个计算机处提供一个或多个交换机,该一个或多个交换机至少包括叶子交换机,其中一个或多个交换机中的每一个交换机包括多个端口;多个主机通道适配器,其中主机通道适配器中的每一个主机通道适配器包括至少一个虚拟功能、至少一个虚拟交换机和至少一个物理功能,并且其中多个主机通道适配器经由一个或多个交换机互连;多个管理程序,其中多个管理程序中的每一个管理程序与多个主机通道适配器中的至少一个主机通道适配器相关联;以及多个虚拟机,其中多个虚拟机中的每一个虚拟机与至少一个虚拟功能相关联。

在步骤1820,该方法可以将多个主机通道适配器布置有具有预填充的本地标识符(lid)架构的虚拟交换机或具有动态lid指派架构的虚拟交换机中的一个或多个。

在步骤1830,该方法可以向每个虚拟交换机指派lid,所指派的lid与相关联的物理功能的lid对应。

在步骤1840,该方法可以至少基于指派给虚拟交换机中的每一个虚拟交换机的lid来计算一个或多个线性转发表,一个或多个lft中的每一个lft与一个或多个交换机中的交换机相关联。

图19是根据实施例的、用于在无损互连网络中支持高效虚拟化的方法的流程图。在步骤1910,该方法可以在包括一个或多个微处理器的一个或多个计算机处提供一个或多个微处理器;一个或多个交换机,该一个或多个交换机至少包括叶子交换机,其中一个或多个交换机中的每一个交换机包括多个端口;多个主机通道适配器,其中主机通道适配器中的每一个主机通道适配器包括至少一个虚拟功能、至少一个虚拟交换机和至少一个物理功能,并且其中多个主机通道适配器经由一个或多个交换机互连;多个管理程序,其中多个管理程序中的每一个管理程序与多个主机通道适配器中的至少一个主机通道适配器相关联;以及多个虚拟机,其中多个虚拟机中的每一个虚拟机与至少一个虚拟功能相关联。

在步骤1920,该方法可以将多个主机通道适配器布置为具有具有预填充的本地标识符(lid)架构的虚拟交换机或具有动态lid指派架构的虚拟交换机中的一个或多个。

在步骤1930,该方法可以向虚拟交换机中的每一个虚拟交换机指派多个plid中的plid,所指派的plid与相关联的物理功能的plid对应。

在步骤1940,该方法可以向多个虚拟机中的每一个虚拟机指派多个vlid中的vlid,其中lid空间包括多个plid和多个vlid。

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

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

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

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

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

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

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

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

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