用于虚拟机的可扩展寻址机制的制作方法

文档序号:15072182发布日期:2018-08-01 00:04阅读:128来源:国知局

计算机系统和相关技术影响社会的很多方面。事实上,计算机系统处理信息的能力已经改变了我们的生活和工作方式。最近,计算机系统已经彼此耦合并且与其他电子设备耦合以形成有线和无线计算机网络两者。这些计算机系统和电子设备可以使用因特网协议(ip)通过因特网彼此通信。ip的第一主要版本、也是当今仍然最常用于路由因特网流量的版本被称为ipv4。

ip具有路由和递送数据(被称为数据分组)的主要任务,数据基于分组报头内包含的ip地址从源计算机系统被路由到目的地计算机系统。因此,连接到因特网的每个设备必须被指派ip地址用于通信和标识目的。在ipv4下,32位ip地址被指派给连接到因特网的设备,这表示有232个(或大约42.9亿个)可用地址以指派给设备。随着通过云计算提供商可用的智能手机、平板计算机和虚拟机的出现,连接到因特网(并且因此需要的ip地址)的设备数目现在开始超过在ipv4下可用的地址数目。

本文中要求保护的主题不限于解决任何缺点或仅在诸如上述等环境中操作的实施例。相反,仅提供本背景以说明可以实践本文中描述的一些实施例的一个示例性技术领域。



技术实现要素:

本文中描述的至少一些实施例涉及向虚拟机指派地址。在一些实施例中,虚拟机被标识并且被指派与虚拟网络相关联的虚拟地址、和物理地址。物理地址空间应当很大,以应对属于可以存在于云或云区域中、甚至可能在全球虚拟网络中的所有客户的所有虚拟机。通过利用用于指派物理地址的可扩展机制,虚拟机可以无缝地彼此通信,否则物理地址空间将不得不重新使用,从而限制了虚拟机之间的无缝连接。

然后从虚拟机发送具有报头的数据分组,报头包括虚拟机的虚拟地址和目的地虚拟机的虚拟地址。然后在虚拟机的主机处将包括虚拟机的物理地址和目的地虚拟机的物理地址的附加报头放置数据分组上。然后将数据分组从主机发送到目的地虚拟机的主机。

在其他实施例中,在目的地虚拟机的主机处接收数据分组,数据分组包括具有目的地虚拟机和源虚拟机两者的物理地址的报头以及具有目的地和源虚拟机两者的虚拟地址的报头。目的地和源虚拟机两者的物理地址使用可扩展寻址机制来指派,该机制允许物理地址是唯一的而不包括持久地指派给虚拟机的机器专用标识符。然后将包含源虚拟机和目的地虚拟机的物理地址的报头从数据分组中去除并且发送到目的地虚拟机。

在其他实施例中,由计算机系统来创建被构造为由计算机系统可解释的虚拟机的物理地址。物理地址包括具有虚拟机的虚拟地址的第一段、具有虚拟机的主机的地址的第二段、以及可扩展地址,可扩展地址由可扩展地址机制指派并且允许物理地址是唯一的而不必在物理地址中包括持久地指派给虚拟机的机器专用标识符。

一些技术益处包括使用大量虚拟机创建全球虚拟网络的能力。使用ipv4地址,世界上不同地区的数据中心通常与其他地区共享相同的ipv4地址。但是,通过将ipv6地址指派给虚拟机来利用ipv6的大的寻址范围,允许数据中心创建跨越全球的虚拟网络,同时仍然使得虚拟机被指派全局唯一标识符。此外,物理地址可以被构造为与传统ip协议和当前封装技术兼容,从而降低成本。

提供本“发明内容”是为了以简化的形式介绍将在以下“具体实施方式”中进一步描述的一些概念。本“发明内容”并非旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用作确定所要求保护的主题的范围的辅助手段。

附图说明

为了描述可以获取本发明的上述和其他优点和特征的方式,上面简要描述的本发明的更具体的描述将通过参考在附图中说明的其具体实施例来呈现。应当理解,这些附图仅描绘了本发明的典型实施例,并且因此不被认为是对其范围的限制,本发明将通过使用附图以更多的特征和细节来描述和解释,在附图中:

图1示出了其中可以操作本文中描述的原理的示例计算机系统。

