CN109964451A - 虚拟网络验证服务 - Google Patents

虚拟网络验证服务 Download PDF

Info

Publication number
CN109964451A
CN109964451A CN201780070172.8A CN201780070172A CN109964451A CN 109964451 A CN109964451 A CN 109964451A CN 201780070172 A CN201780070172 A CN 201780070172A CN 109964451 A CN109964451 A CN 109964451A
Authority
CN
China
Prior art keywords
network
virtual network
virtual
client
networking
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201780070172.8A
Other languages
English (en)
Other versions
CN109964451B (zh
Inventor
J·库克
C·道奇
S·麦克劳林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Priority to CN202210533894.5A priority Critical patent/CN114884822B/zh
Publication of CN109964451A publication Critical patent/CN109964451A/zh
Application granted granted Critical
Publication of CN109964451B publication Critical patent/CN109964451B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual LANs, VLANs, e.g. virtual private networks [VPN]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/02Standardisation; Integration
    • H04L41/024Standardisation; Integration using relational databases for representation of network management data, e.g. managing via structured query language [SQL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • H04L41/122Discovery or management of network topologies of virtualised topologies, e.g. software-defined networks [SDN] or network function virtualisation [NFV]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/40Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks using virtualisation of network functions or resources, e.g. SDN or NFV entities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

一种用于提供商网络的虚拟网络验证服务,其利用声明性逻辑编程语言以允许客户端提出关于其虚拟网络的查询作为约束问题;可以使用约束求解器引擎解析所述查询。用于提供商网络环境中的虚拟网络的联网原语的语义和逻辑可以根据所述逻辑编程语言被编码为一组规则;联网安全标准和/或客户端限定的规则也可以在所述规则中编码。可以获得且编码虚拟网络的描述。随后可以使用所述约束求解器引擎根据编码规则针对所述编码描述解析由查询表达的约束问题;可以将结果提供到客户端。

Description

虚拟网络验证服务
背景技术
许多公司和其它组织操作计算机网络,所述计算机网络互连多个计算系统以支持其操作,如其中所述计算系统被共同定位(例如,作为本地网络的一部分)或替代地定位在多个不同的地理位置中(例如,通过一个或多个专用或公共中间网络连接)。例如,容纳大量互连计算系统的数据中心已经变得司空见惯,如由单个组织和代表单个组织运营的专用数据中心,以及由作为企业的实体运营以向客户提供计算资源的公共数据中心。一些公共数据中心运营商为各种客户拥有的硬件提供网络接入、电力和安全安装设施,而其它公共数据中心运营商提供“全方位服务(full service)”设施,所述全方位服务设施还包含可供所述运营商的客户使用的硬件资源。
附图说明
图1示出根据一些实施例的在提供商网络环境中的虚拟网络验证服务。
图2示出根据一些实施例的示例虚拟网络验证服务的组件和操作。
图3示出根据一些实施例的客户端将用于虚拟网络的描述性信息和查询提供到虚拟网络验证服务,虚拟网络验证服务处理查询且将结果提供到客户端。
图4示出根据一些实施例的客户端将查询和接入虚拟网络的许可提供到虚拟网络验证服务,虚拟网络验证服务从虚拟网络获得描述性信息,处理查询,且将结果提供到客户端。
图5是根据一些实施例的用于将关于虚拟网络的信息提供到提供商网络的客户端的方法的高级流程图。
图6是根据一些实施例的用于将关于虚拟网络的信息提供到提供商网络的客户端的方法的流程图,其中客户端将描述性信息和查询提供到虚拟网络验证服务。
图7是根据一些实施例的用于将关于虚拟网络的信息提供到提供商网络的客户端的方法的流程图,其中客户端将描述性信息和接入虚拟网络的许可提供到虚拟网络验证服务。
图8示出根据一些实施例的在包含对等虚拟网络的提供商网络环境中的虚拟网络实施方案。
图9是根据一些实施例的用于为客户端自动合成虚拟网络的方法的流程图。
图10是根据一些实施例的用于为客户端自动合成虚拟网络的另一方法的流程图。
图11示出根据一些实施例的示例提供商网络环境。
图12示出根据一些实施例的使用IP隧穿技术在网络基体上实施覆盖网络的示例数据中心。
图13是根据一些实施例的对客户端提供存储虚拟化服务和硬件虚拟化服务的示例提供商网络的框图。
图14示出根据一些实施例的对至少一些客户端提供虚拟网络的示例提供商网络。
图15示出根据一些实施例的在提供商网络上的示例虚拟网络中的子网和安全群组。
图16是示出可以在一些实施例中使用的示例计算机系统的框图。
尽管本文通过实例的方式针对若干实施例和说明性附图描述了实施例,但是所属领域的技术人员将认识到,实施例不限于所描述的实施例或附图。应当理解,附图和对其的详细描述并非旨在将实施例限制于所公开的特定形式,而是相反,其意图是覆盖落入由所附权利要求限定的精神和范围内的所有修改、等同物和替代物。本文使用的标题仅用于组织目的,并不意指用于限制说明书或权利要求的范围。如在整个本申请中所使用的,词语“可以”以允许的意义使用(即,意指具有潜在的意义),而不是强制意义(即,意指必须)。类似地,词语“包含(include)”、“包含(including)”和“包含(includes)”意指包含但不限于。当在权利要求中使用时,术语“或”用作包含性的而不是排他性的或。例如,短语“x、y或z中的至少一个”意指x、y和z中的任何一个,以及它们的任何组合。
具体实施方式
描述了用于验证提供商网络环境中的虚拟网络的方法和设备的各种实施例。描述了虚拟网络验证服务的实施例,其利用声明性逻辑编程语言来允许客户端将关于其在提供商网络上的虚拟网络的查询(包含递归查询)表达为约束问题,且通过使用约束求解器(例如,可满足性模理论(satisfiability modulo theories,SMT)求解器)引擎解析查询来提供查询的结果。可以在一些实施例中使用的示例声明性逻辑编程语言是Datalog。应注意可以使用其它声明性逻辑编程语言。
客户端可以使用各种提供商网络服务来在其虚拟网络中提供和配置联网原语;每一服务可以提供其自身的应用程序编程接口(API)和联网语义。常规地,当可以为每一服务提供代码样本和文档时,已不存在虚拟网络中的联网原语之间的交互的正式描述。在实施例中,可以根据逻辑编程语言将用于联网原语的虚拟联网语义和逻辑表达且编码为一组虚拟联网规则。虚拟联网规则可以包含表达可以在虚拟网络中实施且由提供商网络的服务和API提供的各种联网原语之间的共同关系和交互的规则。因此,实施例可以在一个位置或文件中提供虚拟联网规则,所述规则描述虚拟联网如何在提供商网络环境中工作的逻辑。
在一些实施例中,虚拟联网规则可以并入有编码联网安全标准的规则,所述标准例如支付卡行业数据安全标准(Payment Card Industry Data Security Standard,PCIDSS)、联邦风险和授权管理计划(Federal Risk and Authorization ManagementProgram,FedRAMP)标准,或健康保险可移植性和责任法案(Health InsurancePortability and Accountability Act,HIPPA)标准,或客户端的内部安全标准。在一些实施例中,虚拟网络验证服务可以提供不同的两组或更多组虚拟联网规则,所述规则各自编码不同的联网安全标准,客户端可以选择性使用所述标准来验证它们的虚拟网络符合特定标准。在一些实施例中,虚拟网络验证服务可以允许客户端限定编码客户端的内部安全标准的定制规则、最佳实践或其它联网要求,且因此可以实施多组虚拟联网规则,其包含由客户端限定应用于其特定虚拟网络的定制规则。
在实施例中,虚拟网络验证服务获得用于客户端的虚拟网络的描述性信息。所述描述性信息可以例如识别在虚拟网络中实施的联网原语的实例,包含所述实例的描述(例如,指派给计算实例的角色、对资源实例授予或拒绝的许可、指派给实例的IP地址等),描述实例之间的关系(例如,网络上在实例之间的路径),以及描述到外部实体的接口或接入点(例如,可由虚拟网络外部的实体接入的计算实例)。在一些实施例中,客户端可以从虚拟网络获得描述性信息且将描述性信息提供到虚拟网络验证服务。替代地,在一些实施例中,客户端可以对虚拟网络验证服务授予许可以允许虚拟网络验证服务直接从虚拟网络获得描述性信息。虚拟网络验证服务可以根据声明性逻辑编程语言将描述性信息编码为逻辑程序。
虚拟网络验证服务的实施例当相比于例如端口扫描和句法检查方法等常规网络分析方法时可以提供显著优点。不同于这些常规方法,通过已编码的虚拟联网规则和虚拟网络描述,虚拟网络验证服务了解所有联网原语和资源实例以及其复杂的相互关系。不同于依赖于装置在扫描时启用且因此可能仅识别网络上在装置之间在扫描时存在的路径的常规方法,客户端或服务可以仅使用对维持描述虚拟网络的元数据的一个或多个提供商网络服务的API的DESCRIBE调用来获得描述性信息,且因此即使相应装置或实例未启用和收听也可以识别网络上的路径。此外,端口扫描方法可以识别威胁的存在,但不可以识别威胁的不存在。句法检查方法可以检查个别网络装置的浅层性质,但并不识别攻击向量的存在或不存在。另一方面,虚拟网络验证服务的实施例可以找到与已编码的虚拟联网规则中表达的网络策略的所有可能的偏差,且可以识别威胁和攻击向量的存在和不存在。另外,客户端或服务可以仅使用对维持描述虚拟网络的元数据的一个或多个提供商网络服务的DESCRIBE调用来获得描述性信息,且因此不同于例如需要对客户端的虚拟网络几乎不存在影响的实质网络和CPU带宽的端口扫描方法等常规方法,并且还不像端口扫描方法那样需要对提供商网络上的每个装置的完全网络接入。
在实施例中,虚拟网络验证服务从客户端接收查询。在一些实施例中,可以用类似于SQL但适用于网络配置的表达式查询语言来提出查询。此查询的非限制性示例可以有些类似于“VNVS查询-i列表:can-ssh(A,B)”,其请求虚拟网络验证服务(virtual networkverification service,VNVS)提供所有实例对的列表,以使得实例A可SSH到实例B。替代地,在一些实施例中,可以用人类友好方式提出查询。此查询的非限制性示例可以有些类似于“为我示出所有实例对的列表,使得实例A可SSH到实例B中”。在一些实施例中,至少一些查询可以是预定义的,且经由到虚拟网络验证服务的图形接口在用户接口元素(例如,菜单)中提供到客户端。
查询对应于关于产生的逻辑程序的定理且表达约束问题。虚拟网络验证服务使用被配置成根据声明性逻辑编程语言解析约束问题的约束求解器程序(也被称作约束求解器引擎)根据编码规则解析由对已编码描述的查询表达的约束问题,且将结果提供到客户端。在一些实施例中,虚拟网络验证服务可以提供用于提出查询的API和接口。在一些实施例中,虚拟网络验证服务可以提供客户端可经由所述API和接口进行选择的一组标准查询。在一些实施例中,虚拟网络验证服务可以允许客户端经由API和接口编写和提交定制查询。
在实施例中,客户端可以经由控制台上的到服务的图形接口或者经由命令行接口(command line interface,CLI)使用虚拟网络验证服务,以获得关于他们在提供商网络上的虚拟网络的问题(作为指定约束的查询提出)的答案。可以作为查询提出的示例问题包含(但不限于):
·虚拟网络中的哪些实例可以从因特网接入?
·哪些实例可以接入虚拟网络上的指定资源(例如,数据库、高速缓冲存储器、存储端点、另一实例等)?
·虚拟网络符合联网安全标准的最佳实践?
·虚拟网络遵守如这组规则中编码的我公司的最佳实践?
更一般化地,客户端可以使用虚拟网络验证服务来验证虚拟网络中的资源与虚拟网络中的其它资源之间的预期管道以及到外部实体的预期管道是开放的,且预期管道是仅有的开放管道(例如,外部实体无法到达虚拟网络中它们不应被允许到达的资源)。
验证资源与虚拟网络中的其它资源之间的管道或者虚拟网络中的资源与外部实体之间的管道是开放的可以包含验证在资源之间或资源与外部实体之间存在网络上的路径或路线(即,存在网络连接性)(例如,从资源到HTTPS网关的路径,外部实体可以经由所述路径接入虚拟网络上的资源)。路径可以是网络上的提供端点之间的网络连接性的直接路径,或替代地可以是通过路线上的一个或多个跳点且提供端点之间的网络连接性的传递性路径。可以仅使用对维持描述虚拟网络的元数据的一个或多个提供商网络服务的API的DESCRIBE调用来获得用于虚拟网络的描述性信息,且因此即使相应装置或实例未启用和收听也可以验证路径。在一些实施例中,用于虚拟网络的描述性信息可以包含对资源授予或拒绝的许可(例如,对虚拟网络上的端点授予或拒绝一个资源接入的许可、指定可以或不可接入给定端点(例如,存储端点)的资源实例的IP地址范围或特定端口的许可等)。在这些实施例中,验证虚拟网络中的路径是开放的可以包含验证用于所述路径的所需许可已经被授予。类似地,验证预期路径是仅有的开放路径可以包含确定虚拟网络中的资源或外部实体并不具有接入它们不应能够接入的资源的许可。
具有适当的若干组虚拟联网规则的虚拟网络验证服务的实施例可以例如由客户端使用以帮助客户验证他们的虚拟网络遵守联网安全标准,例如支付卡行业数据安全标准(PCI DSS)、联邦风险和授权管理计划(FedRAMP)标准,或健康保险可移植性和责任法案(HIPPA)标准,或验证它们的虚拟网络遵守客户端的内部安全标准或其它内部联网要求。
虚拟网络验证服务的实施例的另一示例应用是用于识别例如网络安全问题或软件错误等漏洞在虚拟网络中的可能影响。举例来说,如果在虚拟网络中的特定实例上运行的特定软件程序中发现漏洞,那么客户端可以编写且提交查询以确定此实例可与虚拟网络中的其它实例通信的所有方式。结果可以允许客户端识别漏洞的可能影响,且因此做出关于如何最佳处置此情形的决策。举例来说,如果不存在从具有漏洞的实例到具有任务关键数据库的实例的直接路径,那么可以对问题给予较低优先级以根据正常维护时间表来处置。如果具有漏洞的实例将影响具有任务关键数据库的实例,那么可以作出关断虚拟网络的至少部分以立即解决漏洞的决策。
虚拟网络验证服务的实施例的另一示例应用在于对用于提供商网络环境的虚拟联网的改变的离线测试。举例来说,描述虚拟联网如何在提供商网络环境中工作的逻辑的虚拟联网规则可以在测试环境中使用以在改变应用于提供商网络之前测试对虚拟联网原语的改变,以确定所述改变对虚拟网络可能具有何种影响。
用于虚拟网络验证服务的实施例的另一示例应用在于为客户端自动合成虚拟网络。举例来说,客户端可能想要建立遵守特定联网安全标准且含有指定一组联网原语的虚拟网络。虚拟网络验证服务和虚拟联网规则可以用于自动合成和验证满足所有约束(客户端指定的原语、联网安全标准、描述虚拟联网如何在提供商网络环境中工作的逻辑的虚拟联网规则等)的虚拟网络,使得客户端不必自己来建置和测试虚拟网络。举例来说,标准施加的约束可作为查询提出,且可解析查询以确定满足约束的虚拟网络配置,或替代地确定虚拟网络的配置是否符合约束。可以随后合成符合约束的虚拟网络,或替代地可以修改虚拟网络以符合约束。
用于虚拟网络验证服务的实施例的另一示例应用在于允许客户端在提供商网络上实施配置或改变之前验证新虚拟网络配置或对现有虚拟网络的改变。举例来说,虚拟网络配置可以由客户端产生或修改,且用于配置的约束可作为查询提出;可以解析查询以在提供商网络上实施配置之前验证配置符合如查询中提出的客户端的约束。
图1示出根据一些实施例的在提供商网络环境中的虚拟网络验证服务。为客户端提供提供商网络100的服务提供商可以提供服务和应用程序编程接口(API)102,其允许客户端在提供商网络100上的虚拟网络110中建立和管理资源。提供商网络100环境中的虚拟网络110可以广泛地被限定为网络空间(例如,由地址范围或地址空间逻辑地限定),其含有相应客户端的一组提供商网络资源,且充当用于客户端的资源的提供商网络100上的逻辑地隔离的区段。虚拟网络110可以根据网络协议实施专用或本地因特网协议(IP)地址空间,例如在第四版因特网协议(IPv4)地址范围或子网内的32位IP地址。虚拟网络110上的源(例如,诸如计算资源、存储资源、服务器、主机装置等端点)可以被指派虚拟网络110的地址空间内的IP地址(例如,32位IPv4地址)。提供商网络100上的客户端的虚拟网络110包含客户端的资源实例,例如主机装置上的虚拟机(virtual machines,VM),其由客户端配置为虚拟计算资源实例。可以根据硬件虚拟化技术实施提供商网络上的至少某些资源实例,所述硬件虚拟化技术使多个操作系统能够在主机计算机上同时运行,即作为VM在主机装置上同时运行。主机装置上的监管程序或虚拟机监视器(virtual machine monitor,VMM)在具有虚拟平台的相应主机上呈现VM,且监视主机装置上的VM的执行。可以为每一VM提供一个或多个IP地址;相应主机上的VMM可以知道主机上的VM的IP地址。
可以经由各种提供商网络服务102将各种联网资源、结构和功能性(称为联网原语)提供到提供商网络100的客户端。客户端可以至少部分地使用各种服务和API 102在提供商网络100上创建、配置、填充和修改其虚拟网络110。以下列出了可以由服务102提供的示例联网原语,且并不希望是限制性的:
·虚拟网络,例如如图1、14和15中所图示。
·资源实例(例如,由客户端使用服务102配置为虚拟计算资源实例(例如,应用程序服务器、网络服务器、数据库服务器、接入点、网关、负载平衡器、特定提供商网络服务的实例,例如记录服务、网络监视和分析服务、代码存储库服务、容器管理服务等)的VM)。
·标签-在一些实施例中,可以允许客户端通过标记资源实例来将特定角色指派给其虚拟网络内的特定资源实例(例如,VM)。标签可以例如是文本串,例如PROD或DEV。标签可以存储于用于资源实例的元数据中。标签可以包含标准提供商网络限定的标签和/或客户端限定的标签。用于资源实例的示例角色包含(但不限于)安全套接字壳(Secure SocketShell,SSH)接入实例、记录服务实例、代码存储库实例、制作资源实例和开发资源实例。
·虚拟网络端点(例如,诸如计算资源、存储资源、服务器、主机装置等端点)。
·虚拟网络对等连接。在一些实施例中,客户端可以在提供商网络上建立两个或更多个虚拟网络。对等连接可以在虚拟网络之间建立,其允许虚拟网络在提供商网络上安全地通信而不必遍历例如因特网的外部网络。
·因特网网关,其提供从虚拟网络外部的实体对虚拟网络的资源中的至少某些资源的接入。
·负载平衡器,例如在虚拟网络上的资源实例的群组或集群之间分配网络业务的虚拟化负载平衡器实例。
·网络地址转换(Network Address Translation,NAT)实例。
·NAT网关。
·网络接入控制列表(Network Access Control Lists,ACLs)。
·网络接口。
·路由表。
·子网-虚拟网络可以是但不必细分为两个或更多个子网络或子网,例如图14和15中所图示。
·安全群组-在一些实施例中,提供商网络可以允许客户端在客户端的虚拟网络内、在子网内或跨越子网建立和管理虚拟安全群组,例如图15中所图示。安全群组是资源实例的逻辑分组,且充当虚拟防火墙,其根据安全群组规则控制被允许到达安全群组内的一个或多个资源实例的业务。
·区-可以在多个地理位置或区域中支持提供商网络服务和资源(例如,虚拟网络、VM实例、数据存储、网关、负载平衡器等)。如本文所使用,区是支持提供商网络服务且其中客户端可以启动和配置资源的单独地理区域。服务和API可以允许客户端在一个或多个区中启动或复制其资源。
·区带-每一区可以包含多个隔离位置,在本文中被称作区带。客户端的资源实例可以跨越区内的多个区带分布,以使得如果一个区带中的资源实例出故障,那么另一区带中的实例可处置请求。
在一些实施例中,客户端可以使用相应提供商网络服务102在提供商网络100上建立虚拟网络110,其包含上方的联网原语中的一个或多个的实例。图1示出提供商网络100上的示例虚拟网络110,且并不希望是限制性的。客户端的虚拟网络110可以包含资源实例118(例如,VM),其实施虚拟网络的功能性,例如应用程序服务器、网络服务器、数据库服务器等等。资源实例118可以包含实例118A和118B的群组或集群;例如实例118A可以表示制作环境,而实例118B可以表示开发环境。在一些实施例中,实例118A和118B可以在不同子网和/或安全群组中。
客户端的虚拟网络110还可以包含服务实例116(例如,VM),其在客户端的虚拟网络110中实施特定提供商网络服务,例如应用程序和操作系统记录服务、网络监视和分析服务、代码存储库服务、容器管理服务等等。
客户端的虚拟网络110还可以包含接入实例,其使客户端网络180上的装置182和其它外部实体190能够经由例如因特网等中间网络150与虚拟网络110内的资源和端点通信。接入实例可以例如包含负载平衡器和网关(因特网网关、NAT网关等)。如此示例中所示,在一些实施例中,接入实例可以包含HTTPS接入实例114和SSH接入实例112。HTTPS接入实例114可以包含用于使用HTTPS协议从外部实体190分别接入资源实例118A和118B的实例114A和114B,以及用于使用HTTPS协议从客户端网络180上的装置182接入服务实例116的实例114C。在一些实施例中,客户端可以例如使用SSH从客户端网络180上的装置182(例如,控制台)接入虚拟网络110中的资源实例。在一些实施例中,为了使用SSH接入资源实例,对客户端给定实例的IP地址和密钥。客户端可随后使用所提供信息直接SSH到实例中。在一些实施例中,SSH接入实例112可以充当代理,其允许客户端使用SSH协议从客户端网络180上的装置182(例如,控制台)接入虚拟网络110上的客户端的资源实例。举例来说,SSH接入实例112可以在客户端的虚拟网络的公开可接入的子网中。客户端的资源实例中的至少某些可以在不是公开可接入的子网中。这些资源实例可以在安全群组中,其允许从附接到SSH接入实例112的安全群组进行SSH接入。客户端可以连接到SSH接入实例112以连接到客户端的资源实例。
如图1所示,提供商网络100可以包含由提供商网络100上的一个或多个计算装置实施的虚拟网络验证服务130。在一些实施例中,可以例如由如图1中所图示的SSH接入实例112在客户端的虚拟网络100上实施虚拟网络验证服务130的实例。虚拟网络验证服务130利用声明性逻辑编程语言(例如,Datalog)以允许客户端将关于其在提供商网络上的虚拟网络的查询(包含递归查询)表达为约束问题,且通过使用约束求解器引擎解析查询来提供查询的结果。图2示出根据一些实施例的虚拟网络验证服务130。
参看图1,在虚拟网络验证服务130中,由服务102提供的用于联网原语的虚拟联网语义和逻辑可以根据逻辑编程语言而表达且编码为一组虚拟联网规则。虚拟联网规则可以包含在虚拟网络110中式实施的表达各种联网原语之间的共同关系和交互的规则。虚拟联网规则还可以并入有编码联网安全标准(例如,PCI、FedRAMP、HIPPA等)或客户端的内部安全标准或其它联网要求的规则。
虚拟网络验证服务130获得用于客户端的虚拟网络110的描述性信息。描述性信息可以例如识别在虚拟网络110中实施的联网原语的实例,包含各种实例的描述(例如,指派给实例的角色、对实例授予或拒绝的许可、指派给实例的IP地址等),描述实例之间的关系(例如,实例之间的路径),且描述到外部实体190的接口或接入点。在一些实施例中,客户端可以从虚拟网络110获得描述性信息且将描述性信息提供到虚拟网络验证服务130,如图3所示。替代地,在一些实施例中,客户端可以对虚拟网络验证服务130授予许可以允许虚拟网络验证服务130直接从虚拟网络110获得描述性信息,如图4所示。虚拟网络验证服务130可以根据声明性逻辑编程语言将描述性信息编码为逻辑程序。
虚拟网络验证服务130利用声明性逻辑编程语言,且允许客户端例如经由到客户端网络180中的客户端装置182上的服务130的图形接口或命令行接口(CLI)提出关于其在提供商网络100上的虚拟网络110的查询。可以在一些实施例中使用的示例逻辑编程语言是Datalog。应注意可以使用其它声明性逻辑编程语言。在一些实施例中,可以用稍微类似于SQL但适用于网络配置的表达式查询语言来提出查询。替代地,在一些实施例中,可以人类友好方式提出查询。查询对应于关于产生的逻辑程序的定理且表达约束问题。虚拟网络验证服务130使用约束求解器引擎根据编码规则针对编码描述解析由查询表达的约束问题,且将结果提供到客户端。在一些实施例中,虚拟网络验证服务130可以提供用于提出查询的API和接口。在一些实施例中,虚拟网络验证服务130可以提供客户端可经由所述API和接口进行选择的一组标准查询。在一些实施例中,虚拟网络验证服务130可以允许客户端经由API和接口编写和提交定制查询。
以下描述关于图1所示的示例虚拟网络可以由客户端提出的示例查询,且并不希望是限制性的。
在虚拟网络110的一些实施例中,虚拟网络110上的资源应当仅可经由SSH通过SSH接入实例112从客户端网络180上的指定端点接入。因此,客户端可能想要验证虚拟网络110中没有实例可经由SSH从中间网络150上的端点接入。验证此情形的示例查询可以表达为:
所有实例:
!internet-can-ssh-to-instance(Instance)。
客户端还可能想要验证从客户端网络180,可经由SSH接入虚拟网络110上的SSH接入实例112。如前文所述,在一些实施例中,虚拟网络110中的至少某些客户端的实例可以被指派特定角色;所述角色可以由存储于实例的元数据中的标签指示。标签可以包含于描述性信息中,且因此可以在用于虚拟网络110的编码描述中指示。因此,在一些实施例中,可以在查询中使用标签以例如验证被指派特定角色的实例可实际执行那些角色。验证从客户端网络180可经由SSH接入虚拟网络110上的SSH接入实例112的示例查询可以表达为:
所有实例:
atom/instance-tag(Instance,tag-key/Name,tag-value/SSHAccessInstance)
<=>ClientNetwork-can-ssh-to-instance(Instance)。
以上表达式当由约束求解器评估时检查虚拟网络110上的所有实例;对于标记为SSHAccessInstance的实例,约束求解器确定所述实例是否可经由SSH从客户端网络180到达,在是的情况下返回真且在否的情况下返回假。
以下列出客户端可以通过向虚拟网络验证服务130提出适当查询来验证的虚拟网络110的方面的一些其它示例,且并不希望是限制性的:
仅SSH接入实例112可经由SSH从客户端网络180接入。
资源实例118A和118B可以通过其相应HTTPS接入实例114A和114B由外部实体190经由中间网络150B(例如,因特网)到达。
资源实例118A和118B可到达中间网络150B以验证请求。
资源实例118A和118B可写入到指定服务实例116。
可通过HTTPS接入实例114C从客户端网络180到达指定服务实例116。
指定服务实例116可到达虚拟网络110上的指定端点。
所有实例都标记有一组指定标签中的一个。
图2示出根据一些实施例的示例虚拟网络验证服务的组件和操作。虚拟网络验证服务230可以由提供商网络上的一个或多个计算装置实施。在一些实施例中,可以例如由如图1中所图示的SSH接入实例112在客户端的虚拟网络上实施虚拟网络验证服务230的实例。如图2所示,在一些实施例中,虚拟网络验证服务230可以包含服务引擎234、约束求解器236引擎,和API 232。服务引擎234可以实施但不限于规则编码250逻辑、查询处理260逻辑,和描述编码270逻辑。约束求解器236是声明性逻辑编程语言引擎,其被配置成基于编码虚拟联网规则238解析由编码描述240表示的关于虚拟网络的查询,包含递归查询。API 232将服务210的功能性暴露于外部实体,包含但不限于客户端。
在图2的(1A)和(1B)处,服务230的规则编码250逻辑可以获得(1A)且编码(1B)将应用于虚拟网络的虚拟联网规则238。待编码的规则可以从服务提供商获得,从客户端获得,或从其它外部实体或来源获得。在本文档中稍后提供示例编码规则238。
在实施例中,可以获得在虚拟网络中使用的联网原语的虚拟联网语义和逻辑,且根据逻辑编程语言编码为一组虚拟联网规则238。虚拟联网规则238可以包含表达可以在虚拟网络中实施且由提供商网络的服务和API提供的各种联网原语之间的共同关系和交互的规则。因此,实施例可以在一个位置或文件中提供虚拟联网规则238,所述规则描述虚拟联网如何在提供商网络环境中工作的逻辑。
在一些实施例中,虚拟网络验证服务230可以获得且编码用于联网安全标准的规则,例如支付卡行业数据安全标准(PCI DSS)、联邦风险和授权管理计划(FedRAMP)标准,或健康保险可移植性和责任法案(HIPPA)标准,且因此可以实施包含用于验证联网安全标准的规则的多组虚拟联网规则238。在一些实施例中,虚拟网络验证服务230可以提供不同的两组或更多组虚拟联网规则238,所述规则各自编码不同的联网安全标准,客户端可以选择性使用所述标准来验证它们的虚拟网络符合特定标准。在一些实施例中,虚拟网络验证服务230可以允许客户端限定编码客户端的内部安全标准的定制规则、最佳实践或其它联网要求,且因此可以实施多组虚拟联网规则238,其包含由客户端限定应用于其特定虚拟网络的定制规则。
在图2的(2)处,服务230的查询处理260逻辑可以从客户端接收查询以根据虚拟联网规则238针对虚拟网络进行解析。在一些实施例中,客户端可以经由到服务API 232的图形接口或命令行接口(CLI)提供关于其在提供商网络上的虚拟网络的查询。在一些实施例中,可以用类似于SQL但适用于网络配置的表达式语言来提出查询。替代地,在一些实施例中,可以人类友好方式提出查询。上文参看图1描述了示例查询。
在图2的(3A)和(3B)处,服务230的描述编码270逻辑可以获得(3A)且编码(3B)虚拟网络的描述。在一些实施例中,服务230的描述编码270逻辑获得用于虚拟网络的描述性信息(3A)且将所述描述性信息编码(3B)为用于其接收的每一查询的编码描述240以确保当解析查询时描述240是最新的。然而,在一些实施例中,描述编码270逻辑可以获得且编码用于虚拟网络的描述性信息,且使用编码描述240处理两个或更多个查询。在图2的(3A)处,服务230的描述编码270逻辑获得用于客户端的虚拟网络的描述性信息。描述性信息可以例如识别在虚拟网络中实施的联网原语的实例,包含各种实例的描述(例如,指派给实例的角色、对实例授予或拒绝的许可、指派给实例的IP地址等),描述实例之间的关系(例如,实例之间的路径),且描述到外部实体的接口或接入点。在一些实施例中,客户端可以从虚拟网络获得描述性信息且将描述性信息与查询一起提供到虚拟网络验证服务230,如图3所示。替代地,在一些实施例中,客户端可以对虚拟网络验证服务230授予许可以允许虚拟网络验证服务230响应于查询而直接从虚拟网络获得描述性信息,如图4所示。在图2的(3B)处,服务230的描述编码270逻辑可以根据声明性逻辑编程语言将获得的描述性信息编码为逻辑程序。
在图2的(4)处,服务230的查询处理260逻辑可以将查询提供到约束求解器236。约束求解器236根据编码规则238针对编码描述240解析由查询表达的约束问题,且在(5A)处将结果(例如,对由查询提出的问题的答案)提供到查询处理260,所述查询处理在(5B)处将结果格式化且经由API 232将格式化结果提供到客户端。格式化结果可以包含文字结果(例如,表达对由查询提出的约束的答案的文字,例如“是”、“否”、“真”或“假”,满足由查询提出的约束的实例的列表等)和/或图形结果(例如,通过解析查询而确定的两个或更多个实例之间的关系的图形表示,识别通过解析查询所识别的实例的虚拟网络的图形表示等)。
图3示出根据一些实施例的客户端将用于虚拟网络的描述性信息和查询提供到虚拟网络验证服务,虚拟网络验证服务处理查询且将结果提供到客户端。在图3的(1)处,客户端例如从如图1中所图示的客户端网络上的客户端装置382可以从提供商网络上的客户端的虚拟网络310获得描述性信息。举例来说,在一些实施例中,维持描述虚拟网络的元数据的提供商网络的一个或多个提供商网络服务可以经由相应API提供DESCRIBE或相似调用,其允许客户端在其虚拟网络310上请求实例的描述性信息。在图3的(2)处,客户端可以经由服务API 332将查询和描述性信息提供到提供商网络验证服务330的服务引擎334。在图3的(3A)处,服务引擎334可以根据声明性逻辑编程语言编码获得的描述性信息,且将查询和编码描述提供到约束求解器336。约束求解器336根据编码虚拟联网规则338解析针对编码描述的查询,且在(3B)处将结果(例如,对由查询提出的问题的答案)提供到服务引擎334,所述服务引擎在(4)处格式化结果且经由API 332将格式化结果提供到客户端。
图4示出根据一些实施例的客户端将查询和接入虚拟网络的许可提供到虚拟网络验证服务,虚拟网络验证服务从虚拟网络获得描述性信息,处理查询,且将结果提供到客户端。在图4的(1)处,客户端经由提供商网络的客户端账户488可以对虚拟网络验证服务430提供许可以从其虚拟网络410获得描述性信息。举例来说,在一些实施例中,维持描述虚拟网络的元数据的提供商网络的一个或多个提供商网络服务可以经由相应API提供DESCRIBE或相似调用,其允许客户端在其虚拟网络410上请求实例的描述性信息。客户端可以对服务430授予许可以允许服务430执行对用于虚拟网络410的提供商网络服务API的DESCRIBE调用。在一些实施例中,客户端可以仅授予对虚拟网络410中的实例的元数据的读取许可,且不授予对元数据或对在虚拟网络410上或通过虚拟网络410可接入的其它数据的写入或修改特权。在图4的(2)处,客户端可以经由服务API 432将查询提供到提供商网络验证服务430的服务引擎434。在图4的(3)处,响应于查询,服务引擎434可以例如使用经由相应API对维持描述虚拟网络的元数据的一个或多个提供商网络服务的DESCRIBE调用而从客户端的虚拟网络410得到描述性信息。在图4的(4A)处,服务引擎434可以根据声明性逻辑编程语言编码获得的描述性信息,且将查询和编码描述提供到约束求解器436。约束求解器436根据编码虚拟联网规则438解析针对编码描述的查询,且在(4B)处将结果(例如,对由查询提出的问题的答案)提供到服务引擎434,所述服务引擎在(5)处格式化结果且经由API 432将格式化结果提供到客户端。
图5是根据一些实施例的用于将关于虚拟网络的信息提供到提供商网络的客户端的方法的高级流程图。如在1000所指示,可以获得且编码联网规则。待编码的规则可以从服务提供商获得,从客户端获得,或从其它外部实体或来源获得。虚拟联网规则可以表达用于在提供商网络上的虚拟网络中使用的联网原语的虚拟联网语义和逻辑。在一些实施例中,虚拟联网规则可以表达用于联网安全标准的规则,例如支付卡行业数据安全标准(PCIDSS)、联邦风险和授权管理计划(FedRAMP)标准,或健康保险可移植性和责任法案(HIPPA)。在一些实施例中,虚拟联网规则可以包含表达客户端的内部安全标准或其它联网要求的客户端限定的规则。在本文档中稍后提供示例编码规则。
如在1010指示,虚拟网络验证服务可以从客户端接收关于虚拟网络的查询。在实施例中,客户端可以经由控制台上的到服务的图形接口或者经由命令行接口(CLI)使用虚拟网络验证服务,以获得关于他们在提供商网络上的虚拟网络的问题(作为查询提出,包含递归查询)的答案。在一些实施例中,可以用类似于SQL但适用于网络配置的表达式语言来提出查询。替代地,在一些实施例中,可以人类友好方式提出查询。上文参看图1描述了示例查询。
如在1020指示,虚拟网络验证服务可以获得且编码关于虚拟网络的描述性信息。所述描述性信息可以例如识别在虚拟网络中实施的联网原语的实例,包含所述实例的描述(例如,指派给计算实例的角色、对资源实例授予或拒绝的许可、指派给实例的IP地址等),描述实例之间的关系(例如,在实例之间的路径),以及描述到外部实体的接口或接入点(例如,可由虚拟网络外部的实体接入的计算实例)。在一些实施例中,客户端可以从虚拟网络获得描述性信息且将描述性信息提供到虚拟网络验证服务,如图6中所示。替代地,在一些实施例中,客户端可以对虚拟网络验证服务授予许可以允许虚拟网络验证服务直接从虚拟网络获得描述性信息,如图7所示。虚拟网络验证服务可以根据声明性逻辑编程语言(例如,Datalog)将描述性信息编码为逻辑程序。
如在1030指示,虚拟网络验证服务可以使用声明性逻辑编程语言(例如,Datalog)约束求解器引擎根据编码虚拟联网规则解析针对编码描述的查询。如在1040所指示,可以格式化查询解析的结果(例如,对由查询提出的问题的答案)且提供到客户端。格式化结果可以包含文字结果(例如,表达对由查询提出的约束的答案的文字,例如“是”、“否”、“真”或“假”,满足由查询提出的约束的实例的列表等)和/或图形结果(例如,通过解析查询而确定的两个或更多个实例之间的关系的图形表示,识别通过解析查询所识别的实例的虚拟网络的图形表示等)。
如由从元素1040返回到元素1010的箭头指示,可以迭代地执行元素1010-1040以提出和解析关于客户端的虚拟网络的多个查询。在一些实施例中,举例来说,客户端可以写入包含一系列查询的脚本,且运行脚本以对虚拟网络验证服务提出查询且从虚拟网络验证服务接收结果。如图5所示,在一些实施例中,虚拟网络验证服务可以获得用于虚拟网络的描述性信息且将描述性信息编码为用于其接收的每一查询的编码描述以确保当解析查询时描述是最新的。然而,在一些实施例中,虚拟网络验证服务可以获得且编码用于虚拟网络的描述性信息,且使用编码描述处理两个或更多个查询。
图6是根据一些实施例的用于将关于虚拟网络的信息提供到提供商网络的客户端的方法的流程图,其中客户端将描述性信息和查询提供到虚拟网络验证服务。如在1100所指示,客户端例如使用由提供商网络服务API提供的DESCRIBE调用从虚拟网络获得描述性信息。如在1110所指示,客户端将查询和描述性信息发送到虚拟网络验证服务。如在1120所指示,验证服务编码关于虚拟网络的描述性信息。如在1130所指示,验证服务使用约束求解器引擎根据编码虚拟网络规则解析针对编码描述的查询。如在1140所指示,虚拟网络验证服务将查询解析的结果提供到客户端。
图7是根据一些实施例的用于将关于虚拟网络的信息提供到提供商网络的客户端的方法的流程图,其中客户端将描述性信息和接入虚拟网络的许可提供到虚拟网络验证服务。如在1200所指示,客户端对虚拟网络验证服务准予许可,从而允许服务从虚拟网络获得描述性信息,例如使用对维持描述虚拟网络的元数据的一个或多个提供商网络服务的DESCRIBE调用以获得虚拟网络的信息的许可。如在1210所指示,客户端将查询发送到虚拟网络验证服务。如在1220所指示,虚拟网络验证服务例如使用对维持描述虚拟网络的元数据的一个或多个提供商网络服务的DESCRIBE调用从虚拟网络获得描述性信息。如在1230所指示,虚拟网络验证服务编码关于虚拟网络的描述性信息。如在1240所指示,虚拟网络验证服务使用约束求解器引擎根据规则解析针对编码描述的查询。如在1250所指示,虚拟网络验证服务将查询解析的结果提供到客户端。
图8示出根据一些实施例的包含两个或更多个对等虚拟网络的提供商网络环境中的客户端的虚拟网络实施方案。部分地提供图8以描述在如本文中所描述的虚拟网络验证服务2030中可以使用的示例虚拟联网规则。如图8所示,提供商网络2000上的客户端的虚拟网络实施方案2010可以包含两个或更多个虚拟网络2020。图8示出客户端的虚拟网络实施方案2010中的两个虚拟网络2020A和2020B。在一些实施例中,虚拟网络2020A和2020B可以各自包含一个或多个子网,且可以在虚拟网络2020A和2020B中建立安全群组(参见例如图14和15)。网络端点2022A和2022B表示相应虚拟网络2020A和2020B中的联网原语的各种实例(例如,资源实例)的网络接口。可以在提供商网络2000上在虚拟网络2020A与2020B之间建立对等连接2024,其允许虚拟网络2020A和2020B上的实例在提供商网络2000上安全地通信而不必遍历外部网络2050,例如因特网。
下文给出“专用路由”的示例规则。这些示例并不希望是限制性的。如这些示例中所使用的“路由”意味着无防火墙存在下IP包可从一个端点2022流动到另一端点2022。在虚拟网络实施方案2010内的两个端点2022之间的路由可称为“专用路由”。规则可以取决于两个端点2022是在同一虚拟网络2020中还是在虚拟网络实施方案2010中的不同虚拟网络2020中而不同。以下描述根据描述性逻辑编程语言的用于确定包是否可在虚拟网络实施方案2010中的两个端点2022之间流动的示例规则:
第一行限定端点的类型。Endpoint1和Endpoint2是变量。如果(routable-private-one-way Endpoint1Endpoint2)和(routable-private-one-wayEndpoint2Endpoint1)两者为真,那么规则(routable-private Endpoint1Endpoint2)评估为真(且否则为假)。对于虚拟网络2020内的端点2022之间的路由,规则routable-private-one-way可以限定为:
Endpoint1和Endpoint2是变量。Vnetwork是同一变量(即,指示同一虚拟网络2020)。如果Endpoint1和Endpoint2两者在同一虚拟网络2020中,那么此规则评估为真(且否则为假)。
对于通过对等连接2024在不同虚拟网络2020中的端点2022之间的路由,规则routable-private-one-way可以如下限定。前面带有“//”的文字是注释:
合成虚拟网络
在一些实施例中,虚拟网络验证服务可用于自动合成满足约束的虚拟网络,例如查询中提出的约束,以使得客户端不必自己建置和测试虚拟网络。举例来说,客户端可能想要建立遵守特定联网安全标准和/或客户端指定的联网标准且含有指定一组联网原语的虚拟网络。由标准施加的约束可作为查询提出,且可解析查询以确定满足约束的虚拟网络配置,或替代地确定虚拟网络的配置是否符合约束。可以随后合成符合约束的虚拟网络,或替代地可以修改虚拟网络以符合约束。
图9是根据一些实施例的用于为客户端自动合成虚拟网络的方法的流程图。如在3000所指示,客户端指定一组联网原语且提出指定所需虚拟网络的约束的一组查询。如在3010所指示,验证服务根据一组虚拟联网规则确定包含所述组联网原语且满足由查询指定的约束的虚拟网络配置。如在3020所指示,随后可以通过适当提供商网络服务根据虚拟网络配置在提供商网络上产生虚拟网络。
图10是根据一些实施例的用于为客户端自动合成虚拟网络的另一方法的流程图。如在3100所指示,客户端指定现有虚拟网络且提出指定所述虚拟网络的约束的一组查询。如在3110所指示,验证服务解析查询以根据一组虚拟联网规则确定虚拟网络是否满足由查询指定的约束。在3120,如果现有虚拟网络满足约束,那么可以告知客户端,且方法完成。在3120,如果现有虚拟网络不满足约束,那么可以通过适当提供商网络服务在提供商网络上产生符合约束的新虚拟网络。替代地,在一些实施例中,可以通过适当提供商网络服务修改现有虚拟网络以满足约束。
示例提供商网络环境
此部分描述示例提供商网络环境,其中可以实施参看图1至10描述的方法和设备的实施例。然而,这些示例提供商网络环境并不希望是限制性的。
图11示出根据一些实施例的示例提供商网络环境。提供商网络4000可以经由一个或多个虚拟化服务4010对客户端提供资源虚拟化,所述虚拟化服务允许客户端购买、出租或另外获得虚拟化资源的实例4012,包含但不限于计算和存储资源,所述虚拟化资源在一个或多个数据中心中实施于一个或多个提供商网络内的装置上。专用IP地址4016可以与资源实例4012相关联;专用IP地址是提供商网络4000上的资源实例4012的内部网络地址。在一些实施例中,提供商网络4000还可以提供客户端可以从提供商4000获得的公共IP地址4014和/或公共IP地址范围(例如,第四版因特网协议(IPv4)或第六版因特网协议(IPv6)地址)。
常规地,提供商网络4000经由虚拟化服务4010可以允许服务提供商的客户端(例如,操作客户端网络4050A的客户端)使被指派或分配给客户端的至少一些公共IP地址4014与被指派给客户端的特定资源实例4012动态地关联。提供商网络4000还可以允许客户端将先前映射到分配给客户端的一个虚拟化计算资源实例4012的公共IP地址4014重新映射到也分配给所述客户端的另一虚拟化计算资源实例4012。使用由服务提供商提供的虚拟化计算资源实例4012和公共IP地址4014,例如客户端网络4050A的运营商的服务提供商的客户端可以例如实施客户端特定的应用且在例如因特网的中间网络4040上呈现客户端的应用。中间网络4040上的其它网络实体4020可以随后产生到由客户端网络4050A公布的目的地公共IP地址4014的业务;所述业务路由到服务提供商数据中心,且在数据中心经由网络基体路由到当前映射到目的地公共IP地址4014的虚拟化计算资源实例4012的专用IP地址4016。类似地,来自虚拟化计算资源实例4012的响应业务可以经由网络基体路由回到中间网络4040上到源实体4020。
如本文所使用,专用IP地址指代提供商网络中的资源实例的内部网络地址。专用IP地址仅可在提供商网络内路由。在提供商网络外部发源的网络业务不直接路由到专用IP地址;而是,所述业务使用映射到资源实例的公共IP地址。提供商网络可以包含提供网络地址转换(NAT)或相似功能性的网络装置或器具,以执行从公共IP地址到专用IP地址的映射,反之亦然。
如本文所使用,公共IP地址是由服务提供商或由客户端指派给资源实例的因特网可路由的网络地址。路由到公共IP地址的业务例如经由1:1网络地址转换(NAT)而转换且转发到资源实例的相应专用IP地址。
一些公共IP地址可以由提供商网络基础结构指派给特定资源实例;这些公共IP地址可称为标准公共IP地址,或简单地称为标准IP地址。在一些实施例中,资源实例的标准IP地址到专用IP地址的映射是用于所有资源实例类型的默认启动配置。
至少一些公共IP地址可以分配给提供商网络4000的客户端或由其获得;客户端随后可以将其被分配的公共IP地址指派给分配给所述客户端的特定资源实例。这些公共IP地址可称为客户端公共IP地址,或简单地称为客户端IP地址。并非如同标准IP地址的情况由提供商网络4000指派给资源实例,客户端IP地址可以例如经由服务提供商提供的API而由客户端指派给资源实例。不同于标准IP地址,客户端IP地址分配给客户端账户且可在必要或需要时由相应客户端重新映射到其它资源实例。客户端IP地址与客户端的账户而不是特定资源实例相关联,且客户端控制所述IP地址直到客户端选择将其释放为止。不同于常规静态IP地址,客户端IP地址允许客户端通过将客户端的公共IP地址重新映射到与客户端的账户相关联的任何资源实例而掩蔽资源实例或可用性区带故障。客户端IP地址例如使客户端能够通过将客户端IP地址重新映射到替换资源实例来解决客户端的资源实例或软件的问题。
图12示出根据一些实施例的使用IP隧穿技术在网络基体上实施覆盖网络的示例数据中心。提供商数据中心4100可以包含网络基体,其包含联网装置4112,例如路由器、交换机、网络地址转换器(NAT)等等。一些实施例可以采用因特网协议(IP)隧穿技术以提供覆盖网络,经由所述覆盖网络,可以使用隧穿来使封装的包通过网络基体4110。IP隧穿技术可以提供用于在网络(例如,图12的数据中心4100中的本地网络)上创建覆盖网络的映射和封装系统,且可以提供用于覆盖层(公共IP地址)和网络基体4110层(专用IP地址)的单独名称空间。可以对照映射目录(例如,由映射服务4130提供)检查覆盖层中的包以确定其隧道基体目标(专用IP地址)应当是什么。IP隧穿技术提供虚拟网络拓扑(覆盖网络);呈现给客户端的接口(例如,服务API)附接到覆盖网络以使得当客户端提供客户端想要向其发送包的IP地址时,通过与知道IP覆盖地址是哪里的映射服务(例如,映射服务4130)通信,IP地址在虚拟空间中运行。
在一些实施例中,IP隧穿技术可以将IP覆盖地址(公共IP地址)映射到基体IP地址(专用IP地址),将包封装于所述两个名称空间之间的隧道中,且经由隧道将包递送到正确端点,在所述隧道处从包剥离封装。在图12中,示出从主机4120A上的虚拟机(VM)4124A到中间网络4150上的装置的示例覆盖网络隧道4134A以及主机4120B上的VM 4124B与主机4120C上的VM 4124C之间的示例覆盖网络隧道4134B。在一些实施例中,包可以在发送之前以覆盖网络包格式封装,且覆盖网络包可以在接收之后被剥离。在其它实施例中,并非在覆盖网络包封装包,覆盖网络地址(公共IP地址)可以在发送之前嵌入于包的基体地址(专用IP地址)中,且在接收之后即刻从包地址剥离。作为一实例,可以使用32位第四版因特网协议(IPv4)地址作为公共IP地址来实施覆盖网络,且IPv4地址可以作为在基体网络上用作专用IP地址的128位第六版因特网协议(IPv6)地址的部分而嵌入。
参看图12,其中可以实施实施例的至少一些网络可以包含硬件虚拟化技术,所述技术使多个操作系统能够在主机计算机(例如,图12的主机4120A和4120B)上同时运行,即在主机4120上作为虚拟机(VM)4124运行。VM 4124可以例如出租或租用给网络提供商的客户端。主机4120上的监管程序或虚拟机监视器(VMM)4122为主机上的VM 4124呈现虚拟平台且监视VM 4124的执行。可以为每一VM 4124提供一个或多个专用IP地址;主机4120上的VMM4122可以知道主机上的VM 4124的专用IP地址。映射服务4130可以知道所有网络IP前缀以及在本地网络上服务IP地址的路由器或其它装置的IP地址。这包含服务多个VM 4124的VMM4122的IP地址。映射服务4130可以例如集中在服务器系统上,或替代地可以分布于网络上的两个或更多个服务器系统或其它装置之间。网络可以例如使用映射服务技术和IP隧穿技术以例如在数据中心4100网络内的不同主机4120上的VM 4124之间路由数据包;应注意可以使用内部网关协议(interior gateway protocol,IGP)来在此本地网络内交换路由信息。
另外,例如提供商数据中心4100网络(有时称为自主系统(autonomous system,AS))的网络可以使用映射服务技术、IP隧穿技术和路由服务技术以从VM 4124到因特网目的地以及从因特网源到VM 4124路由包。应注意,外部网关协议(external gatewayprotocol,EGP)或边界网关协议(border gateway protocol,BGP)通常用于因特网上的源与目的地之间的因特网路由。图12示出根据一些实施例的示例提供商数据中心4100,其实施提供资源虚拟化技术且提供经由连接到因特网传输提供商的边缘路由器4114的完整因特网接入的网络。提供商数据中心4100可以例如为客户端提供经由硬件虚拟化服务实施虚拟计算系统(VM 4124)的能力以及经由存储虚拟化服务在存储资源4118上实施虚拟化数据存储4116的能力。
数据中心4100网络可以实施IP隧穿技术、映射服务技术和路由服务技术以将业务路由到虚拟化资源和从虚拟化资源路由业务,例如将包从数据中心4100中的主机4120上的VM 4124路由到因特网目的地,以及从因特网源路由到VM 4124。因特网源和目的地可以例如包含连接到中间网络4140的计算系统4170和连接到本地网络4150的计算系统4152,所述本地网络连接到中间网络4140(例如,经由将网络4150连接到因特网传输提供商的边缘路由器4114)。提供商数据中心4100网络还可以在数据中心4100中的资源之间路由包,例如从数据中心4100中的主机4120上的VM 4124到数据中心4100中的同一主机或其它主机4120上的其它VM 4124。
提供数据中心4100的服务提供商可以还提供额外数据中心4160,其包含与数据中心4100相似的硬件虚拟化技术且也可以连接到中间网络4140。包可以从数据中心4100转发到其它数据中心4160,例如从数据中心4100中的主机4120上的VM 4124到另一相似数据中心4160中的另一主机上的另一VM,反之亦然。
虽然上文描述使多个操作系统能够在主机计算机上作为主机上的虚拟机(VM)同时运行的硬件虚拟化技术,其中VM可以出租或租用给网络提供商的客户端,但硬件虚拟化技术还可用于以类似方式将其它计算资源,例如存储资源4118,作为虚拟化资源提供到网络提供商的客户端。
图13是根据一些实施例的对客户端提供存储虚拟化服务服务和硬件虚拟化服务的示例提供商网络的框图。硬件虚拟化服务4220提供多个计算资源4224(例如,VM)给客户端。计算资源4224可以例如出租或租用给提供商网络4200的客户端(例如,实施客户端网络4250的客户端)。可以为每一计算资源4224提供一个或多个专用IP地址。提供商网络4200可以被配置成将包从计算资源4224的专用IP地址路由到公共因特网目的地,以及从公共因特网源路由到计算资源4224。
提供商网络4200可以为例如经由本地网络4256耦合到中间网络4240的客户端网络4250提供经由耦合到中间网络4240和提供商网络4200的硬件虚拟化服务4220实施虚拟计算系统4292的能力。在一些实施例中,硬件虚拟化服务4220可以提供一个或多个API4202,例如网络服务接口,经由所述接口,客户端网络4250可以例如经由控制台4294接入由硬件虚拟化服务4220提供的功能性。在一些实施例中,在提供商网络4200处,在客户端网络4250处的每一虚拟计算系统4292可以对应于租用、出租或另外提供给客户端网络4250的计算资源4224。
从虚拟计算系统4292和/或另一客户端装置4290或控制台4294的实例,客户端可以例如经由一个或多个API 4202接入存储虚拟化服务4210的功能性,以从由提供商网络4200提供的虚拟数据存储4216接入数据和对其存储数据。在一些实施例中,虚拟化数据存储网关(未图示)可以提供在客户端网络4250处,所述网关可以本地高速缓冲存储至少一些数据,例如频繁存取的或关键的数据,且可以经由一个或多个通信信道与虚拟化数据存储服务4210通信以从本地高速缓冲存储器上载新的或修改的数据以使得数据的初级存储(虚拟化数据存储4216)得以维持。在一些实施例中,用户经由虚拟计算系统4292和/或在另一客户端装置4290上可以安装和接入虚拟数据存储4216容量,其对用户表现为本地虚拟化存储4298。
虽然图13中未示出,但也可以经由API 4202从提供商网络4200内的资源实例接入虚拟化服务。举例来说,客户端、应用服务提供商或其它实体可以经由API 4202从提供商网络4200上的相应虚拟网络内接入虚拟化服务,以请求虚拟网络内或另一虚拟网络内的一个或多个资源实例的分配。
图14示出根据一些实施例的示例提供商网络,其在提供商网络上对至少一些客户端提供虚拟网络。提供商网络4300上的客户端的虚拟网络4360例如使客户端能够将客户端网络4350上的其现有基础结构(例如,装置4352)连接到一组逻辑地隔离的资源实例(例如,VM 4324A和4324B以及存储4318A和4318B),且将例如安全服务、防火墙和入侵检测系统等管理能力延伸为包含其资源实例。
客户端的虚拟网络4360可以经由专用通信信道4342连接到客户端网络4350。专用通信信道4342可以例如为根据网络隧穿技术或某种其它技术在中间网络4340上实施的隧道。中间网络可以例如为共享网络或公共网络,例如因特网。替代地,可以在虚拟网络4360与客户端网络4350之间的直接专用连接上实施专用通信信道4342。
公共网络可以广泛地限定为提供对多个实体的开放接入和它们之间的互连性的网络。因特网或万维网(World Wide Web,WWW)是公共网络的实例。共享网络可以广泛地限定为接入被限于两个或更多个实体的网络,而不是接入一般不受限制的公共网络。共享网络可以例如包含一个或多个局域网(local area network,LAN)和/或数据中心网络,或者互连以形成广域网(wide area network,WAN)的两个或更多个LAN或数据中心网络。共享网络的示例可包含(但不限于)公司网络和其它企业网络。共享网络可以是从覆盖局部区域的网络到全球网络的范围中的任何地方。应注意,共享网络可以与公共网络共享至少一些网络基础设施,且共享网络可以耦合到可以包含公共网络的一个或多个其它网络,在所述其它网络与共享网络具有受控接入。与例如因特网的公共网络相比,共享网络也可以被视为专用网络。在一些实施例中,共享网络或公共网络可以充当提供商网络与客户端网络之间的中间网络。
为了在提供商网络4300上为客户端建立虚拟网络4360,可以将一个或多个资源实例(例如,VM 4324A和4324B以及存储4318A和4318B)分配给虚拟网络4360。应注意,其它资源实例(例如,存储4318C和VM 4324C)可以在提供商网络4300上保持可用以供其它客户端使用。也可以将一系列的公共IP地址分配给虚拟网络4360。另外,可以将提供商网络4300的一个或多个联网装置(路由器、交换机等)分配给虚拟网络4360。可以在虚拟网络4360处的专用网关4362与客户端网络4350处的网关4356之间建立专用通信信道4342。
在一些实施例中,除专用网关4362之外或替代于专用网关4362,虚拟网络4360可以包含公共网关4364,所述公共网关使虚拟网络4360内的资源能够经由中间网络4340与实体(例如,网络实体4344)直接通信,反之亦然,作为对经由专用通信信道4342进行通信的替代或补充。
虚拟网络4360可以但不一定细分为两个或更多个子网络或子网4370。举例来说,在包含专用网关4362和公共网关4364两者的实施方案中,虚拟网络4360可以细分为包含通过专用网关4362可到达的资源(在此实例中,VM 4324A和存储4318A)的子网4370A,以及包含通过公共网关4364可到达的资源(在此实例中,VM 4324B和存储4318B)的子网4370B。
客户端可以将特定客户端公共IP地址指派给虚拟网络4360中的特定资源实例。中间网络4340上的网络实体4344随后可以将业务发送到由客户端公布的公共IP地址;所述业务由提供商网络4300路由到相关联资源实例。从资源实例的返回业务由提供商网络4300在中间网络4340上路由回到网络实体4344。应注意,在资源实例与网络实体4344之间路由业务可能需要网络地址转换以在资源实例的公共IP地址与专用IP地址之间进行转换。
一些实施例可以允许客户端将如图14中所图示的客户端的虚拟网络4360中的公共IP地址重新映射到客户端的外部网络4350上的装置。当(例如,从网络实体4344)接收到包时,网络4300可以确定由包指示的目的地IP地址已重新映射到外部网络4350上的端点,且经由专用通信信道4342或经由中间网络4340处置包到相应端点的路由。响应业务可以通过提供商网络4300从端点路由到网络实体4344,或替代地可以由客户端网络4350直接路由到网络实体4344。从网络实体4344的角度,似乎如同网络实体4344与提供商网络4300上的客户端的公共IP地址通信。然而,网络实体4344实际上与客户端网络4350上的端点通信。
虽然图14示出在中间网络4340上和提供商网络4300外部的网络实体4344,但网络实体可以是提供商网络4300上的实体。举例来说,由提供商网络4300提供的资源实例中的一个可以是将业务发送到由客户端公布的公共IP地址的网络实体。
图15示出根据一些实施例的在提供商网络上的实例性虚拟网络中的子网和安全群组。在一些实施例中,例如图14中的提供商网络4300等提供商网络可以允许客户端在客户端的虚拟网络4410内在子网4414内或跨越子网4414建立和管理虚拟安全群组4416。安全群组4416是资源实例4418的逻辑分组且充当虚拟防火墙,所述虚拟防火墙根据安全群组规则控制被允许到达安全群组4416内的一个或多个资源实例4418的业务。客户端可以在虚拟网络4410内建立一个或多个安全群组4416,且可以使虚拟网络4410中的每一资源实例4418与安全群组4416中的一个或多个关联。在一些实施例中,客户端可以建立和/或修改用于每一安全群组4416的规则,所述规则控制被允许到达与安全群组4416相关联的资源实例4418的入站业务。
在图15中示出的示例虚拟网络4410中,虚拟网络4410细分为两个子网4414A和4414B。对虚拟网络4410的接入受网关4430控制。每一子网4414可以包含至少一个路由器4412,其用以向(和从)相应子网4414上的资源实例4418路由业务。在一些实施例中,网络接入控制列表(access control list,ACL)可用以在路由器4412处控制对子网4414的接入在图15中所示的示例中,资源实例4418A至4418E在子网4414A上,且资源实例4418F至4418J在子网4414B上。客户端已经建立四个安全群组4416A至4416D。如图15中所示,安全群组可以延伸跨越子网4414,例如包含子网4414A上的资源实例4418A和4418B以及子网4414B上的资源实例4418F的安全群组4416A。另外,资源实例4418可以包含于两个或更多个安全群组4416中,例如包含于安全群组4416A和4416B中的资源实例4418A。
可以根据以下条款描述本公开的实施例:
1.一种计算机系统,其包含耦合到存储器的处理器,所述存储器包含用于虚拟网络验证服务的指令,所述指令在执行时致使所述系统:
经由客户端装置从客户端接收关于虚拟网络的查询,其中所述查询被表达为约束问题,其中所述虚拟网络在提供商网络中实例化且包含虚拟机;
响应于所述查询:
获得所述客户端的虚拟网络的描述性信息;
根据声明性逻辑编程语言编码所述描述性信息以产生所述虚拟网络的编码描述;
使用约束求解器程序根据编码虚拟联网规则解析所述查询,其中所述约束求解器程序被配置成根据所述声明性逻辑编程语言解析约束问题;以及
将所述查询解析的结果提供到所述客户端装置。
2.如条款1中所述的系统,其中所述存储器还包括在执行时致使所述系统从所述提供商网络的应用程序接口获得所述描述性信息的指令。
3.如条款1中所述的系统,其中在执行时致使所述系统获得所述描述性信息的所述指令还包括在执行时致使所述系统进行以下操作的指令:
从所述客户端接收许可以从一个或多个提供商网络服务获得所述虚拟网络的所述描述性信息;以及
从所述一个或多个提供商网络服务获得所述提供商网络上的所述虚拟网络的所述描述性信息。
4.如条款1中所述的系统,其中所述描述性信息包括以下中的一个或多个:识别在所述虚拟网络中实施的联网原语的实例的信息,所述虚拟网络中的所述虚拟机的描述,所述虚拟网络中的所述虚拟机之间的关系的描述,或到所述虚拟网络外部的实体的接口的描述。
5.如条款1中所述的系统,其中所述虚拟联网规则包含以下中的一个或多个:编码用于在所述虚拟网络中实施的联网原语的虚拟联网语义和逻辑的规则,编码一个或多个联网安全标准的规则,或编码所述客户端的联网要求的客户端限定的规则。
6.如条款1中所述的系统,其中提出所述查询以验证所述虚拟网络中的虚拟机与所述虚拟网络中的其它虚拟机之间的路径是开放的,验证所述虚拟网络中的虚拟机与所述虚拟网络外部的一个或多个实体之间的路径是开放的,或验证所述虚拟网络中的虚拟机对于不应能够接入所述虚拟机的实体是不能够接入的。
7.如条款1中所述的系统,其中所述结果包含以下中的一个或多个:所述查询解析的所述结果的文本表示,或所述查询解析的所述结果的图形表示。
8.一种方法,其包括:
由在提供商网络上的一个或多个装置实施的虚拟网络验证服务执行:
接收关于所述提供商网络上的客户端的虚拟网络的查询,其中所述查询表达约束问题;
获得所述虚拟网络的描述性信息;
根据声明性逻辑编程语言编码所述描述性信息以产生所述虚拟网络的编码描述;
使用约束求解器引擎根据编码虚拟联网规则解析针对所述编码描述的所述查询;以及
将所述查询解析的结果提供到所述客户端。
9.如条款8中所述的方法,其中所述描述性信息是从所述客户端获得。
10.如条款8中所述的方法,其中获得所述描述性信息包括:
从所述客户端获得许可以从一个或多个提供商网络服务得到所述虚拟网络的所述描述性信息;以及
从所述一个或多个提供商网络服务获得所述提供商网络上的所述虚拟网络的所述描述性信息。
11.如条款8中所述的方法,其中所述描述性信息包括以下中的一个或多个:识别在所述虚拟网络中实施的联网原语的实例的信息,所述虚拟网络中的虚拟机的描述,所述虚拟网络中的所述虚拟机之间的关系的描述,或到所述虚拟网络外部的实体的接口的描述。
12.如条款8中所述的方法,其中所述虚拟联网规则包含以下中的一个或多个:编码用于在所述虚拟网络中实施的联网原语的虚拟联网语义和逻辑的规则,编码一个或多个联网安全标准的规则,或编码所述客户端的联网要求的客户端限定的规则。
13.如条款8中所述的方法,还包括从所述客户端接收所述编码虚拟联网规则,其中所述编码虚拟联网规则包含指定如由所述客户端限定的虚拟网络的最佳实践的规则,且其中提出所述查询以验证所述虚拟网络符合所述最佳实践。
14.如条款8中所述的方法,其中提出所述查询以验证所述虚拟网络中的虚拟机与所述虚拟网络中的另一虚拟机之间的路径是开放的,验证所述虚拟网络中的虚拟机与所述虚拟网络外部的一个或多个实体之间的路径是开放的,或验证所述虚拟网络中的虚拟机对于不应能够接入所述虚拟机的实体是不能够接入的。
15.如条款8中所述的方法,其中将所述查询解析的结果提供到所述客户端包括将所述查询解析的所述结果的文本表示提供到所述客户端或将所述查询解析的所述结果的图形表示提供到所述客户端。
16.如条款8中所述的方法,还包括接收所述查询,获得所述描述性信息,且根据到所述虚拟网络验证服务的应用程序编程接口提供所述查询解析的所述结果。
17.如条款8中所述的方法,其中所述客户端的虚拟网络包含两个对等虚拟网络,其中提出所述查询以验证第一对等虚拟网络中的虚拟机能够经由所述提供商网络上的所述对等虚拟网络之间的对等连接与第二对等虚拟网络中的另一虚拟机通信。
18.一种存储程序指令的非暂时性计算机可读存储介质,所述程序指令当在一个或多个计算机上执行时致使所述一个或多个计算机:
接收关于提供商网络上的客户端的虚拟网络的一个或多个查询,其中所述查询被表达为约束问题;
获得所述虚拟网络的描述性信息;
根据声明性逻辑编程语言编码所述描述性信息以产生所述虚拟网络的编码描述;
使用约束求解器引擎根据编码虚拟联网规则解析针对所述编码描述的所述一个或多个查询;以及
将所述一个或多个查询的所述解析的结果提供到所述客户端。
19.如条款18中所述的非暂时性计算机可读存储介质,其中所述描述性信息是从所述客户端或从维持描述虚拟网络的元数据的一个或多个提供商网络服务获得。
20.如条款18中所述的非暂时性计算机可读存储介质,其中所述描述性信息包括以下中的一个或多个:识别在所述虚拟网络中实施的联网原语的实例的信息,所述虚拟网络中的虚拟机的描述,所述虚拟网络中的所述虚拟机之间的关系的描述,或到所述虚拟网络外部的实体的接口的描述。
21.如条款18中所述的非暂时性计算机可读存储介质,其中所述虚拟联网规则包含以下中的一个或多个:编码用于在所述虚拟网络中实施的联网原语的虚拟联网语义和逻辑的规则,编码一个或多个联网安全标准的规则,或编码所述客户端的联网要求的客户端限定的规则。
说明性系统
在一些实施例中,如本文中所描述的实施用于验证提供商网络环境中的虚拟网络的方法和设备的一部分或全部的系统可以包含通用计算机系统,其包含或被配置成接入一个或多个计算机可存取介质,例如图16中说明的计算机系统5000。在所说明的实施例中,计算机系统5000包含一个或多个处理器5010,其经由输入/输出(I/O)接口5030耦合到系统存储器5020。计算机系统5000还包含耦合到I/O接口5030的网络接口5040。
在各种实施例中,计算机系统5000可以是包含一个处理器5010的单处理器系统,或包含若干处理器5010(例如,两个、四个、八个或另一合适数目)的多处理器系统。处理器5010可以是能够执行指令的任何合适的处理器。例如,在各种实施例中,处理器5010可以是实施多种指令集架构(ISA)中的任何一种的通用或嵌入式处理器,例如,x86、PowerPC、SPARC或MIPS ISA或任何其它合适的ISA。在多处理器系统中,处理器5010中的每一个可以共同但不是必须地实施相同的ISA。
系统存储器5020可以被配置成存储可由一个或多个处理器5010存取的指令和数据。在各种实施例中,系统存储器5020可以使用任何合适的存储器技术实施,例如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型存储器,或任何其它类型的存储器。在所说明的实施例中,实施一个或多个所需功能的程序指令和数据,例如上文对于提供用于提供商网络环境中的客户端资源的客户端限定的规则所述的那些方法、技术和数据,示出为作为代码5025和数据5026存储于系统存储器5020内。
在一个实施例中,I/O接口5030可以被配置成协调处理器5010、系统存储器5020和装置中的任何外围装置之间的I/O业务,所述外围装置包含网络接口5040或其它外围接口。在一些实施例中,I/O接口5030可以执行任何必要的协议、定时或其它数据变换以将来自一个组件(例如,系统存储器5020)的数据信号转换为适合于由另一组件(例如,处理器5010)使用的格式。在一些实施例中,I/O接口5030可以包含对通过各种类型的外围总线附接的装置的支持,例如,如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变体。在一些实施例中,I/O接口5030的功能可以分成两个或更多个单独的组件,例如,北桥和南桥。而且,在一些实施例中,I/O接口5030的一些或全部功能性(例如,到系统存储器5020的接口)可以直接并入到处理器5010内。
网络接口5040可以被配置成允许在计算机系统5000与附接到一个或多个网络5050的其它装置5060之间交换数据,所述其它装置例如如图1至15中所示的其它计算机系统或装置。在各种实施例中,网络接口5040可以支持经由任何合适的有线或无线通用数据网络的通信,例如,以太网网络的类型。另外,网络接口5040可以支持经由例如模拟语音网络或数字光纤通信网络的电信/电话网络,经由例如光纤通道的存储区域网络SAN或经由任一其它合适类型的网络和/或协议的通信。
在一些实施例中,系统存储器5020可以是如上文针对图1至10所描述用于实施验证提供商网络环境中的虚拟网络的方法和设备的实施例的被配置成存储程序指令和数据的计算机可存取介质的一个实施例。然而,在其它实施例中,可以在不同类型的计算机可存取介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可存取介质可以包含非暂时性存储介质或存储器介质,例如磁性或光学介质,例如经由I/O接口5030耦合到计算机系统5000的磁盘或DVD/CD。非暂时性计算机可存取存储介质还可以包含任何易失性或非易失性介质,如RAM(例如SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等,其可以包含在计算机系统5000的一些实施例中作为系统存储器5020或另一种类型的存储器。另外,计算机可存取介质可以包含传输媒体或经由例如网络和/或无线链路的通信媒体传送的例如电信号、电磁信号或数字信号的信号,例如,可以经由网络接口5040实施。
结论
各种实施例可以还包含在计算机可存取介质上接收、发送或存储根据前述描述实施的指令和/或数据。一般而言,计算机可存取介质可以包含如磁性或光学介质等存储介质或存储器介质,例如磁盘或DVD/CD-ROM、易失性或非易失性介质,如RAM(例如SDRAM、DDR、RDRAM、SRAM等)、ROM等,以及通过如网络和/或无线链路等通信介质传送的传输介质或如电信号、电磁信号或数字信号的信号。
如图中所说明和本文描述的各种方法表示方法的示例性实施例。所述方法可以用软件、硬件或其组合来实施。可以改变方法的顺序,并且可以添加、重新排序、组合、省略、修改等各种元素。
可以进行各种修改和改变,这对于受益于本公开的所属领域的技术人员来说将是明显的。希望包含所有此类修改和改变,并且因此,以上描述应按说明性而不是限制性意义来看待。

Claims (15)

1.一种方法,其包括:
由在提供商网络上的一个或多个装置实施的虚拟网络验证服务执行:
接收关于所述提供商网络上的客户端的虚拟网络的查询,其中所述查询表达约束问题;
获得所述虚拟网络的描述性信息;
根据声明性逻辑编程语言编码所述描述性信息以产生所述虚拟网络的编码描述;
使用约束求解器引擎根据编码虚拟联网规则解析针对所述编码描述的所述查询;以及
将所述查询解析的结果提供到所述客户端。
2.根据权利要求1所述的方法,其中所述描述性信息是从所述客户端获得。
3.根据权利要求1所述的方法,其中获得所述描述性信息包括:
从所述客户端获得许可以从一个或多个提供商网络服务得到所述虚拟网络的所述描述性信息;以及
从所述一个或多个提供商网络服务获得所述提供商网络上的所述虚拟网络的所述描述性信息。
4.根据权利要求1所述的方法,其中所述描述性信息包括以下中的一个或多个:识别在所述虚拟网络中实施的联网原语的实例的信息,所述虚拟网络中的虚拟机的描述,所述虚拟网络中的所述虚拟机之间的关系的描述,或到所述虚拟网络外部的实体的接口的描述。
5.根据权利要求1所述的方法,其中所述虚拟联网规则包含以下中的一个或多个:编码用于在所述虚拟网络中实施的联网原语的虚拟联网语义和逻辑的规则,编码一个或多个联网安全标准的规则,或编码所述客户端的联网要求的客户端限定的规则。
6.根据权利要求1所述的方法,还包括从所述客户端接收所述编码虚拟联网规则,其中所述编码虚拟联网规则包含指定如由所述客户端限定的虚拟网络的最佳实践的规则,且其中提出所述查询以验证所述虚拟网络符合所述最佳实践。
7.根据权利要求1所述的方法,其中提出所述查询以验证所述虚拟网络中的虚拟机与所述虚拟网络中的另一虚拟机之间的路径是开放的,验证所述虚拟网络中的虚拟机与所述虚拟网络外部的一个或多个实体之间的路径是开放的,或验证所述虚拟网络中的虚拟机对于不应能够接入所述虚拟机的实体是不能够接入的。
8.根据权利要求1所述的方法,其中将所述查询解析的结果提供到所述客户端包括将所述查询解析的所述结果的文本表示提供到所述客户端或将所述查询解析的所述结果的图形表示提供到所述客户端。
9.根据权利要求1所述的方法,还包括接收所述查询,获得所述描述性信息,且根据到所述虚拟网络验证服务的应用程序编程接口提供所述查询解析的所述结果。
10.根据权利要求1所述的方法,其中所述客户端的虚拟网络包含两个对等虚拟网络,其中提出所述查询以验证第一对等虚拟网络中的虚拟机能够经由所述提供商网络上的所述对等虚拟网络之间的对等连接与第二对等虚拟网络中的另一虚拟机通信。
11.一种包括处理器的系统,所述处理器耦合到存储程序指令的非暂时性计算机可读存储介质,所述程序指令当时致使所述系统:
接收关于提供商网络上的客户端的虚拟网络的一个或多个查询,其中所述查询被表达为约束问题;
获得所述虚拟网络的描述性信息;
根据声明性逻辑编程语言编码所述描述性信息以产生所述虚拟网络的编码描述;
使用约束求解器引擎根据编码虚拟联网规则解析针对所述编码描述的所述一个或多个查询;以及
将所述一个或多个查询的所述解析的结果提供到所述客户端。
12.根据权利要求11所述的系统,其中所述描述性信息是从所述客户端或从维持描述虚拟网络的元数据的一个或多个提供商网络服务获得。
13.根据权利要求11所述的系统,其中所述描述性信息包括以下中的一个或多个:识别在所述虚拟网络中实施的联网原语的实例的信息,所述虚拟网络中的虚拟机的描述,所述虚拟网络中的所述虚拟机之间的关系的描述,或到所述虚拟网络外部的实体的接口的描述。
14.根据权利要求11所述的系统,其中所述虚拟联网规则包含以下中的一个或多个:编码用于在所述虚拟网络中实施的联网原语的虚拟联网语义和逻辑的规则,编码一个或多个联网安全标准的规则,或编码所述客户端的联网要求的客户端限定的规则。
15.根据权利要求11所述的系统,其中在执行时致使所述系统获得所述虚拟网络的描述性信息的所述指令还包括在执行时致使所述系统进行以下操作的指令:
从所述客户端接收许可以获得所述描述性信息;以及
使用所述许可以从一个或多个提供商网络服务获得所述虚拟网络的所述描述性信息。
CN201780070172.8A 2016-11-22 2017-11-17 用以提供虚拟网络验证服务的方法、系统 Active CN109964451B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210533894.5A CN114884822B (zh) 2016-11-22 2017-11-17 虚拟网络验证服务

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/359,500 US10469324B2 (en) 2016-11-22 2016-11-22 Virtual network verification service
US15/359,500 2016-11-22
PCT/US2017/062336 WO2018098042A1 (en) 2016-11-22 2017-11-17 Virtual network verification service

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202210533894.5A Division CN114884822B (zh) 2016-11-22 2017-11-17 虚拟网络验证服务

Publications (2)

Publication Number Publication Date
CN109964451A true CN109964451A (zh) 2019-07-02
CN109964451B CN109964451B (zh) 2022-06-07

Family

ID=60703016

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201780070172.8A Active CN109964451B (zh) 2016-11-22 2017-11-17 用以提供虚拟网络验证服务的方法、系统
CN202210533894.5A Active CN114884822B (zh) 2016-11-22 2017-11-17 虚拟网络验证服务

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210533894.5A Active CN114884822B (zh) 2016-11-22 2017-11-17 虚拟网络验证服务

Country Status (5)

Country Link
US (3) US10469324B2 (zh)
EP (1) EP3545650A1 (zh)
JP (3) JP6737965B2 (zh)
CN (2) CN109964451B (zh)
WO (1) WO2018098042A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110311828A (zh) * 2019-08-14 2019-10-08 清华大学 一种网络验证的方法、装置、计算机存储介质及电子设备
CN114244763A (zh) * 2021-12-20 2022-03-25 中电福富信息科技有限公司 基于规则引擎的动态网络拓扑管理方法及其系统

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10469324B2 (en) 2016-11-22 2019-11-05 Amazon Technologies, Inc. Virtual network verification service
JP6585656B2 (ja) * 2017-05-10 2019-10-02 株式会社ソニー・インタラクティブエンタテインメント 製造ライン用コンピュータシステム及びそのネットワーク設定方法
US10474435B2 (en) * 2017-08-07 2019-11-12 Sap Se Configuration model parsing for constraint-based systems
US10534592B2 (en) 2017-08-07 2020-01-14 Sap Se Template expressions for constraint-based systems
US20190238410A1 (en) * 2018-01-31 2019-08-01 Hewlett Packard Enterprise Development Lp Verifying network intents
US11108805B2 (en) * 2018-06-27 2021-08-31 Amazon Technologies, Inc. Automated packetless network reachability analysis
US11570244B2 (en) * 2018-12-11 2023-01-31 Amazon Technologies, Inc. Mirroring network traffic of virtual networks at a service provider network
US20200192898A1 (en) * 2018-12-14 2020-06-18 Amazon Technologies, Inc. Multi-tenant storage for analytics with push down filtering
US11483350B2 (en) * 2019-03-29 2022-10-25 Amazon Technologies, Inc. Intent-based governance service
US11606301B2 (en) 2019-04-23 2023-03-14 Hewlett Packard Enterprise Development Lp Verifying intents in stateful networks using atomic address objects
US11044184B2 (en) * 2019-05-28 2021-06-22 Servicenow, Inc. Data packet loss detection
US11442959B2 (en) * 2019-08-07 2022-09-13 Nutanix, Inc. System and method of time-based snapshot synchronization
US11451477B2 (en) * 2019-09-27 2022-09-20 Amazon Technologies, Inc. Load balanced access to distributed endpoints
WO2022031694A1 (en) * 2020-08-03 2022-02-10 Cazena, Inc. Scalable security for saas data lakes
KR102382317B1 (ko) * 2020-10-22 2022-04-04 국방과학연구소 사이버 훈련 도구 다운로드 시스템 및 방법
US11516088B1 (en) * 2021-10-28 2022-11-29 Microsoft Technology Licensing, Llc Network configuration verification in computing systems
US20240089257A1 (en) * 2022-09-08 2024-03-14 Vmware, Inc. Evaluation of network correctness requirement

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0505784D0 (en) * 2005-03-22 2005-04-27 Hewlett Packard Development Co Modelling network to assess security properties
CN101699801A (zh) * 2009-10-30 2010-04-28 孙喜明 一种数据传输方法及传输数据的虚拟对等网络系统
CN103650430A (zh) * 2012-06-21 2014-03-19 华为技术有限公司 报文处理方法、装置、主机和网络系统
CN104363159A (zh) * 2014-07-02 2015-02-18 北京邮电大学 一种基于软件定义网络的开放虚拟网络构建系统和方法

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5892903A (en) 1996-09-12 1999-04-06 Internet Security Systems, Inc. Method and apparatus for detecting and identifying security vulnerabilities in an open network computer communication system
US7047288B2 (en) 2000-01-07 2006-05-16 Securify, Inc. Automated generation of an english language representation of a formal network security policy specification
JP2002185512A (ja) * 2000-12-12 2002-06-28 Hitachi Ltd ネットワーク接続性検証方法
CN1856790A (zh) * 2003-07-22 2006-11-01 基诺技术公司 使用本体的信息访问
US7685281B1 (en) * 2004-02-13 2010-03-23 Habanero Holdings, Inc. Programmatic instantiation, provisioning and management of fabric-backplane enterprise servers
WO2005101789A1 (en) 2004-04-14 2005-10-27 Gurunath Samir Kalekar A system for real-time network based vulnerability assessment of a host/device
US20080059416A1 (en) * 2004-09-15 2008-03-06 Forbes David I Software system for rules-based searching of data
US9083748B2 (en) * 2004-12-16 2015-07-14 Hewlett-Packard Development Company, L.P. Modelling network to assess security properties
US8250654B1 (en) 2005-01-27 2012-08-21 Science Applications International Corporation Systems and methods for implementing and scoring computer network defense exercises
US10015140B2 (en) 2005-02-03 2018-07-03 International Business Machines Corporation Identifying additional firewall rules that may be needed
US7523118B2 (en) * 2006-05-02 2009-04-21 International Business Machines Corporation System and method for optimizing federated and ETL'd databases having multidimensionally constrained data
US8145760B2 (en) * 2006-07-24 2012-03-27 Northwestern University Methods and systems for automatic inference and adaptation of virtualized computing environments
US8938783B2 (en) * 2006-09-11 2015-01-20 Microsoft Corporation Security language expressions for logic resolution
WO2010019918A1 (en) 2008-08-15 2010-02-18 Qualys, Inc. System and method for performing remote security assessment of firewalled computer
US9106540B2 (en) * 2009-03-30 2015-08-11 Amazon Technologies, Inc. Providing logical networking functionality for managed computer networks
CN102170457A (zh) * 2010-02-26 2011-08-31 国际商业机器公司 向应用的多租户提供服务的方法和装置
US9129086B2 (en) * 2010-03-04 2015-09-08 International Business Machines Corporation Providing security services within a cloud computing environment
US9177017B2 (en) * 2010-09-27 2015-11-03 Microsoft Technology Licensing, Llc Query constraint encoding with type-based state machine
EP2605145A4 (en) 2010-11-17 2017-08-16 Hitachi, Ltd. Method for finding communication devices connected to communication network, and management device
US8782762B2 (en) * 2011-08-17 2014-07-15 International Business Machines Corporation Building data security in a networked computing environment
US9311159B2 (en) * 2011-10-31 2016-04-12 At&T Intellectual Property I, L.P. Systems, methods, and articles of manufacture to provide cloud resource orchestration
US9426169B2 (en) 2012-02-29 2016-08-23 Cytegic Ltd. System and method for cyber attacks analysis and decision support
JP2014083535A (ja) * 2012-10-29 2014-05-12 Jfe Steel Corp ハンマーミルおよびハンマーの再利用方法
US9122510B2 (en) 2013-01-02 2015-09-01 International Business Machines Corporation Querying and managing computing resources in a networked computing environment
DE102013003055A1 (de) * 2013-02-18 2014-08-21 Nadine Sina Kurz Verfahren und Vorrichtung zum Durchführen von Suchen in natürlicher Sprache
JP6036464B2 (ja) * 2013-03-26 2016-11-30 富士通株式会社 プログラム、診断方法及び診断システム
US9374302B2 (en) * 2013-04-26 2016-06-21 Brocade Communications Systems, Inc. Distributed methodology for peer-to-peer transmission of stateful packet flows
US9177250B2 (en) * 2013-06-28 2015-11-03 Vmware, Inc. Method and system for determining configuration rules based on configurations of complex systems
US9634900B2 (en) * 2014-02-28 2017-04-25 Futurewei Technologies, Inc. Declarative approach to virtual network creation and operation
US9838253B2 (en) 2014-04-10 2017-12-05 Fujitsu Limited Object-oriented network virtualization
US9686162B2 (en) 2014-10-17 2017-06-20 International Business Machines Corporation Identifying configuration inconsistency in edge-based software defined networks (SDN)
MY189605A (en) * 2014-12-25 2022-02-20 Hitachi Systems Ltd Cloud-configuration visualization system, cloud-configuration visualization method, and cloud-configuration visualization program
JP5911620B2 (ja) * 2015-03-05 2016-04-27 株式会社日立製作所 仮想ネットワーク管理サーバ及びエッジルータ
US20170293501A1 (en) * 2016-04-11 2017-10-12 Vmware, Inc. Method and system that extends a private data center to encompass infrastructure allocated from a remote cloud-computing facility
US10469324B2 (en) 2016-11-22 2019-11-05 Amazon Technologies, Inc. Virtual network verification service
EP3568790B1 (en) 2017-01-11 2022-02-23 Morphisec Information Security 2014 Ltd. Protecting computing devices from a malicious process by exposing false information
US11108805B2 (en) * 2018-06-27 2021-08-31 Amazon Technologies, Inc. Automated packetless network reachability analysis
US11425157B2 (en) * 2018-08-24 2022-08-23 California Institute Of Technology Model based methodology for translating high-level cyber threat descriptions into system-specific actionable defense tactics
US11483350B2 (en) * 2019-03-29 2022-10-25 Amazon Technologies, Inc. Intent-based governance service

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0505784D0 (en) * 2005-03-22 2005-04-27 Hewlett Packard Development Co Modelling network to assess security properties
CN101699801A (zh) * 2009-10-30 2010-04-28 孙喜明 一种数据传输方法及传输数据的虚拟对等网络系统
CN103650430A (zh) * 2012-06-21 2014-03-19 华为技术有限公司 报文处理方法、装置、主机和网络系统
CN104363159A (zh) * 2014-07-02 2015-02-18 北京邮电大学 一种基于软件定义网络的开放虚拟网络构建系统和方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110311828A (zh) * 2019-08-14 2019-10-08 清华大学 一种网络验证的方法、装置、计算机存储介质及电子设备
CN114244763A (zh) * 2021-12-20 2022-03-25 中电福富信息科技有限公司 基于规则引擎的动态网络拓扑管理方法及其系统
CN114244763B (zh) * 2021-12-20 2023-11-17 中电福富信息科技有限公司 基于规则引擎的动态网络拓扑管理方法及其系统

Also Published As

Publication number Publication date
EP3545650A1 (en) 2019-10-02
JP7053732B2 (ja) 2022-04-12
US11095523B2 (en) 2021-08-17
US20200067785A1 (en) 2020-02-27
WO2018098042A1 (en) 2018-05-31
JP2022079638A (ja) 2022-05-26
JP6737965B2 (ja) 2020-08-12
CN114884822A (zh) 2022-08-09
JP2020504405A (ja) 2020-02-06
US20180145879A1 (en) 2018-05-24
CN114884822B (zh) 2024-04-05
JP2020195139A (ja) 2020-12-03
JP7293446B2 (ja) 2023-06-19
US20210377126A1 (en) 2021-12-02
US10469324B2 (en) 2019-11-05
CN109964451B (zh) 2022-06-07

Similar Documents

Publication Publication Date Title
CN109964451A (zh) 虚拟网络验证服务
US11184224B2 (en) System, method and compute program product for accessing a device on a network
CN103946834B (zh) 虚拟网络接口对象
US10666606B2 (en) Virtual private network service endpoints
US11088944B2 (en) Serverless packet processing service with isolated virtual network integration
CN105814554B (zh) 虚拟网络中基于身份和访问管理的访问控制
US8813225B1 (en) Provider-arbitrated mandatory access control policies in cloud computing environments
JP2021040352A (ja) 分離仮想ネットワークのためのプライベートエイリアスエンドポイント
EP3788755B1 (en) Accessing cloud resources using private network addresses
KR102545124B1 (ko) 자동화된 패킷리스 네트워크 도달가능성 분석
CN108616490A (zh) 一种网络访问控制方法、装置及系统
US10862796B1 (en) Flow policies for virtual networks in provider network environments
US11296981B2 (en) Serverless packet processing service with configurable exception paths
US20180139176A1 (en) PaaS CONNECTION METHOD AND PaaS CONNECTION DEVICE
US10901708B1 (en) Techniques for unsupervised learning embeddings on source code tokens from non-local contexts
US10848418B1 (en) Packet processing service extensions at remote premises
CN117097697A (zh) 一种网络访问方法、装置及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant