Parte del contenido de esta aplicación no está disponible en este momento.
Si esta situación persiste, contáctenos aComentarios y contacto
1. (CN102047245) Configuring communications between computing nodes
Nota: Texto obtenido mediante procedimiento automático de reconocimiento óptico de caracteres.
Solo tiene valor jurídico la versión en formato PDF
配置计算机节点之间的通信


背景技术
许多公司和其它组织操作计算机网络,计算机网络使多个计算系 统互连以支持这些计算系统的功能,这些计算系统备选地位于同一位 置(例如,作为私有本地网络的一部分)或位于多个不同的地理位置 (例如经由一个或多个专用或共享中间网络相连)。例如,容纳了大量 互连计算系统的数据中心变得很平常,如,由单个组织操作并代表该 组织的私有数据中心,以及由商业实体来操作的公共数据中心。一些 公共数据中心运营商为不同客户所拥有的硬件提供访问、权限和安全 安装设施,而其它公共数据中心运营商提供“全服务”设施,所述“全 服务”设施还包括可供这些运营商的用户使用的硬件资源。然而,随 着典型数据中心和计算机网络的规模和范围的增大,提供、执行和管 理相关物理计算资源的任务变得越来越复杂。
商品硬件的虚拟化技术的出现有益于为具有不同需求的客户管 理大规模计算资源,从而允许在多个客户之间高效且安全地共享各种 计算资源。例如,虚拟化技术(如,WMVare、XEN或User-Mode Linux 提供的虚拟技术)可以通过为每个用户提供由单个物理计算机掌控的 一个或多个虚拟机同时还在不同虚拟机之间提供应用隔离和安全性, 来允许在多个用户之间共享单个物理计算机,其中每个这样的虚拟机 是用作相异的逻辑计算系统的软件仿真,该逻辑计算系统为用户给出 他们是给定的计算资源的唯一操作者和管理员的假象。此外,一些虚 拟化技术还能够提供跨过一个或多个物理资源的虚拟资源,如,具有 多个虚拟处理器的单个虚拟机,该单个虚拟机实际上跨过多个相异的 物理计算系统。
尽管数据中心和虚拟化技术的可用性提供了多种优点,然而仍然 存在多种问题,包括与管理虚拟机和/或物理计算系统之间的通信有关 的问题。
附图说明
图1是示出了对属于虚拟网络的计算节点之间的通信进行配置的 示例实施例。
图2A和2B示出了对计算节点之间经由覆盖网络而发生的通信进 行管理的示例。
图2C示出了对基础底层网络地址进行配置以使得可以为覆盖网 络嵌入虚拟网络地址的示例。
图3是示出了计算系统的框图,所述计算系统适于实现用于对计 算节点之间的通信进行管理的系统的实施例。
图4示出了系统管理器例程的示例实施例的流程图。
图5示出了通信管理器例程的示例实施例的流程图。
具体实施方式
描述了用于对多个计算节点(如,被一个或多个物理网络分开的 计算节点)之间的通信进行管理的技术。在一些实施例中,这些技术 用于在被一个或多个中间物理网络分开的多个计算节点(如,由单个 实体执行或代表单个实体的多个计算节点)之间提供虚拟网络的技术。 如以下将更详细讨论的,在不同实施例中可以以不同方式来提供这样 的虚拟网络,如,通过修改进入和/或离开中间物理网络的通信以便提 供覆盖网络,来从一个或多个物理网络的边缘提供虚拟网络。在至少 一些实施例中,上述实施例中的一些或全部由通信管理器模块的实施 例自动执行。
在至少一些实施例中,通过在分离多个计算节点的一个或多个中 间物理网络上创建覆盖网络,来提供多个远程计算节点之间的虚拟本 地网络或其它虚拟网络。在不同实施例中可以以不同方式来实现覆盖 网络,如,通过在用于一个或多个物理网络的网络协议的较大物理网 络地址空间中嵌入虚拟网络的虚拟网络地址信息,在不封装通信的情 况下实现覆盖网络。作为一个说明性示例,可以使用32比特IPv4(“互 联网协议版本4”)网络地址来实现虚拟网络,这些32比特虚拟网络地 址可以作为由一个或多个中间物理网络使用的128比特IPv6(“互联网 协议版本6”)的一部分而嵌入,如,通过对通信分组或其它数据传输 重新加首部(例如,使用无状态IP/ICMP变换,或SIIT)或修改这样的 数据传输以将这些数据传输从这些数据传输所配置用于的第一网络协 议变换到相异的第二网络协议,来嵌入32比特虚拟网络地址。更一般 地,在一些实施例中,根据第一网络寻址协议指定的N比特网络地址 可以被嵌入为根据第二网络寻址协议指定的另一M比特网络地址的一 部分,其中,“N”和“M”是与网络寻址协议相对应的任何整数。此 外,在至少一些实施例中,可以使用另一网络地址的多于或少于N比 特将N比特网络地址嵌入另一网络地址中,如在可以使用更少的比特 来表示感兴趣的N比特网络地址组(例如,L比特标记或标识符映射到 具体N比特网络地址并且嵌入另一网络地址中,其中“L”小于“N”) 的情况下一样。与SIIT有关的其它细节参见“Request For Comments 2765-Stateless IP/ICMP Translation Algorithm”,February 2000,at tools<dot>ietf<dot>org<slash>html<slash>rfc2765(其中,<dot>和 <slash>被具有这些名称的相应字符替换),其全部公开一并在此作为 参考。如以下更详细描述的,通过在基础物理底层网络的物理网络地 址中嵌入虚拟网络地址可以获得许多好处,包括使得可以在物理底层 网络上实现虚拟网络的覆盖,而不用封装通信或配置物理底层网络的 连网设备。此外,在至少一些实施例和情况下,对于计算节点之间的 通信,可以将其它信息类似地嵌入更大的物理网络地址空间中,如, 特定于包括这些计算节点的具体虚拟网络(例如,用于实体的虚拟网 络,其中这些计算节点代表所述实体来进行操作)的标识符。以下包 括了与利用覆盖网络提供这种虚拟网络有关的另外的细节。
此外,在至少一些实施例中,彼此之间通信的计算节点可以是物 理计算系统和/或可以是一个或多个物理计算系统上分别受掌控的虚 拟机,通信可以包括各种格式的数据(例如,消息、分组、帧、流、 等等)的传输。此外,在至少一些实施例中,至少一些计算节点可以 是程序执行服务(或“PES”)的一部分,所述程序执行服务代表服务 的多个客户或其它用户执行多个程序,如,在多个物理网络(例如, 数据中心内的多个物理计算系统和网络)上使用多个计算系统的程序 执行服务。在至少一些这样的实施例中,如以下更详细讨论的,程序 执行服务的一个或多个系统管理器模块可以对哪些计算节点属于哪些 虚拟网络进行跟踪和/或管理,如,基于代表客户或其它实体执行程序 的计算节点来进行跟踪和/或管理。
上述技术的使用可以在多种情况下提供多种好处,如,限制从具 体虚拟网络的计算节点向属于虚拟网络的其它计算节点的通信和/或 从所述其它计算节点向所述具体虚拟网络的计算节点的通信。以这种 方式,属于多个虚拟网络的计算节点可以共享一个或多个中间物理网 络的一部分,同时仍然保持具体网络的计算节点的网络隔离。此外, 上述技术的使用允许利用覆盖网络根据需要来物理地移动或定位虚拟 网络的计算节点,所述覆盖网络管理具体虚拟网络地址向对应实际物 理网络地址的通信的路由(例如,通过更新映射,所述映射使具体虚 拟网络的具体虚拟网络地址与分派了这些虚拟网络地址的计算节点的 具体物理位置相关联)。例如,如以下更详细描述的,例如基于相关联 通信管理器模块分派给计算节点的伪硬件地址的管理,可以在不同物 理网络之间物理地移动虚拟网络的计算节点,同时来消除或最小化计 算节点的硬件地址之间的任何可能冲突。除了容易移动与虚拟网络相 关联的计算节点之外,上述技术的使用还允许将计算节点容易地添加 到虚拟网络和/或从虚拟网络移除,例如以允许实体动态地修改虚拟网 络的大小(例如,动态地修改计算节点的数量以反映更多或更少计算 资源的当前需求量)。
在一些情况下,例如通过配置和管理虚拟网络的通信,可以经由 在一个或多个中间物理网络的边缘处一个或多个通信管理器模块的操 作,来建立和/或保持这样的虚拟网络。具体地,一个或多个计算节点 的组可以各自都具有相关的通信管理器模块,所述通信管理器模块管 理从这些计算节点和向这些计算节点的通信。例如,如果物理计算系 统掌控多个虚拟机计算节点,则物理计算系统上的管理程序或其它虚 拟机监视器管理器可以为这些虚拟机计算节点提供通信管理器模块。 类似地,在至少一些实施例中,一个或多个物理计算系统可以具有相 关的通信管理器模块,如,由代理计算设备提供的通信管理器模块, 其中经由所述代理计算设备来实现向物理计算系统和从物理计算系统 的通信,所述代理计算设备例如是由连网设备(例如,交换机、路由 器、集线器等等)提供的,经由所述连网设备来实现向物理计算系统 和从物理计算系统的通信。
在一些情况下,通信管理器模块跟踪或确定模块的相关联计算节 点属于哪个虚拟网络(例如,基于实体,其中虚拟网络所代表所述实 体而操作),然后处理向每个相关联计算节点和/或从每个相关联计算 节点的通信,以便反映该相关联计算节点的相关虚拟网络。在不同实 施例中,通信管理器模块对计算节点的对应虚拟网络的确定可以以不 同方式来执行如,通过与提供该信息的系统管理器模块交互、通过跟 踪在这样的计算节点上执行的软件程序、通过跟踪与这样的计算节点 相关联的实体等等来执行。例如,当具体计算节点开始代表作为程序 执行服务客户的实体来执行一个或多个软件程序,并且所述客户还具 有在其它计算节点上执行的其它软件程序时,可以选择执行客户程序 的新计算节点,以与客户的包括这些其它计算节点的虚拟网络相关联。 备选地,例如在实体在不同的计算节点组之间保持相异虚拟网络的情 况下,客户或其它实体可以指定计算节点所属的具体虚拟网络。
如上所述,在一些实施例中,程序执行服务使用多个物理计算系 统(例如,在一个或多个数据中心中)来执行第三方客户的程序,其 中每个物理计算系统掌控多个虚拟机,每个虚拟机能够执行客户的一 个或多个程序。在这种情况下,上述技术可以被作为程序执行服务一 部分的一个或多个通信管理器模块用来控制向每个客户的程序的通信 以及从每个客户的程序的通信。例如,如以下更详细描述的,通过处 理向每个相关联计算节点和/或从每个相关联计算节点的通信以便反 应该相关联计算节点的相关虚拟网络,通信管理器模块可以防止其它 虚拟网络上的计算节点获得对这些通信的访问。在一些实施例中,客 户可以可以向执行服务提供要执行的程序,并且可以保留由执行服务 提供的物理或虚拟硬件设施上的执行时间和其它资源。此外,客户和/ 或程序执行服务可以限定虚拟网络,所述虚拟网络将被客户的计算节 点的程序执行服务所使用,以便为虚拟网络的计算节点透明地提供专 用物理网络上的操作现象。
在至少一些实施例中,例如,通过对哪些计算节点属于哪些虚拟 网络(例如,基于代表客户或其它实体的执行程序)进行跟踪和/或管 理,以及通过(例如,由具体客户或其它实体)提供与跟用于具体虚 拟网络的虚拟网络地址相对应的实际物理网络地址有关的信息,一个 或多个系统管理器模块可以便于配置计算节点之间的通信。例如,PES 的系统管理器模块可以接收目标物理计算系统上虚拟机的指示,所述 目标物理计算系统是PES的多个物理网络之一的一部分。系统管理器 模块然后可以确定要与虚拟机关联的虚拟网络。在确定与虚拟机相关 联的虚拟网络之后,系统管理器模块然后可以发起目标物理计算系统 的虚拟机通信管理器模块的配置,以便使虚拟机与虚拟网络相关联, 或者通信管理器模块可以取而代之地发起该配置(例如,当虚拟机首 次发起或接收通信时)。
此外,在至少一些实施例中,例如,在通信管理器模块只传递或 转发授权通信的情况下(或者在未授权通信与授权通信在一个或多个 处理方式上有所不同的情况下),与计算节点和虚拟网络相关联的不同 信息可以用于确定计算节点之间的通信是否被授权。通过不向计算节 点传递未授权通信,可以增强实体的虚拟网络的网络隔离和安全性。
例如,如果第一虚拟网络上的第一计算节点试图向不同的第二虚 拟网络上的第二计算节点发送输出通信,并且该第二虚拟网络(或第 二计算节点)尚未授权来自第一虚拟网络(或来自第一计算节点)的 输入通信,则由于与该第一计算节点相关联的通信管理器模块阻止这 种输出通信(例如,通过从第一计算节点接收输出通信而不转发输出 通信,通过防止第一计算节点获得与将用于发送这样的通信的第二计 算节点的一个或多个地址有关的信息),第一计算节点可能甚至无法将 通信发送到第一计算节点与第二计算节点之间的一个或多个中间底层 网络。此外,如果在中间底层网络上向预期的目的地计算节点发送未 授权通信(例如,基于能够控制通信管理器模块或能够访问底层网络 的恶意用户),则用于对目的地计算节点的通信加以管理的通信管理器 模块可以识别未授权通信并防止向目的地节点转发未授权通信。
在至少一些实施例中,未授权通信的检测和/或防止可以至少部分 地基于一个或多个中间底层网络的拓扑,其中在所述一个或多个中间 底层网络上覆盖了虚拟网络。具体地,在至少一些实施例中,作为虚 拟网络一部分的每个计算节点由相关通信管理器模块来管理。如以下 关于图2A-2C更详细描述的,在至少一些这样的实施例中,用于在底 层网络上通信的计算节点的物理网络地址包括计算节点的虚拟网络地 址的指示,并且包括与计算节点的相关通信管理器模块(例如,底层 网络的子网络或其它部分,其中通信管理器模块为所述子网络或其它 部分管理通信)的位置相对应的底层网络的部分网络地址。因此,为 了使恶意用户正确构造作为虚拟网络一部分的计算节点的有效物理网 络地址,恶意用户需要能够:访问与计算节点所属的虚拟网络有关的 信息,访问与计算节点的物理网络位置的拓扑有关的信息,以便确定 相关通信管理器模块的部分网络地址,以及确定如何使用该信息来构 造物理网络地址。可以以多种方式来检验所构造的物理网络地址的有 效性,例如,通过识别与嵌入所构造的物理网络地址中的虚拟地址相 对应的计算节点,以及验证所识别的计算节点的位置与跟部分网络地 址相对应的网络的一部分中的计算节点之一(例如,由与部分网络地 址相对应的通信管理器模块来管理的计算节点之一)相对应。此外, 可以在不同时刻检验所构造的物理网络地址的有效性,例如,由接收 针对目的地计算节点的输入通信的通信管理器模块(例如以验证源物 理网络地址有效),代表所指示的受管理计算节点从通信管理器模块有 目的地接收消息的系统管理器模块(例如,请求感兴趣的预期目的地 计算节点的物理网络地址的消息)等等来检验。
此外,在至少一些实施例中,未授权通信的检测和/或防止可以至 少部分地基于计算节点所属的虚拟网络。具体地,在一些实施例中, 将通信管理器模块所管理的一些或全部计算节点各自都分派给一个或 多个虚拟网络,例如以便与计算节点代表其而操作的用户或其它实体 相对应(例如,基于在计算节点上执行的一个或多个程序)。在这样的 实施例中,一些或所有虚拟网络可以具有相关的规则,所述规则与在 虚拟网络上的计算节点之间和/或在来自其它虚拟网络的计算节点之 间允许什么样的通信有关。在这种情况下,这种预先定义的规则可以 被通信管理器模块使用,所述通信管理器模块接收针对相关联计算节 点的输入通信和/或来自相关联计算节点的输出通信,以便例如基于与 跟发送计算节点和目的地计算节点相关联的虚拟网络和/或实体有关 的信息,来确定是转发这样的通信还是允许这样的通信。通信管理器 模块可以跟踪并存储与相关联计算节点的相关虚拟网络和/或实体有 关的这种信息和/或与虚拟网络的预定义的规则有关的信息,或者取而 代之地在一些实施例中可以与一个或多个系统管理器模块交互,以便 获得一些或所有这样的信息。以下包含了与确定计算节点之间的通信 是否被授权有关的附加细节以及与这样的确定相对应的动作。
出于说明的目的,以下描述了一些实施例,其中执行特定特定类 型的计算节点、网络、通信和配置操作。这些示例是出于说明目的的, 为了简要起见简化了这些示例,本发明的技术可以用在多种其它情况 下,以下讨论了其中的一些情况。
图1是示出了对属于虚拟网络的计算节点之间的通信进行配置, 使得以对计算节点而言透明的方式在一个或多个中间物理网络上覆盖 通信的示例实施例。在该示例中,计算节点是程序执行服务的一部分, 程序执行服务的系统管理器模块和程序执行服务的多个通信管理器模 块便于通信的配置。在其它实施例中,这些技术可以用在除了程序执 行服务以外的其它情况下,例如,虚拟网络代表一个或多个实体的任 何其它用途(例如,用于针对在组织的私有网络上的商业或其它组织 的不同部分支持多个虚拟网络)。
所示的示例包括数据中心100,数据中心100具有由程序执行服务 来操作的多个物理计算系统。数据中心100连接至数据中心100外部的 全球互联网135,全球互联网135提供了经由专用网络140对一个或多个 计算系统145a的访问、对分别具有多个计算系统的一个或多个其它全 球可访问数据中心160的访问、以及对一个或多个其它计算系统145b 的访问。全球互联网135可以是例如由可被各种不同方操作的网络组成 的公共可访问网络,如,互联网,专用网络140可以是例如从专用网络 140外部的计算系统完全或部分地不可访问的公司网络。计算系统145b 可以是例如直接连接至互联网(例如,经由电话线、有线电视调制解 调器、数字订户线(“DSL”)等)的家庭计算系统。
数据中心100包括:多个物理计算系统105a-105d和155a-155n;通 信管理器模块150,在一个或多个其它计算系统(未示出)上执行以管 理相关联计算系统155a-155n的通信;以及在一个或多个计算系统(未 示出)上执行的程序执行服务的系统管理器模块110。在该示例中,每 个物理计算系统105a-105d主持多个虚拟机计算节点,并且包括虚拟机 (“VM”)通信管理器模块(例如,作为物理计算系统的虚拟机管理 程序监视器的一部分),例如计算系统105a上的VM通信管理器模块 109a和虚拟机107a,以及例如计算系统105d上的VM通信管理器模块 109d和虚拟机107d。在该示例中,物理计算系统155a-155n不执行任何 虚拟机,因此各自起到计算节点的作用,所述计算节点直接代表程序 执行服务的客户执行一个或多个软件程序。在其它实施例中,数据中 心处的所有物理计算系统都可以或都不可以主持虚拟机。
该示例数据中心还包括多个连网设备,如,交换机155a-155b、边 缘路由器125a-125c以及核心路由器130a-130c。交换机115a是包括物理 计算系统105a-105c的物理网络的一部分,并且连接至边缘路由器 125a。交换机115b是包括物理计算系统105d、155a-155n以及提供通信 管理器模块150和系统管理器模块110的计算系统的相异物理网络的一 部分,并且连接至边缘路由器125b。由交换机115a-115b建立的物理网 络经由中间互连网络120彼此连接以及连接至其它网络(例如,全球互 联网135),所述中间互连网络120包括边缘路由器125a-125c和核心路 由器130a-130c。边缘路由器125a-125c在两个或更多个网络之间提供网 关。例如,边缘路由器125a在由交换机155a建立的物理网络与互连网 络120之间提供网关。边缘路由器125c在互连网络120与全球互联网135 之间提供网关。核心路由器130a-130c管理互连网络120内的通信,例 如通过基于这种数据传输的特性在适当的情况下转发分组或其它数据 传输(例如,包括源和/或目的地地址、协议标识符等的首部信息)和 /或互连网络120自身的特性(例如,基于网络拓扑的路由等等)来管 理互连网络120内的通信。
所示的通信管理器模块可以执行上述技术中的至少一些,以便配 置、授权或管理发送至相关联计算节点以及从相关联计算节点发送的 通信。例如,通信管理器模块109a管理相关的虚拟机计算节点107a, 通信管理器模块109d管理相关的虚拟机计算节点107d,其它通信管理 器模块各自可以类似地管理由一个或多个其它相关的计算节点组成的 组的通信。所示的通信管理器模块可以配置计算节点之间的通信,以 便在一个或多个中间物理网络(如,互连网络120)上,以及可选地在 另一通信管理器模块(未示出)管理计算系统145a的通信的情况下, 在全球互联网135和专用网络140上,覆盖具体虚拟网络。因此,例如, 如果操作专用网络140的组织希望将其专用网络虚拟地扩展到数据中 心的一个或多个计算节点,则该组织可以通过实现一个或多个通信管 理器模块作为专用网络140的一部分(例如,作为专用网络140和全球 互联网135之间的接口的一部分)来进行,以这种方式,专用网络内的 计算系统(例如,计算系统145a)可以与这些数据中心计算节点通信, 如同这些数据中的计算节点是专用网络的一部分一样。此外,所示的 通信管理器模块可以授权计算节点之间的通信,以便增强网络隔离和 安全性。
因此,作为一个说明性示例,计算系统105a上的虚拟机计算节点 之一107a可以与计算系统105d上的虚拟机计算节点之一107d是相同的 虚拟本地网络的一部分,其中IPv4用于表示虚拟本地网络的虚拟网络 地址。该虚拟机107a可以例如通过为目的地虚拟机计算节点107d指定 虚拟网络地址,来将输出通信(未示出)发往该目的地虚拟机计算节 点。通信管理器模块109a接收输出通信,在至少一些实施例中,例如 基于先前获得的与发送虚拟机计算节点107a有关的和/或与目的地虚 拟机计算节点107d有关的信息(例如,与虚拟网络和/或与计算节点相 关联的实体有关的信息),和/或通过动态地与系统能够管理器模块110 交互(例如,以获得授权确定,以获得一些或所有这样的信息,等等), 来确定是否授权对输出通信的发送。如果通信管理器模块109a确定输 出通信被授权(或没有执行这样的授权确定),则模块109a确定与通信 的目的地虚拟网络地址相对应的实际物理网络位置(例如,基于与其 它能够管理器模块110的交互),在该示例中,互连网络使用IPv6来表 示经由互连网络而连接的计算节点的实际网络地址。然后通信管理器 模块109a对输出通信重新加首部,使得例如在通信管理器模块109d与 包括一定范围的多个IPv6网络地址的子网络相关联的情况下,使用实 际IPv6网络地址将该输出通信发往通信管理器模块109d。例如,通信 管理器模块109a可以通过动态地与系统管理器模块110交互来确定实 际IPv6目的地网络地址,以用于目的地虚拟机107d的虚拟网络地址, 或者可以预先确定并存储该信息(例如,响应于发送方虚拟机107a对 与目的地虚拟网络地址的请求,如,使用地址解析协议或ARP的请求)。 在该示例中,所使用的实际IPv6目的地网络地址包括虚拟目的地网络 地址和附加信息,如关于图2A-2C的示例更详细描述的。
当通信管理器模块109d经由互连网络120接收通信时,通信管理 器模块109d从实际IPv6目的地网络地址提取虚拟目的地网络地址和附 加信息,并确定将通信发往哪个虚拟机计算节点107d。通信管理器模 块109d接下来例如通过从IPv6源网络地址提取虚拟源网络地址和附加 信息并确认具有该虚拟源网络地址的计算节点实际上由转发通信的通 信管理器模块(在该示例中,通信管理器模块109a)来管理,来确定 是否针对目的地虚拟机计算节点107d来授权通信,如以下更详细讨论 的。如果确定通信被授权(或通信管理器模块不执行这样的授权确定), 则通信管理器模块109d对输入通信重新加首部,使得例如通过将发送 方虚拟机计算节点的虚拟网络地址用作源网络地址以及通过将目的地 虚拟机计算节点的虚拟网络地址用作目的地网络地址,针对虚拟网络 使用适当的IPv4网络地址来将该输入通信发往目的地虚拟机计算节点 107d。在将输入通信重新加首部之后,通信管理器模块109d将修改后 的通信转发至目的地虚拟机计算节点。在至少一些实施例中,在将输 入通信转发至目的地虚拟机之前,通信管理器模块109d还可以执行与 安全性有关的附加步骤。例如,通信管理器模块109d可以验证发送方 虚拟机计算节点被授权与目的地虚拟机通信(例如,基于属于相同的 虚拟网络、与相同的客户或其它实体相关联、与其计算节点被授权相 互通信的不同实体相关联,等等)和/或验证输入通信是允许类型的输 入通信,例如,基于通信管理器模块109d先前获得的信息或基于与系 统管理器模块110的交互。
图2A和2B示出了其它实施例,附加的说明性细节涉及对一个或多 个物理网络上经由覆盖网络发生的计算节点之间的通信的管理,例如, 可以被图1的计算节点和网络使用或者用在其它情况下。具体地,图2A 示出了可以在一个或多个中间互连网络250上彼此通信的不同示例计 算节点105和255。在该示例实施例中,计算节点代表多个相异实体(如, 程序执行服务的多个客户)而操作,系统管理器模块290管理具体计算 节点与具体实体和虚拟网络的关联。图2A的示例计算节点包括代表示 例实体Z执行的三个计算节点,这些计算节点是计算节点205a、205c 和255a。此外,其它计算节点代表其它实体而操作,如计算节点205b。
在该示例中,计算节点205由相关的通信管理器模块R210来管 理,计算节点255由相关的通信管理器模块S260来管理。作为一个示 例,计算节点205可以分别是由单个物理计算系统主持的多个虚拟机之 一,通信管理器模块R可以是该物理计算系统的管理程序虚拟机监视 器的一部分。例如,参考图1,计算节点205可以表示虚拟机107a,计 算节点255可以表示虚拟机107d。如果是这样,则通信管理器模块R可 以与图1的通信管理器模块109a相对应,通信管理器模块S可以与图1 的通信管理器模块109d相对应,互连网络250可以与图1的互连网络120 相对应,系统管理器模块290可以与图1的系统管理器模块110相对应。 备选地,计算节点205或255可以取而代之地分别是相异物理计算系统, 例如,与图1的计算系统155a-155n相对应。
图2A的每个通信管理器模块与多个物理网络地址的子网络相对 应,通信管理器模块代表它们相关的计算节点来管理该子网络。例如, 通信管理器模块R被示为与IPv6网络地址范围“::0A:01/72”相关联, IPv6网络地址范围“::0A:01/72”与从 XXXX:XXXX:XXXX:XXXA:0100:0000:0000:0000到 XXXX:XXXX:XXXX:XXXA:01FF:FFFF:FFFF:FFFF的128比特地址 (十六进制的)相对应(表示2的56次幂个唯一的IPv6网络地址),其 中每个“X”可以表示适于具体情况的任何十六进制字符(例如,初 始的64比特对应于具体的组织和网络拓扑,如关于图2C更详细讨论 的)。互连网络250将把具有该范围内的目的地网络地址的任何通信转 发至通信管理器模块R,因此,利用指定范围的初始72比特,通信管 理器模块R可以使用其余的可用56比特来表示该通信管理器模块R管 理的计算节点并确定如何处理目的地网络地址在该范围内的输入通 信。
为了说明图2A所示的示例,计算节点205a、205c和255a是实体Z 的单个虚拟本地网络的一部分,并且分别分派有IPv4网络地址 “10.0.0.2”、“10.0.0.5”和“10.0.0.3”(如果写成点十六进制形式, “10.0.0.2”是“A.0.0.2”)。由于计算节点205b是实体Y的相异虚拟网 络的一部分,所以计算节点205b可以与计算节点205a共享相同的虚拟 网络地址而不混淆。在该示例中,计算节点A205a希望与计算节点G 255a通信,计算节点A205a认为计算节点G255a是具有计算节点A的公 共本地物理网络的一部分,因为在该示例中互连网络250和通信管理器 模块对于计算节点A和G是透明的。具体地,尽管计算节点A和G在物 理上分离,然而通信管理器模块210和260操作为使得在物理互连网络 250上覆盖实体Z的虚拟本地网络,以在这些计算节点之间通信,从而 实际本地网络的缺乏对于计算节点A和G来说是透明的。在该示例中, 物理互连网络250是IPv6底层网络,在该IPv6底层网络上覆盖IPv4虚拟 网络。
为了将通信发送至计算节点G,计算节点A与通信模块R210交换 多种消息220,尽管在所示实施例中不知道通信管理器模块R的存在 (即,可以认为计算节点A向本地网络上的所有其它计算节点发射广 播消息)。具体地,在该示例中,计算节点A首先发送ARP消息请求 220-a,ARP消息请求220-a包括计算节点G的本地网络地址(即, “10.0.0.3”),请求计算节点G的对应硬件地址(例如,48比特MAC或 媒体访问控制地址)。通信管理器模块R拦截ARP请求220-a,并以欺骗 性APR响应消息220-b对计算节点A作出响应,其中欺骗性APR响应消 息220-b包括计算节点G的伪虚拟硬件地址。
为了获得响应消息的伪虚拟硬件地址,通信管理器模块R首先检 验将伪虚拟硬件地址映射到对应IPv6实际物理网络地址的信息的本地 存储212,其中每个伪虚拟硬件地址与具体实体的虚拟网络的IPv4虚拟 网络地址相对应。如果本地存储212不包含计算节点G的条目(例如, 如果没有计算节点205先前与计算节点G通信,如果计算节点G的本地 存储212中的在前条目已过期,等等),则通信管理器模块R与系统管 理器模块290交互,以代表计算节点A得到计算节点G的实际IPv6物理 网络地址。具体地,在该示例中,系统管理器模块290例如通过发起在 实体和虚拟网络的计算节点上程序的执行或者通过获得供应信息292, 来保持供应信息292,其中供应信息292标识每个计算节点实际位于的 位置以及计算节点所属的实体和/或虚拟网络。如关于图2B更详细讨论 的,系统管理器模块确定来自代表节点A的通信管理器模块R的、计算 节点G的实际IPv6物理网络地址的请求是否有效,包括确定计算节点A 是否被授权与计算节点G通信,如果是,则提供该实际IPv6物理网络 地址。
通信管理器模块R从系统管理器模块接收计算节点G的实际IPv6 物理网络地址,并将该接收到的信息存储为计算节点G的新条目的一 部分,作为供稍后使用的映射信息212的一部分(可选地,具有到期时 间和/或其它信息)。此外,通信管理器模块R确定要用于计算节点G的 伪虚拟硬件地址(例如,通过产生标识符,该标识符对于由通信管理 器模块R管理的计算节点来说是本地唯一的),将该伪虚拟硬件地址与 接收到的实际IPv6物理网络地址一起存储作为新映射信息条目的一部 分,并将伪虚拟硬件地址作为响应消息220-b的一部分提供给计算节点 A。通过保持这样的映射信息212,通信管理器模块R可以基于通信管 理器模块R先前提供的伪虚拟硬件地址的使用,来授权稍后从计算节 点A向计算节点G的通信,而不用进一步与系统管理器模块290交互。
在其它实施例中,通信管理器模块R可以与系统管理器模块290交 互,以得到计算节点G的物理网络地址,或在除了接收到ARP请求时 以外的时刻,例如使用实体Z的虚拟网络的虚拟网络地址,响应于发 往计算节点G的任何接收到的通信,来确定该物理网络地址。此外, 在其它实施例中,所使用的虚拟硬件地址可以与该示例中的不同,例 如,在虚拟硬件地址由系统管理器模块290来指定的情况下,在虚拟硬 件地址不是随机的而是存储了特定于对应计算节点的一种或多种类型 信息的情况下,等等。此外,在该示例中,如果系统管理器模块290 和/或通信管理器模块R尚未确定计算节点A被授权向计算节点G发送 通信,则通信管理器模块R不会发送具有伪虚拟硬件地址的响应消息 220-b(例如,不发送响应,发送错误消息响应,等等)。
在该示例中,响应于消息225-2返回的与计算节点G相对应的IPv6 实际物理网络地址是“::0B:02:<Z-identifier>:10.0.0.3”,其中“10.0.0.3” 存储在128比特IPv6地址的后32比特中,“<Z-identifier>”是与实体Z的 虚拟本地网络相对应的计算节点G的24比特实体网络标识符(例如, 系统管理器模块先前分派给该网络的,以反映随机数或与实体相对应 的某一其它号码)。IPv6网络地址的初始72比特存储与具有网络地址范 围“::0B:02/72”的互连网络的子网络或其它部分相对应的“::0B:02” 目的地,其中网络地址范围“::0B:02/72”与通信管理器模块S相对应, 因此,在互连网络250上发送至IPv6目的地网络地址 “::0B:02:<Z-identifier>:10.0.0.3”的通信将被路由至通信管理器模块 S。在其它实施例中,实体网络标识符可以具有其它长度(例如,在 通信管理器模块S具有网络地址范围是64比特而不是56比特的子网络 的情况下,长度是32比特),和/或可以具有其它形式(例如,可以是 随机的,可以存储多种类型的信息,等等),用于子网络的网络地址范 围的其余56比特可以存储其它类型的信息(例如,具体实体的标识符, 虚拟网络的标签或标记等等)。关于图2C描述了与跟覆盖网络一起使 用的示例配置的IPv6实际物理网络地址有关的其它细节。
在接收到来自通信管理器模块R的响应消息220-b之后,计算节点 A创建并发起向计算节点G发送通信,图2A中示为通信220-c。具体地, 通信220-c的首部包括:目的地计算节点G的目的地网络地址(即, “10.0.0.3”)、目的地计算节点G的目的地硬件地址(即,消息220-b 中为计算节点A提供的伪虚拟硬件地址)、发送计算节点A的源网络地 址(即,“10.0.0.2”)、以及发送计算节点A的源硬件地址(即,先前为 计算节点A标识的实际或伪硬件地址)。
通信管理器模块R拦截通信220-c,适当地修改通信,并在互连网 络250上将修改后的通信转发至计算节点G。具体地,通信管理器模块 R从首部提取计算节点G的虚拟目的地网络地址和虚拟目的地硬件地 址,然后从映射信息212中检索与该虚拟目的地硬件地址相对应的IPv6 实际物理网络地址。如上所述,在该示例中,IPv6实际物理网络地址 是“::0B:02:<Z-identifier>:10.0.0.3”,通信管理器模块R创建包含实际 物理网络地址作为目的地地址的新IPv6首部。类似地,通信管理器模 块R从接收到的通信的首部中提取计算节点A的虚拟源网络地址和虚 拟源硬件地址,获得与该虚拟源硬件地址相对应的IPv6实际物理网络 地址(例如,从映射信息212中所存储的条目中获得该信息;在先前没 有获得该信息的情况下,通过与系统管理器模块290交互,等等),并 且包括该实际物理网络地址作为新IPv6首部的源网络地址。在该示例 中,计算节点A的IPv6实际物理网络地址是 “::0A:01:<Z-identifier>:10.0.0.2”,如果该IPv6实际物理网络地址用于 通信管理器模块S代表计算节点G的恢复,则将被路由至通信管理器模 块R,以转发至计算节点A。然后通信管理器模块R通过修改通信220-c 来创建新的通信230-3,以便将在前的IPv4首部替换成新的IPv6首部 (例如,根据SIIT)。包括适当地向信IPv6首部提供其他信息,用于新 通信(例如有效载荷长度、业务类别分组优先级等)。因此,在不将先 前通信220-c封装在新通信230-3内的情况下,新的通信230-3包括与在 前通信220-c相同的内容或有效载荷。此外,对于这种重新加首部,不 需要访问有效载荷内的特定信息,例如以允许通信管理器模块R在不 需要解密有效载荷的情况下对其中加密了该有效载荷的通信进行处 理。
在至少一些实施例中,在向通信管理器模块S转发通信230-3之前, 通信管理器模块R可以执行一个或多个动作以例如基于映射信息212 确定通信220-c被授权向计算节点G转发通信230-3,其中映射信息212 包括在通信220-c中使用的源和/或目的地虚拟硬件地址的有效条目。 在其它实施例中,可以并不由通信管理器模块R针对每个输出通信来 执行这种授权确定,或者可以取而代之地以其它方式来执行这种授权 确定(例如,基于发送方节点和目的地节点是相同虚拟网络的一部分 或者与相同的实体相关联或者被授权为相互通信,基于系统管理器模 块290的交互,以得到通信的授权确定,等等)。
在通信管理器模块R将修改后的通信230-3转发至互连网络250之 后,互连网络250使用通信的物理IPv6目的地网络地址将通信路由至通 信管理器模块S。在这种情况下,互连网络250的设备不使用包括嵌入 式实体网络标识符或嵌入式虚拟网络地址的目的地网络地址部分,因 此不需要特殊配置来转发这样的通信,也不需要知道虚拟网络覆盖在 物理互连网络上。
当通信管理器模块S经由互连网络250接收通信230-3时,通信管理 器模块S执行与通信管理器模块R的动作类似的动作,但是相反地执 行。具体地,在至少一些实施例中,通信管理器模块S例如经由与系 统管理器模块的一次或多次交互240,验证通信230-3合法且被授权全 向计算节点G转发。如果确定通信被授权(或如果没有执行授权确定), 则通信管理器模块S适当地修改通信230-3并将修改后的通信转发至计 算节点G。关于图2B讨论了与通信230-3的验证有关的其它细节。
具体地,为了修改通信230-3,通信管理器模块S从与计算节点G 相对应的映射信息262检索包括由计算节点G使用的虚拟硬件地址的 信息(或例如针对新计算节点,在虚拟硬件地址先前不可用的情况下 产生这样的虚拟硬件地址)。然后通信管理器模块S通过修改通信230-3 以便将在前的IPv6首部替换成新的IPv4首部(例如,根据SIIT),来创 建新的通信245-e。新的IPv4首部包括计算节点G的虚拟网络地址和虚 拟硬件地址,作为新IPv4首部的目的地网络地址和目的地硬件地址, 包括计算节点A的虚拟网络地址和伪虚拟硬件地址,作为新IPv4首部 的源网络地址和源硬件地址,并且适当地包括用于新通信的其它信息 (例如,总长度、首部校验和等等)。通信管理器模块S针对计算节 点A而使用的伪虚拟硬件地址可以与通信管理器模块R针对计算节点 A而使用的硬件地址相同,但是在其它实施例中,每个通信管理器模 块可以保持与其它通信管理器模块使用的信息无关的单独硬件地址信 息(例如,在通信管理器模块S响应于来自计算节点255的针对计算节 点A的硬件地址的在前ARP请求,针对计算节点A产生该通信管理器模 块S自己的伪虚拟硬件地址的情况下)。因此,新的通信245-e包括与在 前通信220-c和230-3相同的内容或有效载荷。通信管理器模块S将新的 通信245-e转发至计算节点G。
在接收到通信245-e之后,计算节点G使用通信245-e中计算节点A 的源虚拟网络地址和源虚拟硬件地址,来确定向计算节点A发送响应 通信245f。通信管理器模块S接收通信245-e,并以与以上关于通信220-c 和通信管理器模块R所描述的方式相类似的方式来处理该通信245-e。 具体地,通信管理器模块S可选地验证计算节点G被授权向计算节点A 发送通信,然后通过使用映射信息262产生新的IPv6首部来修改通信 245f以创建通信230-6。在将通信230-6转发至互连网络250之后,将通 信发送至通信管理器模块R,通信管理器模块R采用与关于通信230-3 和通信管理器模块S而描述的方式相类似的方式来处理输入通信。具 体地,通信管理器模块R可选地验证计算节点G被授权向计算节点A发 送通信并且通信230-6实际上是由计算节点G发送的,然后通过使用映 射信息212产生新的IPv4首部来修改通信230-6以创建通信220-d。通信 管理器模块R然后将通信220-d转发至计算节点A。
以这种方式,基于在实际物理互连网络上覆盖虚拟本地网络而不 封装通信的通信管理器模块,以及基于使用底层物理网络地址中的嵌 入式虚拟网络地址,计算节点A和G可以使用基于IPv4的虚拟本地网络 来相互通信,而无需对这些计算节点进行任何特殊配置以处理实际中 介的基于IPv6的底层互连网络,互连网络250可以转发IPv6通信而无需 对互连网络的任何连网设备进行任何特殊配置。
此外,尽管关于图2A没有示出,然而在至少一些实施例中,通信 管理器模块可以代表相关联计算节点来接收和处理其它类型的请求和 通信。例如,通信管理器模块可以采取多种动作来支持这些通信管理 器模块所管理的计算节点的广播和组播能力。作为一个示例,在一些 实施例中,可以从用在信令层2原始封装的通信中的每个实体网络标识 符前缀中,保留特殊的组播组虚拟网络地址后缀。类似地,对于链路 本地广播和组播通信,可以保留特殊组播组/64前缀(例如, “FF36:0000::”),而不同的目的地地址前缀(例如,“FF15:0000::”) 可以用于其它组播通信。因此,例如,可以针对128比特IPv6地址的前 64比特保留的对应64比特前缀来封装组播和广播IP帧,其余64比特以 类似于上述方式的方式包括目的地计算节点的虚拟IPv4网络地址和目 的地计算节点的实体网络标识符。备选地,在其它实施例中,一种或 多种类型的广播和/或组播通信可以各自都具有对应的保留标记或其 它标识符,所述保留标记或其它标识符具有不同的值或形式,包括使 用不同数目的比特和/或以不同于网络地址前缀的方式存储。当计算节 点发送广播/组播通信时,可以标识已为该组播/广播组定制的具有相 关联计算节点的任何通信管理器模块(例如,如,响应于这些相关的 计算节点所发送的先前联合通信,基于已为该组定制的那些通信管理 器模块),发送计算节点的通信管理器模块可以将通信转发至组中的每 个标识的通信管理器模块,以转发至这些通信管理器模块所管理的合 适的计算节点。此外,在一些实施例和情况中,至少一些广播或组播 通信可以不由通信管理器模块来发送,如,具有IPv4前缀224.0/16或另 一指定前缀或其它标记或标识符的通信。
此外,将意识到,通信管理器模块可以便于与通信管理器模块相 关联的多个计算节点之间的通信。例如,关于图2A,计算节点205a可 以希望向计算节点205c发送附加通信(未示出)。如果是这样,则通信 模块R将执行与先前关于通信管理器模块R对输出通信220-c的处理以 及通信管理器模块S对输入通信230-3的处理而描述的动作相类似的动 作,但是不用对附加通信重新加首部以使用IPv6首部,因为通信不会 在互连网络上传播。
尽管关于图2A未示出,然而在至少一些实施例中,可以以不同方 式来处理其它类型的请求和通信。例如,在至少一些实施例中,实体 可以具有一个或多个计算节点,所述一个或多个计算节点由通信管理 器模块来管理,并且是该实体的虚拟网络的一部分,实体还可以具有 一个或多个其它不受管理的计算系统(例如,直接连接至互连网络250 和/或本身使用IPv6网络寻址的计算系统),这些计算系统不具有管理 这些系统的通信的相关通信管理器模块。在至少一些实施例中,如果 实体希望这些不受管理的计算系统是虚拟网络的一部分或者与虚拟网 络的受管理的节点通信,则受管理的计算节点与不受管理的计算系统 之间的通信可以由管理一个或多个计算节点的通信管理器模块来处 理。例如,在这种情况下,如果为这种不受管理的计算系统提供这种 受管理的计算节点的实际IPv6目的地网络地址(例如,在该示例中, 受管理的计算节点A的“::0A:01:<Z-identifier>:10.0.0.2”),则不受管理 的计算系统可以使用该目的地网络地址经由互连网络250向计算节点 A发送通信,如果通信管理器模块R被配置为从该不受管理的计算系统 (或者从任何不受管理的计算系统)接受通信,则通信管理器模块R 将向计算节点A转发这些通信(例如,在以类似于上述方式的方式对 通信重新加首部之后)。此外,通信管理器模块R可以产生伪虚拟网络 地址以与这种不受管理的计算系统相对应,将该伪虚拟网络地址映射 到不受管理的计算系统的实际IPv6网络地址,并向计算节点A提供伪 虚拟网络地址(例如,作为从不受管理的计算系统转发至计算节点A 的通信的源地址),从而允许计算节点A向不受管理的计算系统发送通 信。
类似地,在至少一些实施例和情况下,至少一些受管理的计算节 点和/或这些计算节点的虚拟网络可以被配置为允许与不是虚拟网络 一部分的其它设备通信,如,其它不受管理的计算系统或其它类型的 网络设施设备,所述其它不受管理的计算系统或其它类型的网络设施 设备不具有管理它们之间通信的相关通信管理器模块。在这种情况下, 如果受管理的计算节点和/或虚拟网络被配置为允许与这种其它不受 管理的设备通信,如,可以类似地具有这种计算节点的实际IPv6目的 地网络地址(例如,该示例中对于计算节点A是 “::0A:01:<Z-identifier>:10.0.0.2”)的不受管理的设备,则允许不受管 理的设备使用该目的地网络地址经由互连网络250向计算节点A发送 通信,其中通信管理器模块R然后将这些通信转发至计算节点A(例如, 在以类似于上述方式的方式对通信重新加首部之后)。此外,通信管理 器模块R可以类似地管理从计算节点A到这种不受管理的设备的输出 通信,以允许计算节点A发送这种通信。
此外,如上所述,通信管理器模块以多种方式管理相关联计算节 点的通信,包括在一些实施例中通过向虚拟网络地址的计算节点分派 虚拟网络地址,和/或通过从与通信管理器模块相对应的底层物理网络 地址范围向受管理的计算节点分派底层物理网络地址,来管理相关联 计算节点的通信。在其它实施例中,一些这样的动作可以取而代之地 由虚拟网络的一个或多个计算节点来执行,例如以便允许虚拟网络的 DHCP(动态主机配置协议)服务器或其它设备为虚拟网络的具体计 算节点指定虚拟网络地址和/或底层物理网络地址。在这样的实施例 中,通信管理器模块从虚拟网络设备获得这种配置信息,并相应地更 新其映射信息(在一些实施例中,还可以更新一个或多个系统管理器 模块,所述一个或多个系统管理器模块保持关于与虚拟网络相关联的 计算节点的信息)。
此外,在一些实施例和情况下,受管理的计算节点可以自身被当 作虚拟路由器或假想路由器,其中,有多个虚拟网络地址与该受管理 的计算节点相关联,该受管理的计算节点向与这多个虚拟网络地址相 对应的其它计算节点转发通信。在这样的实施例中,对该受管理的计 算节点的通信加以管理的通信管理器模块采用与上述方式相类似的方 式来处理向该计算节点的通信以及从该计算节点的通信。然而,通信 管理器模块配置有与受管理的计算节点路由器相对应的多个虚拟网络 地址,使得向这多个虚拟网络地址中任何虚拟网络地址的输入通信都 被转发至受管理的计算节点路由器,并且使得从受管理的计算节点路 由器的输出通信具有与经由受管理的计算节点路由器发送通信的具体 计算节点相对应的底层源物理网络地址。以这种方式,具体客户或其 它实体的物理路由器或其它连网设备可以针对为该实体实现的虚拟网 络而以虚拟方式表示。
图2B示出了关于图2A而讨论的计算节点和通信中的一些,但是关 于通信管理器模块210和260和/或系统管理器模块290为授权计算节点 之间的通信而执行的一些动作提供了附加的细节。例如,在计算节点 A发送了消息220-a以请求计算节点G的硬件地址之后,通信管理器模 块R可以执行与系统管理器模块290的一次或多次交互225,以便例如 基于计算节点A是否被授权与计算节点G通信,来确定是否提供该信 息,以及基于互连网络250来确定计算节点G的对应底层物理网络地 址。如果通信管理器模块R已经先前获得了该信息并且该信息保持有 效(例如,尚未过期),则可以不执行交互225。在该示例中,为了获 得与计算节点G相对应的期望物理网络地址,通信管理器模块R向系统 管理器模块290发送消息225-1,消息225-1包括计算节点A和G的虚拟 网络地址,并且包括每个输入节点的实体网络标识符,在该示例中所 述实体网络标识符是实体Z的实体网络标识符(例如,32比特或24比 特唯一标识符)。在至少一些实施例中,通信管理器模块R可以使用任 播寻址和路由方案向系统管理器模块290发送消息225-1,使得可以实 现多个系统管理器模块(例如,针对包括通信管理器模块和相关联计 算节点的每个数据中心实现一个)并且在这多个系统管理器模块中选 择合适的一个(例如,最近的,最没有得到充分使用的,等等)来接 收和处理消息。在系统管理器模块290确定计算节点A被授权与计算节 点G通信之后(例如,基于具有相同实体网络标识符;基于具有实体 网络标识符的计算节点A,其中所述实体网络标识符被授权与计算节 点G的实体网络标识符的计算节点通信;基于相关联计算节点A提供的 或与相关联计算节点A相关联的、指示计算节点A被授权执行这种通信 的其它信息;基于计算节点G提供的或与计算节点G相关联的、指示计 算节点A被授权执行这种通信的信息,等等),系统管理器模块290返 回响应消息225-2,响应消息225-2包括与计算节点G相对应的期望实际 物理网络地址。此外,在至少一些实施例中,在发送期望实际物理网 络地址之前,系统管理器模块290还可以例如基于计算节点A是与通信 管理器模块R相关联的计算节点之一,来验证通信管理器模块R被授权 代表计算节点A发送消息225-1。
在其它实施例中,通信管理器模块R可以执行如上述系统管理器 模块290所执行的动作的一些或全部,例如以保持不同计算节点的供应 信息和/或确定计算节点A是否被授权向计算节点G发送通信,或取而 代之地在一些或所有情况下可以不执行这种授权确定。此外,在其它 实施例中,可以例如基于通信的类型、通信的规模、通信的时间等等, 针对两个或更多个计算节点之间的通信来执行其它类型的授权确定。
如以上关于图2A描述的,在通信管理器模块S经由互连网络250 接收到以计算节点G为目的地端通信230-3时,通信管理器模块S可以 执行与系统管理器模块290的一次或多次交互240,以便确定是否授权 该通信。具体地,在该示例中,为了验证通信230-3有效且被授权向计 算节点G转发,通信管理器模块S首先从通信230-3的首部中提取实际 IPv6目的地网络地址和实际IPv6源网络地址,然后从每个所提取的 IPv6网络地址中检索嵌入式IPv6实体网络标识符和虚拟网络地址。通 信管理器模块S接下来与系统管理器模块290交换消息240,以代表计 算节点G获得发送计算节点A的对应实际IPv6物理网络地址,包括消息 240-4,消息240-4包括所提取的计算节点A和G的虚拟网络地址以及每 个计算节点的实体网络标识符。在至少一些实施例中,通信管理器模 块S可以使用任播寻址和路由方案向系统管理器模块290发送消息 240-4。
系统管理器模块290接收消息240-4,并返回响应消息240-5,响应 消息240-5包括与计算节点A相对应的实际物理网络地址,在该示例中 该实际物理网络地址是“::0A:01:<Z-identifier>:10.0.0.2”。如以上关于 消息225-1和225-2描述的,在一些实施例中,系统管理器模块290和/ 或通信管理器模块S还可以执行一种或多种其它类型的授权确定动 作,例如以确定计算节点G被授权与计算节点A通信、通信管理器模块 S被授权代表计算节点G发送消息240-4,等等。然后通信管理器模块S 验证所返回的消息240-5中的物理网络地址与从通信230-3的首部提取 的源IPv6网络地址相匹配,以防止试图使消息虚假地像是来自计算节 点A,而该消息实际上从其它位置的其它计算节点发送的。通信管理 器模块S可选地存储消息240-5中该接收到的信息作为映射消息262中 计算节点A的条目的一部分以供稍后使用,以及存储计算节点A的虚拟 网络地址和计算节点A的伪虚拟硬件地址。
在其它实施例中可以执行除了关于图2A-2B而讨论的动作以外的 各种其它类型动作,包括除了IPv4和IPv6以外的其它类型的网络寻址 协议。
图2C示出了与上述技术一起使用的示例IPv6物理底层网络地址 配置272,其中示例网络地址被配置为使得将虚拟网络地址和其它信息 嵌入底层网络地址中,以便使得可以在底层网络上实现覆盖网络。如 上所述,该示例IPv6网络地址配置使用128比特网络地址空间来存储多 种信息,其中初始的64比特存储地址的IPv6网络部分,后续的64比特 存储地址的接口标识符(或“主机”)部分。
在该示例中,IPv6地址的初始64比特网络部分包括针对比特0到31 的32比特标识符272a,32比特标识符272a与互联网注册操作者代表互 联网数字分配机构(在该实例中,基于从区域互联网注册RIPE NNC 或欧洲IP资源网络协调中心)向这样的组织分派的公司或其它组织标 识符相对应。例如,在一些实施例中,操作程序执行服务的组织或使 用上述技术的其它组织可以具有相关的标识符272a。地址的初始64比 他网络部分还包括32比特信息组272b,在该示例中,32比特信息组272b 与由多个计算节点组成的组的拓扑相对应,所述由多个计算节点(例 如子网或其它网络部分)组成的组是代表标识符在信息272a中被指出 的组而提供的。如上所述,在至少一些实施例中,地址的初始64比特 网络部分表示底层网络的与多个相关联计算节点的位置相对应的部分 网络地址,如,底层网络的子网络或其它部分。具体地,在至少一些 实施例中,初始64比特网络地址部分与具体通信管理器模块相对应, 具体通信管理器模块表示由通信管理器模块管理的多个相关联计算节 点,如,基于对与64比特接口标识符地址部分的一些或全部相对应的 网络地址范围进行管理以便表示多种受管理的计算节点的通信管理器 模块。在其它实施例中,部分网络地址可以以不同数目个比特(例如, 72个)来表示和/或使用地址中除了前缀以外的部分来表示。
在不同实施例中,32比特拓扑信息组272b可以以多种方式表示多 种信息,其中拓扑信息组274和276示出了拓扑信息的两种备选实例配 置。具体地,在274和276的示例中,前两个比特(总体IPv6地址的比 特32和33)指示拓扑信息的具体版本,使得其余30比特的含义可以随 时间改变。关于示例274,所示的各个比特可以分别指示不同的地理位 置、地区内的地理区域、地理区域内的计算机机架、以及计算机机架 内的物理计算系统节点。在该示例中,用于地区信息的6比特可以表示 64个唯一值,用于区域信息的8比特可以针对每个地区值表示256个唯 一值,用于机架信息的8比特可以针对每个区域值表示256个唯一值, 用于物理计算系统节点信息的8比特可以针对每个机架值表示256个唯 一值。相反,关于示例276,仅示出了地区和机架信息,但是地区和机 架信息各自都具有附加信息以表示这些信息类型,例如以使用14比特 具有16,384个唯一地区值,以及针对每个地区值使用16比特具有 65,536个唯一机架值。将意识到,在其它实施例中可以以其它方式来 表示拓扑信息。
在该示例中,IPv6地址的64比特接口标识符部分被配置为存储多 种类型的信息,包括与具体计算节点时隙相对应的6比特标识符272c (例如,与IPv6地址的初始64比特网络部分相对应的具体物理计算系 统上的具体虚拟机计算节点)、两个1比特标识符272f和272g、用于嵌 入实体网络标识符的24比特标识符272d(例如,以参考具体虚拟网络)、 以及用于嵌入IPv4网络地址的32比特标识符272e(例如,虚拟网络地 址)。用于时隙标识符的6比特可以表示大约64个唯一值,用于嵌入式 实体网络标识符的24比特可以表示大约1680万个唯一值,用于嵌入式 IPv4网络地址的32比特可以表示大约43亿个唯一值。在该示例中,1 比特标识符272g(IPv6的比特70)表示U/L全球/本地比特,在一些实 施例中,所述U/L全球/本地比特指示地址是全球承认的或本地承认的, 1比特标识符272f(IPv6地址的比特71)表示I/G单独/组比特,在一些 实施例中,I/G单独/组比特可以指示地址是与单个计算节点相对应还 是与多计算节点组成的组相对应(例如,作为广播或组播的一部分)。 在至少一些实施例中,I/G比特被设置为0,当使用对应通信的虚拟转 发时,U/L比特被设置为1,例如以用于经由假想计算节点路由器的虚 拟子网划分,和/或指示具有该目的地地址的输入通信被传递至与6比 特时隙标识符的值相对应的计算节点,而不是与32比特Ipv4嵌入式网 络地址和24比特实体网络标识符的值相对应的计算节点。可以理解, 在其它实施例中可以以其它方式来表示接口标识符信息。
图3是示出了示例计算系统的方框图,该示例计算系统适于执行 用于管理节点之间的通信的系统的实施例。具体地,图3示出了由计算 系统和互连网络组成的组399,如,数据中心或由相同位置的计算节点 组成的其它组。在一些实施例中,组399中的计算系统的一些或全部可 以由程序执行服务来使用,程序执行服务代表客户或其它实体来执行 程序。组399包括系统管理器计算系统300、能够执行一个或多个虚拟 机的主计算系统350、与主计算系统350类似的其它主计算系统390、以 及管理主计算系统390并且在计算系统390之一上或在另一计算系统 (未示出)上执行的可选的通信管理器模块360。系统管理器计算系统 300和主计算系统350和390经由互连网络380彼此连接,互连网络包括 连网设备362和其它连网设备(未示出)。网络380可以是互连网络,互 连网络可以联合组399的多个不同的物理网络(未示出)并且可以提供 对外部网络(未示出)和/或系统(如,计算系统395)的访问。在所 示的示例中,连网设备362在网络380与主计算系统350和390之间提供 网关。在一些实施例中,连网设备362可以例如是路由器或桥接器。
系统管理器计算系统300用于管理组399内虚拟网络的配置以及 提供与计算节点上程序的提供、初始化和执行有关的其它功能。系统 管理器计算系统300包括CPU 305、多种I/O组件310、存储装置330和 存储器320。I/O组件包括显示器311、网络连接312、计算机可读介质 驱动313和其它I/O设备315(例如,鼠标、键盘等)。
主计算系统350用于主持一个或多个虚拟机,例如以用作代表不 同客户执行程序的计算节点。主计算系统350包括CPU 352、多种I/O 组件353、存储装置351和存储器355。虚拟机通信管理器模块356和一 个或多个虚拟机358在存储器355中执行,其中模块356管理相关虚拟机 计算节点358的通信。通信管理器模块356在存储装置上保持与计算节 点358和其它计算节点有关的多种映射信息354,例如,以类似于图 2A-2B的映射信息212和262的形式。其它主计算系统390的结构可以与 主计算系统350的结构类似,或者取而代之地,主计算系统350和390 中的一些或全部可以通过在不使用所主持的虚拟机的情况下执行程序 来直接起到计算节点的作用。在典型布置中,组399可以包括上百个或 上千个主计算系统,如,这里所示的主计算系统,这些主计算系统被 组织成大量的不同物理网络。
系统管理器模块340的实施例在计算系统300的存储器320中执 行。在一些实施例中,系统管理器模块340可以作为主计算系统350上 的一个或多个虚拟机计算节点的一部分来接收要执行的一个或多个程 序的指示,在一些情况下,可以选择要执行程序的计算节点。系统管 理器340然后可以基于例如与程序相关联的客户身份和/或其它因素来 确定与计算节点相关联的虚拟网络。在一些情况下,不同虚拟网络的 结构和/或关系可以由供应数据库332来提供,其中模块340保持该供应 数据库332以存储与跟不同客户和/或执行程序和计算节点相关联的物 理和虚拟资源(例如,连网、硬件等等)有关的信息。然后系统管理 器模块340发起在计算节点上执行程序,并可选地向与这些计算节点相 关联的通信管理器模块提供与跟这些计算节点相关联的虚拟网络和/ 或实体有关的信息。在其它实施例中,可以以其它方式来发起计算节 点上执行程序,系统管理器模块340可以取而代之地仅接收并保持与这 些计算节点、程序、相关实体和相关虚拟网络有关的信息。
如其它地方更详细讨论的,通信管理器模块356和360(以及管理 其它相关联计算节点(未示出)的其它通信管理器模块(未示出))和 系统管理器模块340可以以多种方式交互以管理计算节点之间的通信。 例如,这种交互可以通过在网络380上以及可选地在一个或多个外部网 络(未示出)上覆盖虚拟网络而不封装通信,使计算节点358和/或其 它计算节点能够在虚拟网络上相互通信而不用对计算节点作出任何特 殊配置。
将意识到,计算系统300、350、390和395以及连网设备362仅仅 是说明性的,而不旨在限制本发明的范围。例如,计算系统300和/或 350可以连接至未示出的其它设备,包括通过组399外部的一个或多个 网络(如,互联网)来连接或经由环球网(“Web”)来连接。更具体 地,计算节点或其它计算系统可以包括可以交互并执行上述类型功能 的硬件或软件的任意组合,这些硬件或软件包括但不限于台式计算机 或其它计算机、数据库服务器、网络存储设备和其它网络设备、PDA、 蜂窝电话、无线电话、寻呼机、电子组织器、互联网设施、基于电视 的系统(例如,使用机顶盒和/或个人/数字录像机)以及具有一定通 信能力的各种其它客户产品。此外,在一些实施例中,所示模块提供 的功能可以组合在更少的模块中或分布在另外的模块中。类似地,在 一些实施例中,可以不提供所述模块中一些模块的功能和/或其它附加 功能可以是可用的。
还将意识到,尽管将许多项目示为在使用时存储于存储器中或存 储装置上,然而为了存储器管理和数据完整性,这些项目或其一部分 可以在存储器与其它存储设备之间传递。备选地,在其它实施例中, 这些软件模块和/或系统中的一些或全部可以在另一设备上的存储器 中执行,并且经由计算机间通信来与所示计算系统通信。此外,在一 些实施例中,系统和/或模块中的一些或全部可以以其它方式来实现或 提供,如,至少部分地在固件和/或硬件中实现或提供,所述固件和/ 或硬件包括但不限于一个或多个特定用途集成电路(ASIC)、标准集 成电路、控制器(例如,通过执行适当指令,包括微控制器和/或嵌入 式控制器)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD) 等等。模块、系统和数据结构中的一些或全部可以(例如,以软件指 令或结构化数据的形式)存储在要由合适驱动器来读取或经由适当连 接来读取的计算机可读介质上(如,硬盘、存储器、网络或便携式产 品)。系统、模块和数据结构还可以以所产生的数据信号的形式在多种 计算节可读传输介质上传输,所述接收机可读传输介质包括基于无线 的介质和基于有线/线缆的介质,并且可以采取多种形式(例如,作为 单个或复用模拟信号的一部分,或者作为多个离散数字分组或帧)。在 其它实施例中,这样的计算机程序产品也可以采取其它形式。相应地, 可以以其它计算机系统配置来实践本发明。
图4是系统管理器例程400的示例实施例的流程图。例程可以例如 通过执行图1的系统管理器模块110、图2A-2B的系统管理器模块290和 /或图3的系统管理器模块340来提供,以帮助管理一个或多个中间网络 上多个计算节点之间的通信,以及在一些情况下执行其它类型的操作。 在至少一些实施例中,例程可以作为对公共中间网络上多个不同实体 的通信进行配置的系统的一部分来提供,如,针对多个客户在分布的 计算节点上执行程序的程序执行服务的一部分,其中通信被配置为使 得每个计算节点可以使用特定于该实体的专用虚拟本地网络透明地与 其它相关联计算节点通信。此外,例程可以例如通过帮助通信管理器 模块确定通信是否被授权,来便于防止向目的地计算节点提供未授权 的通信。
在所示的实施例中,例程在方框405处开始,在方框405,接收请 求。例程继续进行至方框410,以确定请求的类型。如果确定请求的类 型用于使计算节点与具体指示的实体相关联,例如如果计算节点代表 该实体正在执行或要执行一个或多个程序,则例程进行至方框415以使 该计算节点与该指示的实体相关联。在一些实施例中,例程还可以例 如基于指示的实体所提供的与要被发起执行的一个或多个程序有关的 信息,来确定要与指示的实体相关联的一个或多个计算节点,而在其 它实施例中,可以以其它方式来选择这样的计算节点和/或在这些计算 节点上执行合适的程序。此外,如其它地方更详细描述的,在一些实 施例中,计算节点中的一个或多个可以各自是由一个或多个物理计算 系统主持的虚拟机。然后例程进行至方框420,以存储对计算节点以及 其与指示的实体的关系的指示。具体地,在所示实施例中,例程存储 于计算节点相对应的物理网络地址的指示以及相关实体的指示。如其 它地方更详细描述的,在一些实施例中,与计算节点相对应的物理网 络地址可以是特定于单个计算节点的物理网络地址,而在其它实施例 中,可以取而代之地是指例如可以由相关的通信管理器模块来管理子 网络或由多个计算节点组成的其它组。此外,在具体实体具有多个不 同虚拟网络的情况下,例程可以接受与计算节点相关联的一个或多个 虚拟网络的指示或确定所述一个或多个虚拟网络,并类似地将该信息 与跟计算节点有关的其它信息一起存储。如上所述,图2C示出了可以 如何配置这种物理网络地址的一个示例。
如果在方框410中确定接收到的请求的类型是例如通信管理器模 块代表另一受管理的计算节点发出的对计算节点的虚拟网络地址的地 址解析的请求,则例程继续进行至方框425,在方框425,例程以一种 或多种方式来确定请求是否被授权,例如,基于被代表发请求的受管 理计算节点是否被授权向被请求虚拟网络地址解析的计算节点发送通 信(例如,基于两个计算节点所属的虚拟网络),基于被代表发请求的 受管理计算节点是否是目前作为所配置的虚拟网络的一部分的有效计 算节点,和/或基于请求是否是从对被代表发请求的所指示的计算节点 进行实际管理的通信管理器模块接收到的。如果确定请求被授权,则 例程进行至方框430,在方框430,例程获得感兴趣的虚拟网络地址以 及实体的实体网络标识符或其它标识符(例如,唯一数字或字母数字 标记),如与在方框405中接收到的请求一起包含的。然后例程进行至 方框435,以检索所存储的使跟该实体网络标识符相对应的虚拟网络的 虚拟网络地址与跟计算节点相对应的位置的物理网络地址相关联的信 息,所述虚拟网络地址和物理网络地址例如可以是关于方框420先前存 储的虚拟网络地址和物理网络地址。在方框435之后,例程进行至方框 440,以向请求方提供物理网络地址的指示。尽管本文未示出,然而如 果在方框425中确定请求未被授权,则例程可以例如通过意错误消息对 在方框405接收到的请求作出响应,或者不对该接收到的请求作出响 应,来不针对该请求执行方框430-440。此外,在其它实施例中,例程 可以执行一个或多个测试,以在用所请求的信息作出响应之前证实接 收到的请求,例如以便验证发起请求的计算节点被授权接收该信息。
如果在方框410确定接收到的请求是另一类型的,则例程继续进 行至方框450以适当地执行另一指示的操作。例如,在一些实施例中, 例如在具体计算节点先前与具体实体和/或虚拟网络相关联但是该关 联结束(例如,在计算节点上针对该实体而执行的一个或多个程序终 止)的情况下,例程可以接收请求已更新所存储的与具体计算节点相 关联的信息。例程还可以执行与管理由多个计算节点组成的系统有关 的多种其它动作,如在其它地方更详细讨论的。此外,尽管本文未示 出,然而在其它实施例中,例程有时可以执行其它类型的动作,以便 例如在经过预定义的时间段之后,执行偶尔的内务操作,以适当地查 阅和更新所存储的信息。此外,如果例如关于接收到的针对虚拟网络 地址的地址解析请求检测到可能的证实问题,则例程可以执行多种动 作以信号通知错误和/或适当地执行其它对应动作。
在方框420、440和450,例程继续进行至方框495,以确定是否继 续。如果是,则例程返回方框405,否则,继续进行至方框499并结束。
图5是通信管理器模块500的示例实施例的流程图。例程可以通过 例如执行图1的通信管理器模块109a、109d和/或150、图2A-2B的通信 管理器模块210和/或260、和/或图3的通信管理器模块356和/或360来提 供,例如以便管理向相关的由一个或多个计算节点组成的组的通信以 及从该组的通信,从而在一个或多个共享的中间网络上提供专用虚拟 网络,所述管理包括确定是否授权向受管理的计算节点和/或从受管理 的计算节点的通信。
例程在方框505开始,在方框505,接收到节点通信或其它消息的 指示。例程继续进行至510,以确定通信或其它消息的类型并相应地继 续进行。如果在方框510确定消息是来自针对网络地址解析的相关受管 理计算节点的请求,如,ARP请求,则例程继续进行至方框515以识别 请求中指示的感兴趣的虚拟网络地址。然后例程进行至方框520,以向 系统管理器模块发送针对与提供请求的计算节点相关联的虚拟网络 (或备选地,实体)的所指示的虚拟网络地址进行虚拟网络地址解析 的请求,如关于图4的方框425-440讨论的。如其它地方更详细讨论的, 在一些实施例中,例程可以跟踪与跟每个受管理的计算节点相关联的 虚拟网络和/或实体有关的信息,而在其它实施例中,该信息可以取而 代之地被计算节点和/或系统管理器模块提供至例程,或者取而代之地 系统管理器模块可以在不将该信息提供至当前例程或者当前例程不跟 踪该信息的情况下跟踪并存储该信息。尽管本文未示出,然而在其它 实施例和情况下,可以以其它方式来处理该地址解析请求。例如,如 果由具体通信管理器模块来管理的计算节点针对也由该通信管理器模 块来管理的另一节点提供地址解析请求,则例程可以取而代之地能够 例如基于例程本地存储的信息在不与系统管理器模块交互的情况下对 该请求作出响应。此外,尽管在所示实施例中接收到的请求是提供与 所指示的网络层地址相对应的计算节点链路层硬件地址的请求,然而 在其它实施例中,地址解析请求可以具有其它形式。
在所示实施例中,例程接下来进行至方框525,以接收来自系统 管理器模块的包括物理网络地址的响应,并本地存储将该物理网络地 址映射到唯一伪硬件地址以稍后供例程使用的信息(例如,基于由例 程产生的或在响应中提供的伪虚拟硬件地址)。如上所述,图2C示出 了可以如何配置物理网络地址的一个示例。然后例程向发请求的计算 节点提供伪硬件地址,发请求的计算节点将该伪硬件地址用作向具有 所指示的虚拟网络地址的计算节点发送的通信的一部分。如其它地方 更详细讨论的,在一些实施例中,所提供的物理网络地址响应可以包 括特定于感兴趣的所指示的计算节点的物理网络地址,而在其它实施 例中,物理网络地址可以与所指示的计算节点所属的子网络或由多个 计算节点组成的组相对应,例如与管理这些其它计算节点的另一通信 管理器模块相对应。例程然后进行至方框530,以确定是否执行方框 515-525作为处理输出节点通信的一部分,如关于方框540-555讨论的, 如果是,则继续进行至方框550。尽管本文未示出,然而在一些实施例 中,例程可以取而代之地接收来自系统管理器模块的错误响应(例如, 基于发请求的节点没有被授权与所指示的目的地计算节点通信)或接 收不到响应,如果是这样,则可以不向发送计算节点发送任何响应或 者可以向该计算节点发送错误消息。
如果在方框510中确定通信或其它消息的类型是从例程所管理的 计算节点到不由该例程管理的另一所指示的远程目的地计算节点的输 出节点通信,则例程继续进行至方框540,以从通信首部识别目的地计 算节点的所指示的硬件地址。在方框545,例程然后确定目的地硬件地 址是否是先前映射到与目的地计算节点相对应的物理网络地址的伪硬 件地址,如,以上关于方框525讨论的。如果不是,则在一些实施例中, 例程继续进行至方框515,以执行方框515-525,从而针对输出节点通 信确定该对应的物理网络地址,而在其它实施例中,可以不执行该动 作(例如,如果所指示的硬件地址不是映射的伪地址,则例程可以例 如通过将错误消息发送会发送方节点使输出节点通信失败)。如果所指 示的硬件地址是映射的伪地址,或者没有执行检验,则例程进行至方 框550,以检索映射到伪硬件地址的物理网络地址,并使用所检索的地 址,根据发送计算节点与目的地计算节点之间的一个或多个中间网络 的网络地址协议,来重写通信首部。如上所述,图2C示出了可以如何 配置物理网络地址的一个示例。首部重写还可以包括改变新首部中的 其它信息,包括将发送计算节点的虚拟网络地址改变成对应的物理网 络地址,在至少一些实施例中,包括修改接收到的通信而不作为在一 个或多个中间物理网络上覆盖虚拟网络的一部分进行封装。在方框 555,例程然后例如通过发起在中间网络上向目的地计算节点转发修改 后的输出通信,来促进向目的地计算节点提供修改后的输出通信。尽 管本文未示出,然而在其它实施例中,可以针对输出节点通信执行多 种其它类型的处理,例如以便以多种方式验证通信有效或被授权(例 如,基于相关实体或相同虚拟网络的一部分,基于与被授权相互通信 的不同实体相关联的发送计算节点和目的地计算节点,基于通信的类 型或特定于通信的其它信息等等,来验证发送计算节点被授权向目的 地计算节点发送通信)。
如果在方框510确定接收到的信息是来自外部输出节点的针对受 管理计算节点之一的输入节点通信,则例程继续进行至方框565,以从 通信首部识别发送计算节点和目的地计算节点的物理网络地址。如上 所述,图2C示出了可以如何配置物理网络地址的一个示例。在方框565 之后,例程继续进行至方框570,以可选地以一种或多种方式验证输入 通信有效。例如,例程可以基于与系统管理器模块的交互和/或基于例 程先前获得并存储的其它信息,来确定发送方通信节点的物理网络地 址是否被实际映射到与源物理网络地址位置相对应的计算节点。此外, 例程可以确定目的地通信节点的物理网络地址是否与实际映射的计算 节点相对应。尽管本文未示出,然而如果输入通信没有被确定为有效, 则例程可以执行未示出的多种动作,例如以便产生一个或多个错误并 执行相关处理和/或丢弃输入信息而不将该输入信息转发至指示的目 的地节点。例如,如果输入通信指示目的地网络地址不与当前所管理 的计算节点相对应,则例程可以丢弃输入通信和/或发起错误消息,然 而在一些实施例中,可以将这样的错误消息发送至发送计算节点。如 果指示的目的地网络地址与最近管理过但不是当前管理的计算节点相 对应(例如,由于该计算节点不再与所指示的虚拟网络相关联,例如, 由于不再代表对应的实体执行一个或多个程序),则例程可以向发送计 算节点提供目的地计算节点不再可用的指示。
在所示实施例中,在方框570之后,例程继续进行至方框575,以 检索映射到物理目的地网络地址的伪硬件地址和虚拟网络地址,并重 写虚拟本地网络的通信首部,使得其看上去像是发送至具有该虚拟网 络地址和伪硬件地址的计算节点一样。例如,在一些实施例中,可以 从目的地物理网络地址自身获得目的地虚拟网络地址,如,从目的地 物理网络地址的比特的子集获得。此外,伪目的地硬件地址可能先前 已被映射到物理目的地网络地址,如先前关于方框525讨论的。在这种 先前映射尚未发生的情况下,例程可以执行方框515-525,以得到这样 的信息。例程可以类似地重写虚拟本地网络的通信首部,使其看上去 像是从具有与发送计算节点相对应的源虚拟网络地址和伪源硬件地址 发送的。在方框575之后,例程继续进行至方框580,以便于例如通过 发起向目的地节点转发修改后的输入通信,来向目的地计算节点提供 修改后的输入通信。
如果在方框510中确定接收到另一种类型的消息,则例程进行至 方框585,以适当地执行另一个所指示的操作,例如以便存储与跟具体 输入节点相关联的实体有关的信息,更新先前映射并存储的信息以反 映关于正在管理的计算节点或关于远程节点的变化。
在方框555、580或585之后,或者在方框530确定没有关于输出通 信执行处理的情况下,例程进行至方框595,以确定是否继续。如果是, 则例程返回方框505,否则继续进行至方框599并结束。
此外,不同实施例可以为客户用户和其它实体提供与系统管理器 的实施例交互的机制,以便配置计算节点以及计算节点的通信。例如, 一些实施例可以提供交互控制台(例如,提供交互用户界面、基于网 络浏览器的界面的客户应用程序等等),用户可以从该交互控制台来管 理虚拟网络的创建和删除以及虚拟网络成员关系的规定,更一般地, 这些实施例可以提供与所主持的应用的操作和管理有关的管理功能 (例如,用户帐户的创建或修改;新应用的提供;所主持的应用的发 起、终止或监控;向组分派应用;时间或其它系统资源的保留;等等) 此外,一些实施例可以提供API(“应用编程界面”),API允许其它计 算系统和程序在程序上调用上述功能中的至少一些。这样的API可以 由(例如,要由以C、C++或Java写的程序来调用的)库或分类界面提 供和/或由网络服务协议(如,经由Web服务)来提供。在2006年3月 31日提交的标题为“Managing Communications Between Computing Nodes;”编号为11/394,595的美国申请、2006年3月31日提交的标题为 “Managing Execution of Programs by Multiple Computing Systems;”编 号为11/395,463的美国申请、以及2007年3月27日提交的标题为 “Configuring Intercommunications Between Computing Nodes;”编号为 11/692,038的美国申请中,提供了与可以跟上述技术一起使用的程序 执行服务的示例实施例的操作有关的其它细节,每个申请的全部公开 一并在此作为参考。
还将意识到,尽管在一些实施例中关于容纳了主持虚拟机的多个 物理机器的数据中心和/或关于程序执行服务,采用上述技术,然而其 它实现场景也是可以的。例如,可以关于公司网络或者关于商业或其 它机构为了从其雇员和/或成员获益而操作的网络,采用上述技术。备 选地,网络服务提供商可以采用上述技术来提高网络安全性、可用性 和隔离性。此外,可以出于多种目的在数据中心内或其它场景内采用 示例实施例。例如,在一些实施例中,向客户出售对所主持的应用的 访问权的数据中心操作者或用户,可以使用上述技术在其客户的应用 和数据之间提供网络隔离;在一些实施例中,软件开发组可以使用上 述技术在其使用的不同环境之间提供网络隔离(例如,开发、构建、 测试、使用、生产、等等);在一些实施例中,组织可以使用上述技术 使由一个个人组或部门使用的计算资源(例如,人力资源)与由另一 个人组或部门使用的计算资源(例如,帐户)隔离;或者在一些实施 例中使用多组件应用(例如,多个绑定的商业应用)的数据中心操作 者或用户可以使用上述技术来针对多种组件类型(例如,Web前端、 数据库服务器、商业规则引擎等等)提供功能分解和/或隔离。更一般 地,上述技术可以用于使物理网络虚拟化,以反映传统上有必要使不 同计算系统和/或网络在物理上分离的几乎任何情况。
还将意识到,在一些实施例中,上述例程提供的功能可以以备选 方式提供,例如,将上述例程分成更多的例程或者看做是更少的例程。 类似地,在一些实施例中,例如,所示例程可以提供比上述更多或更 少的功能,当其它所示例程分别缺乏或包括这样的功能时,或者当所 提供的功能的数量改变时。此外,尽管不同操作被是唯一具体方式(例 如,串行或并行地)和/或以具体顺序来操作,然而本领域技术人员将 意识到,在其它实施例中,可以以其它顺序并且以其它方式来执行这 些操作。本领域技术人员还将意识到,可以以不同方式来构造上述数 据结构,例如,通过将单个数据结构分成多个数据结构或者通过将多 个数据结构合并成单个数据结构。类似地,在一些实施例中,所示数 据结构还可以存储比上述更多或更少的信息,例如,当所示数据结构 分别缺乏或包括这样的信息时,或者当所存储的信息的量或类型改变 时。
可以关于以下条款来进一步理解所描述的实施例的各个方面:
条款1.一种计算系统配置计算节点之间的通信的方法,所述方法 包括:
在对多个相关联计算节点的通信进行管理的通信管理器模块的 控制下,
接收来自发送节点上的执行程序的输出通信,所述发送节点是通 信管理器模块的相关联计算节点之一,所述输出通信针对远程目的地 节点,所述远程目的地节点是与另一远程通信管理器模块相关联的多 个其它计算节点之一,所述输出通信具有指示目的地地址,所述指示 目的地地址是发送节点使用第一虚拟网络的第一网络寻址协议指定的 目的地节点的第一目的地网络地址,所述通信管理器模块经由使用相 异第二网络寻址协议的至少一个其它第二物理网络与另一通信管理器 模块通信连接;
自动确定执行程序是否被授权向目的地节点发送输出通信;以及
如果确定执行程序被授权,则通过以下步骤在至少一个第二网络 上向目的地节点发送输出通信:
自动确定根据第二网络寻址协议指定的相异第二目的地网络地 址,所述第二目的地网络地址包括与另一通信管理器模块相对应的、 基于第二网络寻址协议的目的地节点的部分目的地网络地址,并且包 括根据第一网络寻址协议指定的第一目的地网络地址的表示;
自动修改输出通信,以便使能针对输出通信在至少一个第二网络 上覆盖第一网络,而不将输出通信封装在要在至少一个第二网络上发 送的一个或多个相异通信中,修改输出通信包括:将指示目的地地址 改变为所确定的第二目的地网络地址;以及
发起基于第二目的地网络地址经由至少一个第二网络向目的地 节点转发修改后的输出通信。
根据条款1所述的方法,其中,发送节点上的程序是代表程序执 行服务的第一客户而执行的第一程序,发送节点是由与程序执行服务 相关联的多个物理计算系统之一来主持的多个虚拟机之一,通信管理 器模块是由代表程序执行服务的一个物理计算系统的虚拟机管理模块 提供的,目的地节点是由多个物理计算系统中的另一个物理计算系统 主持的多个虚拟机之一并且代表程序执行服务的第二客户执行第二程 序,自动确定执行第一程序是否被授权向目的地节点发送输出通信包 括:与程序执行服务的系统管理器模块交互,以确定第一客户是否被 授权向第二客户发送通信。
条款3.根据条款1所述的方法,其中,第一虚拟网络是发送节点 和目的地节点所属的专用虚拟本地网络,至少一个第二网络是非专用 网络,该方法还包括,在通信管理器模块的控制下:
从在与另一远程通信管理器模块相关联的远程发送计算节点上 执行的第二程序,接收针对多个相关联计算节点之一的输入通信,输 入通信具有远程发送节点使用第一网络寻址协议指定的远程发送节点 的第一源网络地址的表示,输入通信还具有远程发送节点使用第一网 络寻址协议指定的一个相关联计算节点的第三目的地网络地址的表 示;
至少部分地基于与被允许向一个相关联计算节点发送通信的计 算节点相对应的第一源网络地址,来确定输入通信是否有效;以及
如果确定输入通信有效,则使用第三目的地网络地址来向一个相 关联计算节点提供输入通信。
条款4.一种计算机实现的对计算节点之间的通信进行配置的方 法,所述方法包括:
从发送计算节点接收针对远程目的地计算节点的输出通信,输出 通信具有指示目的地地址,所述指示目的地地址是发送节点使用第一 网络的第一网络寻址协议指定的目的地节点的第一目的地网络地址, 所述发送节点经由使用相异第二网络寻址协议的至少一个其它第二网 络与目的地节点通信连接;
在一个或多个中间网络上发送输出通信之前,自动修改输出通 信,以便使能针对输出通信在至少一个第二网络上覆盖第一网络,修 改输出通信包括使用第二网络寻址协议将指示目的地地址改变为相异 第二目的地网络地址,第二目的地网络地址包括与包括目的地节点在 内的多个计算节点相对应的、目的地节点的部分目的地网络地址,第 二目的地网络地址还包括第一目的地网络地址的表示;以及
发起基于第二目的地网络地址经由至少一个第二网络向目的地 节点转发修改后的输出通信。
条款5,根据条款4所述的方法,自动修改输出通信是在第一通信 管理器模块的控制下执行的,所述第一通信管理器模块管理包括发送 节点在内的一个或多个计算节点的通信;部分目的地网络地址与远程 第二通信管理器模块相对应,所述远程第二通信管理器模块管理包括 目的地节点在内的多个计算节点的通信;该方法还包括,在第二通信 管理器模块的控制下:
接收经由至少一个第二网络转发的修改后的输出通信,作为针对 目的地节点的输入通信;
检索接收到的输入通信的第二目的地网络地址中包含的第一目 的地网络地址的表示;以及
通过使用第一目的地网络地址,将接收到的输入通信的至少一部 分转发至目的地节点。
条款6.根据条款5所述的方法,其中,接收到的输出通信还包括 发送节点使用第一网络寻址协议指定的第二节点的指示第一源网络地 址;第一通信管理器模块修改输出通信还包括添加使用第二网络寻址 协议的发送节点的相异第二源网络地址,所述相异第二源网络地址包 括第一源网络地址的表示;该方法还包括,在第二通信管理器模块的 控制下,在向目的地节点转发通信部分之前,至少部分地基于与被允 许跟目的地节点通信的计算节点相对应的第一源网络地址,以及至少 部分地基于与第一通信管理器模块相对应的第二源网络地址,来验证 接收到的输入通信有效。
条款7.根据条款4所述的方法,其中,自动修改输出通信是在第 一通信管理器模块的控制下执行的,所述第一通信管理器模块管理包 括发送节点在内的一个或多个计算节点的通信;接收到的输出通信还 包括发送节点使用第一网络寻址协议指定的第二节点的指示第一源网 络地址;该方法还包括,在第一通信管理器模块的控制下,在向目的 地节点转发通信部分之前,至少部分地基于被允许与目的地节点通信 的发送节点,来验证接收到的输出通信有效。
条款8.根据条款4所述的方法,其中,自动修改输出通信是在第 一通信管理器模块的控制下执行的,所述第一通信管理器模块管理包 括发送节点在内的一个或多个计算节点的通信;该方法还包括,在第 一通信管理器模块的控制下,在修改输出通信之前,通过检索所存储 的信息来自动确定目的地节点的部分目的地网络地址,所存储的信息 指示目的地节点的第一目的地网络地址与对包括目的地节点在内的多 个计算节点的通信进行管理的远程第二通信管理器模块的关联。
条款9.根据条款4所述的方法,其中,自动修改输出通信是在第 一通信管理器模块的控制下执行的,所述第一通信管理器模块管理包 括发送节点在内的一个或多个计算节点的通信;该方法还包括,在第 一通信管理器模块的控制下,在修改输出通信之前,通过与远程服务 器交互来自动确定目的地节点的部分目的地网络地址,所述远程服务 器保持目的地节点的第一目的地网络地址与对包括目的地节点在内的 多个计算节点的通信进行管理的远程第二通信管理器模块的关联。
条款10.根据条款9所述的方法,其中,发送计算节点和目的地计 算节点是被程序执行服务用来代表客户执行程序的多个计算节点的一 部分,发送计算节点代表第一客户执行第一程序,目的地计算节点代 表第二客户执行第二程序,远程服务器提供程序执行服务的系统管理 器模块。
条款11.根据条款4所述的方法,其中,发送节点和目的地节点是 虚拟本地网络的一部分,第一目的地网络地址是发送节点针对虚拟本 地网络上的目的地节点而使用的虚拟网络地址,第二目的地网络地址 不可用于发送节点。
条款12.根据条款4所述的方法,其中,发送节点和目的地节点各 自都与跟实体相对应的标识符相关联,其中发送节点和目的地节点代 表所述实体来操作;修改输出通信还包括构造第二目的地网络地址以 便包括标识符;修改输出通信以便使能针对输出通信在至少一个第二 网络上覆盖第一网络,是在不将输出通信封装在要在至少一个第二网 络上发送的一个或多个相异通信中的情况下执行的。
条款13.根据条款4所述的方法,其中,第一网络寻址协议是互联 网协议版本4(IPv4),第二网络寻址协议是互联网协议版本6(IPv6)。
条款14.根据条款4所述的方法,其中,接收到的输出通信还包括 发送节点使用第一网络寻址协议指定的第二节点的指示第一源网络地 址;目的地计算节点使用目的地计算节点所属的网络的第一网络寻址 协议;并且修改后的输出通信还包括具有第一源网络地址的表示的指 示源地址,使得目的地节点接收输出通信的拷贝,所述输出通信的拷 贝被示为从第一源网络地址发送至第一目的地网络地址。
条款15.根据条款4所述的方法,其中,第二网络寻址协议比第一 网络寻址协议使用更多的比特来表示网络地址,使得在至少一个第二 网络上覆盖第一网络包括:构造第二目的地网络地址以便使用第二网 络寻址协议的比特的子集来表示第一网络,所构造的第二目的地网络 地址的比特的子集包括根据第一网络寻址协议指定的第一目的地网络 地址的表示。
条款16.根据条款4所述的方法,其中,发送节点是由物理计算系 统主持的多个虚拟机之一;该方法由虚拟机管理器模块来执行,所述 虚拟机管理器模块在物理计算系统上执行,以管理多个所主持的虚拟 机的通信。
条款17.一种计算机可读介质,所述计算机可读介质的内容使计 算系统能通过执行以下方法来配置计算节点之间的通信,所述方法包 括:
接收由发送节点向目的地节点发送的输出通信,所述目的地节点 使用根据第一网络寻址协议指定的第一目的地网络地址;
在使用与第一网络寻址协议不同的第二网络寻址协议的一个或 多个网络上向目的地节点发送输出通信之前,
自动确定根据第二网络寻址协议指定的相异第二目的地网络地 址,第二目的地网络地址包括基于第二网络寻址协议的目的地节点的 部分目的地网络地址以及包括第一目的地网络地址的表示;以及
修改输出通信,使得输出通信指定用于在一个或多个网络上将修 改后的输出通信发往目的地节点的第二目的地网络地址,所述修改是 在不将输出通信封装在一个或多个相异通信中的情况下执行的。
条款18.根据条款17所述的计算机可读介质,其中,发送节点是 由物理计算系统主持的多个虚拟机之一;该方法由虚拟机管理器模块 来执行,所述虚拟机管理器模块在物理计算系统上执行,以管理多个 所主持的虚拟机的通信,该方法还包括向一个或多个网络转发修改后 的输出通信;第一网络寻址协议是互联网协议版本4(IPv4);发送节 点是使用第一网络寻址协议的第一虚拟网络的一部分;第二网络寻址 协议是互联网协议版本6(IPv6);一个或多个网络与第一网络不同, 并且是发送节点与目的地节点之间使用第二网络寻址协议的至少一个 中间物理网络的一部分;修改输出通信被执行为,使得能够在一个或 多个网络上覆盖第一网络。
条款19.根据条款17所述的计算机可读介质,其中,计算机可读 介质是计算设备的存储器和数据传输介质之一,所述数据传输介质传 输包含内容的所产生的信号。
条款20.根据条款17所述的计算机可读介质,其中,内容是在被 执行时使计算系统执行所述方法的指令。
条款21.一种被构造为配置计算节点之间的通信的系统,包括:
一个或多个计算系统的一个或多个存储器;以及
多个通信管理器模块中的至少一个,所述多个通信管理器模块被 配置为管理经由一个或多个中间网络的多个计算节点之间的通信,使 得每个通信管理器模块通过以下步骤来管理由多个计算节点中的一个 或多个组成的相关联组的输出通信:
在发送计算节点发起向目的地计算节点的通信之后,确定用于与 根据一个或多个中间网络使用的网络寻址协议而指定的通信一起使用 的目的地网络地址,其中,目的地计算节点是另一通信管理器模块的 相关联组的一部分,发送计算节点是通信管理器模块的相关联组的计 算节点之一,确定目的地网络地址,用于根据由一个或多个中间网络 使用的网络寻址协议指定的通信,所确定的目的地网络地址包括与另 一通信管理器模块相对应的部分网络地址,所述另一通信管理器模块 的相关联计算节点组包括目的地节点,所确定的目的地网络地址还包 括根据发送计算节点使用的相异其它网络寻址协议而指定的目的地节 点的网络地址的指示;以及
使用所确定的目的地网络地址将发起的通信经由一个或多个中 间网络转发至目的地节点。
条款22.根据条款21所述的系统,其中,通信管理器模块确定用 于与发送节点向目的地节点发起的通信一起使用的目的地网络地址包 括与远程系统管理器模块交互,远程系统管理器模块保持与每个通信 管理器模块的相关联计算节点组有关的信息,交互包括向系统管理器 模块提供根据由发送节点使用的其它网络寻址协议而指定的目的地节 点网络地址的指示,交互还包括从系统管理器模块接收部分网络地址 的指示,所述部分网络地址与相关联计算节点组包括目的地节点的另 一通信管理器模块相对应;系统还包括被配置为包括与多个通信管理 器模块交互的一个或多个系统管理器模块。
条款23.根据条款21所述的系统,还包括提供多个通信管理器模 块的多个计算系统,计算系统中的一个或多个各自主持多个虚拟机, 每个虚拟机提供多个计算节点之一,并且计算系统中的一个或多个各 自执行作为计算系统的虚拟机管理器模块的一部分的通信管理器模块 之一,使得计算系统的所主持的虚拟机所提供的计算节点是用于执行 通信管理器模块的相关联计算节点组。
条款24.根据条款21所述的系统,其中,通信管理器模块各自包 括用于在一个或多个计算系统的存储器中执行的软件指令。
条款25.根据条款21所述的系统,其中,每个通信管理器模块由 用于通过以下步骤对多个计算节点中的一个或多个计算节点所组成的 相关联组的通信进行管理的装置构成:
在发送计算节点发起向目的地计算节点的通信之后,确定用于与 根据一个或多个中间网络使用的网络寻址协议而指定的通信一起使用 的目的地网络地址,其中,目的地计算节点是另一通信管理器模块的 相关联组的一部分,发送计算节点是通信管理器模块的相关联组的计 算节点之一,确定目的地网络地址,用于根据由一个或多个中间网络 使用的网络寻址协议指定的通信,所确定的目的地网络地址包括与另 一通信管理器模块相对应的部分网络地址,所述另一通信管理器模块 的相关联计算节点组包括目的地节点,所确定的目的地网络地址还包 括根据发送计算节点使用的相异其它网络寻址协议而指定的目的地节 点的网络地址的指示;以及
使用所确定的目的地网络地址将发起的通信经由一个或多个中 间网络转发至目的地节点。
条款26.一种计算系统配置计算节点之间的通信的方法,所述方 法包括:在对多个相关联计算节点的通信进行管理的通信管理器模块 的控制下,
接收来自发送节点上的执行程序的输出通信的指示,所述发送节 点是通信管理器模块的相关联计算节点之一,所述输出通信针对远程 目的地节点,所述远程目的地节点是与另一远程通信管理器模块相关 联的多个其它计算节点之一,发送节点和目的地节点是使用第一网络 寻址协议的第一虚拟网络的一部分,使得目的地节点具有第一目的地 网络地址,所述第一目的地网络地址是根据第一网络寻址协议指定的 第一虚拟网络的虚拟网络地址,所述通信管理器模块经由使用相异第 二网络寻址协议的至少一个其它第二物理网络与另一通信管理器模块 通信连接;
通过自动产生根据第二网络寻址协议指定的目的地节点的相异 第二目的地网络地址,促进在至少一个中间网络上从发送计算节点向 目的地计算节点发送输出通信,所述第二目的地网络地址包括与所述 另一通信管理器模块相对应的、基于第二网络寻址协议的目的地节点 的部分目的地网络地址,并且包括根据第一网络寻址协议指定的第一 目的地网络地址的嵌入式表示;以及
通过在至少一个第二网络上将所转发的通信路由至另一通信管 理器模块,发起使用所产生的第二目的地网络地址向目的地节点转发 输出通信。
条款27.根据条款26所述的方法,其中,发送节点上的程序是代 表程序执行服务的第一客户而执行的第一程序,发送节点是由与程序 执行服务相关联的多个物理计算系统之一来主持的多个虚拟机之一, 通信管理器模块是由一个物理计算系统的虚拟机管理模块提供的,目 的地节点是由多个物理计算系统中的另一个物理计算系统主持的多个 虚拟机之一,自动产生目的地节点的相异第二目的地网络地址包括: 与程序执行服务的系统管理器模块交互,以确定目的地节点的部分目 的地网络地址与另一通信管理器模块相对应。
条款28.根据条款26所述的方法,其中,第一虚拟网络是发送节 点和目的地节点所属的专用虚拟本地网络;与通信管理器模块相关联 的多个计算节点中的一个或多个属于一个或多个其它虚拟网络;至少 一个第二网络是非专用网络,在所述非专用网络上转发针对第一虚拟 网络和针对一个或多个其它虚拟网络的通信;目的地节点的自动产生 的第二目的地网络地址还包括表示第一虚拟网络的标识符,以便使能 解析所产生的第二目的地网络地址中包含的第一目的地网络地址。
条款29.一种计算机实现的管理计算节点之间的通信的方法,所 述方法包括:
接收与从源计算节点向目的地计算节点发送的通信有关的指示, 源计算节点和目的地计算节点是使用第一网络寻址协议的虚拟网络的 一部分,使得目的地计算节点具有根据第一网络寻址协议而指定的虚 拟网络的虚拟网络地址,源计算节点经由使用相异第二网络寻址协议 的至少一个中间网络与目的地计算节点通信连接;
促进在至少一个中间网络上从源计算节点向目的地计算节点发 送通信,所述促进包括:自动产生根据第二网络寻址协议指定的目的 地计算节点的目的地网络地址,目的地网络地址包括与多个计算节点 相对应的目的地计算节点的部分目的地网络地址,并且包括目的地计 算节点的虚拟网络地址的表示;以及
提供所产生的目的地网络地址的指示,以用于在至少一个中间网 络上向目的地计算节点路由通信。
条款30.根据条款29所述的方法,其中,自动产生目的地网络地 址是在第一通信管理器模块的控制下执行的,所述第一通信管理器模 块管理包括源计算节点在内的一个或多个计算节点的通信;部分目的 地网络地址与远程第二通信管理器模块相对应,第二通信管理器模块 管理包括目的地节点在内的多个计算节点的通信,使得在至少一个中 间网络上向目的地计算节点路由通信包括向第二通信管理器模块路由 通信。
条款31.根据条款30所述的方法,其中,该方法还包括,在第二 通信管理器模块的控制下,在将通信路由至第二通信管理器模块之后, 使用所产生的目的地网络地址中包含的虚拟网络地址来标识目的地计 算节点,并将通信转发至所标识的目的地计算节点。
条款32.根据条款29所述的方法,其中,所产生的目的地网络地 址还包括虚拟网络的标识符,以便使能至少部分地基于确定向哪个计 算节点分派虚拟网络的虚拟网络地址,识别来自所产生的目的地网络 地址的通信的目的地计算节点。
条款33.根据条款29所述的方法,其中,所产生的目的地网络地 址的部分目的地网络地址反映了至少一个中间网络的拓扑,以便于包 括多个计算节点的至少一个中间网络的一部分相对应。
条款34.根据条款29所述的方法,其中,所产生的目的地网络地 址的部分目的地网络地址与多个节点共同位于的物理子网络相对应。
条款35.根据条款29所述的方法,其中,自动产生目的地网络地 址是在系统管理器模块的控制下执行的,系统管理器模块保持与多个 虚拟网络有关的信息,每个虚拟网络包括多个计算节点,所保持的信 息包括与分派有多个虚拟网络的虚拟地址的计算节点有关的信息。
条款36.根据条款29所述的方法,其中,自动产生目的地网络地 址是在通信管理器模块的控制下执行的,通信管理器模块管理包括源 计算节点在内的一个或多个计算节点的通信;自动产生目的地网络地 址包括与远程系统管理器模块交互,远程系统管理器模块保持与分派 有虚拟网络地址的计算节点有关的信息,交互包括从远程系统管理器 模块获得与目的地网络地址相对应的信息。
条款37.根据条款29所述的方法,其中,接收到的与要从源计算 节点向目的地计算节点发送的通信有关的指示是由源计算节点发送的 输出通信,所述输出通信使用目的地计算节点的虚拟网络地址来指示 输出通信的预期接收方;提供所产生的目的地网络地址的指示包括向 至少一个中间网络转发输出通信,以便使用所产生的目的地网络地址 在至少一个中间网络上路由通信。
条款38.根据条款29所述的方法,其中,接收到的与要从源计算 节点向目的地计算节点发送的通信有关的指示是来自源计算节点的、 对于稍后在发送通信中使用的目的地计算节点的寻址信息的请求;该 方法还包括将目的地计算节点的伪寻址信息映射到所产生的目的地网 络地址,并向源计算节点提供该伪寻址信息;提供所产生的目的地网 络地址的指示包括:在源计算节点稍后发送通信并使用伪寻址信息来 指示目的地计算节点之后,使用所产生的目的地网络地址来代替所提 供的伪寻址信息。
条款39.根据条款29所述的方法,其中,源计算节点是由第一物 理计算系统主持的多个虚拟机之一;第一物理计算系统是由程序执行 服务用来代表客户执行程序的多个物理计算系统之一;源计算节点代 表程序执行服务的一个客户执行一个或多个程序;该方法由虚拟机管 理器模块执行,所述虚拟机管理器模块在第一物理计算系统上执行, 以代表程序执行服务管理多个所主持的虚拟机的通信;促进在至少一 个中间网络上从源计算节点向目的地计算节点发送通信是代表程序执 行服务来执行的,以便为所述一个客户提供虚拟网络。
条款40.根据条款29所述的方法,其中,执行提供所产生的目的 地网络地址的指示以用于在至少一个中间网络上向目的地计算节点路 由通信,以便在不将通信封装在要在至少一个中间网络上发送的一个 或多个相异通信中的情况下,使能在至少一个中间网络上覆盖虚拟网 络。
条款41.一种计算机可读介质,所述计算机可读介质的内容使计 算系统能通过执行以下方法来管理通信,所述方法包括:
接收与针对目的地节点的通信有关的指示,目的地节点是使用第 一网络寻址协议的第一虚拟网络的一部分并且具有使用第一网络寻址 协议的相关第一虚拟网络地址,所述通信将经由使用相异第二网络寻 址协议的一个或多个网络来发送;
使用第二网络寻址协议自动确定目的地节点的目的地网络地址, 目的地网络地址包括基于第二网络寻址协议的目的地节点的部分目的 地网络地址,并且包括第一虚拟网络地址的指示;以及
提供所确定的目的地网络地址的指示,以便使能在一个或多个网 络上向目的地节点发送通信。
条款42.根据条款41的计算机可读介质,其中,通信来自发送节 点,所述发送节点是由物理计算系统主持的多个虚拟机之一,并且是 第一虚拟网络的一部分;一个或多个网络是发送节点与目的地节点之 间使用第二网络寻址协议的至少一个中间物理网络的一部分;该方法 是由虚拟机管理器模块执行的,所述虚拟机管理器模块在物理计算系 统上执行,以管理多个所主持的虚拟机的通信,该方法还包括使用所 确定的目的地网络地址向一个或多个网络转发通信,以便使能在一个 或多个网络上覆盖第一虚拟网络;第一虚拟网络寻址协议是互联网协 议版本4(IPv4);第二网络寻址协议是互联网协议版本6(IPv6);确 定目的地节点的目的地网络地址包括产生目的地网络地址。
条款43.根据条款41的计算机可读介质,其中,计算机可读介质 是计算设备和数据传输介质中的存储器的至少之一,所述数据传输介 质传输包含内容的所产生的信号。
条款44.根据条款41的计算机可读介质,其中,内容是在被执行 时使计算系统执行所述方法的指令。
条款45.根据条款41的计算机可读介质,其中,内容包括一个或 多个数据结构,所述一个或多个数据结构包括用于存储网络地址的一 个或多个实体,所述一个或多个实体包括第一实体,所述第一实体包 含根据第一网络寻址协议指定的第一网络地址。
条款46.一种被构造为管理计算节点之间的通信的系统,包括:
一个或多个计算系统的一个或多个存储器;以及
多个通信管理器模块中的至少一个,所述多个通信管理器模块被 配置为管理经由一个或多个中间网络的多个计算节点之间的通信,使 得每个通信管理器模块通过以下步骤来管理由多个计算节点中的一个 或多个组成的相关联组的输出通信:
在接收到与从源计算节点向目的地计算节点的一个或多个通信 有关的指示之后,确定用于与根据一个或多个中间网络使用的网络寻 址协议而指定的一个或多个通信一起使用的目的地网络地址,其中, 目的地计算节点是另一通信管理器模块的相关联组的一部分,源计算 节点是通信管理器模块的相关联组的计算节点之一,所确定的目的地 网络地址包括与另一通信管理器模块相对应的部分网络地址,所述另 一通信管理器模块的相关联计算节点组包括目的地节点,所确定的目 的地网络地址还包括根据源计算节点使用的相异其它网络寻址协议而 指定的目的地节点的网络地址的指示;以及
提供所确定的目的地网络地址的指示,以用于在一个或多个中间 网络上向目的地计算节点发送一个或多个通信。
条款47.根据条款46所述的系统,其中,通信管理器模块确定用 于与一个或多个通信一起使用的目的地网络地址包括与远程系统管理 器模块交互,远程系统管理器模块保持与每个通信管理器模块的相关 联计算节点组有关的信息,交互包括向系统管理器模块提供根据由发 送节点使用的其它网络寻址协议而指定的目的地节点网络地址的指 示,交互还包括从系统管理器模块接收部分网络地址的指示,所述部 分网络地址与相关联计算节点组包括目的地节点的另一通信管理器模 块相对应;系统还包括被配置为与多个通信管理器模块交互的一个或 多个系统管理器模块。
条款48.根据条款46所述的系统,还包括提供多个通信管理器模 块的多个计算系统,计算系统中的一个或多个各自主持多个虚拟机, 每个虚拟机提供多个计算节点之一,并且计算系统中的一个或多个各 自执行作为计算系统的虚拟机管理器模块的一部分的通信管理器模块 之一,使得计算系统的所主持的虚拟机所提供的计算节点是用于执行 通信管理器模块的相关联计算节点组。
条款49.根据条款46所述的系统,其中,至少一个通信管理器模 块各自包括用于在一个或多个计算系统的存储器中执行的软件指令。
条款50.根据条款46所述的系统,其中,至少一个通信管理器模 块中的每一个均由用于通过以下步骤对多个计算节点中的一个或多个 计算节点所组成的相关联组的通信进行管理的装置构成:
在接收到与从源计算节点向目的地计算节点的一个或多个通信 有关的指示之后,确定用于与根据一个或多个中间网络使用的网络寻 址协议而指定的一个或多个通信一起使用的目的地网络地址,其中, 目的地计算节点是另一通信管理器模块的相关联组的一部分,源计算 节点是通信管理器模块的相关联组的计算节点之一,所确定的目的地 网络地址包括与另一通信管理器模块相对应的部分网络地址,所述另 一通信管理器模块的相关联计算节点组包括目的地节点,所确定的目 的地网络地址还包括根据源计算节点使用的相异其它网络寻址协议而 指定的目的地节点的网络地址的指示;以及
提供所确定的目的地网络地址的指示,以用于在一个或多个中间 网络上向目的地计算节点发送一个或多个通信。
从上述内容可以意识到,尽管本文出于说明的目的描述了特定实 施例,然而在不脱离本发明的精神和范围的前提下,可以进行各种修 改。相应地,本发明仅受所附权利要求及权利要求中所列元素的限制。 此外,尽管以下以特定权利要求的形式提供了本发明的特定方面,然 而发明人可以以任何可用的权利要求形式来完成本发明的各方面。例 如,尽管本发明的仅一些方面目前是以体现在计算机可读介质中的形 式阐述的,然而其它方面也可以以这种方式来体现。