为高性能云计算环境提供InfiniBandSR‑IOVvSWITCH体系架构的系统和方法与流程

文档序号:11450268阅读:475来源:国知局
为高性能云计算环境提供InfiniBand SR‑IOV vSWITCH体系架构的系统和方法与流程

版权声明

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

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



背景技术:

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



技术实现要素:

本文描述了用于支持子网中的虚拟机迁移的系统和方法。示例性方法可以在包括一个或多个微处理器的一个或多个计算机处提供:一个或多个交换机,该一个或多个交换机至少包括叶交换机,其中一个或多个交换机中的每一个包括多个端口;多个主机通道适配器,其中多个主机通道适配器经由一个或多个交换机互连;多个管理程序,其中多个管理程序中的每一个与多个主机通道适配器中的一个相关联;以及多个虚拟机。该方法还可以为多个主机通道适配器布置具有预填充的本地标识符(lid)体系架构的虚拟交换机或具有动态lid分配体系架构的虚拟交换机中的一个或多个。该方法可以附加地将多个虚拟机中的、在多个管理程序中的第一管理程序上运行的第一虚拟机实时迁移到多个管理程序中的第二管理程序;并且其中第一管理程序与多个主机通道适配器中的第一主机通道适配器相关联,并且第二管理程序与多个主机通道适配器中的第二主机通道适配器相关联。

附图说明

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

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

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

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

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

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

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

图8示出了根据实施例的在虚拟机迁移之前具有预填充lid的示例性vswitch体系架构。

图9示出了根据实施例的在虚拟机迁移之后具有预填充lid的示例性vswitch体系架构。

图10示出了根据实施例的具有潜在虚拟机迁移路径的具有预填充lid的示例性vswitch体系架构。

图11是根据实施例的用于支持子网中的虚拟机迁移的方法的流程图。

具体实施方式

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

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

本文描述的是可以支持网络中的虚拟机(vm)迁移的系统和方法。

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

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

infinibandtm

infinibandtm(ib)是由infinibandtm贸易协会开发的开放标准无损网络技术。该技术是基于串行点对点全双工互连,其提供高吞吐量和低延迟通信,特别适用于高性能计算(high-performancecomputing,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可以重新配置网络。重新配置步骤可以包括在网络初始化期间执行的步骤。此外,重新配置可以具有限于其中发生网络变化的子网的局部范围。此外,具有路由器的大型结构的分段可以限制重新配置的范围。

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

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

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

infiniband中的虚拟机

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

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

用于将ib设备连接到vm的传统方法是通过利用具有直接分配的sr-iov。但是,为了实现分配有ib主机通道适配器(hca)的vm的实时迁移,使用sr-iov已被证明是具有挑战性的。每个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系统中有一些采用胖树拓扑来利用胖树提供的有用属性。由于每个源-目的地对之间有多条路径可用,因此这些属性包括完全的二分带宽和固有的容错。胖树背后的最初想法是,当树朝着拓扑的根移动时,在节点之间采用具有更多可用带宽的较胖的链路。较胖的链路可以帮助避免上层交换机中的拥塞并维持二分带宽。

图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时,会出现该问题。由于节点按索引的次序进行路由,因此这种行为会导致链路上降级的平衡。由于路由是在不知道分区的情况下完成的,因此胖树路由的子网通常在分区间提供较差的隔离。

输入/输出(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中、与管理程序(hypervisor)实现的以提供i/o访问的后端通信的设备驱动程序。物理设备共享比高,并且vm的实时迁移可能只需几毫秒的网络停机时间。但是,软件仿真引入了附加的、不期望的计算开销。

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

根据实施例,单根iov(sr-iov)可以允许物理设备通过硬件虚拟化显示为相同设备的多个独立的轻量级实例。这些实例可以被分配给vm作为直通设备,并作为虚拟功能(virtualfunction,vf)被访问。管理程序通过唯一的(每设备)、全特征物理功能(physicalfunction,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模型,例如,共享端口模型和虚拟交换机模型。

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

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

如图3所示,根据实施例,可以将不同的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)

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

图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体系架构模型-具有预填充lid的vswitch

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

图5示出了根据实施例的具有预填充lid的示例性vswitch体系架构。如图所示,多个交换机501-504可以在结构(诸如infiniband结构)的成员之间提供网络交换环境500(例如,ib子网)内的通信。该结构可以包括多个硬件设备,诸如主机通道适配器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中的每一个可以包括多个端口(未示出),其用于设置线性转发表以便引导网络交换环境500内的流量。

根据实施例,虚拟交换机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预填充。当网络被启动(boot)时,lid在启用sr-iovvswitch的子网中被预填充。即使并非所有的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-掩码控制(lid-mask-control-like,lmc-like)特征向一个物理机器提供替代路径,而不受lmc要求lid必须是顺序的限制。当需要迁移vm并将其相关联的lid携带到目的地时,自由使用非顺序lid尤其有用。

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

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

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

图6示出了根据实施例的具有动态lid分配的示例性vswitch体系架构。如图所示,多个交换机501-504可以在结构(诸如infiniband结构)的成员之间提供网络交换环境600(例如,ib子网)内的通信。该结构可以包括多个硬件设备,诸如主机通道适配器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体系架构的系统和方法。参考图6,lid被动态分配给各种物理功能513、523、533,其中物理功能513接收lid1、物理功能523接收lid2并且物理功能533接收lid3。与活动虚拟机相关联的那些虚拟功能也可以接收动态分配的lid。例如,由于虚拟机1550是活动的并且与虚拟功能1514相关联,因此虚拟功能514可以被分配lid5。同样,虚拟功能2515、虚拟功能3516和虚拟功能1534每个与活动虚拟功能相关联。由此,这些虚拟功能被分配lid,其中lid7被分配给虚拟功能2515、lid11被分配给虚拟功能3516、并且虚拟功能9被分配给虚拟功能1535。不同于具有预填充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系统和方法的进一步细节在附录a中被描述,附录a通过引用被结合于此。

根据实施例,在具有动态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

图7示出了根据实施例的具有动态lid分配和预填充lid的vswitch的示例性vswitch体系架构。如图所示,多个交换机501-504可以在结构(诸如infiniband结构)的成员之间提供网络交换环境500(例如,ib子网)内的通信。该结构可以包括多个硬件设备,诸如主机通道适配器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中的每一个可以包括多个端口(未示出),其用于设置线性转发表以便引导网络交换环境700内的流量。

根据实施例,虚拟交换机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具有动态分配的lid9,因为虚拟机4553被附连到那里。

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

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

利用vswitch进行动态重新配置

根据实施例,本公开提供了用于利用vswitch进行动态网络重新配置的系统和方法。在动态云环境中,可以处理实时迁移并且实时迁移可以是可扩展的。当迁移vm并且必须将其地址携带到目的地时,需要进行网络重新配置。虚拟或别名guid(vguid)以及因此gid的迁移不会造成很大的负担,因为它们是不影响底层ib路由(例如,线性转发表和路由)的高层地址。为了迁移vguid,必须将smp发送到目的地管理程序,以便向当完成迁移时将在vm上分配的vf设置与传入vm相关联的vguid。但是,lid的迁移并不是那么简单,因为必须重新计算路由,并且需要重新配置物理交换机的lft。路由重新计算和分发需要相当长的时间,其在大型子网上是分钟的数量级,从而对可扩展性带来挑战。

根据实施例,vswitch具有通过vswitch访问的所有vf与pf共享相同上行链路的属性。拓扑不可知动态重新配置机制可以利用该属性使重新配置在动态迁移环境中可行。可以通过消除路径计算和减少路径分发来最小化lid重新配置时间。对于以上讨论的两种vswitch体系架构(lid的预填充和动态lid分配),该方法略有不同,但是基础是相同的。

根据实施例,动态重新配置方法包括两个通用步骤:(a)更新参与管理程序中的lid:一个子网管理分组(smp)被发送到参与实时迁移的每个管理程序,指示它们向对应的vf设置/取消设置正确的lid;以及(b)更新物理交换机上的线性转发表(lft):在一个或多个交换机上发送一个或最多两个smp,从而强制它们更新其对应的lft条目以反映迁移的虚拟机的新位置。这在下面迁移虚拟机和重新配置网络的过程中更具体地示出:

1:procedureupdatelftblock(lftblock,switch)

2://如果需要更新lft块,那么在交换机上发送smp以

3://更新lft块。当交换lid时,每交换机可能需要更新

4://所有lft块中的1或2个lft块。当复制

5://lid时,每交换机可能只需要更新所有lft块中的1个

6://lft块

7:iflftblockinswitchneedstobeupdatedthen

8:sendsmponswitchtoupdatelftblock

9:endif

10:endprocedure

11:procedureupdatelftblocksonallswitches

12:/*遍历所有交换机上的所有lft块

13:*并且如果需要,那么更新lft块。*/

14:forlftblockinall_lftblocksdo

15:forswinall_switchesdo

16:updatelftblock(lftblock,sw)

17:endfor

18:endfor

19:endprocedure

20:proceduremigratevm(vm,desthypervisor)

21:detachibvffromvm

22:startlivemigrationofvmtothedesthypervisor

23:/*网络的重新配置如下*/

24://lid地址迁移过程在具有预填充lid的vswitch

25://和具有动态lid分配的vswitch中略微不同。

26:/*在更新参与管理程序中的lid中描述的步骤*/

27:migratetheibaddressesofvm

28:/*在更新物理交换机上的线性转发表(lft)中描述的步骤*/

29:updatelftblocksonallswitches

30:endprocedure

31:proceduremain

32:migratevm(vm_to_be_migrated,tohypervisor)

33:endprocedure

具有预填充lid的vswitch中的重新配置

图8示出了根据实施例的在虚拟机迁移之前具有预填充lid的示例性vswitch体系架构。如图所示,多个交换机501-504可以在结构(诸如infiniband结构)的成员之间提供网络交换环境800(例如,ib子网)内的通信。该结构可以包括多个硬件设备,诸如主机通道适配器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访问主机通道适配器。

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

根据实施例,交换机501-504中的每一个可以包括多个端口(未示出),其用于设置线性转发表(诸如与交换机501相关联的线性转发表810)以便引导网络交换环境800内的流量。如图所示,线性转发表810通过交换机501的端口2转发寻址到虚拟机2551(即,lid3)的流量。同样,因为即使vm没有运行,也存在用于所有lid的路径,因此线性转发表可以定义通过交换机501的端口4到lid12的转发路径。

图9示出了根据实施例的在虚拟机迁移之后具有预填充lid的示例性vswitch体系架构。如图所示,多个交换机501-504可以在结构(诸如infiniband结构)的成员之间提供网络交换环境900(例如,ib子网)内的通信。该结构可以包括多个硬件设备,诸如主机通道适配器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访问主机通道适配器。

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

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

根据实施例,如果虚拟机2551需要从管理程序511迁移到管理程序531,并且管理程序531上的虚拟功能3536可用,那么虚拟机2可以附连到虚拟功能3536。在这种情况下,lid可以交换(即,分配给迁移的vm的lid的条目可以与在实时迁移完成之后将在目的地管理程序处使用的vf的lid进行交换)。交换机501上的线性转发表910可以如图所示被更新,即,到lid3的流量现在通过端口4转发(以前通过端口2),并且到lid12的路径现在通过端口2转发(以前通过端口4)。

根据实施例,对于具有预填充lid的vswitch体系架构,即使vm没有运行,也存在用于所有lid的路径。为了迁移lid并保持初始路由的平衡,所有交换机上的两个lft条目可以交换——分配给迁移的vm的lid的条目与在实时迁移完成之后将在目的地管理程序处使用的vf的lid(即,在目的地管理程序处迁移的虚拟机附连到的虚拟功能)。再次参考图7和图8,如果具有lid2的vm1550需要从管理程序551迁移到管理程序531,并且在管理程序531上具有lid12的vf3536可用并且被确定附连到迁移的虚拟机1551,那么交换机501的lft可以被更新。在迁移之前,lid2是通过端口2转发的,并且lid12是通过端口4转发的。在迁移之后,lid2通过端口4转发,并且lid12通过端口2转发。在这种情况下,只需要为这个更新发送一个smp,因为lft在每块64个lid的块中更新,并且lid2和lid12两者都是包括lid0-63的同一块的一部分。如果管理程序531上的vf3的lid替代地为64或更大,那么将需要发送两个smp,因为两个lft块将必须被更新:包含lid2的块(vmlid)和包含要交换的大于63的lid块。

具有动态lid分配的vswitch中的重新配置

根据实施例,对于具有动态lid分配的vswitch体系架构,vf的路径遵循与其中当前托管vm的管理程序的对应pf的路径相同的路径。当vm移动时,系统必须找到分配给目的地管理程序的pf的lid,并且遍历所有交换机的所有lft,并且用目的地管理程序的路径更新vmlid的路径。与在具有预填充lid的重新配置中使用的lid交换技术相反,始终只需要向需要被更新的交换机发送一个smp,因为该处理中只涉及一个lid。

重新配置的传统成本

根据实施例,全网络重新配置方法所需的时间rct是路径计算所需的时间pct加上lft分发到所有交换机所需的时间lftdt之和,如等式1所示:

rct=pct+lftdt(1)

根据实施例,路径的计算复杂度随子网的大小呈多项式增长,并且pct在大型子网上是几分钟的数量级。

在计算路径之后,可以更新网络(诸如ib子网)中的交换机的lft。lft分发时间lftdt随子网的大小和交换机的数量呈线性增长。如上所述,lft在64个lid的块上更新,因此在具有少量交换机和至多64个消耗的lid的小型子网中,在路径分发期间只需要向每个交换机发送一个smp。在其中诸如具有消耗了49151个lid的完全填充的ib子网的其它情况下,在传统模型中的路径分发期间,需要每交换机发送768个smp。

smp可以使用定向路由或基于目的地的路由。当使用定向路由时,每个中间交换机必须在将分组转发到下一跳之前,用当前跳指针处理和更新分组的报头并且反转路径。在基于目的地的路由中,每个分组被立即转发。自然地,定向路由会向转发的分组添加延迟。但是无论如何,opensm为所有传统smp使用定向路由。对于其中lft尚未分发到交换机的初始拓扑发现处理,或者当正在发生重新配置和到交换机的路由正在改变时,这是必需的。

假定n是网络中的交换机的数量;m是由消耗的lid数量确定的、将在每个交换机上更新的所有lft块的数量;k是在到达每个交换机之前,每个smp遍历网络所需的平均时间;以及r是由于定向路由而对每个smp添加的平均时间。假设没有流水线,那么lft分发时间lftdt可以在等式2中被进一步分解:

lftdt=n·m·(k+r)(2)

通过组合等式1和2,等式3是全网络重新配置所需的时间的结果:

rct=pct+n·m·(k+r)(3)

在大型子网中,传统上,路径计算所需的时间pct远远大于lft分发所需的时间lftdt,即使(当使用更多的lid,并且因此每交换机m使用更多的lft块时,以及当网络中存在更多的交换机n时)lftdt变大。等式2和3中的n·m部分定义了为重新配置需要发送的smp的总数。

利用vswitch体系架构进行实时迁移的重新配置成本

使用传统的重新配置技术将使vm迁移无法使用。在大型子网中,等式3中的pct变得非常大并且主导rct。如果实时迁移触发了完全的传统重新配置,那么它通常将花费几分钟的时间才能完成。

根据实施例,通过利用具有预填充lid的vswitch或具有动态lid分配的vswitch,可以基本上消除重新配置时间的pct部分,因为已经计算了路径以交换或复制每个交换机的lft中的lid条目。此外,不需要每交换机发送m个smp,因为当迁移vm时,取决于使用所建议的哪个vswitch方案,只有一个或最多两个lid受到影响,而与lft块的总数无关。因此,对于每个迁移,只有m'∈{1,2}个smp需要发送到交换机(如果当lid被预填充时两个lid条目不位于同一lft块中,则m'=2,否则m'=1)。同样,存在某些情况,需要更新0<n'<n个交换机。

根据实施例,现在参考图10,其示出了根据实施例的具有潜在虚拟机迁移路径的具有预填充lid的示例性vswitch架构。如图所示,多个交换机501-504可以在结构(诸如infiniband结构)的成员之间提供网络交换环境1000(例如,ib子网)内的通信。该结构可以包括多个硬件设备,诸如主机通道适配器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访问主机通道适配器。

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

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

根据实施例,图10绘出了在其中vm2551可以潜在地从管理程序511迁移到管理程序521(其中存在三个可用的虚拟功能)的网络交换环境1000中的情况。如果lid3与管理程序521中的任何可用的lid(6、7或8)进行了交换,那么交换机501将根本不需要更新,因为初始路由已经路由共享交换机501上的相同端口(端口2)的lid3和lid6、7和8。特别地,对于该示例,n'=1,因为只有交换机503(即,叶交换机)将需要被更新。

根据实施例,最终,所公开的重新配置机制的成本vswitchrct在等式4中找到,并且在大型子网中,vswitchrct远小于rct。

vswitch_rct=n′·m′·(k+r)(4)

根据实施例,可以使用针对smp分组的基于目的地的路由。当迁移vm时,属于交换机的lid的路由将不受影响。因此,基于目的地的路由可以保证向交换机正确地交付smp,并且r可以从等式4中消除,从而给出等式5:

vswitch_rct=n′·m′·k(5)

根据实施例,流水线可以用于更进一步减少vswitch重新配置时间。

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

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

在步骤1130处,该方法可以将在多个管理程序中的第一管理程序上运行的多个虚拟机的第一虚拟机实时迁移到多个管理程序中的第二管理程序;并且其中第一管理程序与多个主机通道适配器中的第一主机通道适配器相关联,并且第二管理程序与多个主机通道适配器中的第二主机通道适配器相关联。

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

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

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

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