图2示出了其中可以采用本文中描述的原理的示例云计算环境。

图3示出了用于虚拟机的主机的示例环境。

图4示出了用于向具有可扩展地址的物理地址的虚拟机发送数据分组并且从其接收数据分组的计算环境的具体示例。

图5示出了用于标识虚拟机并且向虚拟机指派虚拟地址和物理地址的方法的流程图。

图6示出了用于从具有物理可扩展地址的第一虚拟机向具有物理可扩展地址的第二虚拟机发送数据分组的方法的流程图。

图7示出了用于在具有拥有大容量寻址范围的物理可扩展地址的第二虚拟机处接收从具有拥有大容量寻址范围的物理可扩展地址的第一虚拟机发送的数据分组的方法的流程图。

图8示出了具有大容量寻址范围的物理可扩展地址的示例结构。

具体实施方式

本文中描述的至少一些实施例涉及向虚拟机指派地址。在一些实施例中,虚拟机被标识并且被指派与虚拟网络相关联的虚拟地址、和物理地址。物理地址空间应当很大,以应对属于可以存在于云或云区域中、甚至可能在全球虚拟网络中的所有客户的所有虚拟机。通过利用用于指派物理地址的可扩展机制,虚拟机可以无缝地彼此通信,否则物理地址空间将不得不重新使用,从而限制了虚拟机之间的无缝连接。

然后从虚拟机发送具有报头的数据分组,报头包括虚拟机的虚拟地址和目的地虚拟机的虚拟地址。然后在虚拟机的主机处将包括虚拟机的物理地址和目的地虚拟机的物理地址的附加报头放置数据分组上。然后将数据分组从主机发送到目的地虚拟机的主机。

在其他实施例中,在目的地虚拟机的主机处接收数据分组,数据分组包括具有目的地虚拟机和源虚拟机两者的物理地址的报头以及具有用于目的地和源虚拟机两者的虚拟地址的报头。目的地和源虚拟机两者的物理地址使用可扩展寻址机制来指派,该机制允许物理地址是唯一的而不包括持久地指派给虚拟机的机器专用标识符。然后将包含源虚拟机和目的地虚拟机的物理地址的报头从数据分组中去除并且发送到目的地虚拟机。

在其他实施例中,由计算机系统来创建被构造为由计算机系统可解释的虚拟机的物理地址。物理地址包括具有虚拟机的虚拟地址的第一段、具有虚拟机的主机的地址的第二段、以及可扩展地址,可扩展地址由可扩展地址机制指派并且允许物理地址是唯一的而不必在物理地址中包括持久地指派给虚拟机的机器专用标识符。

获取的一些功能包括创建全球虚拟网络的能力。使用ipv4地址,世界上不同地区的数据中心必须与其他地区共享相同的ipv4地址。然而,通过将ipv6地址指派给虚拟机来利用ipv6的大的寻址范围,允许数据中心创建跨越全球的虚拟网络。此外,物理地址可以被构造为与传统ip协议和当前封装技术兼容,从而降低成本。

计算系统现在越来越多地采取各种各样的形式。例如,计算系统可以是手持设备、家用电器、膝上型计算机、台式计算机、大型机、分布式计算系统、或者甚至是通常未被视为计算系统的设备。在本说明书和权利要求书中,术语“计算系统”或“计算机系统”被广义地定义为包括任何设备或系统(或其组合),其包括至少一个物理和有形处理器以及能够在其上具有可以由处理器执行的计算机可执行指令的物理和有形存储器。存储器可以采取任何形式并且可以取决于计算系统的性质和形式。计算系统可以分布在网络环境中并且可以包括多个组成计算系统。

如图1所示,在其最基本的配置中,计算系统100通常包括至少一个硬件处理单元102和存储器104。存储器104可以是物理系统存储器,其可以是易失性的、非易失性的、或两者的某种组合。术语“存储器”在本文中也可以用于指代非易失性大容量存储器,诸如物理存储介质。如果计算系统是分布式的,则处理、存储器和/或存储能力也可以是分布式的。

