本申请是申请日为2015年9月18日的、名称为“用于隔离虚拟网络的私有别名端点”的发明专利申请no.201580050148.9的分案申请。
本发明涉及一种用于隔离虚拟网络的私有别名端点。
背景技术:
许多公司和其他组织操作计算机网络,这些计算机网络使众多计算系统互连以支持它们的操作,诸如其中计算系统位于同一位置(例如,作为本地网络的一部分)或者相反地位于多个截然不同的地理位置中(例如,通过一个或多个私有或公共中间网络加以连接)。例如,容纳显著数量互连计算系统的数据中心已变得司空见惯,诸如由单一组织操作和代表所述组织操作的私有数据中心,以及由实体作为业务加以操作来向客户提供计算资源的公共数据中心。
一些提供商允许他们的客户使用位于这类数据中心处的资源来创建逻辑上隔离的网络。例如,可以向客户分配某一组虚拟化服务器和/或在由提供商管理的主机处实现的其他资源,并且可以向客户提供关于资源的网络配置的相当大的灵活性。客户可以例如选择到服务器的ip(互联网协议)地址,定义他们选择的子网,等等。使用提供商资源实现的此类客户可配置网络可以被称为多种名称,包括“隔离虚拟网络”或“虚拟私有云”。在一些情境下,客户可以向隔离虚拟网络内的一些资源指派私有ip地址(即,在隔离虚拟网络之外不可见或通告的地址),例如,不必考虑关于隔离虚拟网络之外的资源的地址的唯一性。提供商可以在这类环境中支持高水平的安全性、网络隔离和可用性,以使得客户能够在隔离虚拟网络中运行关键业务应用,并且经历与在客户拥有的场所可实现的服务类似(或更高)的服务质量。
至少一些支持隔离虚拟网络的提供商也可以实现多种其他服务,如存储服务、数据库服务等。这些其他服务中的一些可以被设计成可从公共互联网访问—例如,可以为客户端建立一组公开通告的ip地址或对应的uri(统一资源标识符)以访问这种服务的资源。至少在一些环境中,对于希望在其高度安全的隔离虚拟网络中访问这类公开通告的服务的客户而言,在不潜在地降低安全性或招致大量成本的情况下这样做可能并不简单。
技术实现要素:
本公开提供了一种方法,包括:在提供商网络的隧道中介处确定第一私有别名端点(pae)已经被指定为在代表客户端建立的第一隔离虚拟网络(ivn)处始发的流量的路由目标,其中所述流量将被递送到特定公共可访问服务;在所述隧道中介处接收从所述第一ivn的第一计算实例被导向到所述特定公共可访问服务的公共通告的网络地址的基线数据包;以及通过所述隧道中介向所述特定服务的第一节点传送包括(a)所述基线数据包的内容和(b)所述第一ivn作为源ivn的指示的封装数据包。
附图说明
图1示出根据至少一些实施方案的可以建立私有别名端点(pae)以使得能够在提供商网络的隔离虚拟网络(ivn)与一个或多个公共可访问服务之间路由网络流量而在ivn处不指派公共ip地址并且不穿过客户网络的示例系统环境。
图2示出根据至少一些实施方案的将在隔离虚拟网络的计算实例处始发的数据包引导朝向公共可访问服务处的目的地所涉及的示例性部件。
图3a和图3b示出根据至少一些实施方案的可以处理在隔离虚拟网络的计算实例处始发的数据包的替代性服务侧部件的各自实例。
图4示出根据至少一些实施方案的在计算实例处始发的基线数据包的封装格式的实例。
图5示出根据至少一些实施方案的pae配置请求和响应的实例。
图6示出根据至少一些实施方案的pae配置数据库内容的实例。
图7示出根据至少一些实施方案的使用ivn和pae标识符来区分在服务处从具有相同私有ip地址的计算实例接收的请求的实例。
图8是示出根据至少一些实施方案的可以被执行来配置pae的操作的各方面的流程图。
图9是示出根据至少一些实施方案的用于将数据包从计算实例传送到公共可访问服务的隧道协议的使用的流程图。
图10是示出可以在至少一些实施方案中使用的示例性计算装置的框图。
虽然在本文中通过举例针对若干实施方案和示意性附图描述了实施方案,但是本领域的技术人员应认识到,实施方案不限于所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图将实施方案限于所公开的特定形式,而是相反,其意图在于涵盖落入由所附权利要求书限定的精神和范围内的所有修改、等效物和替代方案。本文中使用的标题都仅用于组织目的,并且并不意图用于限制本说明书或权利要求书的范围。贯穿本申请所使用的词语“可以”是在许可的意义上(即意指具有可能性)、而非强制的意义上(即意指必须)使用。类似地,词语“包括(include/including/includes)”意味着包括但不限于。
具体实施方式
描述了用于在提供商网络处支持私有别名端点(pae)的方法和设备的各种实施方案。由诸如公司或公共部门组织的实体建立用于将可通过互联网和/或其他网络访问的一种或多种服务(诸如各种类型的多租户和/或单租户基于云的计算或存储服务)提供至一组分布式客户端的网络在本文中可以被称为提供商网络。至少一些提供商网络也可以被称为“公共云”环境。给定的提供商网络可包括托管实现、配置和分布由提供商提供的基础设施和服务所需的各种资源池的许多数据中心,诸如物理和/或虚拟化计算机服务器、存储装置、联网设备等的集合。在至少一些实施方案中,在提供商网络处实现的虚拟计算服务可以使得客户端能够将一个或多个客体虚拟机(在本文中可以称为“计算实例”或简称为“实例”)用于它们的应用,其中一个或多个计算实例在大实例主机群中的实例主机上执行。在大型提供商网络内,一些数据中心可以位于与其他数据中心不同的城市、州或国家中,并且在一些实施方案中,分配给给定应用的资源可以分布在若干这类位置中,以实现期望的可用性水平、故障恢复力和性能。
在至少一些实施方案中,提供商网络可以使得客户能够请求在提供商的数据中心处建立“隔离虚拟网络”(ivn)。ivn(在一些环境中也可以称为“虚拟私有云”或vpc)可包括在提供商网络的逻辑上隔离的部分中的计算和/或其他资源的集合,通过其,客户被授予关于网络配置的实质性控制。在一些实施方案中,例如,客户可以选择要用于ivn资源(诸如各种计算实例)的ip(互联网协议)地址范围、管理ivn内的子网的创建以及用于ivn的路由表的配置等。在一些实施方案中,对于ivn内的装置中的至少一些,至少在默认情况下,ip地址在ivn之外可能是不可见的。与作为通过bgp(边界网关协议)或其他类似协议在公共互联网上直接或间接通告的结果可从公共互联网访问的“公共”ip地址相比,这类ip地址在本文中可以被称为“私有”ip地址。私有地址的使用可以使得客户端能够保护它们的应用免受源自例如互联网的潜在攻击。在一些实施方案中,ivn支持可以是提供商网络的更一般的虚拟计算服务(vcs)的特征之一。例如,vcs还可以支持计算实例的预留或分配,所述计算实例不是ivn的一部分并且vcs(而不是分配了实例的客户端)为其执行所需的大部分或全部网络配置。
在提供商网络中实现的服务中的至少一些(诸如一个或多个存储服务或数据库服务)可以是公共可访问的。也就是说,可以用于访问服务的某一组ip地址(或对应的主机名/uri)可以被公开地通告,并且客户端因此能够从具有到互联网的连接性的装置向这种服务提交服务请求。例如,名为“svcx”的存储服务可以由客户端通过公共通告的uri(诸如https://svcx.<providername>.com)访问,并且这种服务的ip地址可以从一个或多个域名服务(dns)服务器获得。
代表客户端在ivn内运行的一些应用可能需要访问这类公共可访问服务。例如,在ivn中的客户端计算实例上运行的电子商务应用可能需要读取或写入数据到提供商网络的公共可访问的存储服务。建立到公共可访问服务的连接性的一种方式可涉及向ivn内的资源指派一个或多个公共ip地址(和/或为ivn设置可访问互联网的网关),这可能是与ivn客户端的隔离和安全要求有些相悖的实践。在ivn中运行的计算实例与公共可访问服务的资源之间建立连接性的另一种方式可以是首先在ivn与客户网络之间建立vpn(虚拟私有网络)连接,且然后通过客户网络间接地将流量从ivn发送到公共可访问服务。然而,至少在一些环境中,这种基于vpn的连接性可能相当昂贵,并且用于流量的间接路径可能不一定足够快(例如,相对于端到端延时)以满足客户端应用要求。
因此,为了促进ivn资源与至少一些公共可访问服务之间的有效连接性,在一些实施方案中,提供商网络运营商可以支持针对ivn的私有别名端点的建立。顾名思义,pae可以用作表示公共可访问服务的“虚拟”端点,并且pae可以是“私有的”,因为其使用不需要向ivn内的任何实体指派公共网络地址。在一些环境中,pae也可以被称为“虚拟私有端点”。在至少一些实施方案中,pae可以使在代表客户端建立的ivn内运行的应用能够向在提供商网络内的其他地方实现的公共可访问服务发送服务请求(并且从其接收响应),例如,不必将ivn暴露给公共互联网并且不需要穿过提供商网络之外的网络链路。如下所述,可以使用隧道协议来封装在ivn处始发的流量数据包,用于传输到提供商网络的实现公共可访问服务的部分。在各种实施方案中,在ivn中运行的客户端应用和实现客户端服务请求的公共可访问服务的资源两者甚至不必知道隧道协议的使用。也就是说,在这类实施方案中,可能不需要对客户端应用或在服务资源处服务客户端请求所涉及的逻辑进行改变。
在至少一个实施方案中,pae的建立可涉及客户端执行ivn配置的几个附加步骤,在易用性方面非常类似于通常由客户端执行的ivn网络配置的其他方面所要求的那些类别的步骤。客户端可例如通过编程式管理/事务管理接口(例如,控制台或应用编程接口(api))请求创建用于ivn的pae,且然后将pae与由用户友好的服务名称标识的选定服务相关联。然后,在一些实施方案中,客户端可以例如在为ivn的一个或多个子网设置的路由表中指定pae作为其目的地是公共可访问服务的任何节点或资源的流量的目标。在一些实现中,通用别名(诸如服务名称“svc1”)可以用于将服务指示为路由表中的目的地,并且指派给pae的标识符可以被指示为目标。在这类实现中,当指定目的地时,客户端可以不必标识服务的任何ip地址。在至少一些实施方案中,客户端可以在给定ivn处设置若干不同的pae,例如,以便能够访问在ivn之外实现的多个不同服务。
在已经配置pae并且将其指示为旨在用于来自特定ivn的服务的流量的目标之后,在ivn的计算实例(其中计算实例已经被指派私有ip地址并且没有公共ip地址)上运行的客户端应用可以类似于从连接互联网的装置发出这类请求的方式向服务发出请求。例如,可以从计算实例(例如,向提供商网络的dns服务器)发出dns请求以获得服务的公共ip地址。应用可以使用web服务api(或由服务支持的任何类似的编程接口)来提交服务请求,计算实例的操作系统或其他部件可将所述服务请求转变成一个或多个基线数据包,其中将服务的公共ip地址作为目的地并且将实例的私有ip地址作为源。
如前所述,计算实例可以实现为在实例主机上运行的客体虚拟机。在至少一些实施方案中,实例主机可包括虚拟化管理软件堆栈的各种部件,诸如管理程序和/或特权操作系统实例(通常称为“dom-0”或域零实例)。这种虚拟化管理部件(其在本文中可以被称为vmc)可以负责将在客体虚拟机处发出的资源请求转换为在硬件资源处执行的物理操作。在一个实施方案中,在实例主机处运行的vmc可以拦截从计算实例发出的基线数据包,并且vmc可以负责确定基线数据包应当如何变换(或者是否应当变换)以便在实例化主机所附接的物理网络上传输。在一些实现中,vmc可以访问ivn元数据记录,其指示将pae选择为导向到服务的流量的目标,并且还可以访问服务的公共ip地址列表。vmc因此可能够确定所拦截的基线数据包将被传送到与pae相关联的服务。
在至少一些实施方案中,可以将各种服务(包括配置ivn的虚拟计算服务和指派给pae的目的地服务)指派给提供商网络的各自逻辑上不同的部分。在给定服务对之间的流量可能必须穿过桥接网络(其也可以被称为边界网络)以从源服务到达目的地服务。这类桥接网络也可以被认为是提供商网络的专用子集,正如源服务网络和目的地服务网络可以被认为是提供商网络的子集。顾名思义,桥接网络可以用作提供商网络的各种逻辑上不同的部分之间的中间网络(并且在一些情况下,用作提供商网络与外部网络之间的中介)。vmc可能不能直接访问要被穿过以到达目的地服务的桥接网络,并且因此可能需要使用能够将数据包路由到这种桥接网络上的中介。因此,在至少一些实施方案中,vmc可以例如在数据包的第一封装版本中将基线数据包的内容传递到隧道中介。然后,这个第一封装数据包可以由隧道中介根据所选择的隧道协议进行变换,并且数据包的第二封装版本可以通过桥接网络路径或隧道被传送到目的地服务的节点。在各种实施方案中,多种不同封装方法中的任一种可以用于封装的任一阶段;下文进一步详细描述封装技术的一些具体实例。
在一个实施方案中,由隧道中介添加的一个或多个报头可包括源ivn和/或与目的地服务相关联的pae的编码或表示。在一个实现中,例如,隧道协议可涉及在ipv6兼容数据包格式内封装ipv4基线数据包,其中一些ipv6地址位用于编码ivn和/或pae标识符。在目的地服务处,可以从封装版本中提取基线数据包的内容(包括例如,服务请求和源计算实例的私有ip地址)以及ivn和/或pae的标识符。在一些实施方案中,ivn或pae标识符可用于区分可能已经被指派相同私有ip地址的源计算实例(在不同ivn处),如下文进一步详细描述的。可以执行在基线数据包本体中指示的所请求操作,并且可以向在源实例主机处的请求应用返回响应,例如,在相反方向上使用类似类型的隧道和封装技术。
在至少一些实施方案中,客户端可能够将访问控制策略应用于pae,例如,使用先前提到的那些类别的管理编程接口。访问控制策略可以例如指示允许(或禁止)的操作或服务请求的类型、允许/禁止操作的对象(例如,在存储相关服务处的文件或目录)、策略所适用的时间段(例如,工作日的特定小时)、策略所适用的主体(例如,特定用户或群组)等。在将这类策略指派给pae的一些实施方案中,可以检查从服务处的封装数据包提取的请求,以确保它们不违反可应用的策略。在其他实施方案中,代替或除了在目的地服务处检查,可以在ivn侧检查潜在策略违反—例如,vmc可以中止请求的传输,如果其确定请求违反与待使用的pae相关联的策略。
在一个实施方案中,pae可以不仅用于在ivn与由提供商网络实现的服务之间路由数据包,而且还用于在ivn与在提供商网络中的其他地方实现的第三方服务之间路由数据包。在这种实施方案中,第三方(例如,提供商网络的虚拟计算服务的另一客户)可以使用某一组提供商网络资源来建立服务,并且通告可以访问服务的公共ip地址。第三方提供商可以例如通过向提供商网络的配置管理器提交请求来注册其用于pae访问的服务。配置管理器可以验证候选第三方服务能够通过pae被指示为目标的路由来支持访问。例如,在一些实施方案中,配置管理器可以启动将能够实现隧道协议的前端节点(诸如智能负载平衡器)指派给第三方服务。在其他实施方案中,如果第三方服务运营商已经建立了旨在实现隧道协议的节点,则可以验证这类节点的能力。在第三方服务已经注册并且根据隧道协议可以提取(解封装)和封装数据包的前端节点已经建立之后,客户端可以在它们的ivn处配置pae以访问第三方服务。例如,可以将第三方服务的名称或别名(例如,“thirdpartysvc1”)添加到服务目的地选项列表(例如,“storagesvc1”、“dbsvc1”等等,其表示已经被配置为pae支持的公共可访问服务),所述服务目的地选项列表可以由客户端使用编程接口而与pae相关联。
示例性系统环境
图1示出根据至少一些实施方案的可以建立私有别名端点(pae)以使得能够在提供商网络的隔离虚拟网络与一个或多个公共可访问服务之间路由网络流量而在ivn处不指派公共ip地址并且不穿过客户网络的示例系统环境。如图所示,系统100包括提供商网络102,在所述提供商网络102处,实现了包括虚拟计算服务(vcs)和公共可访问服务svc1(即,使得其客户端能够通过公开通告的ip地址或uri提交请求的服务)的多个服务。公共可访问服务svc1可包括例如存储服务(提供对任意大小的存储对象的基于web服务的访问)、非关系数据库服务、关系数据库服务、通知服务、消息排队服务或多种其他类型服务中的任一个。这些服务中的每一个可包括多个主机、存储装置和其他计算设备,它们共同形成提供商网络的逻辑上分离的部分,例如具有其自己的管理层或控制平面层。在图1中,例如,vcs的资源位于vcs网络104内,而svc1的资源位于svc1网络170内。
在vcs网络104内,可以代表各种客户端建立许多不同的隔离虚拟网络(ivn)110,诸如ivn110a和ivn110b。代表其建立给定ivn110的客户端可以被授予关于ivn的网络配置的相当大的灵活性—例如,客户端可以向各种计算实例112指派期望的ip地址而不必确保ip地址不与在ivn之外使用的其他地址重叠,设置子网,填充路由表等。如图所示,每个ivn可包括多个实例主机(ih)130,诸如ivn110a中的ih130a和130b以及ivm110b中的ih130m和130n。一个或多个计算实例(ci)112可以在每个ih130处被实例化,诸如在ih130a处的ci112a、在ih130b处的ci112b、在ih130m处的ci112k和在ih130n处的ci112l。每个计算实例可用于一个或多个客户端应用或应用子部件。
在图1所示的实施方案中,服务svc1包括至少两层资源:前端(fe)节点171(诸如负载平衡器和/或请求路由器),所述前端节点171被配置来接收输入服务请求并传送出站服务响应;以及后端(be)节点173,在所述后端节点173处实现用于履行服务请求的服务的逻辑。至少一些fe节点(诸如fe节点171a、171b和171c)可具有指派给它们的公共ip地址,从而使svc1可公开访问,例如公共互联网139的装置以及客户拥有的网络(诸如网络185)处的互联网连接装置。
在所描绘的实施方案中,在ivn110a处已经建立了私有别名端点(pae)150,例如以使得svc1相关数据包能够在ci110a(其具有不能从公共互联网直接访问的私有ip地址)与svc1网络170之间流动,而不需要ci110a具有被指派给它的公共ip地址,并且不需要流量穿过客户拥有的网络185或公共互联网139的链路。如下文进一步详细描述的,在一些实施方案中可以建立用于ivn110a的路由表条目,以指示在ivn110a的一个或多个子网(包括其中配置了ci110a的子网)处始发并且目的地为svc1的流量以pae150为目标。在至少一些实施方案中,这个路由表条目以及其他元数据(诸如svc1的公共ip地址列表)可以用于在ivn110a的每个实例主机130上运行的虚拟化管理部件(vmc)(例如,管理程序部件)。ivn配置管理器106可以实现一个或多个编程接口(诸如应用编程接口(api)、基于web的控制台、命令行工具或图形用户接口等),使得客户端能够请求创建pae、将特定服务与pae相关联、创建或修改ivn的路由表条目等。
实例主机130a处的vmc可以拦截在ci112a处生成并包含导向到svc1的服务请求的出站基线网络数据包。(应注意,一些服务请求和其相关联的请求参数可能需要多于一个数据包。为了简化呈现,在以下的讨论中假定服务请求装入基线数据包。在各种实施方案中,本文描述的用于这类服务请求的隧道技术也可以用于跨越数据包边界的服务请求)。服务请求可以根据由svc1支持的任何适当的接口(诸如http(超文本传输协议)、https(安全http)、xml(可扩展标记语言)等)来格式化。基线数据包可指示作为源的ci的私有ip地址和作为目的地的svc1的公共ip地址。在所描绘的实施方案中,vmc可根据第一封装协议从基线数据包生成第一封装数据包。在一些实现中,在第一封装数据包内,基线数据包可以被包括在本体中,而第一封装协议的一个或多个附加报头可以包括(除其他信息之外)数据包包含pae流量的指示。在所描绘的实施方案中,如由用于pae流量162的虚线箭头所指示,第一封装数据包可以从实例主机112a被传送到隧道中介(ti),诸如隧道中介群140中的ti142a。可能已经建立了ti群140(其可包括被设置为ti的多个计算装置,诸如ti142a、142b等),以允许流量在vcs网络104与提供商网络的多种其他逻辑上分离的网络(包括svc1的网络170)之间流动。在一些实施方案中,隧道中介可包括针对网络相关处理而优化的专用计算装置。在其他实施方案中,隧道中介可包括在通用计算装置处执行的进程或线程。
在至少一些实施方案中,在接收到第一封装数据包时,ti142a可以提取基线数据包的内容以及由vmc添加的报头。在一个实施方案中,ti142a可利用与特定隧道协议相关联的映射数据库来分别从基线数据包的源和目的地地址生成不同的源和目的地地址。例如,在一个实现中,基线数据包源和目的地ip地址可以根据ipv4(互联网协议第4版)被格式化,并且ti142a可以利用更长的ipv6(互联网协议第6版)地址来替换它们,用于将要通过内部桥接网络160发送到svc1网络170的第二封装数据包。内部桥接网络160可以用作提供商网络中的交叉服务流量的路径,例如,用于来自虚拟计算服务的目的地为公共可访问服务的流量。在一些实施方案中,内部桥接网络160可以被称为边界网络,并且还可以用于在公共互联网与虚拟计算服务之间流动的流量。
在一个实现中,在ti142a处,基线数据包的源ip地址可以用作映射数据库中的密钥,以查找将要在出站的第二封装数据包中使用的对应源地址。类似地,在这种实现中,基线数据包的目的地ip地址可以用作映射数据库中的密钥,以查找在将要在出站的第二封装数据包中使用的对应目的地地址。在至少一些实施方案中,使用用于第二封装数据包的源地址和目的地地址的更大数量的位可使得ti142a能够包括源ivn(例如,在数据包源于ci112a处的情况下,ivn110a)的标识符和/或第二封装数据包中的pae(例如,pae150)的标识符的编码。在一些实施方案中,在第一封装数据包中,pae和/或ivn的标识符可以被包括在由vmc添加的报头中,并且ti142可以从这类报头获得标识符。在其他实施方案中,从映射数据库获得的源和目的地地址可包括ivn和/或pae的编码的标识符。
在ti142a处生成的第二封装数据包可通过桥接网络160传送到目的地服务svc1的前端节点171(例如,171a)。前端节点171可能够根据隧道协议执行解封装,以提取基线数据包的内容(包括源ci私有ip地址)以及源ivn(例如,ivn110a)的标识符和/或pae(例如,pae150)的标识符以用于路由。在至少一些实施方案中,pae和/或源ivn的标识可使得svc1节点能够区分来自具有相同源私有ip地址的不同计算实例的服务请求,如下文更详细地描述的。在基线数据包中指示的服务请求可以被传递到后端节点173(例如,173a)以用于处理。在处理了所述请求之后,可以在后端节点处生成基线响应数据包,根据隧道协议将所述基线响应数据包封装,并且以相反的方向将其传送回请求的源(ci112a)。ti142(例如,ti142a或不同的ti)可通过内部桥接网络160接收封装的响应,使用第一封装协议生成修改的封装版本,并将其传送到在ih130a处的vmc。vmc可以提取基线响应数据包并将其提供给源ci112a。
应注意,虽然上文已经讨论了两种不同的封装协议,但是在一些实施方案中,可能仅需要或使用单个封装协议来促进计算实例与公共可访问服务之间的流量。例如,在一个这种实施方案中,vmc可能够实现用于内部桥接网络上的流量的隧道协议,并且因此vmc本身可以充当隧道中介。在这种实施方案中,vmc可以拦截具有作为目的地的与pae150相关联的公共可访问服务的数据包,生成包含源ivn和/或pae的编码的封装数据包,并且将所述封装数据包传送到桥接网络装置。
通过使用pae作为朝向svc1导向的流量的路由表条目中的目标,客户端可能够避免在ivn与svc1之间路由流量的两种其他方法,这两者也在图1中示出。在一种方法中,代表其建立ivn110b的客户端可以决定为其ivn建立互联网网关182和/或将公共ip地址(其可以从公共互联网访问)指派给其实例中的一个,诸如ci112k。在这种情境下,包含在ci112k处生成的svc1请求的基线数据包可以例如通过类似于指示用于互联网网关(igw)流量的路径163的路径,被传送到svc1节点(例如,fe节点171b),而不使用上述那种类别的隧道协议。在一些情况下,用于在公共ip地址处始发的流量的路径可包括公共互联网的链路139。与使用互联网网关方法相比,使用pae方法的一个潜在优点是,ivn110b可能比ivn110a(不必为其指派公共ip地址)更容易受到来自公共互联网的攻击(由于暴露公共ip地址)。
在使用pae的第二替代方案中,客户端可以建立vpn(虚拟私有网络)网关183,以在ivn110b与客户拥有的网络185之间提供安全的连接性。从诸如ci112l的实例导向到svc1的数据包可以首先发送到客户拥有的网络185,且然后(例如,通过公共互联网链路139)发送到svc1节点(诸如fe节点171c)。应注意,建立了vpn网关185的ivn(诸如110b)不需要利用公共ip地址,并且不需要建立互联网网关182,并且仅使用vpn网关的客户端可以从而避免以上提及的安全漏洞。然而,在许多情况下,对于源自提供商网络(例如,在ivn内的实例处)并且目标是提供商网络内的目的地(例如,svc1节点)的流量,使用到外部网络的vpn连接在若干方面可能是低效的。例如,在至少一些实施方案中,与pae方法相比,如果使用vpn方法,可能遇到更高的延时,可能维持更低的吞吐量和/或可能导致更高的计费成本。尽管在图1中示出分别对应于以上讨论的三种替代路由方法(即,使用pae的路由、使用公共ip地址作为源ip地址的路由以及使用vpn的路由)的三个单独的fe节点171a、171b和171c,但是在至少一些实施方案中,任何给定的fe节点可能够处理使用任何替代方案传送的流量。因此,三个fe节点的图示并不意味着暗示各自的fe节点组需要用于不同的连接性替代方案。
在一个实施方案中,虚拟计算服务可以提供暴露一组api的服务连接库(scl),其可以被调用以使用pae从在ivn的计算实例上运行的应用来访问公共可访问服务。在这种情境下,应用可以发出指示目标服务svc1的api调用,其中服务请求的内容由api调用的参数指示。scl可以确定应用意图向svc1提交服务请求,并且可以启动将服务请求传送到svc1所需的适当封装的实现。因此,代替使用传统方法,其中应用启动基线数据包的生成,从服务请求创建数据包的工作可以由scl处理。在一些这类实施方案中,应用甚至不需要获得目标服务的特定公共ip地址;例如,服务请求的目的地可以由服务名称而不是特定网络地址指示。在一个实施方案中,即使应用指示api调用中的服务的特定目标公共地址,scl可以将封装版本的服务请求传送到目标服务的不同公共或私有ip地址(只要由scl选择的实际目的地能够适当地响应于服务请求)。
数据包流动实例
图2示出根据至少一些实施方案的将在隔离虚拟网络的计算实例处始发的数据包引导朝向公共可访问服务处的目的地所涉及的示例性部件。如图所示,ivn210的实例主机230可包括多个计算实例112,诸如实例112a和112b。每个实例112可包括在客体虚拟机上运行的各自操作系统实例。客户端应用的一个或多个部件可以在每个计算实例处运行,诸如计算实例112a处的应用进程220a和计算实例112b处的应用进程220b。计算实例与实例主机的硬件部件(诸如用于网络流量的网络接口卡或nic)之间的交互可以由一个或多个虚拟化管理部件(vmc)(诸如vmc240)管理。vmc可以例如包括管理程序和/或特权操作系统实例(其有时可以被称为域零或dom0操作系统实例)。
在所描绘的实施方案中,至少一些应用可能需要访问在ivn之外实现的一个或多个服务(例如,可以向所述一个或多个服务提交服务请求并且可以从其接收服务响应)。例如,应用进程220b可要求访问公共可访问服务svc1。因此,如图2中标记为“1”的箭头所示,可以从计算实例向dns服务器252(例如,可以从实现ivn210的虚拟计算服务网络内访问的dns服务器)提交请求svc1的ip地址的dns查询204。dns服务器252可以提供由svc1暴露或通告的公共ip地址205,如标记为“2”的箭头所指示。在至少一些实施方案中,如果应用在一段时间内没有与svc1交互,则可以仅执行dns查找。也就是说,一旦已经获得了svc1的地址,就可以在没有与dns服务器252的进一步交互的情况下由实例112b长期使用(例如,只要地址保持有效)。
在所描绘的实施方案中,导向到svc1的服务请求可以包括在实例112b处生成的基线数据包250的本体中,并且发送到计算实例的网络堆栈以用于向svc1传播。基线数据包250可以指示实例112b的私有ip地址作为其源地址,并且svc1的公共ip地址作为目的地。与其他网络数据包一样,vmc240(其可以负责物理网络传输)可以拦截基线数据包,如标记为“3”的箭头所指示。
在所描绘的实施方案中,vmc240可以访问pae相关的元数据和其他ivn元数据,诸如路由表235和svc1公共ip地址的列表236。路由表235可包括指示应当用于路由通往各种目的地的数据包的目标的条目—例如,对于目的地地址在范围n1.n2.n3.*中的数据包,应当使用目标k.l.m.n。在图2所示的实例中,已经创建了用于svc1的任何节点的数据包的路由表,其中私有别名端点pae-1被指示为目标。在所描绘的实施方案中,基于对在基线数据包250中指示的目的地和对其可用的pae相关元数据的分析,vmc240可以生成第一封装数据包251。数据包251的本体可以并入基线数据包250的内容(包括其源和目的地信息),而附加报头260可以由vmc240根据用于vmc与隧道中介242之间的通信的第一封装协议p1来生成。封装数据包251可以从vmc240发送到特定隧道中介242,如标记为“4”的箭头所指示。在至少一些实施方案中,p1报头260可包括基线数据包与pae1相关联和/或在ivn210处始发的指示。应注意,vmc240与隧道中介242之间的路径本身可包括若干跳,例如,基于图2中未示出的路由表条目选择各跳的目标。
隧道中介242可以检查包含在封装数据包251中的p1报头260和/或基线数据包250的源/目的地报头。使用第二封装协议p2(本文中也称为隧道协议)的映射数据库262,隧道中介242可以生成包括一个或多个p2报头261和基线数据包250的第二封装数据包255。在一些实施方案中,基线数据包的源和目的地地址可以用作映射数据库262的索引,以标识将要用于数据包255的新的源和数据包报头。在一些实现中,根据协议p2,ipv4基线数据包250可以例如使用siit(无状态ip/icmp(互联网协议/互联网控制消息协议))转换)或类似的ipv4-ipv6报头转换机制而被被封装在ipv6兼容数据包255内。在其他实施方案中,提供商网络的专有封装协议可以用于生成封装数据包255。在一些实施方案中,代替使用ipv6,隧道中介可以使用诸如tcp选项报头的附加ipv4报头,或者可以使用udp(用户数据报协议)封装(例如,通过将基线数据包内容并入udp消息内)。在一些实施方案中,可以包括在p1报头260和p2报头261内的那些类别的信息的实例在图4中提供并且在下文描述。可以将封装数据包255从隧道中介242传送到将要被穿过以到达svc2节点的适当桥接网络160的装置。
图3a和图3b示出根据至少一些实施方案的可以处理在隔离虚拟网络的计算实例处始发的数据包的服务侧部件的各自实例。如先前提及的,在一些实施方案中,至少两种类型的服务可以支持来自已经配置了pae的ivn的客户端访问。第一类型的服务可以由提供商网络运营商实现,而第二类型可以包括由第三方(如提供商网络的客户)实现的服务。对于第一类型的服务,诸如图3a所示的提供商网络实现的服务376,前端节点374可以熟知(即能够实现)由隧道中介242使用的封装协议p2。也就是说,在接收到根据协议p2格式化的数据包255时,服务376的前端节点374可能够提取基线数据包内容并且生成可以被发送到后端节点374以供处理的对应内部请求350。在一些情况下,提供商网络实现的服务可以支持例如根据http(超文本传输协议)格式化的服务请求,并且前端节点可以向基线请求添加一个或多个x-forwarded-for报头以指示生成基线数据包的源ivn和/或用于路由基线数据包的pae的标识符。在已经在后端节点处执行所请求的操作之后,可以例如使用响应路径中的类似封装技术将响应传送回到请求计算实例。例如,服务376的熟知p2的前端节点374可以生成包括基线响应的至少一部分的p2兼容封装数据包,并且通过桥接网络160将其发送到隧道中介242,所述隧道中介242继而可以生成p1兼容封装数据包并将其传送到适当的vmc240。vmc240可以从p1兼容数据包提取基线响应,并将其提供给源计算实例,诸如112b。
与由提供商网络运营商实现的服务节点相反,至少一些第三方服务(诸如图3b所示的第三方服务378)可不包括能够从根据协议p2生成的封装数据包255中提取基线数据包的节点。在一些情况下,例如,p2的细节可能不可用于第三方服务运营商,或者这类运营商可能没有用于构建p2兼容服务节点的资源或专门知识。因此,在至少一些实现中,响应于针对基于pae的路由注册这类第三方服务的请求或响应于注册后请求,提供商网络的配置或控制平面部件可以建立一个或多个服务侧熟知p2的中介370。这种服务侧中介370可以从封装数据包255中提取基线数据包250,并将它们传送到第三方服务378的前端节点375。前端节点375随后可以将基线数据包250转换成内部请求352,其可以以专有第三方格式、http或根据服务378的后端节点380所期望的任何其他接口生成。然后,可以在后端节点处履行与内部请求352相对应的操作,并且可以在中介370处封装之后将响应沿相反方向传送到始发请求的计算实例。
封装格式
图4示出根据至少一些实施方案的在计算实例处始发的基线数据包的封装格式的实例。如图所示,在所描绘的实施方案中,基线数据包402可以指示源和目的地ip第4版地址。例如,在隔离虚拟网络内,客户端可以将私有ip地址“10.0.1.2”(未在ivn之外通告)指派给计算实例112,并且这个私有ip地址可以被指示为基线数据包402中的源地址。可以由dns服务器响应于对将从计算实例访问的特定公共可访问服务svc1的地址的dns查询来提供公共ip第4版地址“176.32.101.25”。服务的这个公共地址可以被指示为基线数据包402的目的地。tcp端口数量也可以在基线数据包中指示,例如,端口4321作为计算实例处的源端口,并且端口80作为目的地服务端口。基线数据包402的有效负载或本体部分可以指示正被传送的服务请求的类型,诸如导向到存储服务的读取或写入请求,以及服务请求的参数。
在所描绘的实施方案中,根据用于与隧道中介通信的第一封装协议p1,基线数据包402可以由实例的主机处的虚拟化管理部件(例如,vmc-x)封装。在p1兼容数据包404中,基线数据包可以包括在本体中,并且可以添加一个或多个p1报头。在一些实现中,vmc的标识符可以被指示为源,并且隧道中介群可以被指示为目的地。在一些实施方案中,数据包404中可以包括其他p1特定的报头,例如,标识生成基线数据包的源ivn和/或指示在指定svc1作为目的地的路由表条目中指示的pae。在至少一些实施方案中,p1兼容格式可以使用ip第4版格式用于各种报头字段。
在所描绘的实施方案中,在隧道中介处,可以剥离p1兼容数据包404的p1报头,并且可以根据隧道协议p2添加一组不同的报头以用于跨越桥接网络到目的地服务的通信。在所描绘的实施方案中,由隧道中介生成的p2兼容数据包406可以包括ipv6源和目的地字段。在一些实施方案中,可用于ipv6中的源地址的128位的32位子集可以用于指示源计算实例的私有ipv4地址。类似地,可用于ipv6中的目的地地址的128位的32位子集可以用于指示目的地服务的ipv4公共地址。例如,数据包406的源地址的低阶位是0a00:0102,其是源ipv4地址10.0.1.2的替代表示,并且数据包406的目的地地址的低阶位是b020:657d,其是ipv4目的地地址176.32.101.25的替代表示。
在一个实现中,如图4所示的地址结构408所指示,ipv6中可用的128个地址位可以根据隧道协议p2如下使用。最低阶的32位(位0至31)可用于源或目的地ipv4地址,位40-71可用于指示pae标识符,并且位80-127可用于分配给正在实现源ivn或目的地服务的提供商网络位置或数据中心的48位ipv6前缀。在所描绘的实现中,为pae标识符留出的32位中的24位(例如,较高阶24位)可以指示源ivn标识符。因此,在至少一些实施方案中,ivn标识符可以嵌入在pae标识符中,并且因此可从其中提取。在不同的实现中,可以使用用于表示源ivn标识符、pae标识符或两者的其他编码技术。一些数量的位可以保留供将来使用(rfu),诸如位31-39和位72-80,例如以适应唯一地标识pae所需的位数量的可能的未来增加。构造如图所示的p2兼容封装数据包地址(例如,具有用于编码ipv4源/目的地地址的最低有效32位)的一个优点是,至少一些负载平衡器在它们接收到这种ipv6兼容数据包时可以选择相同的目的地,正如在仅128位的ipv4部分被指示为目的地的情况下将选择的。在不同实施方案中,可以使用其他方法来划分ipv6兼容地址结构,例如,其中位的不同子集用于指示ivn标识符和/或pae标识符。
根据至少一些实施方案,隧道协议可以在运行源计算实例的实例主机处实现,例如,不需要单独的隧道中介群。在这类实施方案中,图4所示的两步封装可以组合成在实例主机处运行的vmc和/或不同服务连接部件处实现的单个逻辑步骤。在这类实施方案中,vmc和/或服务连接部件可以被认为是源计算实例与目的地服务之间的隧道中介。
pae配置
图5示出根据至少一些实施方案的pae配置请求和响应的实例。如图所示,提供商网络的配置管理器592可以实现一个或多个编程接口550,诸如api、基于web的控制台、定制gui或命令行工具。使用这种接口,客户端502可以提交“在ivn中创建pae”请求505以在指定的ivn中创建私有别名端点,例如,指示ivn标识符作为请求中的参数。作为响应,配置管理器592可以生成所请求pae的一个或多个条目并将其存储在其配置数据库中,并且在响应507中提供新创建的pae的标识符。在一些实施方案中,在为客户端建立ivn的时间,可以针对ivn自动建立一个或多个pae,并且在这类情境下,可以不需要显式的pae创建请求。
客户端502可以在创建pae之后向配置管理器592提交“为pae指派服务”请求509,指示其流量将使用pae进行路由的特定服务。在一些实现中,pae标识符和服务标识符在这种请求中可以作为参数提供。作为响应,配置管理器592可以更新其关于pae的配置元数据,并且提供服务分配的确认511。在一些实施方案中,编程接口550可以提供注册服务名称的列表(例如,在下拉菜单中),从所述列表中可以选择一个注册服务名称用于与正被配置的pa相关联。
在一些实施方案中,例如响应于指定策略和pae的“为pae指派策略”请求513,可以为pae指派各种类型的访问控制策略。适用的策略的实例在图6中示出并在下文描述。配置管理器592可以存储所指示策略的表示以及策略与pae的关联,并且向客户端提供所述关联的确认515。在至少一些实施方案中,虽然可以为pae请求策略的关联,但是策略的实际强制实施可以在以下中的一个或多个处执行:(a)指派给pae的服务;(n)不同的服务,诸如提供商网络的授权和认证服务,所述服务可以由指派配给pae的服务调用以强制实施策略;或者(c)在根据pae路由服务请求的实例主机的vmc处。在一些实施方案中,例如在将确认515提供给客户端之前,可以由配置管理器将策略的指示传送到指派给pae的服务的控制平面部件。
在一些实施方案中,提供商网络的客户端还可以提交请求517以注册用于pae辅助路由的服务。例如,可以使用提供商网络的某一组资源来建立第三方服务(即,不由提供商网络运营商直接管理的服务),并且这种第三方服务的运营商可能希望允许从ivn内访问服务,而不需要在ivn处使用公共ip地址。在这种情境下,客户端502可以提交提供服务配置细节(例如,服务的前端节点的地址)的“注册服务用于pae”请求。在至少一些实现中,除负责建立pae的配置管理器之外的不同配置管理器可以负责注册服务,并且一组不同的编程接口可以用于服务注册请求。响应于服务注册请求,配置管理器可以执行一个或多个验证操作,例如,以便在接受服务并在响应519中向客户端提供注册名称或注册服务的标识符之前,验证所提议的待注册服务满足用于pae兼容性的某些标准。在一个实现中,例如,可以查询或测试服务的前端部件以确保其可以接收由使用提供商网络的封装协议的隧道中介生成的请求。
在一些实施方案中,除了图5所示的那些之外,可以支持附加的配置请求类型。例如,在一些实施方案中,可以由已经建立第三方服务的客户端提交用于配置服务侧隧道中介(诸如图3b的熟知p2的中介370)的请求。在一个实施方案中,客户端可能够使用附加类型的配置请求将pae重新指派给不同的服务,或者将多于一个服务指派给pae。在一些实现中,可能不支持图5所示的所有类型的配置请求。如先前提及的,客户端可以建立与给定ivn相关联的多个pae(例如,用于从相同的ivn内访问不同的服务),并且具有多个ivn的客户端可以在每个这种ivn处建立一个或多个pae。
图6示出根据至少一些实施方案的pae配置数据库内容的实例。示出了用于已经在配置管理器592的帮助下建立两个pae的特定ivn(ivn-j)的配置数据库。pae604a被指派服务“storagesvc1”(在提供商网络处实现的存储服务),如服务标识符字段606a中所指示,而pae604a被指派服务“dbsvc1”(在提供商网络处实现的数据库服务),如服务标识符字段606b中所指示。pae604a具有被指派给它的访问策略608a,而pae604b具有两个访问策略608b和608c。
在所描绘的实例中,访问策略608a适用于从或朝向具有在范围ci-ip地址范围610a中的ip地址的计算实例导向的storagesvc1流量。在一些实施方案中,代替使用ip地址来指示将被应用策略的流量,可以使用计算实例的实例名称或其他标识数据。可以在策略608a的允许操作类型字段612a中指示允许从地址范围610a内请求(例如,读取与写入)的操作类型的列表,并且在对象列表614a中指示这些操作可以被导向到的服务storagesvc1的对象(例如,存储在目录“/xyz”中的对象)。在所描绘的实例中,可以在适用的时间范围字段616a中指示将要应用策略608a的时间范围(例如,每个工作日的特定小时或一周的特定天)。主体列表(例如,用户或群组的标识符)618a也可以与策略608a相关联,指示其服务请求将由策略608a中指示的规则管制的实体。
将针对pae604b强制实施的访问策略608b和608c中的每一个可以指示它们各自的ci-ip地址范围610,从而指示将被应用策略的规则的计算实例。在诸如608b的一些策略中,例如,代替或除了所允许的操作类型,可以(例如,在禁止操作类型字段613中)指示禁止的操作类型。在所描绘的实例中,如对象列表614b中的“*”所指示,针对在主体列表618b中指示的主体,可以禁止dbsvc1的所有对象进行字段613中指示的操作。如图所示,针对每个策略,并不需要指定可包括在策略中的所有类型的条目—例如,策略608b不包括适用的时间范围,而策略608c不包括主体列表。默认值可以用于未包括在策略中的那些类型的条目—例如,可以假定整天是适用的时间范围,并且如果没有列出特定主体,则策略规则可以应用于所有主体。在所描绘的实例中,字段612b可以指示在适用的时间范围616c期间,针对字段614c中列出的对象所允许的操作类型。
在一些实施方案中,如果客户端没有为给定的pae指定特定的访问策略,则提供商网络可以应用某一组默认值来确定将应用于提交给对应服务的服务请求的规则。在一些实现中,在不同的服务之间,默认值可能不同。如先前提及的,在一些实施方案中,已经被指派pae的服务可以负责强制实施策略(在服务自己的节点处,或者通过向提供商网络的另一服务提交请求,诸如身份和授权管理服务)。对某些服务的服务请求可以以这样的方式被加密:使得仅可能在请求到达服务之后确定所请求的操作的类型,并且作为结果,可能必须在服务端应用访问策略。在这类情况下,可由客户端为其指示策略的配置管理器(例如,ivn配置管理器)将策略传送到服务(例如,到服务的控制平面或管理部件)。在其他实施方案中,策略的至少一些规则可以在请求者端(例如,ivn端)强制实施—例如,如果对应的用户在适用策略的主体列表中被列出,并且对所列出主体的所有写入都被禁止,则vmc可能拒绝从计算实例发出的写入请求。
区分来自重复使用的私有ip地址的请求
在一些实施方案中,如上所述,客户端可以使用在ivn网络配置上授予的灵活性来将他们选择的私有ip地址指派给ivn计算实例,例如,而不考虑相同的地址是否在其他地方(例如,在其他ivn中或在公共互联网中)正在使用。在一些情况下,客户端可以向不同ivn中的实例指派相同的ip地址。由于许多原因(诸如为了准确记录在服务处从其接收请求的源),可能有用的是,服务能够区分来自不同ivn的请求,即使在请求中可能指示相同的源ip地址。
图7示出根据至少一些实施方案的使用ivn和pae标识符来区分在服务处从具有相同私有ip地址的计算实例接收的请求的实例。如图所示,各自的ivn702a和702b可以由客户端c1设置,其中ivn702a被设置为由客户端组织的工程部使用,并且ivn702b被设置为由所述组织的市场部使用。在所描绘的实例中,两个组织可能需要访问存储在相同的公共可访问存储服务“storagesvc1”处的对象。pae750a可以被建立用于从ivn702a访问storagesvc1,并且pae750b可以被建立用于从ivn702b访问storagesvc1。
客户端c1可以(例如故意地或偶然地)将相同的私有ip地址10.4.5.6指派给ivn702a中的计算实例710a,并且指派给ivn702b中的计算实例710k。导向到storagesvc1的服务请求可以在计算实例710a和710k两者处生成。根据可以在如上所述的提供商网络的隧道中介处实现的封装协议,指示来自ivn702a的用于读取storagesvc1的对象x的请求的封装服务请求数据包774a可以被传送到前端节点771。封装数据包774a可以指示私有ip地址10.4.5.6作为请求的原始源,并且还可以包括用于路由请求的ivn标识符702a和pae750a的编码。类似地,指示读取服务的对象y的请求的封装数据包774b可以在前端节点771处被接收。在所描绘的实施方案中,数据包774b还可以指示其源实例的私有ip地址(10.4.5.6,与数据包774a中指示的相同)、用于路由其请求的源ivn(702b)和pae750b。
前端节点771(和/或执行所请求的工作的后端节点773)可能够使用包括在所接收的数据包中的ivn和/或pae标识信息来区分请求的源,即使数据包774a和774b中指示的源ip地址是相同的。因此,可以(由fe节点或be节点)生成日志记录733a,其指示接收或处理读取x的请求的时间戳t1、请求计算实例的私有ip地址10.4.5.6、ivn702a和pae750a的标识符。针对读取y的请求可以生成类似的日志记录733b,其指示接收或处理的时间戳t2、源ip地址10.4.5.6以及ivn702b和pae750b的标识符。在一些实施方案中,仅ivn的标识符或标识符pae可以包括在日志记录中(或者在封装数据包中),因为任一个可能足以将请求的源区别开。
应注意,如上所述,在隧道中介将ivn或pae标识符并入封装数据包774的源报头内的实施方案中,即使在服务侧节点(诸如前端节点771和/或后端节点773)可能不一定能够解析源报头的内容的情境下,也可以将来自不同ivn的流量区别开。例如,如果第三方服务被注册以使用基于pae的路由,并且ipv6被用于封装,则第三方服务的节点可能不知道ipv6报头的哪些特定位被用于对源ivn信息或源pae信息进行编码。然而,由于来自ivn702a的数据包p1的ipv6源报头将不同于来自ivn702b的数据包p2的ipv6源报头,所以第三方服务节点将至少能够确定p1和p2来自不同的源,即使在第三方服务节点处未确定关于ivn标识符和/或pae标识符的细节。当然,如果第三方服务节点负责实现类似于图6所示的访问控制策略,并且访问控制策略与特定ivn或特定pae相关联,则第三方服务节点可能必须获得ivn/pae标识符。
用于私有别名端点的方法
图8是示出根据至少一些实施方案的可以被执行来配置pae的操作的各方面的流程图。如元素801所示,可以例如使用虚拟计算服务的资源,在提供商网络处代表客户端c1建立一个或多个隔离虚拟网络。每个ivn可以包括某一组资源,诸如计算实例等,对于所述资源,可以由客户端进行内部网络配置选择(诸如子网设置、ip地址指派等)。例如,客户端可以为计算实例的虚拟网络接口指派私有ip地址(在ivn之外不被通告的地址),而不必确保给定的私有ip地址相对于ivn之外的资源是唯一的。如果客户端希望在两个不同的ivn(即ivn1和ivn2)处使用相同的私有ip地址“a.b.c.d”,则这个地址可以被指派给例如ivn1中的计算实例ci1和ivn2中的不同计算实例ci1。应注意,在至少一些实施方案中,在给定ivn内仍可能需要ip地址的唯一性—例如,相同的ip地址可能不能分配给在同一ivn内启动的两个实例。
在所描绘的实施方案中,虚拟计算服务可使得客户端能够使用与ivn相关联的私有端点别名(pae),将来自具有私有ip地址的ivn计算实例的服务请求提交给公共可访问的服务(例如,由提供商网络运营商实现的存储或数据库服务,和/或由提供商网络的其他客户实现的第三方服务)。如元素804所示,可以例如由虚拟计算服务或提供商网络的配置管理器部件来创建和存储表示代表c1为ivn1建立的特定pae(pae1)的元数据记录。在至少一些实现中,在创建pae1(例如,响应于来自c1的编程请求)时,pae1不需要与任何特定服务相关联或绑定到任何特定服务。在与ivn1相关联的路由表内,例如在提供商网络中的其他地方(即,在ivn1之外)实现的选定服务被指派给pae1的单独配置步骤之后,如元素807所示,pae1最终可以被指示为针对在ivn1内始发并朝向所述选定服务导向的网络流量的路由目标。
在至少一些实施方案中,例如在提供商网络运营商已经建立并测试/验证了可能需要用于实现封装协议的部件(例如,隧道中介)之后,许多服务已被注册为pae支持,所述封装协议用于在ivn端具有私有ip地址的实例与在服务端具有公共ip地址的服务节点之间传送数据包。在一些实施方案中,服务的公共ip地址也可能必须在配置数据库中进行验证(并且根据需要更新),隧道中介和/或在ivn的实例主机处的虚拟化管理部件可访问所述配置数据库。在至少一个实施方案中,在将服务svc1指派给pae1(元素807)时,客户端c1可用的编程接口可使得客户端能够从这种注册的组中选择服务—也就是说,可以仅允许客户端将预先批准的服务关联至设置用于其ivn的pae。在一个实现中,可以通过设置pae的“服务”属性的值,在ivn配置数据库内表示pae(诸如pae1)与服务(诸如svc1)之间的关联。
在一些实施方案中,一个或多个访问策略可以与给定的pae(诸如pae1)相关联(元素810)。访问策略可以例如指示使用pae1允许或禁止的操作或服务请求的类型、通过pae1授予访问的对象类型、应用策略规则的主体(例如,用户或群组)、应用策略规则的时间段等等。在一些实施方案中,客户端c1可以例如使用编程接口来指示其针对pae1所选择的访问策略。在一些实现中,如果客户端不指示一个访问策略,则可以将默认访问策略应用于pae。在一些实现中,策略也可以表示为pae的属性。在可将多个策略指派给给定pae的一些实施方案中,配置管理器可以负责检测不同策略之间的冲突。例如,一个策略可能允许对特定对象的特定类型的操作,而另一个策略可能禁止这种类型的操作。在一些实现中,配置管理器可以请求客户端在冲突策略之间划分优先级或者移除冲突。在其他实施方案中,配置管理器可以简单地以某种默认优先级顺序来应用指定的策略(例如,其中默认最近应用的策略超越较早的策略),并且可以相应地解决冲突。
在所描绘的实施方案中,指示pae1作为目的地为svc1的流量的目标的路由表条目可以创建并附接(例如,由c1通过使用编程接口提交的请求)到ivn1的一个或多个子网(元素813)。代替将特定ip地址范围指定为路由表条目的源和目的地,可以将服务的注册名称指示为目的地,并且当创建pae1时指派给pae1的名称或标识符可以被指示为目标,从而从客户端c1的角度大大简化了ivn1与svc1之间的路由管理。在附接了路由表条目之后,子网的实例与svc1之间的流量流动可以开始。
在至少一些实施方案中,可能是这样的情况:与指派给一个或多个pae(例如,pae1)的服务(例如,svc1)相关联的一组公共ip地址可以随时间改变。在所描绘的实施方案中,注册服务(诸如svc1)的控制平面或管理部件和/或虚拟计算服务的配置管理器可以负责将公共ip地址列表和/或其他pae相关配置信息的更新传播到其中可以使用这类地址的部件(元素816)。可以例如对可从将要实现上述类别的封装协议的隧道中介访问的配置数据库和/或可从ivn实例主机的虚拟化管理部件访问的数据库进行这类更新。
图9是示出根据至少一些实施方案的用于将数据包从计算实例传送到公共可访问服务的隧道协议的使用的流程图。如元素901所示,可以在ivn(ivn1)处实现的计算实例ci1处确定(例如,使用dns查询)待访问的服务svc1的公共ip地址“addr1”,对于所述ivn,pae(pae1)已建立用于去往/来自svc1的流量。在计算实例ci1处,可以生成其本体指示服务请求sr1的至少一部分的基线数据包bp1(元素904)。ci1的私有ip地址可以被指示为bp1的源地址,并且addr1可以被指示为目的地。bp1可以从ci1朝向addr1传送,例如,使用附接到ci1的虚拟网络接口。
在所描绘的实施方案中,基线数据包bp1可以由在运行ci1的实例主机处的虚拟化管理部件(vmc)诸如管理程序或特权域操作系统拦截(元素907)。vmc可以例如用作实例主机的虚拟化资源(诸如虚拟网络接口)与硬件部件(诸如物理网络接口卡)之间的中介。vmc可以分析bp1的目的地地址和/或pae配置信息的一个或多个元素,诸如指示从ci1到svc1的流量应以pae1为目标的路由表条目。在至少一个实施方案中,vmc还可以或者替代地能够在svc1的公共ip地址列表中查找addr1。基于对配置信息的检查,vmc可能够确定从bp1导出的第一封装数据包ep1将被发送到隧道中介,例如用于通过桥接网络进一步向addr1传输(元素910)。隧道中介可以例如是已经被设置用于通过内部桥接网络在虚拟计算服务(诸如ci1)的节点与公共可访问服务(诸如svc1)的节点之间路由流量的多节点群中的一个节点。在一些实施方案中,可以根据用于在虚拟计算服务的各种部件内路由的第一封装协议p1来格式化第一封装数据包ep1。在ep1内,bp1(包括bp1的源和目的地报头)可以被并入本体部件中,并且在一些实现中,可以由vmc添加一个或多个p1报头。ep1的添加的报头可以指示例如作为源的vmc(或运行vmc的实例主机)和作为目的地的隧道群(或特定隧道中介)。在一个实现中,ivn1和/或pae1的标识符也可以包括在ep1报头中。在一些实施方案中,ep1报头可能不一定指示pae1的标识符,而是可包括指示ep1是与pae相关联的数据包的字段。
在所描绘的实施方案中,ep1可以最终到达隧道中介,例如,在穿过虚拟计算服务的网络的一个或多个跳之后。在隧道中介处,可以提取bp1并且可以检查ep1报头的内容。bp1的源和目的地地址(即,ci1的私有ip地址和svc1地址addr1)可以用于在隧道协议p2的映射数据库中查找对应的源和目的地地址,所述源和目的地地址将在第二封装数据包ep2中指定(元素913)。在一些实施方案中,可以根据ipv4格式化基线数据包bp1(和/或ep1),而将要在隧道协议中使用的源和目的地地址可以根据ipv6格式化,例如使用siit或类似的ipv4-ipv6转换协议。在其他实施方案中,隧道协议可以是专有的,例如,不一定需要使用ipv6样式的地址。在ipv6地址不用于隧道协议的一些实施方案中,可以使用附加ipv4报头(诸如tcp选项报头)来执行基线数据包的封装。在至少一个实施方案中,可以使用udp(用户数据报协议)封装(例如,通过将基线数据包并入udp消息内)。在所描绘的实施方案中,ep1报头可以被移除并且在隧道中介处由ep2报头代替。如图4所示,在一些实施方案中,一个或多个ep2报头可分别指示或编码(a)bp1源地址和目的地地址(例如,使用128位中的32位ep2源地址报头来对32位bp1源ip地址进行编码,并且使用128位中的32位ep2目的地地址字段来对32位bp1目的地ip地址进行编码)和/或(b)源ivn(ivn1)和用于路由的pae(pae1)的标识符。在一些实现中,可包括在ip2报头中的pae标识符本身可包括对应ivn的标识符的编码,且因此pae标识符可以在服务处用于确定已从其接收到请求的ivn和pae两者。在至少一个实现中,bp1目的地地址可以如下方式分别包括在ep2源和目的地报头内(例如,在最低的32位中):负载平衡器将给定数据包路由到相同的服务前端节点,无论是使用了bp1目的地地址还是使用了ep2目的地地址。
ep2可以例如通过在提供商网络内建立的桥接网络的选定路径从隧道中介传送到svc1的前端节点(元素916)。在一些实施方案中,ep2可以仅使用由提供商网络运营商管理和/或拥有的私有网络链路到达svc1。在其他实施方案中,用于ep2的路径可包括公共网络链路(例如,数据包可穿过提供商网络之外的或由除提供商网络运营商之外的实体管理/拥有的网络装置)。在svc1的前端节点处,可以提取指示服务请求sr1的bp1内容(元素919)。另外,源实例ci1的唯一标识在使用ep2报头的服务处是可能的,例如,即使与指派给其他ivn的其他实例的ip地址相同的ip地址被指派给ci1。在每个ivn可仅包括具有特定私有ip地址的单个实例的实施方案中,例如,可以使用用于路由bp1的内容(其可以从一个或多个ep2报头中提取)的源ivn和/或pae的标识符将来自这类实例的服务请求区别开。在至少一些实施方案中,可以在服务侧根据与pae相关联的一个或多个访问控制策略来验证服务请求sr1。在检查访问许可之后,可以例如在服务svc1的后端节点处执行所请求的操作。在至少一些实施方案中,可以对至少一些类型的请求生成响应,并且可以以相反的顺序使用相同的协议在朝向ci1的相反方向上传送所述响应。例如,其内容在后端服务节点处生成的基线响应可以在服务的前端节点处根据隧道协议p2格式化,并且通过桥接网络传送到虚拟计算服务的隧道中介。在隧道中介处,可以提取响应,根据第一封装协议p1将所述响应格式化,并将其传递到运行ci1的实例主机处的vmc。vmc可以提取基线响应并将其提供给ci1。
应注意,在各种实施方案中,除了图8和图9的流程图所示的操作之外的操作可以用于实现用于支持私有别名端点的技术中的至少一些。在一些实施方案中,所示操作中的一些可以不实现,可以以不同的顺序或者在与图8或图9所示的部件不同的部件处实现,或者并行地而不是顺序地实现。在至少一个实施方案中,针对隧道中介和vmc所描述的功能例如可以组合—例如,允许数据包在无需由单独中介进一步封装的情况下通过选定路径被传送到服务的隧道协议可以在vmc处实现。在另一个实施方案中,可以将基线数据包从计算实例或从非虚拟化计算装置传送到隧道中介,而无需由vmc封装。
使用案例
上述建立私有别名端点以用作从隔离虚拟网络的计算实例到公共可访问服务的流量的路由目标的技术在多种情境下可能是有用的。随着越来越多的分布式应用被迁移到提供商网络环境,并且基于网络的攻击者的复杂性增加,对保护和隔离客户端应用免受源自公共互联网的网络入侵的需要也在增加。尽管隔离虚拟网络使得客户端能够为不从公共互联网通告或不可从公共互联网访问的计算实例分配私有ip地址,但是从这类实例访问期望在公共ip地址处始发请求的服务可能会出现问题。私有别名端点可使得能够传送这类服务请求,而不需要潜在的安全妥协并且不存在通过vpn连接的低效/昂贵的请求路由。
可鉴于以下条款对本公开的实施方案进行描述:
1.一种系统,其包括:
提供商网络的配置管理器;
实例主机的虚拟化管理部件(vmc),其中代表客户端建立的第一隔离虚拟网络(ivn)的第一计算实例在所述实例主机处被实例化,并且其中所述第一计算实例具有由所述客户端选择的私有网络地址;以及
隧道中介;
其中所述配置管理器被配置来存储第一元数据条目,所述第一元数据条目表示第一私有别名端点(pae)作为在所述第一ivn处始发并被导向到特定服务的数据包的路由目标的指定,其中所述数据包将被递送所述特定服务而不将公共通告的网络地址指示为源地址;
其中所述vmc被配置来至少部分地基于对所述第一元数据条目的检查向所述隧道中介传送从在所述vmc处拦截的基线数据包导出的第一封装数据包,其中所述基线数据包是在所述第一计算实例处生成并且被导向到所述特定服务的公共通告的网络地址;以及
其中所述隧道中介被配置来:
根据隧道协议从所述第一封装数据包生成第二封装数据包,其中所述第二封装数据包包括指示所述第一ivn作为源ivn的报头部件;以及
将所述第二封装数据包传送到所述特定服务的一个或多个节点中的第一节点,其中所述第一节点被配置来(a)从所述第二封装数据包确定所述第一ivn的标识符和所述私有网络地址,以及(b)启动一个或多个操作以履行在所述基线数据包中指示的服务请求。
2.如条款1所述的系统,其中所述第二封装数据包根据ipv6(互联网协议第6版)被格式化,并且其中所述基线数据包根据ipv4(互联网协议第4版)被格式化。
3.如条款1所述的系统,其中所述特定服务支持在多个对象上的多个操作类型,其中(a)所述特定服务的所述第一节点或(b)所述vmc中的一个或多个被配置来:
在启动所述一个或多个操作之前,启动确定所述服务请求是否符合指派给所述第一pae的第一访问控制策略,其中所述第一访问控制策略相对于使用所述第一pae作为路由目标提交的请求,指示以下中的一个或多个:(a)所述多个操作类型中的允许操作类型,(b)所述多个操作类型中的禁止操作类型,(c)允许所述多个操作类型中的特定操作类型的时间间隔,或(d)允许所述多个操作类型中的特定操作类型所针对的所述多个对象中的特定对象。
4.如条款1所述的系统,其中所述配置管理器进一步被配置来:
将第二pae指定为在所述第一ivn处始发的附加数据包的路由目标,其中所述附加数据包将被递送到不同服务。
5.如条款1所述的系统,其中所述配置管理器进一步被配置来:
在所述客户端的所述请求,将所述私有网络地址指派给在所述客户端的第二ivn处建立的第二计算实例;
建立将用于路由在所述第二ivn处始发并被导向到所述特定服务的流量的第二pae;
并且其中所述服务的所述第一节点被配置来:
基于对由所述隧道中介生成的特定封装报头的检查,确定在所述第一节点处提取的特定基线数据包是在所述第一计算实例处还是在所述第二计算实例处生成的。
6.一种方法,其包括:
在提供商网络的隧道中介处确定第一私有别名端点(pae)已经被指定为在代表客户端建立的第一隔离虚拟网络(ivn)处始发的流量的路由目标,其中所述流量将被递送到特定公共可访问服务;
在所述隧道中介处接收从所述第一ivn的第一计算实例被导向到所述特定公共可访问服务的公共通告的网络地址的基线数据包;以及
通过所述隧道中介向所述特定服务的第一节点传送包括(a)所述基线数据包的内容和(b)所述第一ivn作为源ivn的指示的封装数据包。
7.如条款6所述的方法,其中所述封装数据包根据ipv6(互联网协议第6版)被格式化,并且其中所述基线数据包根据ipv4(互联网协议第4版)被格式化。
8.如条款6所述的方法,其中所述特定服务支持多个对象上的多个操作类型,所述方法还包括:
在所述第一ivn的配置管理器处,从所述客户端接收将第一访问控制策略应用于所述第一pae的请求,其中所述第一访问控制策略相对于使用所述第一pae作为路由目标提交的请求,指示以下中的一个或多个:(a)所述多个操作类型中的允许操作类型,(b)所述多个操作类型中的禁止操作类型,(c)允许所述多个操作类型中的特定操作类型的时间间隔,或(d)允许所述多个操作类型中的特定操作类型所针对的所述多个对象中的特定对象;以及
在根据所述基线数据包中指示的特定请求执行第一操作之前,验证所述第一访问控制策略允许所述第一操作。
9.如条款6所述的方法,其还包括:
指定第二pae作为在所述第一ivn始发的附加流量的路由目标,其中所述附加流量将被递送到不同服务。
10.如条款6所述的方法,其中所述第一计算实例具有在所述客户端的所述请求被指派给它的特定私有ip地址,所述方法还包括:
代表所述客户端建立第二ivn,其中所述第二ivn包括第二计算实例;
在所述客户端的所述请求,将所述特定私有ip地址指派给所述第二计算实例;
建立将用于路由在所述第二ivn始发并被导向到所述特定服务的流量的第二pae;
在所述特定服务的特定节点处,基于对所述隧道中介生成的封装报头的检查,确定在所述特定节点处接收到的特定基线数据包是在指派了所述特定私有ip地址的所述第一计算实例处生成,还是在指派了所述特定私有ip地址的所述第二计算实例处生成。
11.如条款6所述的方法,其中根据在所述提供商网络处实现的专有隧道协议来格式化所述封装数据包。
12.如条款6所述的方法,其中所述封装数据包包括具有所述第一pae的标识符的表示的报头。
13.如条款6所述的方法,其还包括:
在所述提供商网络的配置管理器处,通过编程接口从所述客户端接收生成所述第一pae的请求;以及
响应于所述请求,由所述配置管理器存储表示所述第一pae的元数据条目。
14.如条款6所述的方法,其还包括:
在所述提供商网络的配置管理器处,通过编程接口接收注册不同服务以使用pae进行访问的请求;以及
响应于所述请求,由所述配置管理器将所述不同服务添加到服务集合,所述客户端可以从所述服务集合选择特定服务以与特定pae相关联。
15.如条款14所述的方法,其中所述不同服务由所述提供商网络的不同客户端使用所述提供商网络的一组资源来实现,所述方法还包括:
建立用于所述不同服务的一个或多个前端节点,所述一个或多个前端节点包括被配置来提取从导向到所述不同服务的基线数据包导出的封装数据包的内容的特定前端节点。
16.一种存储程序指令的非暂时性计算机可访问存储介质,所述程序指令在一个或多个处理器上执行时实现提供商网络的隧道中介,其中所述隧道中介被配置来:
根据第一私有别名端点(pae)作为从代表客户端在所述提供商网络处建立的第一隔离虚拟网络(ivn)导向到特定服务的流量的路由目标的指定,接收在所述第一ivn的第一计算实例处生成的基线数据包,其中所述基线数据包指示所述特定服务的公共ip(互联网协议)地址作为它的目的地地址;
根据选定的隧道协议,生成包括(a)所述基线数据包的内容的至少一部分和(b)指示所述第一ivn作为源ivn的报头部件的封装数据包;以及
将所述封装数据包传送到所述特定服务的第一节点。
17.如条款16所述的非暂时性计算机可访问存储介质,其中所述封装数据包根据ipv6(互联网协议第6版)被格式化,并且其中所述基线数据包根据ipv4(互联网协议第4版)被格式化。
18.如条款16所述的非暂时性计算机可访问存储介质,其中所述隧道中介进一步被配置来:
根据第二pae作为从第一ivn导向到不同服务的流量的路由目标的指定,接收在所述第一ivn的第二计算实例处生成的第二基线数据包的表示,其中所述第二基线数据包指示所述不同服务的公共ip地址作为它的目的地地址;
根据所述选定的隧道协议,生成包括(a)所述第二基线数据包的内容的至少一部分和(b)指示所述第一ivn作为源ivn的报头部件的第二封装数据包;以及
将所述第二封装数据包传送到所述不同服务的不同节点。
19.如条款16所述的非暂时性计算机可访问存储介质,其中所述第一封装数据包包括所述第一计算实例的私有ip地址的指示,其中所述隧道中介进一步被配置来:
根据第二pae作为从代表所述客户端建立的第二ivn导向到所述特定服务的流量的路由目标的指定,接收在所述第二ivn的第二计算实例处生成的第二基线数据包的表示,其中所述第二基线数据包指示所述特定服务的所述公共ip地址作为它的目的地地址;
根据所述选定的隧道协议生成第二封装数据包,所述第二封装数据包包括(a)所述第二基线数据包的内容的至少一部分、(b)指示所述第二ivn作为源ivn的报头部件以及(c)所述私有ip地址的指示;以及
将所述第二封装数据包传送到所述特定服务的所述第一节点,其中所述特定服务的所述第一节点被配置来基于对所述第二封装数据包的检查,确定所述第二基线数据包是在所述第一计算实例处生成还是在所述第二计算实例处生成。
20.如条款16所述的非暂时性计算机可访问存储介质,其中所述封装数据包包括具有所述第一pae的标识符的表示的报头。
说明性计算机系统
在至少一些实施方案中,实现用于支持私有别名端点的部件(诸如配置管理器、vmc、隧道中介以及公共可访问服务的节点)中的一个或多个的服务器可包括通用计算机系统,其包括或被配置来访问一个或多个计算机可访问介质。图10示出这种通用计算装置9000。在示出的实施方案中,计算装置9000包括通过输入/输出(i/o)接口9030耦接到系统存储器9020(其可包括非易失性和易失性存储器模块)的一个或多个处理器9010。计算装置9000还包括耦接到i/o接口9030的网络接口9040。
在各种实施方案中,计算装置9000可为包括一个处理器9010的单处理器系统,或包括若干处理器9010(例如两个、四个、八个或另一合适数量)的多处理器系统。处理器9010可以是能够执行指令的任何合适处理器。例如,在各种实施方案中,处理器9010可以是实现多种指令集架构(isa)中任何一种架构的通用或嵌入式处理器,所述架构诸如x86、powerpc、sparc、或mipsisa或任何其他合适的isa。在多处理器系统中,每一个处理器9010通常可以但不一定实现相同的isa。在一些实现中,代替或者除了常规处理器之外,可使用图形处理单元(gpu)。
系统存储器9020可被配置来存储可由处理器9010访问的指令和数据。在至少一些实施方案中,系统存储器9020可包括易失性部分和非易失性部分;在其他实施方案中,可仅使用易失性存储器。在各种实施方案中,系统存储器9020的易失性部分可以使用任何合适的存储器技术诸如静态随机存取存储器(sram)、同步动态ram或任何其他类型的存储器来实现。在一些实施方案中,对于系统存储器的非易失性部分(其可包括例如一个或多个nvdimm),可以使用基于闪存的存储器装置,包括nand闪存装置。在至少一些实施方案中,系统存储器的非易失性部分可包括电源,诸如超级电容器或其他电力存储装置(例如,电池)。在各种实施方案中,可以使用基于忆阻器的电阻随机存取存储器(reram)、三维nand技术、铁电ram、磁阻ram(mram)或各种类型的相变存储器(pcm)中的任一种,至少用于系统存储器的非易失性部分。在示出的实施方案中,实现一个或多个期望功能的程序指令和数据(诸如以上所述的那些方法、技术以及数据)展示成作为代码9025和数据9026存储在系统存储器9020内。
在一个实施方案中,i/o接口9030可被配置来协调装置中的处理器9010、系统存储器9020以及任何外围装置之间的i/o流量,所述外围装置包括网络接口9040或其他外围接口,诸如各种类型的永久和/或易失性存储装置。在一些实施方案中,i/o接口9030可执行任何必需协议、时序或其他数据转换以将来自一个部件(例如,系统存储器9020)的数据信号转变成适合于由另一个部件(例如,处理器9010)使用的格式。在一些实施方案中,i/o接口9030可包括对于通过各种类型的外围总线附接的装置的支持,所述外围总线例如像外围部件互连(pci)总线标准或通用串行总线(usb)标准的变型。在一些实施方案中,i/o接口9030的功能可分到两个或更多个单独的部件中,例如像北桥和南桥。另外,在一些实施方案中,i/o接口9030的一些或所有功能,诸如到系统存储器9020的接口,可直接并入处理器9010中。
网络接口9040可以被配置来允许数据在计算装置9000与附接到一个或多个网络9050的其他装置9060(例如像图1至图9所示的其他计算机系统或装置)之间进行交换。在各个实施方案中,网络接口9040可以支持通过任何合适的有线或无线通用数据网络(例如像以太网网络类型)进行通信。另外,网络接口9040可以支持通过电信/电话网络(诸如模拟语音网络或数字光纤通信网络)、通过存储区域网络(诸如光纤通道san)或通过任何其他合适类型的网络和/或协议进行通信。
在一些实施方案中,系统存储器9020可以是计算机可访问介质的一个实施方案,所述计算机可访问介质被配置来存储如以上针对图1至图9所述的用于实现对应方法和设备的实施方案的程序指令和数据。然而,在其他实施方案中,可以在不同类型的计算机可访问介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可包括非暂时性存储介质或存储器介质,诸如磁性或光学介质,例如通过i/o接口9030耦接到计算装置9000的磁盘或dvd/cd。非暂时性计算机可访问存储介质也可包括可作为系统存储器9020或另一类型存储器而被包括在计算装置9000的一些实施方案中的任何易失性或非易失性介质,诸如ram(例如,sdram、ddrsdram、rdram、sram等)、rom等。另外,计算机可访问介质可包括传输介质或信号,诸如通过通信介质(诸如网络和/或无线链路)传达的电信号、电磁信号或数字信号,诸如可通过网络接口9040来实现。多个计算装置(诸如图10中示出的那些装置)中的部分或全部可用来实现各种实施方案中的所描述功能;例如在多种不同的装置和服务器上运行的软件部件可协作来提供所述功能。在一些实施方案中,除了或代替使用通用计算机系统来实施,所描述功能的部分可使用存储装置、网络装置或专用计算机系统来实施。如本文所使用的术语“计算装置”是指至少所有这些类型的装置,并且不限于这些类型的装置。
总结
各种实施方案还可包括在计算机可访问介质上接收、发送或存储根据前面的描述而实施的指令和/或数据。一般来说,计算机可访问介质可包括存储介质或存储器介质,诸如磁性或光学介质(例如,磁盘或dvd/cd-rom),易失性或非易失性介质(诸如ram(例如,sdram、ddr、rdram、sram等)、rom等),以及通过通信介质(诸如网络和/或无线链路)传达的传输介质或信号,诸如电信号、电磁信号或数字信号。
如图示出并且在本文中描述的各种方法表示方法的示例性实施方案。所述方法可以在软件、硬件或其组合中实现。方法的顺序可以改变,并且各种元素可以添加、重新排序、组合、省略、修改等。
受益于本公开的本领域技术人员将清楚地知晓可做出各种修改和变化。旨在包括所有这些修改和变化,并且因此,以上描述应视为具有说明性而非限制性意义。