术语“可执行组件”是计算领域的普通技术人员合理地理解的结构的名称,其是可以作为软件、硬件或其组合的结构。例如,当以软件实现时,本领域普通技术人员将理解,可执行组件的结构可以包括可以在计算系统上执行的软件对象、例程、方法,而无论这样的可执行组件是否存在于计算系统的堆中或者可执行组件是否存在于计算机可读存储介质上。

在这样的情况下,本领域普通技术人员将认识到,可执行组件的结构存在于计算机可读介质上,使得当由计算系统的一个或多个处理器(例如,由处理器线程)解释时,计算系统被引起执行功能。这样的结构可以由处理器直接计算机可读(如果可执行组件是二进制的,则是这种情况)。替代地,结构可以被构造为可解释的(例如,如在中间语言组件的情况下)或者被编译(如在源代码组件的情况下)以便生成由处理器直接可解释的这样的二进制。对可执行组件的示例结构的这样的理解在计算领域的普通技术人员的理解之内。

本领域普通技术人员还可以将术语“可执行组件”合理地理解为包括专门或近似专门地用硬件实现的结构,诸如在现场可编程门阵列(fpga)、专用集成电路(asic)或任何其他专用电路内。因此,术语“可执行组件”是用于计算领域的普通技术人员合理地理解的结构的术语,而无论是以软件、硬件还是以组合的方式实现。

在下面的描述中,参考由一个或多个计算系统执行的动作来描述实施例。如果这样的动作以软件实现,则(执行动作的相关联的计算系统的)一个或多个处理器响应于已经执行了构成可执行组件的计算机可执行指令来指导计算系统的操作。例如,这样的计算机可执行指令可以在形成计算机程序产品的一个或多个计算机可读介质上实施。这样的操作的示例涉及数据的操纵。

计算机可执行指令(和被操纵的数据)可以存储在计算系统100的存储器104中。计算系统100还可以包含通信信道108,通信信道108允许计算系统100通过例如网络110与其他消息处理器通信。

本文中描述的实施例可以包括或利用包括计算机硬件(诸如例如一个或多个处理器和系统存储器)的专用或通用计算机,如以下更详细讨论的。本文中描述的实施例还包括用于携带或存储计算机可执行指令和/或数据结构的物理和其他计算机可读介质。这样的计算机可读介质可以是可以由通用或专用计算机系统访问的任何可用介质。存储计算机可执行指令的计算机可读介质是物理存储介质。携带计算机可执行指令的计算机可读介质是传输介质。因此,作为示例而非限制,本发明的实施例可以包括至少两种截然不同种类的计算机可读介质:计算机存储介质和传输介质。

计算机存储介质包括ram、rom、eeprom、cd-rom或其他光盘存储装置、磁盘存储装置或其他磁存储设备、或者可以用于以计算机可执行指令或数据结构的形式存储期望的程序代码装置并且可以由通用或专用计算机访问的任何其他介质。

“网络”被定义为实现电子数据在计算机系统和/或模块和/或其他电子设备之间的传输的一个或多个数据链路。当信息通过网络或其他通信连接(硬连线、无线或者硬连线或无线的组合)被传输或提供给计算机时,计算机将连接正确地视为传输介质。传输介质可以包括可以用于以计算机可执行指令或数据结构的形式携带期望的程序代码装置并且可以由通用或专用计算机访问的网络和/或数据链路。上述的组合也应当被包括在计算机可读介质的范围内。

此外,在到达各种计算机系统组件时,计算机可执行指令或数据结构形式的程序代码装置可以从传输介质自动传输到计算机存储介质(反之亦然)。例如,通过网络或数据链路接收的计算机可执行指令或数据结构可以缓存在网络接口模块(例如,“nic”)内的ram中,并且然后最终被传输到计算机系统处的计算机系统ram和/或较不易失性计算机存储介质。因此,应当理解,计算机存储介质可以被包括在也(甚至主要)利用传输介质的计算机系统组件中。

例如,计算机可执行指令包括当在处理器处执行时引起通用计算机、专用计算机或专用处理设备执行特定功能或功能组的指令和数据。计算机可执行指令可以是例如二进制文件、诸如汇编语言等中间格式指令、或者甚至是源代码。尽管已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于以上描述的特征或动作。相反,所描述的特征和动作被公开作为实现权利要求的示例形式。

本领域技术人员将认识到,本发明可以在具有很多类型的计算机系统配置的网络计算环境中实践,包括个人计算机、台式计算机、膝上型计算机、消息处理器、手持设备、多处理器系统、基于微处理器的或可编程的消费电子产品、网络pc、小型计算机、大型计算机、移动电话、pda、寻呼机、路由器、交换机等。本发明还可以在分布式系统环境中实践,其中通过网络链接(通过硬连线数据链路、无线数据链路、或者通过硬连线和无线数据链路的组合)的本地和远程计算机系统都执行任务。在分布式系统环境中,程序模块可以位于本地和远程存储器存储设备两者中。

图2抽象地示出了其中可以采用本文中描述的原理的环境200。环境200包括使用接口202与系统210交互的多个客户端201。环境200被示出为具有三个客户端201a、201b和201c,但是椭圆201d表示本文中描述的原理不限于通过接口202与系统210交互的客户端的数目。系统210可以根据需要向客户端201提供服务,并且因此从系统210接收服务的客户端201的数目可以随着时间而变化。

例如,每个客户端201可以如以上针对图1的计算系统100所描述的那样来构造。替代地或另外地,客户端可以是通过接口202与系统210对接的应用或其他软件可执行组件。接口202可以是被定义为使得能够使用应用程序接口的任何计算系统或软件可执行组件可以与系统210通信的应用程序接口。

系统210可以是分布式系统,尽管不是必需的。在一个实施例中,系统210是云计算环境。云计算环境可以是分布式的,尽管不是必需的,并且甚至可以在国际上分布和/或具有跨越多个组织而拥有的组件。

在本说明书和以下权利要求书中,“云计算”被定义为用于实现对可配置计算资源(例如,网络、服务器、存储装置、应用和服务)的共享池的按需网络访问的模型。“云计算”的定义并不局限于在被适当部署时可以从这样的模型中获取的其他很多优点中的任一个。

例如,当前在市场中采用云计算,以便提供对可配置计算资源的共享池的无所不在且方便的按需访问。此外,可配置计算资源的共享池可以经由虚拟化来快速供应,并且以低管理成本或服务提供商交互来发布,并且然后相应地缩放。

云计算模型可以由各种特征组成,诸如按需自助服务、宽广网络访问、资源池化、快速弹性、测量的服务等。云计算模型也可以以各种服务模型的形式出现,诸如例如软件即服务(“saas”)、平台即服务(“paas”)和基础设施即服务(“iaas”)。云计算模型也可以使用不同的部署模型来部署,诸如私有云、社区云、公共云、混合云等。在本说明书和权利要求书中,“云计算环境”是其中采用云计算的环境。

系统210包括每个能够运行虚拟机的多个主机211。尽管系统200可以包括任何数目的主机211,但是图2中示出了三个主机211a、211b和211c,其中椭圆211d表示本文中描述的原理不限于在系统210内的主机的确切数目。可以只有一个,没有上限。此外,主机的数目可以是静态的,或者可以随着新的主机被添加到系统210或者随着主机从系统210中被丢弃而随着时间动态地改变。主机211中的每个可以如以上针对图1的计算系统100所描述的那样来构造。

每个主机能够运行一个或多个、并且可能是很多个虚拟机。例如,图3更详细地抽象地示出了主机300。作为示例,主机300可以表示图2的任何主机211。在图3的情况下,主机300被示出为操作三个虚拟机310,包括虚拟机310a、310b和310c。然而,椭圆310d再次表示本文中描述的原理不限于在主机300上运行的虚拟机的数目。可以只有零个虚拟机在主机上运行,其中唯一的上限由主机300的物理能力来限定。

在操作期间,虚拟机仿真包括至少一个操作系统以及可能还有一个或多个其他应用的完全可操作的计算系统。每个虚拟机被指派给特定的客户端,并且负责支持这个客户端的桌面环境。

在其中虚拟机是虚拟桌面的一个示例实现中,虚拟机生成表示桌面的当前状态的桌面图像或其他绘制指令,并且然后将该图像或指令传输到客户端以绘制桌面。例如,参考图2和3,假定图3的主机300表示图2的主机211a,并且虚拟机310a被指派给客户端201a(本文中称为“主示例”),则虚拟机310a可以生成桌面图像或指令,并且经由服务协调系统213并且经由系统接口202将这样的指令从主机211a分派到对应的客户端201a。

在虚拟桌面实现中,当用户与客户端处的桌面交互时,用户输入从客户端传输到虚拟机。例如,在主示例中并且参考图2和3,客户端201a的用户与桌面交互,并且用户输入经由接口201、经由服务协调系统213并且经由主机211a从客户端201传输到虚拟机310a。

虚拟机处理用户输入,并且如果适当的话,改变桌面状态。如果桌面状态的这样的改变将导致绘制的桌面的变化,则虚拟机在适当的情况下改变图像或绘制指令,并且将改变后的图像或绘制的指令传输给客户端计算系统以进行适当绘制。从用户的角度来看,就好像客户端计算系统本身正在执行桌面处理一样。也就是说,虚拟机可以模拟任何计算系统,而不管这个计算系统是产生桌面还是直接与用户对接。

主机300包括管理程序320,管理程序320使用从虚拟机310的视角而抽象的物理资源321来模拟虚拟机310的虚拟资源。管理程序320还在虚拟机310之间提供适当的隔离。因此,从任何给定虚拟机的角度来看,管理程序320提供虚拟机与物理资源对接的错觉,即使虚拟机仅与物理资源的外观(例如,虚拟资源)而不是直接与物理资源对接。在图3中,物理资源321被抽象地表示为包括资源321a至321f。物理资源321的示例包括处理能力、存储器、磁盘空间、网络带宽、媒体驱动器等。

主机300可以操作主机代理302,主机代理302监测主机的性能,并且执行管理主机的其他操作。此外,主机300可以包括其他组件303。

再次参考图2,系统200还包括服务212。在所示的示例中,服务200包括五个不同的服务212a、212b、212c、212d和212e,尽管椭圆212f表示本文中描述的原理不限于系统210中的服务的数目。服务协调系统213与主机211和服务212通信,由此提供由客户端201请求的服务以及可以是所请求的服务的先决条件的其他服务(诸如认证、计费等)。

图4示出了用于实践本文中描述的原理的计算环境400的更具体的示例。环境400包括被示出为运行虚拟机的主机。例如,环境400被示出为包括两个主机410a和410b,尽管椭圆410c表示本文中描述的原理不限于与计算环境400一起操作的主机的数目。事实上,当主机的数目很大时,使用高容量的地址范围可能争取最大的效用。仅作为示例,主机410a被示出为运行两个虚拟机413a和413b,并且主机410b被示出为运行两个虚拟机413c和413d,但是本文中描述的原理不限于在任何给定主机上运行的虚拟机的数目。同样,当环境400内的可能的虚拟机的数目很大时,使用高容量的寻址范围地址对于确保环境400内的唯一性将具有很大的效用。

如图4所示,在相同主机上运行的虚拟机可以连接到在不同主机上运行的其他虚拟机,从而创建与虚拟机可以在其上运行的主机分离的不同虚拟网络。例如,虚拟机413a和413b被示出为在相同主机410a上运行。然而,虚拟机413a(连同虚拟机413c)连接到虚拟网络420a,并且虚拟机413b(连同机器413d)连接到虚拟网络420b。同样,椭圆420c表明,尽管在图4中仅示出了两个虚拟网络,但是可以在环境400内使用任何数目的虚拟网络。虽然虚拟网络420a和420b是具有两个虚拟机端节点的简单虚拟网络,但是本文中描述的原理也适用于具有多个节点的复杂虚拟网络。

每个主机410还被示出为包括网络管理器415和虚拟交换机416两者。例如,网络管理器415a和虚拟交换机416a被示出为在主机410a上操作。此外,网络管理器415b和虚拟交换机416b被示出为在主机410b上操作。虽然一个或多个网络管理器415和一个或多个虚拟交换机416可以如图4所示在主机上运行,但是它们也可以通过主机外部的计算资源来提供。类似地,目录服务430可以是与图4所示的任何主机410分离的模块,或者可以在主机410上运行。不管配置如何,每个主机可以具有关联的网络管理器、虚拟交换机和目录服务供其使用,其中的每个都是上述可执行组件的示例。

每次创建新的虚拟机413时,网络管理器415标识虚拟机的存在,并且随后向这个虚拟机指派虚拟地址414和物理地址。例如,网络管理器415a可以将虚拟地址414a(va1)指派给虚拟机413a,并且将虚拟地址414b(va2)指派给虚拟机413b。类似地,例如,网络管理器415b可以将虚拟地址414c(va3)指派给虚拟机413c,并且将虚拟地址414d(va4)指派给虚拟机413d。

指派给虚拟机的虚拟地址在虚拟机的虚拟网络内可以是唯一的,而物理地址可以是全局唯一的。在一些实施例中,虚拟机413可以甚至不知道已经由网络管理器415向虚拟机指派的物理地址。值得注意的是,指派给特定虚拟机的虚拟和物理地址可以遵循任何适用的因特网标准,包括ip协议标准(例如,ipv4协议、ipv6协议、mac地址)。

一旦网络管理器415已经向虚拟机指派地址(无论是虚拟的、物理的还是两者),网络管理器向目录服务430通知这个指派。网络管理器可以使用当前在与网络管理器相关联的主机上运行的每个虚拟机的状态来持续地更新目录服务。例如,网络管理器415a可以使用关于虚拟机413a的信息(诸如虚拟机413a的主机身份、虚拟地址和/或物理地址)来持续地更新目录服务430。目录服务430然后可以存储虚拟机413a到这个虚拟机的对应虚拟地址414a、物理地址和主机410a的映射。

然后,存储在目录服务430中的映射准备好可访问用于由网络管理器415进行网络管理以及用于由虚拟交换机416进行路由。虚拟交换机416负责路由被发送到在与虚拟交换机相关联的主机上运行的虚拟机的数据和来自该虚拟机的数据。如在下文中更详细地描述的,当数据分组从虚拟机被发送时,数据分组包括报头411,报头411包含指派给发送数据分组的虚拟机(“源虚拟机”)和要接收数据分组的虚拟机(“目的地虚拟机”)两者的虚拟地址。但是,报头最初可以不包括指派给源和目的地虚拟机的物理地址。在这样的情况下,虚拟交换机416然后可以在将数据分组路由到目的地虚拟机之前在数据分组上放置包括源和目的地虚拟机的物理地址的附加报头412。

在一些实施例中,在虚拟交换机416已经直接与目录服务430通信以确定数据分组的目的地之后,可以在数据分组上放置包含物理地址的附加报头。在其他实施例中,网络管理器可以将附加报头放置在任何传出数据分组上。在其他实施例中,网络管理器415可以通过使用存储在目录服务中的映射对虚拟交换机进行编程来用作虚拟交换机416与目录服务430之间的介质。

由于在图5、6和7的流程图中描述的方法可以在环境400中执行,所以将频繁地参考图4来描述这些方法。此外,为了说明本文中描述的原理,在将在图5至图7的整个描述中概述和使用特定场景现。在这种情况下,两个单独的客户(客户1和客户2)每个请求云计算服务以提供创建虚拟网络的两个虚拟机。在这种情况下,虽然云计算服务为每个客户提供两个请求的虚拟机,但是客户的虚拟机都不在相同主机上运行。换言之,每个客户具有在一个主机上运行的一个虚拟机和在不同的第二主机上运行的第二虚拟机。例如,客户1可以已经被提供在主机410a上运行的虚拟机413a和在主机410b上运行的虚拟机413c,从而创建虚拟网络420a。另一方面,客户2可以已经被提供在主机410a上运行的虚拟机413b和在主机410b上运行的虚拟机413d,从而创建虚拟网络420b。

图5示出了用于标识虚拟机并且向这个虚拟机指派虚拟地址和物理地址的示例方法500的流程图。方法500在云计算服务已经满足客户的至少一个请求时开始,从而创建由网络管理器415标识的新虚拟机413(动作510)。

作为标识的一部分,网络管理器415可以标识虚拟机的主机以及虚拟机是否已经被指派虚拟或物理地址。然后,网络控制器415可以将这个信息传送给目录服务430,从而允许目录服务430创建虚拟机413到其关联信息(例如,主机、指派的虚拟地址、指派的物理地址)的映射。例如,当创建虚拟机413a并且将其提供给客户1时,网络控制器415a可以标识出虚拟机413a正在主机410a上运行并且还没有被指派虚拟或物理地址。网络控制器415a然后可以将这个信息传送给目录服务430,目录服务430然后可以创建信息的映射。

在标识出新创建的虚拟机413a并且验证虚拟机尚未被指派虚拟或物理地址之后,网络控制器415a可以向虚拟机指派与虚拟网络420相关联的虚拟地址414和具有大容量物理寻址范围的物理地址(动作520)。虚拟地址414a在虚拟网络420a内可以是完全唯一的,并且用于标识虚拟网络420a内的虚拟机413a。如本文中描述的,虚拟地址414a和指派的物理地址都可以遵循任何适用的因特网标准(包括ip协议标准ipv4和ipv6)以及mac地址标准。

如本文中描述的,指派的物理地址可以具有大容量寻址范围,诸如ipv6。由于ipv6标准包括128位的寻址范围,因此使用ipv6寻址空间可以允许物理地址成为它被指派给的虚拟机的全局唯一标识符。此外,将ipv6用于物理地址可以不需要向单独的虚拟机指派mac地址,以便为所有虚拟机拥有完全唯一的标识符。

相反,使用与物理地址相关联的低容量寻址空间可能不足以唯一地标识虚拟机。在一些实施例中,低容量物理寻址空间包括32位。在其他实施例中,低容量物理寻址空间包括少于32位。

在一些实施例中,可以在osi或tcp/ip模型的相同层处定义和利用虚拟地址和物理地址两者。例如,虚拟地址可以是ipv4地址,并且物理地址可以是ipv6地址,因此使用都在osi模型的网络层和tcp/ip模型的因特网层中定义和利用的虚拟和物理地址的寻址协议。

一旦虚拟机已经被网络管理器标识并且指派虚拟地址和物理地址,网络管理器可以使用这个新信息来更新目录服务430。例如,在向虚拟机413a指派虚拟地址414a和物理地址之后,网络控制器415a可以向目录服务430传达虚拟机413a已经被指派虚拟和物理地址两者。随后,目录服务430可以使用其新指派的虚拟地址414a和物理地址来更新其虚拟机413a的映射。

图6示出了用于从具有大容量寻址范围的物理地址的第一虚拟机向具有大容量寻址范围的物理地址的第二虚拟机发送数据分组的方法600的流程图。方法600可以在虚拟机413a尝试通过沿着由虚线箭头402表示的路径向虚拟机413c发送数据分组401(动作610)来与虚拟机413c通信时开始。当被发送时,数据分组401可以包括指派给虚拟机413a和虚拟机413c的虚拟地址,如图4所示。

一旦数据分组411已经从虚拟机413a被发送,虚拟交换机416a可以与目录服务430通信以执行与源虚拟机413a和目的地虚拟机413c相关联的映射的查找。查找可以向主机的虚拟交换机通知源和目的地虚拟机两者的指派的虚拟地址和指派的物理地址。例如,虚拟交换机416a可以执行查找并且发现目的地虚拟机413c正在主机410b上运行并且已经基于存储在目录服务430处的映射而被指派虚拟地址414c和特定的物理地址。

然后,虚拟交换机416可以在主机410a处在数据分组401上放置包括虚拟机413a的物理地址和虚拟机413c的物理地址的附加报头412(动作620),从而形成数据分组401'。然而,在一些实施例中,网络管理器415a可以在数据分组上放置附加报头412。

在一些实施例中,附加报头可以将ipv4数据分组封装在ipv6数据分组内。在这样的情况下,如果需要,封装的数据分组仍然可以使用诸如6to4、teredo和isatap等任何标准的因特网转换机制通过ipv4网络来传输。不管任何必要的封装,一旦放置了附加报头412,则虚拟交换机416a然后将数据分组401'从主机410a发送到主机410b(动作630)。

应当注意,尽管贯穿始终而使用的示例是指在相同虚拟网络上的两个虚拟机,但是这些相同的步骤也可以用于不在相同虚拟网络上的两个或更多个虚拟机正在通信的情况。此外,在云计算服务提供商可能需要对其虚拟机之一进行维护或与其通信的情况下,也可以采取类似的步骤。在这样的情况下,一旦虚拟机413已经发送了具有包含其虚拟地址414的报头的数据分组,虚拟交换机416将放置指派给虚拟机413的、具有大容量物理地址的附加报头,并且然后将数据分组路由到云计算服务提供商的服务器。

类似地,当主机415从云计算服务提供商的服务器接收到具有指派给预期的目的地虚拟机413的、包括大容量物理地址的附加报头的(诸如数据分组401')时,虚拟交换机416可以去除附加报头以恢复分组401,并且将仍然包含目的地虚拟机的虚拟地址的数据分组401路由到目的地虚拟机。以这种方式,可以使用大容量物理地址来在虚拟机之间以及虚拟机与物理机之间的通信中全局地唯一地标识虚拟机。

图7示出了用于在具有拥有大容量寻址范围的物理地址的第二虚拟机处接收从具有拥有大容量寻址范围的物理地址的第一虚拟机发送的数据分组的方法700的流程图。随后在主机410b处接收具有包括用于虚拟机413a(源虚拟机)和虚拟机413c(目的地虚拟机)两者的大容量物理地址的附加报头412的数据分组401'(动作710)。

一旦在主机410b处接收到具有附加报头412的数据分组401',则去除附加报头412,以留下报头411并且恢复分组401,分组401包括源虚拟机413a和目的地虚拟机413c的虚拟地址。报头412可以由主机410b的虚拟交换机416b来去除。在其他实施例中,报头412可以由主机410b的网络管理器415b去除。在去除报头412之后,包括报头411的数据分组401然后可以由虚拟交换机416b发送到虚拟机413c。这完成了分组401沿着图4的路径402的传送。

图8示出了具有大容量寻址范围的物理地址的示例结构。物理地址800可以以各种方式来构造,包括使用包括两个64位段的ipv6地址(即,128位)。在这样的情况下,第一段可以包括已经被指派物理地址800的虚拟机的虚拟地址,并且第二段可以包括已经被指派给已经被指派物理地址800的虚拟机的主机的地址。替代地或另外地,第二段可以包括虚拟网络标识符和/或客户标识符。

例如,再次参考图4,虚拟机413a的物理地址可以包括包含虚拟地址414a的第一64位段,该虚拟地址已经被指派给虚拟机413a。此外,虚拟机413a的物理地址可以包括包含被指派给主机410a的地址的第二64位段。这样,虚拟地址414a和指派给主机410a的地址可以包括ipv4地址(32位)、mac地址(48位)或使用64位或更少的任何其他地址协议。

如本文中描述的,使用指派给虚拟机的128位物理地址(例如,如ipv6)可以允许物理地址800是全局唯一的,而不必使用持久地指派给虚拟机的机器专用标识符。此外,大寻址范围可以允许构造物理地址使得其可以包含传统协议,使其与现有技术(例如,ipv4、mac地址)兼容。

例如,将虚拟地址414a(即使使用32位ipv4地址)和128位物理地址800指派给虚拟机413a可以允许虚拟机413a在虚拟网络420a内和全局内被唯一地寻址,而不必向虚拟机413a指派mac地址。然而,在一些实施例中,物理地址800可以不是全局唯一的。

如本文中讨论的,物理地址800可以以各种方式来构造。例如,物理地址800可以被构造为使得其与诸如ipv4、ipv6和mac地址等当前协议兼容。在一些实施例中,与物理地址800相关联的大容量物理寻址范围包括多于32位。在其他实施例中,与物理地址800相关联的大容量物理寻址范围包括至少64位。在其他实施例中,与物理地址800相关联的大容量物理寻址范围包括128位,如在图8的情况下那样。

以这种方式,可以使用大容量物理地址来在虚拟机之间的通信中以及在虚拟机与物理机之间的通信中全局地唯一地标识虚拟机。此外,这些大容量物理地址可以被构造为符合现有技术,从而降低成本。

虽然已经用特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,在所附权利要求中限定的主题不一定限于上述特征或动作、或者上述动作的顺序。相反,所描述的特征和动作被公开作为实现权利要求的示例形式。

在不脱离本发明的精神或基本特征的情况下,本发明可以以其他具体形式来实施。所描述的实施例在所有方面仅被认为是说明性的而非限制性的。因此,本发明的范围由所附权利要求而不是由前面的描述来指示。在权利要求的等同物的含义和范围内的所有变化都将被包含在其范围内。

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