CN116366350A - 具有隔离虚拟网络集成的无服务器分组处理服务 - Google Patents

具有隔离虚拟网络集成的无服务器分组处理服务 Download PDF

Info

Publication number
CN116366350A
CN116366350A CN202310376088.6A CN202310376088A CN116366350A CN 116366350 A CN116366350 A CN 116366350A CN 202310376088 A CN202310376088 A CN 202310376088A CN 116366350 A CN116366350 A CN 116366350A
Authority
CN
China
Prior art keywords
packet processing
spps
packet
pipeline
network
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.)
Pending
Application number
CN202310376088.6A
Other languages
English (en)
Inventor
S·艾伦
A·达文波特
C·D·科斯马
A·N·利果里
J·E·马格里莫夫
N·阿鲁木甘
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
Priority claimed from US16/450,720 external-priority patent/US11296981B2/en
Priority claimed from US16/450,690 external-priority patent/US11088944B2/en
Priority claimed from US16/450,700 external-priority patent/US10848418B1/en
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Publication of CN116366350A publication Critical patent/CN116366350A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • 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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/02Topology update or discovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/28Routing or path finding of packets in data switching networks using route fault recovery
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本公开涉及具有隔离虚拟网络集成的无服务器分组处理服务。要被执行以对与资源组相关联的分组执行分组处理操作的程序以及所述资源组的安全设置被接收。所述程序被传送到基于所述组的元数据被指配给所述资源组的一组快速路径节点。相对于特定分组,执行基于所述设置的安全操作并且在快速路径节点处执行所述程序。至少部分地基于所述程序的结果,执行与所接收到的分组相对应的分组路由操作。

Description

具有隔离虚拟网络集成的无服务器分组处理服务
本申请是申请日为2020年6月17日的、名称为“具有隔离虚拟网络集成的无服务器分组处理服务”的发明专利申请No.202080045348.6的分案申请。
技术领域
本公开涉及具有隔离虚拟网络集成的无服务器分组处理服务。
背景技术
许多公司和其它组织操作计算机网络,所述计算机网络互连许多计算系统以支持其操作,如计算系统被共同定位(例如,作为局部网络的一部分)或替代地定位在多个不同的地理位置中(例如,通过一个或多个私人或公共中间网络连接)。例如,容纳大量互连计算系统的数据中心已经变得司空见惯,如由单个组织和代表单个组织运营的专用数据中心,以及由作为企业的实体运营以向客户提供计算资源的公共数据中心。一些公共数据中心运营商为各种客户拥有的硬件提供网络接入、电力和安全安装设施,而其它公共数据中心运营商提供“全方位服务(full service)”设施,所述全方位服务设施还包含可供所述运营商的客户使用的硬件资源。
用于商品硬件的虚拟化技术的出现已经在管理具有不同需求的许多客户的大规模计算资源方面提供了益处,从而允许多个客户有效且安全地共享各种计算资源。例如,虚拟化技术可以通过向每个用户提供由单个虚拟化主机托管的一个或多个“客户”虚拟机来允许单个物理虚拟化主机在多个用户之间共享。每个这样的虚拟机可以表示充当不同逻辑计算系统的软件模拟,所述软件模拟向用户提供他们是给定硬件计算资源的唯一运营商的假象,同时还在各种虚拟机之间提供应用隔离和安全性。具现化同一主机上的若干不同虚拟机也可以帮助增加数据中心处的总体硬件利用率水平,从而带来更高的投资回报率。随着对提供商网络的基于虚拟化的服务的需求不断增长,可能必须添加越来越多的与联网和互连性相关的特征,以满足使用服务实施应用的需求。
发明内容
提供了一种计算机实现的方法,包括:获得要检测去往或来自云环境的第一组计算实例的数据的未授权传输的指示;分配分组处理资源的第一集合来检测去往或来自第一组计算实例的数据的未授权传输;以及响应于检测到计算实例已被添加到第一组计算实例而自动增加所述第一集合中的分组处理资源的数目。
附图说明
图1图示了根据至少一些实施例的可以在其中实施分组处理服务的示例系统环境。
图2图示了根据至少一些实施例的分组处理服务的示例子组件。
图3图示了根据至少一些实施例的在分组处理服务处执行的操作的示例客户视图。
图4图示了根据至少一些实施例的分组处理服务处的快速路径和较慢路径操作的示例概要。
图5图示了根据至少一些实施例的分组处理服务处的节点的基于业务源的动态供应的示例概要。
图6图示了根据至少一些实施例的跨提供商网络的可用性容器的分组处理服务的节点的示例分布。
图7图示了根据至少一些实施例的包括多个级的示例分组处理流水线。
图8图示了根据至少一些实施例的分组处理流水线级到分组处理服务的节点的示例映射。
图9图示了根据至少一些实施例的可以随着分组在流水线的各个级处被处理而被维护和修改的示例上下文信息。
图10、图11和图12共同地图示了根据至少一些实施例的多级流水线的示例级,在所述示例级处可以执行隔离虚拟网络配置相关的分组处理操作。
图13图示了根据至少一些实施例的用于分组处理节点的示例实施方案平台。
图14图示了根据至少一些实施例的可以在无服务器分组处理服务处使用流水线来实施的分组处理应用的示例类别。
图15图示了根据至少一些实施例的可以在分组处理服务处实施应用编程接口的实体的示例类型。
图16和图17图示了根据至少一些实施例的示例分组处理流水线相关的程序交互。
图18图示了根据至少一些实施例的示例异常路径分组处理场景。
图19图示了根据至少一些实施例的示例系统环境,其中可以在提供商网络外部的处所实施提供商网络的分组处理服务的数据平面扩展。
图20图示了根据至少一些实施例的可以实施分组处理服务扩展的处所的类型的示例。
图21图示了根据至少一些实施例的与分组处理服务扩展相关的示例编程交互。
图22是图示了根据至少一些实施例的可以被执行来实施与隔离虚拟网络配置集成的分组处理流水线的操作的各方面的流程图。
图23是图示了根据至少一些实施例的可以被执行来实施分组处理流水线的定制异常路径的操作的各方面的流程图。
图24是图示了根据至少一些实施例的可以被执行来在提供商网络的数据中心外部实施分组处理服务的扩展的操作的各方面的流程图。
图25是图示了可以在至少一些实施例中使用的示例计算装置的框图。
尽管本文通过举例的方式针对若干实施例和说明性附图描述了实施例,但是本领域技术人员将认识到,实施例不限于所描述的实施例或附图。应当理解的是,附图和对其的详细描述并非旨在将实施例限制于所公开的特定形式,而相反,本发明将覆盖落入由所附权利要求限定的精神和范围内的所有修改、等效物和替代方案。本文所使用的标题只是出于组织目的,而不意图用于限制本说明书或权利要求的范围。如在整个本申请中使用的,词语“可以(may)”以允许的意义(即,意指“有可能”),而不是强制意义(即,意指“必须”)使用。类似地,词语“包含(include、including和includes)”意味着包含但不限于。当在权利要求中使用时,术语“或”用作包含性的而不是排他性的或。例如,短语“x、y或z中的至少一个”意指x、y和z中的任何一个,以及它们的任何组合。
具体实施方式
本公开涉及用于实施分组处理服务的方法和设备,在该分组处理服务处用于与在提供商网络的隔离虚拟网络内配置的业务源或目的地相关联的分组处理操作的客户设计的流水线可以使用动态地供应和编程的服务节点来执行。由诸如公司或公共部门组织的实体建立以提供经由因特网和/或其它网络对一组分布式客户端可访问的一个或多个网络可访问服务(诸如各种类型基于云的计算、存储或分析服务)的网络可以被称为提供商网络。提供商网络有时可以被称作“公共云”环境。在提供商网络内,在一些实施例中,可以代表相应的客户端将资源组配置为隔离虚拟网络。如通过名称所指示的,隔离虚拟网络(IVN)可以关于网络配置的各个方面与提供商网络的其余部分(和在提供商网络外部的其它网络)在逻辑上隔离—例如,内部或“专用”IP地址可以独立于在其它网络内指配的地址被指配给给定IVN的资源,给定IVN的安全设置可以限制IVN的资源可以与之进行通信的源和目的地等。
如本文所描述的分组处理服务能够被用于实施各种应用,包括负载平衡、基于策略的路由、网络地址转换和入侵检测。所公开的分组处理服务能够包括在各种实施例中划分成如下两个高级类别的多个节点:控制平面节点和数据平面节点。控制平面节点能够负责诸如供应、用于分组处理操作的元数据的变化的传播等的管理任务,然而数据平面节点能够主要负责处理在服务处接收到的分组。数据平面节点可以被进一步细分成快速路径处理节点和较慢路径处理节点,其中如在下面进一步详细地讨论的那样,快速路径节点被(理想地)用于所接收到的绝大多数分组,而较慢路径节点被用于不太频繁的操作。在至少一些实施例中较慢路径节点可以被称为“异常路径”节点,因为它们可以仅被预期相对不频繁地(即,在可以被认为是异常而不是常见的场景中)使用。在至少一些实施例中,服务的至少一些数据平面节点可以被动态地供应或指派给业务端点,例如,而无需客户端提交要建立节点的请求。因此,从分组处理服务的客户端的视角看,在此类实施例中该服务可以被认为是“无服务器”,因为客户端可以不必让它们关心有关服务节点建立、服务节点的健康监测、代表客户端使用的节点的机群的按比例扩大或按比例减少等的细节。在不同的实施例中,无服务器分组处理服务可以针对各种类型的分组处理任务透明地支持期望水平的可伸缩性、可用性和可靠性。
在高级别下,在各种实施例中至少两种类别的客户端可以利用无服务器分组处理服务(SPPS)。第一类别可以包括希望利用SPPS来向他们自己的最终客户呈现各种类型的复杂联网相关的应用的应用供应商,而第二类别可以包括此类最终客户本身。例如,分组处理应用供应商可以设计能够非常快速地(例如,使用复杂模式匹配或机器学习算法)检测未遂网络攻击的复杂分组处理流水线,并且使用SPPS来实施能够实施此类流水线的虚拟器具。最终用户,诸如已在提供商网络内和/或在外部处所处建立了他们自己的网络的商业实体,可以请求此类虚拟器具的实例被配置为帮助保护他们的网络。类似地,同样使用SPPS节点,其它供应商可以提供高级负载平衡器具、用于网络地址转换的器具、能够由电信组织使用来管理每用户带宽使用率的器具等。在许多情况下,此类器具的最终用户可能已在实施SPPS的提供商网络内建立了相应的隔离虚拟网络(IVN),并且这些器具可以被用于在此类IVN内的计算实例处生成或引导到这些计算实例的业务。通过设计,在至少一些实施例中SPPS可以与IVN基础设施紧密集成—例如,用于实施并实施IVN配置要求(例如,由已代表其建立了IVN的客户选择的安全规则、IVN的路由规则等)的分组处理操作可以与供应商供应的实施器具逻辑的分组处理流水线一起被透明地实现。在各种实施例中,分组处理器具供应商及其最终用户可以能够从SPPS的无缝可扩展性、可用性和可靠性中受益,然而SPPS与IVN配置管理的深度集成可以确保所有IVN相关的安全和路由规则也将被自动地实施(而无需供应商将安全和路由规则与其器具显式地集成在一起)。到业务源和/或目的地的IVN配置发生改变的时候,可以自动地向SPPS通知变化,并且在各种实施例中可以对在SPPS节点处实施的分组处理程序做出对应的变化。在一些实施例中,分组处理应用供应商以及最终用户甚至可以不必知道在SPPS处执行IVN配置相关的分组处理任务。
如本领域的技术人员鉴于本公开将领会那样,某些实施例可以能够实现各种优点和实际应用/益处,包括以下项中的一些或全部:(a)使得能够使用分组处理节点的自动地缩放的机群来依照可定制的分组处理应用流水线高效地处理非常大量的消息业务,(b)增强分组处理应用的安全,例如,通过自动地实施代表此类应用的最终用户建立的隔离虚拟网络的安全相关设置,而无需应用流水线的提供商/供应商将安全相关设置并入到他们的流水线中和/或(c)通过消除对此类用户请求供应分组处理资源或者将隔离网络配置设置手动地并入到分组处理应用中的需要来增强管理员和分组处理应用供应商的用户体验。
根据一些实施例,系统可以包括“无服务器”分组处理服务(SPPS)的一个或多个计算装置。装置可以包括在一个或多个处理器上或跨一个或多个处理器执行时使装置经由一个或多个编程接口获得要为虚拟化计算服务(VCS)的隔离虚拟网络(IVN)的资源集的网络业务建立分组处理流水线的请求的指令。分组处理流水线可以包括一个或多个级,并且在至少一些实施例中可以以虚拟器具的形式暴露流水线的相应实例。对于流水线的至少一个级,请求可以指示至少一个规则。可以在流水线级处使用一种或多种不同类型的规则的任何组合—例如,一些规则可以涉及使用根据接收到的分组的报头推导的键来在表内查找和执行动作(例如,可执行程序或功能),其它规则可以简单地涉及指定程序的执行等。例如,程序和/或规则可以使用为分组处理任务定制设计的高效低级编程语言或框架如eBPF(扩展伯克利分组过滤器)来表达。在各种实施例中,请求可以不指定要用于实施流水线的特定资源。指令当被执行时可以至少部分地基于隔离虚拟网络内的业务源的数目来识别用于资源集的网络业务的多个快速路径分组处理节点(FPPN)。在各种实施例中,每个这种(FPPN)可以使用硬件和软件的组合来实施。
可以将流水线建立请求中指示的程序和/或规则部署或推送到一个或多个FPPN,其中它们可以被存储在相应的高速缓存中以用于处理属于同一流的后续分组(其中可以例如基于包括源地址和目标地址及端口的元组来区分给定流和其它流)。在至少一些实施例中,可以例如响应于编程请求而执行一个或多个网络配置操作,以建立流水线的业务入口点和/或出口点。例如,在一实施例中可以将一个或多个虚拟网络接口配置为入口点或出口点。响应于特定分组到达入口点,在一些实施例中可以依照IVN的安全相关配置设置来执行一个或多个分组处理操作;此类分组处理操作可以不一定作为较早地接收到请求的流水线的一部分被包括。与所部署的流水线的相应级相对应的规则可以被应用于所接收到的分组,例如,可以在一个或多个级处相对于所接收到的分组执行一个或多个eBPF程序。至少部分地基于规则的应用的结果和/或IVN的路由配置设置,可以在各种实施例中实施关于所接收到的分组的一个或多个路由相关动作。可以基于流水线的逻辑和IVN的配置设置实施若干不同类型的路由动作中的任一个—例如,在一些情况下可以将与所接收到的分组相对应的至少有一个分组(例如所接收到的分组的重写或修改版本)经由流水线的出口点传送到目的地,然而在其它情况下可以简单地丢弃所接收到的分组,而不朝向目的地发送任何对应的分组。
在至少一些实施例中,SPPS的控制平面元件可以检测业务源或目的地(例如,诸如来宾虚拟机的计算实例)何时被添加到IVN或从IVN中移除。响应于一些数目的附加业务目的地或源的配置,可以在此类实施例中自动地配置一个或多个附加SPPS节点(例如,FPPN和/或其它较慢路径分组处理节点)。类似地,如果/当业务目的地或源被从IVN退役或移除时,在一些实施例中可以减少指配给IVN的SPPS节点的数目。在至少一些实施例中,如上面所提到的,可以至少部分地基于业务源而不是目的地的数目来确定SPPS节点的计数。因此,与一些常规负载平衡器或其它分组处理应用不同,可以基于来自其的业务可能必须被处理的源的数目而不基于业务的目的地的数目来按比例扩大或减少SPPS节点计数。在一个实施例中,混洗分片算法可以用于将业务源(例如,要处理来自其的业务的计算实例或虚拟化主机)映射到SPPS节点,使得在IVN处可用的SPPS节点的根本不同的但潜在重叠的子集被指配来处理来自相应源的业务。在一些实施例中,可以指配一个SPPS节点集用于处理被引导到计算实例或其它资源的给定集合的入站业务,并且可以指配SPPS节点的不同的(但可能重叠的)集合用于处理起源于计算实例或资源的同一集合的出站业务。
在一些实施例中,可以使用位置考虑事项来选择指配给特定业务源或目的地的特定SPPS节点。如术语“快速路径”所暗示的,SPPS的目标之一可以包括非常高效地执行期望类型的分组处理,从而对于务的传输产生最小可实行的时延。因此,在业务的源/目的地分布在数据中心的许多机架当中的实施例中,可以在位于被放置在数据中心内的许多近似均匀地分布的位置中的多个所选机架处的计算装置处预先配置(例如,在建立分组处理流水线的实际请求之前)FPPN的相应集合。当要为一个或多个计算实例的业务建立分组处理流水线(例如,作为虚拟器具的实例)并且计算实例位于机架R1、R2和R3的主机上时,可以将碰巧在恰好与R1、R2和R3相对接近的机架R4和R5上配置的FPPN指配给这些计算实例。因此,在一些实施例中当向流水线指配FPPN时,可以考虑已向表示要处理的分组的源/目的地的装置预先配置了FPPN的装置的接近度。注意,可以在一些实施例中例如基于工作负载变化和其它因素随着时间推移而动态地修改SPPS节点(包括FPPN)到业务源/目的地的指配。
在不同的实施例中各式各样的执行平台中的任一个可以被用于FPPN和/或其它SPPS节点,包括例如在虚拟化计算服务的虚拟化主机处运行的计算实例、非虚拟化主机、具有经由外围互连(例如,PCIe或外围组件互连快速互连)附接的一个或多个卡(其中分组处理程序/规则在这些卡处被执行)的专用硬件服务器等。根据一些实施例,用于为在一个或多个最终用户IVN处生成或引导到一个或多个最终用户IVN的业务而建立的流水线实例的SPPS节点本身可以被配置在另一IVN内—也就是说,IVN可以被用于SPPS节点以及用于业务来源和目的地。在至少一些实施例中,可以将SPPS节点组配置为相应独立地更新且独立地配置的信元,使得如果在给定信元内发生故障事件,则故障的影响不能跨越信元边界并影响其它信元。当要在这样的基于信元的实施例中应用软件、固件或硬件更新时,可以仅将更新一次传播到一个信元的节点(例如,FPPN)。在将更新传播到另一信元之前,SPPS控制平面可以试图验证被应用了更新的信元满足稳定性准则(例如,对于使用经更新的信元实现的分组处理流水线,在丢弃的分组或其它不希望的度量方面尚没有增加)。
如较早地提到的,在至少一些实施例中,可以在FPPN处缓存与分组处理级相关联的程序和/或规则。如果在FPPN处接收到分组,使得FPPN不能在其高速缓存中不到适用于该分组的条目,则FPPN可以向慢速路径分组处理节点(SPPN)提交查询,指示高速缓存未命中。在各种实施例中可以将若干不同类型的SPPN配置为SPPS数据平面的一部分,包括主要负责IVN配置相关的分组处理的节点、响应于高速缓存未命中而做出供应商供应的基于分组处理流水线的决定的节点、以及包括用于存储与各种网络流的处理相关联的持久状态信息的储存库的节点。一个或多个SPPN可以决定要在FPPN处针对导致了高速缓存未命中的分组(以及在一些情况下针对相同流的后续分组)采取的特定分组处理动作。如果可能,则在一些实施例中可以从SPPN向FPPN传送能够在FPPN处缓存的条目(例如,用于相对于相同流的后续分组使用)。在一些情况下,存储在从SPPN可访问的储存库中的状态信息(例如,响应来自不同FPPN的较早高速缓存未命中而生成的状态信息)可以用于对给定FPPN高速缓存未命中做出响应。在一些实施例中,响应于在给定FPPN处检测到故障,可以将出故障的FPPN的工作负载指配给一个或多个替换FPPN,并且可以在替换FPPN处从储存库获得与先前在出故障的FPPN处执行的分组处理操作相关的状态信息。
在各种实施例中可以随着时间推移而修改用于确定较慢路径节点处的动作的配置设置(和/或用于供应商供应的流水线的逻辑),在这种情况下可能需要使FPPN处的高速缓存条目无效。在至少一个实施例中,可以在一个或多个FPPN处采用基于超时的高速缓存条目重新证实技术。对于至少一些高速缓存条目,可以在这样的实施例中设置相应的超时。当超时期满时,FPPN可以为所对应的高速缓存条目发起重新证实操作,例如,通过向SPPN发出重新证实查询,实际上询问SPPN条目是否保持有效。如果SPPN未能重新证实条目,则在一些实施例中可以从FPPN高速缓存中删除该条目。在至少一个实施例中,如果高速缓存条目不再有效,并且SPPN能够生成有效的替换条目,则可以将该替换条目提供给FPPN。在一些实施例中,多层基于超时的方案可以被用于FPPN高速缓存条目重新证实或替换。根据这样的方案,软超时和硬超时都可以潜在地被用于给定高速缓存条目,其中软超时间隔被设置为比硬超时间隔小的值。当对于分组流PF1的高速缓存条目CE1软超时STO1在FPPN处期满时,可以向SPPN提供STO1期满的指示(使得SPPN能够重新证实CE1并且启动一组新的软和硬超时周期,或者指示CE1不再有效),但是FPPN可以继续使用CE1来处理FP1的其它接收到的分组。相比之下,如果/当与CE1相对应的硬超时HTO1期满时,FPPN可以停止使用CE1,实际上使CE1无效或者从高速缓存中放弃。在一些实施例中,多个软超时期满指示(与若干不同的高速缓存条目相对应)可以被分批并作为单个消息发送到SPPN以分摊方案的通信成本。在为FPPN高速缓存管理实施基于超时的技术的实施例中,代表其存储高速缓存条目的SPPS客户端可以不必显式地请求使高速缓存条目无效。例如,在给定分组流的业务停止之后,可以最终基于超时期满使所对应的高速缓存条目自动地失效。
如较早地指示的,在一些实施例中可以将较慢路径分组处理操作(诸如响应于FPPN处的高速缓存未命中而做出决定)称为异常路径操作(因为它们主要意在供对其来说较高的时延可以是可接受的不太频繁的或“异常的”场景使用),并且也可以将SPPN称为异常路径节点。根据一个实施例,SSPN客户端(诸如分组处理器具的供应商)可以使用一个或多个编程接口来指定要用于针对到达器具的实例的至少一些分组流的异常路径处理的目标资源集。例如,此类定制目标资源可以包括客户端的计算实例或其它计算装置的集合,在所述计算实例或其它计算装置处可以实施(例如,由于FPPN的资源约束、安全原因等)将不在SPPS的FPPN处执行的定制分组处理操作。在一些实施例中,可以在请求建立分组处理流水线(要使用一些数目的FPPN来实施)的相同编程交互中指示用于异常路径处理的目标资源;在其它实施例中,可以使用对定制异常路径的流水线和配置的不同编程请求。在各种实施例中,可以例如在FPPN或SPPN处使用流水线中指示的规则来确定给定分组是否应该被传送到此类目标资源。在一些实施例中,由客户端指定的目标异常路径分组处理资源可以被配置在与在其处配置了分组的源/目的地的IVN分开的IVN和/或与在其中配置了至少用于流水线的FPPN/SPPN的子集的IVN分开的IVN内。在一个实施例中,用于异常路径处理的至少一些目标资源可以位于大多数SPPS资源所位于的提供商网络外部的处所处。
即使在为流水线的一个或多个级配置定制异常路径处理的场景中,也仍然可以在特定分组流需要时执行IVN配置相关的分组处理,并且可以为要处理的业务识别FPPN的集合,就像当不需要定制异常路径处理时识别FPPN一样。当在SPPS处接收到流的分组时,SPPS可以确定该分组是否满足一个或多个IVN相关的约束,诸如安全要求,并且在不满足此类要求的情况下拒绝该分组。如果分组满足IVN配置相关的要求,则可以使用为流水线级指定的规则或准则来做出是否要使用快速路径操作来处理分组或分组是否需要异常路径处理的确定。如果能够使用快速路径操作(例如,经由较早地在流水线定义中指定的eBPF程序指示)来处理分组,则可以使用FPPN来完成快速路径处理。如果分组需要非定制异常路径处理,则可以使用一个或多个SPPS资源;如果需要定制异常路径处理,则在至少一些实施例中,可以将分组发送到由SPPS客户端指定的目标异常路径资源。
可以经由上面在不同的实施例中讨论的基于流水线的方法在SPPS处支持各式各样的分组处理应用。此类应用可以包括(但是可以不限于)例如实施用于定制或策略驱动的路由、网络地址转换(例如,具有源地址或源端口取代)、多播、跨IVN分组传输(从一个IVN到另一IVN的传输)、安全地向或从虚拟专用网络转移数据、入侵检测、每用户或每组带宽使用率跟踪、负载平衡、数据在提供商网络数据中心与提供商网络外部的处所之间的安全传输、数据漏出检测的相应算法,或者实施由供应商设计的应用的商业逻辑。在一些实施例中,可以支持实施各种类型的分组处理流水线的预先设计的流水线的在线市场(例如,由实施SPPS的提供商网络的运营商支持),并且供应商可以通过组合从这样的市场获得的预先设计的流水线来组装或构建新的流水线。
根据一些实施例,可以在实施SPPS的控制平面的提供商网络的数据中心外部的处所处建立SPPS数据平面的各部分。可以将与提供商网络的资源组(例如,IVN)相关联的元数据存储在提供商网络的一个或多个数据中心处。SPPS的分组处理节点集可以被配置在数据中心外部的处所处,例如,在共址设施(在这里提供商网络的资源与由其它实体拥有的资源位于一处),或者在客户端拥有的设施处。在提供商网络的数据中心之一处的管理或控制平面组件处,可以在各种实施例中例如经由一个或多个编程接口接收要为至少与资源组相关联的分组的子集实现的分组处理流水线的指示。可以将分组处理流水线的表示连同与资源组的一个或多个配置设置一起从提供商网络的数据中心传送到外部处所。响应于在外部处所处检测到特定分组,可以执行基于资源组的配置设置的一个或多个安全相关的操作。然后,在外部处所处建立的分组处理节点中的一个或多个处,可以执行流水线的分组处理操作。可以在一些情况下基于分组处理的结果从一个或多个分组处理节点朝向目的地传送与所检测到的分组相对应的至少一个分组(例如,分组的重写或变换版本);在其它情况下,可以简单地丢弃所检测到的分组。当在提供商网络内的SPPS控制平面资源处检测到会影响分组处理操作(或在外部处所处将需要附加SPPS节点)的配置变化时,可以从SPPS控制平面发起适当的动作—例如,可以将配置变化传播到外部处所,可以向外部处所传送流水线级程序的新版本等。对于至少部分地在此类外部处所处实施的应用,逻辑上扩展SPPS数据平面的能力可以是极其有益的,因为实际上可以非常靠近运行应用的其余部分所在的资源实施SPPS数据平面功能性。
示例系统环境
图1图示了根据至少一些实施例的可以在其中实施分组处理服务的示例系统环境。如所示,系统100可以包括在提供商网络101处作为虚拟化计算服务105的组件实施的无服务器分组处理服务(SPPS)102的资源和工件。如较早地提到的,在各种实施例中提供经由因特网和/或其它网络对一组分布式客户端可访问的一个或多个网络可访问服务(诸如各种类型基于云的计算、存储或分析服务)的网络可以被称为提供商网络。提供商网络有时可以被称作“公共云”环境。在一些情况下,提供商网络的资源跨多个数据中心分布,多个数据中心又可在众多地理地区间分布(例如,每一区域对应于一个或多个城市、州或国家)。
在所描绘的实施例中,SPPS 102可以包括一系列快速路径资源122、异常路径或较慢路径资源123和隔离虚拟网络(IVN)集成资源124。在所描绘的实施例中可以在SPPS 102处实施数据平面资源的基于源的动态供应:也就是说,对于给定分组处理流水线实例,可以基于流水线实例的业务源的数目选择(并且根据需要动态地改变)所指配的快速路径资源和/或慢速路径资源的数目。注意,虽然在图1中示出了SPPS的数据平面组件,但是在各种实施例中SPPS还可以包括管理或控制平面资源集。VCS 105可以包括一系列虚拟化主机160,诸如VH 150A、150B、105K和150L,在其中的每一个处零个或多个计算实例(CI)160(诸如来宾虚拟机)可以代表VCS客户端在给定时间点运行。例如,CI 160A和160B在VH 150A处运行,CI 160P在VH 150K处运行,并且CI 160T在VH 150L处运行。
在所描绘的实施例中,可以将VCS 105的计算实例和其它资源中的至少一些组织为一系列隔离虚拟网络(IVN)120。给定隔离虚拟网络,诸如IVN 120A、120B或120C,可以包括被分配给给定客户端的一系列联网资源(包括例如计算实例、虚拟化和/或物理联网装置、主机等),所述联网资源与为其它隔离虚拟网络中的其它客户端分配的资源在逻辑上隔离(且默认地不可从其访问)。可以为代表其建立IVN的客户端授予有关用于IVN的资源的网络配置的实质灵活性—例如,用于计算实例的专用IP地址可以由客户端选择而不必考虑其它IVN内的其它资源可能已被指配了同一IP地址的可能性,可以在IVN内建立客户端的选择的子网,安全规则可以由客户端针对相对于IVN的传入和传出业务来设置等。在一些实施例中可以代表同一客户端建立多个IVN。在图1描绘的示例场景中,已经为VCS 105的客户端C1建立了IVN 120A和120B,然而已经为不同的客户端C2建立了IVN 120C。注意,尽管在图1中虚拟化主机150被示出为在单个IVN内托管计算实例,但是在一些实施例中,可以在多租户模式下利用至少一些虚拟化主机—也就是说,给定VH 150可以被用于若干不同的客户端和/或若干不同的IVN 120的计算实例。
在不同的实施例中,VCS的客户端可以利用计算实例160来运行各种类型的应用。在一些情况下,在给定VH处运行的应用可以与在提供商网络101内别处的资源和/或在提供商网络101外部的资源(诸如外部网络150)进行通信。在所描绘的实施例中计算实例中的各个计算实例可以以编程方式附接到一个或多个虚拟网络接口(VNI),然而虚拟化主机中的各个虚拟化主机(和在VCS外部的资源)可以具有配置的物理网络接口卡(NIC)。给定VNI可以具有指配给它的一个或多个网络地址(例如,网际协议(IP)版本4或版本6地址),并且NIC也可以具有指配给它的一个或多个网络地址。为了将来自VH 150处的CI 160的分组内容传送到VH外部的目的地,可以在VCS处实施封装协议,该封装协议可以用于将VNI网络地址映射到物理NIC地址(除了被用于其它功能之外)。此外,对于从计算实例160发送或引导到其的至少一些网络分组序列,可以例如在SPPS 102的帮助下执行诸如负载平衡、源地址取代等的分组处理动作。例如,一些数目的CI 160可以共同地用于实施客户端C1的特定应用App1,并且可能不得不在CI之间负载平衡App1服务请求。
可以使用至少部分地在SPPS 102处实施的分组处理流水线在给定CI 160与一个或多个业务目的地或源之间传送被称为分组流的网络分组的序列。在图1中图示了许多不同的示例分组流类型;例如,可以基于包括正在使用的网络协议的标识符、源网络地址、源网络端口、目的地网络地址和/或目的地网络端口的N元组将每个流与其它流区分开。在一些实施例中,用于唯一地标识网络分组流的N元组还可以包括其它元素,诸如用于分组的虚拟网络接口的标识符或分组传输的方向的指示。示例流192A可以包括在同一IVN 120A内的CI 160A和160C之间传送的分组。流192B可以包括例如经由VCS边界联网装置130的机群在CI 160A与提供商网络101的存储服务140之间传送的分组。流192C可以包括在IVN 120A处的CI 160B与外部网络150(例如,客户端数据中心或共址设施)之间发送的分组。流192D可以包括在CI 160T与数据库服务144之间传送的分组。流192E可以包括在同一VCS客户端的两个IVN:IVN 120A和120B(两者都代表客户端C1建立)处的CI之间发送的分组。流192F可以包括在不同的VCS客户端的IVN:客户端C1的IVN 120B和客户端C2的IVN 120C之间传送的分组。
对于这些类型的网络流中的每一个网络流,在所描绘的实施例中可以在SPPS 102处高效地且透明地实施包括在IVN联网元数据170(例如,元数据170A、170B或170C)中的各种类型的IVN配置设置,诸如用于入站或出站业务和/或网络访问控制列表(NACL)的安全规则。此外,取决于向或从CI 160发送网络分组的特定应用,可以在SPPS 102处执行例如由包括由第三方应用供应商设计或开发的一个或多个级的流水线表示的附加分组处理操作,其中每个级包括一个或多个规则和/或一个或多个动作。在一些实施例中,可以针对(a)IVN配置相关的分组处理任务和(b)供应商定义的分组处理任务为给定网络分组流实施相应的流水线。在SPPS的一个或多个计算装置处实施的IVN集成资源124可以例如从各种IVN获得IVN联网元数据170,生成实施IVN的安全和其它要求的对应的分组处理程序和规则,并且将程序和规则传送到快速路径资源122(例如,经由异常路径资源123或直接地)。
在一些实施例中,诸如入侵检测操作或数据漏出检测应用的分组处理应用的供应商可以向SPPS提交编程请求以建立要针对到/来自一个或多个IVN 120的一组CI 160的业务采用的供应商定义的分组处理流水线的实例。在所描绘的实施例中供应商不需要指定要用于流水线的特定SPPS资源,并且实际上可能甚至不知道SPPS的架构或组成层和节点。请求可以包括关于流水线的各个级的信息,包括例如要应用以在各个级处执行分组处理的相应规则(和/或要运行以在各个级处执行分组处理的程序),以及用于确定给定分组对于程序是否合格的规则。可以使用在各种实施例中针对分组处理操作优化的定制框架如eBPF等来表达程序和/或规则。许多快速路径分组处理节点(FPPN)(使用硬件和软件快速路径资源122的组合来实现)可以被指配给例如在所描绘的实施例中由SPPS控制平面的组件为其请求流水线的CI 160。在一些实施例中流水线的程序和/或规则可以被自动地传送或推送到FPPN,例如,在接收将使用流水线来处理的合格分组之前;在其它实施例中,程序和/或规则可以被存储在一个或多个较慢路径资源123处并且按需传送到FPPN。在一些实施例中,流水线组件(规则、程序/动作和/或诸如查找表的相关元数据)可以被缓存在FPPN处。在各种实施例中,作为与流水线相关联的另一初步配置操作,可以响应于相应的编程请求(例如,来自正在代表其配置流水线实例的供应商)为每个流水线实例建立一个或多个入口和/或出口点(例如,在适当的IVN处使用一个或多个虚拟网络接口)。
在已经部署流水线元件之后,在各种实施例中可以在所指配的FPPN与已经为其部署了流水线的业务的源/目的地之间启用连接。当在这样的FPPN处接收到流的分组时,FPPN可以试图找到将用于对所接收到的分组执行分组处理操作的缓存规则和/或程序。如果在高速缓存中找到这样的规则或程序,则可以执行高速缓存条目中指示的操作;否则,在至少一些实施例中,可以将指示已发生高速缓存未命中的查询连同所接收到的分组一起发送到异常路径资源123。异常路径资源123可以查找它自己的包括IVN配置信息和/或供应商供应的流水线的元数据储存库。如果一个或多个流水线(例如,用于实施IVN配置设置和/或用于执行供应商定义的操作)的适当集合被标识,则在所描绘的实施例中可以向请求FPPN供应对应的程序和/或规则,其中可以应用和缓存这些程序/规则以供潜在的重用。取决于所标识的流水线的详情,可以向一个或多个目的地传送与所接收到的分组相对应的一个或多个分组(例如,其中一个或多个报头已被修改的分组的版本),并且/或者在各种实施例中可以发起附加动作(诸如简单地丢弃所接收到的分组和/或产生关于潜在网络攻击的警告)。
分组处理服务的示例子组件
图2图示了根据至少一些实施例的分组处理服务的示例子组件。在所描绘的实施例中,无服务器分组处理服务201可以包括许多快速路径处理节点(FPPN)265、一系列较慢路径分组处理资源207、隔离虚拟网络(IVN)配置收集和代码生成节点276、供应管理器节点(PMN)290、控制平面元数据储存库节点(CMRN)291和配置请求处理程序(CRH)295。较慢路径分组处理资源207进而可以包括基于IVN配置的分组处理节点270、供应商流水线管理节点272和状态信息储存库节点(SRN)274。在各种实施例中,所描绘的节点类型中的每一种的各个节点可以包括硬件和软件组件的某种组合。FPPN 265和较慢路径分组处理资源207可以是SPPS数据平面组件的示例,然而IC3N 276、PMN 290、CMRN 291和CRH 295可以是SPPS控制平面组件的示例。SPPS客户端,诸如联网应用供应商和此类供应商定义的应用的最终用户,可以在所描绘的实施例中利用各种编程接口204来向SPPS控制平面提交配置相关的请求,并且接收对应的回复。编程接口204可以例如包括一组API(应用编程接口)、基于web的控制台、命令行工具、图形用户界面等。当经由接口204接收到请求时,可以在CRH处对其进行检查,然后将其传递到SPPS 201的适当的内部组件。
在所描绘的实施例中,可以采用SPPS 201以便对源自在虚拟化主机(VH)250处运行的多个计算实例(CI)260如VH 250A的CI 260A和260B以及VH 250B处的CI 260C的业务实施各种类型的分组处理操作(与一个或多个流水线的一个或多个级相对应)。计算实例260可以被配置在虚拟化计算服务的一个或多个隔离虚拟网络(IVN)内。在至少一些实施例中,可以基于其业务将被处理的业务源(诸如计算实例260)的数目确定由供应管理器节点290自动地供应和/或指配以处理给定分组处理应用流水线或器具实例的业务的FPPN的数目。因此,例如,如果在其出站业务将经由流水线处理的IVN内随着时间推移而实例化更多的CI260,则可以指配附加FPPN(和/或附加较慢路径分组处理资源)。在一些实施例中,可以利用混洗分片算法来将特定FPPN 265指配给给定CI 260,使得FPPN池的根本不同的(但潜在重叠的)子集被指配给每个CI。如通过示例所示,FPPN 265A和265D已被指配来处理源自于CI260A的业务,FPPN 265B和265D已被指配给CI 260B,而FPPN 265C和265E已被指配给CI260C。在一些实施例中,给定FPPN可以被指配给虚拟化主机250(即,以处理来自主机处的所有CI的业务),而不是在每CI基础上指配。在一个实施例中,作为基于业务源的计数确定FPPN的数目的补充或替代,可以基于与给定分组处理流水线或器具相关联的业务目的地的计数来确定FPPN的数目。PMN 290还可以负责在指配给流水线的FPPN之一发生故障的情况下配置替换FPPN,根据需要按比例扩大和减少较慢路径资源207,和/或在较慢路径资源处发生故障的情况下配置替换较慢路径资源。
在所描绘的实施例中可以对源自于计算实例260的分组执行至少两种类别的分组处理操作:与由联网应用供应商以编程方式定义和指定的流水线相对应的操作,以及与CI260所属于的IVN(和/或在CI 260处生成的业务的目的地所属于的IVN)的配置设置相对应的操作。在一些实施例中,供应商可以从SPPS客户端装置295(例如,台式机、膝上型电脑或移动计算装置)经由一个或多个API提交指示流水线的请求。供应商定义的流水线的一个或多个级中的每一个级可以包括至少一个规则(例如,指示要运行的可执行程序或要执行的动作)。规则、程序和/或动作可以由供应商以各种格式中的任一种提供给SPPS—例如,在一些实施例中,规则、程序或动作可以用eBPF编写,然而在其它实施例中,可以使用其它编程语言或脚本语言。为了使得能够向和从流水线实例引导业务,可以在SPPS处创建虚拟器具并且可以在各种实施例中为虚拟器具配置诸如虚拟网络接口的一个或多个入口和出口端点。在所描绘的实施例中,表示供应商定义的流水线的实例以及入口和出口点的元数据可以被存储在SPPS CMRN 291中,和/或传播到供应商流水线管理节点(VPMN 272)。在一些实施例中,供应商供应的流水线的程序和规则可以由VPMN推送或传播到FPPN 265B,例如,一在VPMN处接收到流水线信息或者当由FPPN请求时。在各种实施例中,FPPN可以将所接收到的程序和规则存储在本地高速缓存中。
在所描绘的实施例中,可以在IC3N 276处例如从在其中配置了IVN的虚拟化计算服务的控制平面获得与CI 260所属于的IVN相关的配置信息。在各种实施例中,配置信息可以包括例如用于限制IVN的入站和出站业务的安全规则、网络访问控制列表(NACL)、基于路由表的路由规则等。IVN的安全设置中的至少一些可能已经由代表其建立IVN的客户端选择。在一些实施例中,可以例如在IC3N处将IVN配置设置变换成内部(即,不是供应商定义的)分组流水线的一个或多个级。在所描绘的实施例中因此可以针对各种接收到的分组执行基于内部IVN配置的流水线以及供应商定义的流水线的操作;实际上,可以执行包括基于IVN配置的操作和供应商定义的操作的单个流水线。在至少一些实施例中,IVN配置的安全和路由相关要求可以确定IVN配置相关的分组处理操作相对于供应商定义的流水线的操作的定序。例如,在一种场景中,出于安全相关原因,可以在执行任何供应商定义的操作之前对给定分组执行一些IVN配置相关的分组处理操作,并且出于路由相关原因,可以在对给定分组执行所有供应商定义的操作之后执行其它IVN配置相关的分组处理任务。在一些实施例中,可以在IC3N的代码生成组件或模块处生成用于执行IVN配置相关的操作的程序代码(例如,用eBPF或某种其它语言)。在所描绘的实施例中基于IVN配置的分组处理节点(IPPN)270可以从IC3N获得内部流水线的指示,并且将流水线的程序/规则传递给FPPN以进行缓存。如果/当IVN的配置发生改变时,则IC3N可以自动地确定已发生改变,并且视需要而定对IVN配置相关的流水线做出改变。注意如图1中呈现的,IPPN相对于基于IVN配置的分组处理的作用有点类似于VPMN相对于供应商定义的分组处理操作的作用。在一些实施例中,IPPN和VPMN可以用负责向FPPN传送IVN配置相关的操作信息和供应商定义的操作信息两者的公共数据SPPS平面组件(例如,流水线中间节点)替换。
在一些情况下,与正在执行的分组处理任务相关的状态信息可以被存储在一个或多个SRN 274处。例如,可以在SRN处的状态信息条目中存储相对于给定流的初始分组做出的决定(诸如分组是否满足IVN的入站或入站业务限制),所述决定影响可能不得不对于同一流的后续分组执行(例如,不必要进一步检查入口限制)的操作。如果已将决定传播到的FPPN发生故障,则其替换FPPN可以查询一个或多个较慢路径的分组处理资源以确定如何继续处理正在由现在出故障的FPPN处理的流的另一分组,并且可以使用状态信息条目来对这样的查询做出响应。在所描绘的实施例中较慢路径资源207可以负责处理FPPN的高速缓存未命中,以及用于重新证实高速缓存条目(或使其无效)。如较早地提到的,在一些实施例中当条目被存储在高速缓存中时,超时可以与FPPN处的给定高速缓存条目相关联。当超时期满时,FPPN可以向较慢路径资源207发送请求,以确定所缓存的条目的规则/动作是否仍然有效。如果条目保持有效(例如,如果尚未对流水线或IVN配置做出改变),则在一些实施例中可以向FPPN提供指示超时将被延长的响应;否则,可以允许条目期满或用在慢路径资源此生成的新条目替换。
分组处理服务的示例客户视图
图3图示了根据至少一些实施例的在分组处理服务处执行的操作的示例客户视图。在所描绘的实施例中,源自于一个隔离虚拟网络(IVN)320A的源计算实例集(例如,CI360A)的网络分组将被传送到第二IVN 320B内的另一目的地计算实例集(例如,CI 360B),如由箭头370所指示的。由第三方供应商(即,除SPPS运营商以外和除业务的源以外的实体)定义的流水线的操作以及IVN配置相关的操作(诸如安全和路由操作)将针对诸如360A的CI的分组被执行。供应商定义的流水线可以包括任何期望的应用级处理,诸如每用户数据带宽使用率分析、数据漏出检测、网络渗透检测、基于策略的路由等。
从SPPS的客户端(包括最终用户和第三方供应商)的视角看,SPPS 310可能看起来是包括能够针对期望类型的分组处理任务采用的近乎无限的分组处理资源集的“黑盒子”。可以响应于来自供应商的编程请求而在SPPS处创建表示供应商定义的流水线的虚拟器具,并且可以代表供应商配置一对器具网关361A和361B(流水线的入口点和出口点)。在至少一些实施例中,网关可以被指配在其中配置网关的IVN中的相应的虚拟网络接口—例如,用于IVN 320A内的网关361A的入口点VNI和用于IVN 320B内的网关361B的出口点VNI。网关可以对代表其配置CI的客户端可见,然而SPPS的其它细节(例如,指配给器具的FPPN和其它节点的数目)可能仍然不可访问。在所描绘的实施例中,流水线的供应商和用户都可能不得不在请求或选择FPPS资源情况下关注本身。在内部,在SPPS内,可以例如使用基于源IVN 320A中的业务源的数目动态地供应的数据平面节点的组合来执行基于IVN配置的(例如,安全相关的和路由相关的)操作350以及第三方供应商流水线的操作380。如用于表示操作350和380的形状所建议的,在所描绘的示例场景中一些IVN配置相关的操作可以在供应商流水线操作之前被执行,然而其它IVN配置相关操作可以在供应商流水线操作之后被执行。
快速路径操作和较慢路径操作的示例概要
图4图示了根据至少一些实施例的分组处理服务处的快速路径和较慢路径操作的示例概要。在所描绘的实施例中,SPPS的资源被组织为一系列信元427,其中各个信元包括一系列相应的快速路径资源和慢速路径资源。诸如应用供应商的SPPS客户端410可以向SPPS控制平面414提交请求443以建立可以被以虚拟器具的形式暴露给最终用户的一个或多个流水线的实例。
对于器具的给定实例,在所描绘的实施例中SPPS控制平面414可以选择一个或多个SPPS数据平面信元427。给定信元427可以包括一系列快速路径分组处理节点(FPPN)468和一系列较慢路径分组处理节点(SPPN)425(其也可以被称为异常路径节点)。给定FPPN468可以包括高速缓存497,在其内存储有要在节点处实施的流水线级的规则、动作和/或程序的表示。在一些实施例中流水线级逻辑可以被以可执行形式存储在高速缓存中,例如,作为使用为了实施网络处理操作而优化的基于寄存器的虚拟机的指令表达的字节代码,其能够用于执行与扩展伯克利分组过滤器(eBPF)接口的操作类似的操作。在一个实施方案中,例如,可以以若干方式限制eBPF程序—最大指令数可以是有限的,仅几个64位寄存器可以是可用的,可以支持仅前向条件跳转等。作为限制的结果,可以非常快速地执行被表达为eBPF程序的流水线逻辑,但是能够使用给定程序来完成的工作的复杂性可以受到限制。对于供应商定义的流水线的至少一些级,在所描绘的实施例中供应商可以供应要使用和缓存的程序代码。对于至少一些IVN配置相关的操作,可以在SPPS控制平面414处产生代码(例如,使用流水线代码生成器426)并且还将代码缓存在FPPN 468处。
可以将关于流水线的元数据405(包括IVN配置相关的操作以及供应商定义的操作)从SPPS控制平面414传送到SPPN 425,并且用于管理信元427(例如,监测其健康状态)的命令可以由控制平面414传送到在该信元内实例化的一个或多个信元管理代理。当在FPPN468处从源业务端点464接收到网络分组时,可以检查本地高速缓存497(例如,使用查找表或前缀匹配表)以确定在高速缓存中是否存在用于处理分组的代码。如果发生高速缓存命中,即如果找到适当的代码,则可以执行该代码,并且可以沿着快速路径408向目的地业务端点发送一个或多个分组(其可以是所接收到的分组的重写版本)。如果发生高速缓存未命中,则可以从FPPN 468向SPPN 425发送请求407。在一些实施例中,SPPS的SPPN 425可以能够向FPPN提供用于处理分组的代码(使用流水线元数据405),其中代码可以被缓存以供在后续分组情况下使用。在其它实施例中,供应商可能已经指示对于至少一些分组,可能不得不使用一个或多个外部异常路径节点411来执行至少一些分组处理动作。例如,此类客户端指定的外部异常路径资源可以包括单独的IVN(例如,与在其中配置了源业务端点464和目的地端点472的IVN不同,并且与在其中配置了SPPS信元的IVN不同)内的一个或多个计算实例,或者甚至是在实施SPPS的提供商网络外部的计算装置的集合。如果要使用外部异常路径节点411,这可以在内部SPPN 425处基于流水线元数据405被确定,则可以将分组传送到外部节点411,在那里可以执行所需要的操作。取决于使用供应商流水线来实现的应用的性质,在一些情况下外部节点411可以仅不得不被用于给定流的分组的子集;在其它情况下(例如,当每个分组需要解密/加密操作时,并且当此类操作仅能够使用外部节点来安全地执行时),在一些实施例中可能不得不将流的每个分组传送到外部节点411。在至少一个实施例中,正如内部SPPN 425可以能够提供能够被缓存在FFPN 468处用于流的后续分组的分组处理代码一样,外部异常路径节点411也可以能够提供能够作为FPPN缓存用于流的后续分组的分组处理代码。取决于在FPPN处执行的处理的结果和/或基于IVN配置设置,在所描绘的实施例中一些接收到的分组可以简单地被放弃或丢弃(如由箭头466指示的);因此,相对于给定分组采取的动作可以不一定包括从SPPS向目的地发送对应的分组。例如,如果做出了分组为网络攻击或数据漏出工作的一部分的确定,或者如果IVN的配置设置禁止将来自该业务起源的分组传送到所接收到的分组中指示的目标目的地,依此类推,则可以丢弃从业务起源接收到的分组。
在一些实施例中,可以在FPPN 468处采用基于超时的高速缓存条目重新证实策略498以确保过时的高速缓存条目未被用于处理在FPPN处接收到的分组。当条目被存储在高速缓存497中时,在此类实施例中可以设置对应的超时。当超时期满时,FPPN 468可以向SPPN 425发送对条目的重新证实请求。如果高速缓存条目保持有效,也就是说,如果FPPN能够继续将它用于附加分组,则SPPN 425可以提供指示能够保留条目的响应。如果另一方面,已发生致使条目无效的配置变化,则SPPN可以相应地通知FPPN,并且可以从高速缓存497中移除条目。在一些实施例中,当SPPN确定高速缓存条目不再有效时,它可以向FPPN提供替换条目。如较早地提到的,在一些实施例中可以采用基于多层超时的高速缓存条目重新证实技术,其中可以为给定高速缓存条目设置软超时和硬超时两者。在至少一个实施例中,SPPN425可能不得不与外部异常路径节点411和/或SPPS控制平面414进行通信以验证高速缓存条目是否保持有效。在一些实施例中,可以使用其它缓存失效或重新证实方案。信元管理代理470可以在所描绘的实施例中监测SPPN和FPPN的健康状态(如由箭头408指示的)并且将它们的发现报告给控制平面414,其中可以基于这些发现做出关于供应替换FPPN或SPPN的决定。
基于源的节点供应的示例概要
如较早地提到的,在至少一些实施例中为给定分组处理器具或流水线配置的数据平面节点的数目可以取决于流水线的业务源的数目。图5图示了根据至少一些实施例的分组处理服务处的节点的基于业务源的动态供应的示例概要。隔离虚拟网络520可以在给定时间点包括要使用流水线来处理的业务源自于的三个计算实例560A、560B和560D。在所描绘的实施例中可以最初配置五个快速路径分组处理节点(FPPN)565A-565E的集合以处理在CI 560A-560C处生成的分组,其中数目是基于CI的计数而选择的。在各种实施例中SPPS客户端(正在代表其执行流水线的供应商以及代表其在IVN 520处设置CI 560的客户端)可能不必请求SPPS配置特定数目的FPPN;替代地,FPPN控制平面可以使用它自己的算法来选择数目。可以采用混洗分片算法570来将五个FPPN的相应子集指配给CI 560中的各个CI,例如,以帮助提供期望水平的冗余和负载平衡。因此,例如,在所描绘的示例中每个CI被指配了一对FPPN:FPPN 565A和565D被指配给CI 560A,FPPN 565B和565D被指配给CI 560B,并且FPPN 565C和565E被指配给CI 560C。可以在一些实施例中从FPPN的可用池中随机地而在其它实施例中至少部分地基于诸如物理接近度的考虑事项选取要指配给给定CI 560的业务的FPPN的特定集合。例如,在一个实施例中,许多FPPN可以被配置在很好地跨数据中心分布的一组机架中,并且可以为给定CI选择碰巧(a)相对地靠近在其处配置了给定CI的主机的机架并且(b)未过载(例如,相对于它们被配置为处理其业务的CI的数目,或相对于它们已在最近的时间间隔内每单位时间处理的分组的数目)的一对FPPN。在一些实施例中,不是被指配给各个计算实例,而是可以使用类似的混洗分片算法来将FPPN指配给虚拟化主机。在至少一些实施例中,可以例如通过SPPS控制平面随着时间推移而改变FPPN到诸如计算实例的业务源/目的地的指配。例如,可以最初指配给定FPPN FPPN-A来在CI1上线时处理源自于计算实例CI1的分组,其中FPPN-A是至少部分地基于物理接近度为CI1而选择的。稍后,即使FPPN-B可能比FPPN-A在物理上离CI1更远,也可以指配不同的FPPN即FPPN-B作为相对于CI1的业务的FPPN-A的替换。在不同的实施例中可以出于各种原因中的任一个执行这种动态重新指配—例如,因为CI1和FPPN-A之间的网络路径/链路与在CI1和FPPN-B之间可用的网络路径/链路比已变得更加拥塞,因为FPPN-A的资源利用率水平超过阈值,或者出于其它原因。
如果并且当在IVN 520中配置了诸如能够添加到要使用FPPN来处理的业务的560D和560E的附加计算实例时,在所描绘的实施例中SPPS控制平面可以获得新CI的指示。基于用于FPPN的一组按比例扩大策略,在所描绘的实施例中SPPN控制平面可以自动地配置附加FPPN(565F)以处理预期的附加业务,而不需要客户端提交对附加资源的请求。混洗分片算法可以用于标识要用于每一个新CI的FPPN。在一个实施例中,如果配置的业务源的数目减少了某个阈值,则SPPS可以减少为流水线指配的FPPN的数目。在一些实施例中,可以实施类似的基于源的缩放策略以按比例扩大(或按比例减少)SPPS的其它数据平面节点。
节点的示例分布
图6图示了根据至少一些实施例的跨提供商网络的可用性容器的分组处理服务的节点的示例分布。在所描绘的实施例中,提供商网络602包括虚拟化计算服务(VCS)605,在所述虚拟化计算服务处可以代表各种客户或客户端建立诸如610A或610B的隔离虚拟网络(IVN)。在计算实例611(例如,IVN 610A中的CI 611A和611B以及IVN 610B中的CI 611C和610D)之间流动和/或在计算实例与客户处所隔离网络690A或690B之间流动的分组的处理使用地理上分布的SPPS信元612资源来执行。在所描绘的实施例中SPPS信元612它本身可以使用如在下面所讨论的VCS资源来实施。在一些实施例中,SPPS节点可以被配置在一个或多个单独的IVN(即,专用于SPPS而不专用于其业务将使用SPPS来处理的VCS客户端的IVN)内。
在至少一些实施例中,VCS 605的资源,诸如各种计算实例在其上运行的主机,可以分布在诸如650A和650B的多个可用性容器650当中。可用性容器又可以包括一个或多个不同位置或数据中心的部分或全部,所述位置或数据中心以这种方式工程化(例如,具有独立的基础设施组件,如与电力相关的装置、冷却装置或物理安全组件),使得给定可用性容器中的资源与其它可用性容器中的故障隔离。一个可用性容器中的故障可能不会导致任何其它可用性容器中的故障;因此,给定资源的可用性简档旨在独立于不同可用性容器中的资源的可用性简档。
在所描绘的实施例中,快速路径分组处理节点(FPPN)625(例如,625A、625B、625C、625D、625E和625F)以及慢速路径分组处理节点(SPPN)627(例如,627A、627B、627C和627D)可以至少部分地使用VCS 605的相应计算实例来实施。所图示的信元612可以包括至少两个数据平面子信元640A和640B,其中一个数据平面子信元被实施在至少两个可用性容器650A和650B中的每一个中。由于多个可用性容器的使用,在所描绘的实施例中可以使整个信元受任何给定故障事件影响的概率最小化。在一些实施例中,用于管理数据平面组件的SPPS控制平面组件可以跨多个可用性容器以类似方式分布。
如所示,在所描绘的实施例中SPPS信元612可以被用于涉及至少四个隔离网络—IVN 610A和610B以及客户处所隔离网络690A和690B之间的业务的分组处理应用。在所描绘的实施例中,可以例如在提供商网络的自身数据中心外部的客户处所或位置处建立并且可以包括诸如主机695A的某个数目的主机的隔离网络690A可以经由一组虚拟专用网络(VPN)路径608与SPPS进行通信。在所描绘的实施例中,隔离网络690B也可以建立在提供商网络602外部的一组客户处所或位置处并且可以包括诸如主机695K的某个数目的主机。在所描绘的实施例中,隔离网络690B与SPPS之间的业务可以在一组专用物理链路609(例如,而不是可以与公用因特网的业务共享的一组链路)上流动,所述链路也可被称作“直接连接”链路。因此,在所描绘的实施例中,使用提供商网络602的VCS 605实施的SPPS可以能够处理在各种网络配置处生成(或朝向其引导)的分组,所述网络配置包括(但不一定限于)VCS自身内的隔离虚拟网络、使用共享链路上的VPN连接来与VCS进行通信的诸如690A的外部网络、以及使用专用链路来与VCS进行通信的诸如690B的外部网络。在一些实施例中SPPS可以用于实施VPN和/或直接连接功能性。在各种实施例中也可以使用SPPS连接其它类型的网络。在至少一些实施例中,SPPS的节点可以不利用图6所示的多可用性容器架构的类型,可以替代或补充虚拟机而使用非虚拟化主机,和/或可以不一定使用提供商网络的虚拟化计算服务或其它服务。
示例流水线元件和到SPPS节点的映射
图7图示了根据至少一些实施例的包括多个级的示例分组处理流水线。示出了两种类型的流水线:供应商定义的流水线705和基于IVN配置的流水线715。在所描绘的实施例中,流水线705和715中的每一个可以具有由有向非循环图(DAG)中的相应节点、一个或多个入口点和一个或多个出口点表示的一个或多个级。出口点可以包括联网构造(诸如虚拟网络接口),该联网构造能够用于将业务引导到实施流水线逻辑的节点,或者从这些节点转移业务。在图7的示例中,供应商定义的流水线705可以包括级710A、710B、710C、710D和710K、入口点706A及出口点707A,然而基于IVN配置的流水线715可以包括级720A、720B、720C、720P和720Q、入口点706B及出口点707B。
在所描绘的实施例中,这两种类型的流水线在其源方面(即,在负责定义流水线的实体方面)可以不同,但是在其它方面可以是相当类似的。例如,给定级的描述符750可以包括一个或多个规则733、任选的查找数据734(例如,最低前缀匹配表、诸如散列表的确切匹配表等)和/或要基于应用规则的结果采取的一个或多个动作735。在至少一些实施例中,规则和/或动作的可执行表示,例如形式为eBPF中表达的程序或函数集,可以由SPPS的客户端作为流水线设置请求的一部分和/或经由其它编程交互提供。在其它实施例中也可以或替代地使用其它语言/格式。在一些实施例中,如果一级具有多个规则,则可以依次应用每一个规则。在至少一个实施例中,规则和/或动作可以是有条件的。例如,级720A的规则可以导致对于给定分组执行级720B或执行级720C。在各种实施例中还可以使用有条件的规则来决定是否要在给定级处对于给定分组执行特定分组处理程序或动作:例如,规则可以导致对于分组Pkt1在级S1处执行特定程序Prog1,并且相同规则可以导致决定不对于另一分组Pkt2在级S1处执行Prog1。
图8图示了根据至少一些实施例的分组处理流水线级到分组处理服务的节点的示例映射。取决于正在实施的分组处理应用的逻辑,可以完全在FPPN内实施给定流水线,或者可以在相应的FPPN处执行一个或多个级的不同组的工作。例如,FPPN 812A可以用于执行与一个流水线815A的每一个级(810A、810B、810C、810D、810K等)相对应的操作。相比之下,对于流水线815B,可以使用若干不同的FPPN:用于级810P和810Q的FPPN 812B、用于级810R和810S的FPPN 812C、以及用于级810T的FPPN 812D。例如,可以在给定流的网络分组被从提供商网络的一个可用性容器传送到另一可用性容器或者从提供商网络的一个地理区域传送到另一区域的场景中使用多个FPPN。在一些此类场景中,执行分组处理所需的信息可能不容易跨可用性容器边界或区域边界转移,所以可以采用不同的可用性容器或区域中的相应FPPN。
示例分组上下文信息
随着网络分组在较早地介绍的种类的流水线的各个级处被处理,有关在流水线的较早级处已完成的事情的信息在后续级处可能有时是有用的。图9图示了根据至少一些实施例的可以随着分组在流水线的各个级处被处理而被维护和修改的示例上下文信息。在图1中图示了可以针对给定接收到的分组916逐级生成和传送的三种类型的上下文信息:SPPS的特权数据910、流水线实例元数据912和命令元数据914。
特权SPPS数据910可以包括与分组所属于的流相关的配置信息,该配置信息仅由SPPS节点访问,而不可从流水线的供应商供应的分组处理程序访问。这种特权信息可以包括例如IVN配置安全检查、网络访问控制列表等的结果,这些结果可以指示分组已经满足IVN安全或其它约束并且分组的进一步处理因此被允许。在所描绘的实施例中,流水线实例元数据912可以包括例如正在处理分组的虚拟流水线器具的实例的标识符,和/或(a)总体上适用于流水线实例并且(b)可视需要而定从流水线的供应商供应的程序访问的其它元数据。上下文的命令元数据部分914可以用于存储将在分组退出流水线时使用的特定命令,如果需要任何此类命令,例如,将分组的重写版本朝向其最终目的地路由。上下文信息902可以被认为是暂时保留与分组的处理相关的信息并且当流水线已被遍历时从其中放弃这种信息的“便笺式存储器”的逻辑等同物。实际上,在流水线入口点处接收到的原始分组可以随着分组通过流水线级行进而被暂时包封在包含上下文信息902(以及分组它本身)的包络内。
用于IVN配置相关的任务的示例多级流水线
图10、图11和图12共同地图示了根据至少一些实施例的多级流水线的示例级,在所述示例级处可以执行隔离虚拟网络配置相关的分组处理操作。图10提供了多级流水线1099的所有级的概要视图,然而图11和图12示出了各个级及其组成规则的附加细节。在所描绘的实施例中,每个级包括被顺序地执行的一个或多个规则;在其它实施例中,可以不需要这种顺序执行。可以应用规则来确定是否将对正在一级处处理的分组执行对应动作;在一些实施例中,规则和/或动作它本身可以包括eBPF函数或程序。在一级处执行的至少一些操作可以通过确定是否能够在查找表或高速缓存如最长前缀匹配(LPM)表或通过从所接收到的分组的属性生成的键索引的散列表中为所接收到的分组找到条目来驱动。在图10-图12中通过示例示出了三种类型的规则:调用规则(CR)、表驱动规则(TDR)和过滤规则(FR)。调用规则可以用于从另一级发动或调用一个级。表驱动规则可以利用查找表来确定要对于分组执行的动作(若有的话);示例动作可以例如包括将包含在查找表条目中的信息复制到分组的上下文信息(与关于图9讨论的上下文信息类似)中,以使得能够基于所复制的信息执行进一步处理。在一些实施例中表驱动规则本身可以包括其它级以及动作,其中在动作之前执行级。过滤规则可以被用于一些类型的有条件的操作—例如,以基于分组上下文中的信息确定应该接下来执行哪个级。
在图10中高级地(并且在图11和图12中更详细地)示出的流水线1099包括以下级:根(框1002)、入口ACL(访问控制列表)(框1005)、VNI(虚拟网络接口)路由(框1011)、本地路由(框1009)、边缘路由(框1012)、公共VNI路由(框1013)、任播(框1018)和目的地VNI至底层物理位置索引(PLI)(框1020)。具有虚线轮廓的框表示在各级处发动的规则;规则被编号以指示它们将被应用的顺序,其中数字使用“#”符号来示出。双轮廓框1001表示分组进入到流水线中,而双轮廓框1022指示当分组离开流水线时执行的动作。
在所描绘的实施例中,流水线表示可以被执行以在同一IVN中的两个虚拟网络接口(VNI)之间、在不同IVN中的两个VNI之间或从IVN向虚拟化计算服务的边界或边缘联网装置(与图1所示的边界装置机群130的成员类似)路由分组的IVN相关的分组处理。例如使用FPPN处缓存的规则、查找表和动作来相对于经由框1001中表示的入口点从IVN进入流水线的分组执行各种类型的分析,直到经由虚拟化计算服务的物理网络将分组朝向其预定目的地路由所需要的信息被用于IVN为止(框1022)。在所描绘的实施例中,流水线1099的设计,包括要针对给定分组遍历的各个级的顺序,可以例如由VCS网络管理员确定;对于其它流水线,应用供应商可以如上面所讨论的那样设计流水线。可以在至少一些实施例中(例如,在SPPS控制平面处)生成包括IVN相关和供应商设计的操作的混合流水线。在根级1002中,例如,可以依次应用三个规则(如图10以及图11中指示的)。首先,可以应用用于在分组的上下文信息中添加源VNI元数据的表驱动规则1003。然后,调用规则1004可以用于发动可以在其中提取入口ACL信息的级1005,被存储在分组上下文中,并且被评价,以及最后,可以应用入口路由表驱动规则1008(其本身包括若干可能的级和动作)。取决于这些初始规则的应用的结果,可以在各级的图中采用不同的路径。
经由流水线1099图示的朝向使用能够在流水线的每个级处非常快速地运行的小高效程序的分组处理的基于流水线的方法的一些方面包括以下内容。给定级可以具有一个规则(如在级1011、1012、1018或1020中一样)或多个规则(例如,级1002、1005等)。如果一级具有多个规则,则在至少一些实施方案中可以依次执行它们。如上面提到的,规则可以是表驱动规则(TDR,例如,规则1003、1006、1007、1008)、用于发动其它级的调用规则(CR,例如,规则1004或1015)。可以基于评价的条件根据规则发动一些级(如在规则1008所示的“if”子句的情况下一样)。如果规则包括级以及动作(如在规则1008的情况下一样),则在至少一些实施例中可以在动作之前执行级。一些或所有规则可以指定默认动作:例如,如果对于分组在查找表中未找到匹配条目,则可以在一些情况下丢弃分组(由包括1003和1008的各种规则中示出的“在命中时:丢弃分组”指示),然而在其它情况下(如在规则1016中一样),可以简单地忽略未找到条目的事实(如由“在未命中时:继续”指示的)。一些规则可以简单地用于为分组添加上下文信息以用于在后续级期间分析。在流水线1099中示出的IVN配置相关的操作中执行的一些操作可以与安全有关(例如,在规则1014或1017中),然而其它操作可以和封装协议(在指配给源和目的地的网络地址可以是虚拟地址的环境中需要)的使用相关,所述虚拟地址必须被转换为底层VCS网络和路由等中的物理地址。规则1017表示有条件或过滤规则的示例,其中基于分组上下文的内容(其在流水线的较早级处被生成并存储在上下文中)选择要用于给定分组的下一级)。注意,流水线1099只是可以使用SPPS来实施的中等复杂度的多级流水线的一个示例;在各种实施例中,可以实施更复杂的流水线,或者可以对于一些类型的应用使用不太复杂的流水线。
用于分组处理节点的示例平台
图13图示了根据至少一些实施例的用于分组处理节点的示例实施方案平台。在一些实施例中,可以使用与图1中图示的VCS类似的虚拟化计算服务(VCS)的虚拟化主机1320(例如,1320A、1320B、1320C或1320D)来实施诸如FPPN、SPPN等的SPPS组件。在给定时间点,虚拟化主机1320可以包括零个或多个计算实例(诸如来宾虚拟机)1321(例如,1321A-1321D)和一组虚拟化管理组件1322(例如,1322A-1322D)。可以在不同的实施例中使用各种虚拟化管理组件(VMC),包括例如在虚拟化主机的主处理器(CPU)上运行的管理程序以及对于其应用中的至少一些不利用主处理器的被卸载的VMC。如果VMC接管否则会在虚拟化主机的主处理器上执行的一些虚拟化管理任务(例如,与封装协议处理等相关联),从而卸载或减少主处理器的工作负载,则可以将VMC称为“被卸载”。在一些实施例中,被卸载的VMC可以包括在经由诸如PCIe(外围组件互连快速)互连的外围互连连接到CPU的卡的片上系统(SOC)上实施的逻辑。在一些实施例中此类卡的SOC或其它元件的计算能力可以被用于SPPS,例如,作为用于虚拟化管理任务的补充或替代。
在图13中通过示例示出了关于在虚拟化主机上运行SPPS节点的许多替代方法。例如,在一个实施例中,SPPS节点1313A可以例如使用一个或多个用户模式进程来仅在虚拟化主机1320的计算实例1321A内运行,并且没有SPPS节点可以使用VMC来运行。在另一配置中,如虚拟化主机1320B所示,在一些实施例中多个SPPS节点1313B和1313C(例如,若干不同的FPPN、SPPN或FPPN和SPPN的组合)可以在单个计算实例中运行。在其它实施例中,诸如1313D和1313E的一个或多个SPPS节点可以在虚拟化主机的VMC 1322B处运行。在一个实施例中,SPPS节点可以在计算实例(诸如虚拟化主机1320D的CI 1321D处的SPPS节点1313G)内并且还在VMC(诸如虚拟化主机1320D的VMC 1322D处的SPPS 1313F)内运行。在至少一些实施例中,SPPS节点可以被实施在虚拟化计算服务的IVN即被专门地用于分组处理操作(并且因此与在其处配置了分组的源/目的地的IVN不同)的IVN内。
在一些实施例中,SPPS节点可以在非虚拟化主机(例如,主机1360处的SPPS节点1313H和1313J)处运行。根据一个实施例,可以对于诸如1313K和1313L的一些SPPS节点采用专用的专用分组处理硬件装置1370。在提供商网络的一些数据中心中,或者在如下所述建立SPPS数据平面扩展的外部网络处,可以使用图13中图示的SPPS节点实施方案方法的组合。
示例分组处理应用
图14图示了根据至少一些实施例的可以在无服务器分组处理服务处使用流水线来实施的分组处理应用的示例类别。一般而言,具有与图1所示的SPPS 102的能力类似的能力的SPPS可以可配置为实施任何期望类型的分组处理或变换(或不同类型的分组处理或变换的组合),其中可在每个层处动态地指配节点来以透明且可缩放的方式支持大范围的业务速率。
顾名思义,源地址取代应用1402可以涉及针对特定流的分组以一致方式替换源地址和端口。(如较早地提到的,在一些实施例中可以基于诸如正在使用的网络协议、源和目的网络地址、源和目的端口、与流水线或虚拟器具相关联的虚拟网络接口标识符和/或业务的方向的属性的组合或元组来将分组流彼此区分开。)源地址取代技术可以是有用的,例如,当在两个或更多个隔离网络的专用地址范围之间存在重叠时,或者当使用负载平衡器来实施服务的一个或多个服务器的实际地址将对服务消费者隐藏时,并且在一些实施例中可以采用SPPS作为负责此类取代的中介。在一些实施例中,此类地址取代操作也可以被称为“受管理网络地址转换(NAT)”。多播1404是在一些实施例中可使用SPPS实施的联网技术,其中从源发送的单个分组的内容(例如,主体)被复制到指定多播组的多个目的地。相比之下,任播1406可以涉及针对在SPPS处接收到的给定流的所有分组,从指定的目的地集当中选择特定目的地。
如由名称所指示的,可缩放负载平衡1408涉及在一组服务器当中分发分组以便防止各个服务器的过载。对于可缩放的跨IVN信道1410,在一些实施例中SPPS实际上可以被用作两个或更多个不同的IVN的专用地址空间之间的中介。在至少一些实施例中,SPPS可以同样或替代地用于支持提供商网络内的某个资源集与提供商网络外部的一个或多个客户端网络或客户端处所之间或各自经由VPN连接链接到SPPS的多个客户端处所网络之间的可缩放VPN连接性1412。在一些实施例中,提供商网络可以经由称作“直接连接”链路的专用物理链路支持与外部网络的连接性,并且可以使用SPPS来管理此类外部网络之间(以及此类外部网络与IVN或VPN连接的外部网络之间)的业务。
在一个实施例中,SPPS可以例如由电信服务提供商采用以进行每账户带宽使用率跟踪1414。在至少一些实施例中,SPPS可以被用于入侵或攻击检测1416(例如,用于特定企业或政府实体的资源处的意外或不想要的业务的检测)。在一些实施例中,可以使用SPPS流水线来执行数据漏出检测1418(例如,出自组织的网络的数据的不期望的/未经授权的传输的检测)。注意,至少在一些实施例中,在SPPS处建立的虚拟器具或流水线的单个实例可以组合图14中指示的若干分组处理功能(和/或其它分组处理技术)。在不同的实施例中可以使用SPPS来支持其它类别的分组处理应用,然而在一些实施例中可以不支持图14中指示的一些类型的应用。
使用API管理的示例实体
在各种实施例中表示与分组处理相关联的各种类型的对象和实体的数据结构可以被存储在特征和功能性方面与图1的SPPS 102类似的SPPS中,并且可以支持用于访问并操纵此类数据结构的应用编程接口。图15图示了根据至少一些实施例的可以在分组处理服务处实施应用编程接口的实体的示例类型。在一些实施例中各种流水线定义1501,例如,包括关于流水线的各级的信息、要在每个级处应用的规则、要用于各级的查找表的种类等,可以由SPPS的客户端提供。如较早地提到的,给定流水线可以包括具有由应用供应商定义的操作的级、具有由网络管理员定义的与IVN配置相关联的操作(包括安全和路由相关的操作)的级、和/或用于执行供应商定义的操作和IVN配置相关的操作的组合的级。分组处理应用1507可以表示流水线定义1501的实施方案;因此,例如,一个应用A1可以为某个业务端点集TE1实施流水线定义PD1,而另一应用A2可以为另一业务端点集TE2实施相同的定义。随着时间推移,可以对流水线定义做出修改(例如,可以改进用于级的eBPF代码),并且可能必须在不中断现有版本的使用的情况下为最终用户传播此类变化。在一些实施例中可以指定部署策略1504以指示将如何推出或传播流水线定义1501的各种版本,使得能够将业务尽可能透明地移位为新版本。
从分组处理应用的最终用户的视角看,在所描绘的实施例中可以使用至少两种类型的虚拟实体来暴露应用:器具1510和附件1513。例如,应用供应商可以请求SPPS(a)创建实施包括由供应商设计的流水线的应用的入侵检测器具1510并且(b)做出适当的联网配置变化以在其业务将被分析以进行入侵检测的IVN处生成附件1513。在一些实施例中,可以将流水线的特定版本“钉住”到器具,例如,可以在SPPS处存储指示新版本将不用于器具的元数据。在各种实施例中,附件实际上可以创建可从要处理的业务的源和目的地到达的一个或多个入口点和/或出口点。在一些实施例中,附件也可以用于实现两个器具或两个流水线之间的连接性。
例如,创建附件所需的联网配置操作可以包括一个或多个虚拟网络接口(VNI)的建立。在各种实施例中,VNI可以包括具有一组联网和安全相关属性的逻辑实体,这些属性能够以编程方式附接到计算实例和/或其它计算装置(或者从计算实例和/或其它计算装置拆卸),或者用于IVN内的路由目的而不一定附接到计算实例。例如,可以向给定虚拟网络接口VNI1指配至少一个IP(网际协议)地址“IPaddr1”,并且可以为VNI1设定限制入站和出站业务的安全规则。当该VNI以编程方式附接到在具有物理网络接口卡NIC1的主机处启动的给定计算实例CI1时,可以经由NIC1在CI1处接收将IPaddr1指示为其目的地地址(并且遵守安全规则)的网络分组。另外,在CI1处生成的出站分组可以将IPaddr1指示为其源地址并且可以经由NIC1在物理上朝向其目的地传送。如果VNI1随后以编程方式从CI1拆卸且附接到CI2(其正在具有不同物理网络接口卡NIC2的不同主机处执行),则现在可以在CI2处接收先前在CI1处接收的IPaddr1业务,其中相同安全规则在适当的位置。在所描绘的实施例中,附件1513可以如下三种方式中的任一种使用一个或多个VNI:(a)可以为附件建立标准VNI1528(例如,具有目标IVN内的专用IP地址),(b)可以建立包括多个VNI的VNI池1531,例如,作为提供商网络的地理区域内的网关,或(c)可以使用未编号的VNI 1534(具有能够被称为路由表条目中的目的地的标识符但尚未为其指配IP地址的VNI)。
可以为一些器具生成表示异常路径1516的对象以处理将不在FPPN处执行的分组处理操作—例如,因为FPPN可以限制能够在FPPN上运行的程序的最大大小(并且因此限制复杂度),因为应用供应商希望在定制或增强安全资源处执行某种分组处理,或者出于其它原因。在一些实施例中,如上面提到的,能够在FPPN处运行的分组处理程序的最大允许大小可能太小而无法完成一些期望的分组处理操作,或者能够在FPPN处存储/检查的查找表的最大大小可能太小而无法执行一些期望的基于表的分组处理任务,并且在一些实施例中可以在此类场景中使用异常路径。可以在各种实施例中采用至少两种异常路径处理节点:SPPS管理的节点和客户端控制的节点。例如,如果流水线的供应商或设计者向SPPS提供不能使用FPPN来执行的分组处理操作的描述或规范,并且允许SPPS使用由SPPS选择(并由其视需要而定按比例扩大或减少)的计算装置的池来执行那些操作,则可以利用SPPS管理的异常路径(MEP)1519。在所描绘的实施例中,代表其实施MEP的客户端可能不必为异常路径操作做出资源供应决定;替代地,SPPS控制平面可以为异常路径执行资源供应、健康状态监测、故障恢复等。
在替代方法中,一些客户端可以不向SPPS提供其异常路径操作的细节,而是可以替代地使用客户端控制的或定制异常路径(CEP)1522。在此类场景中,在各种实施例中客户端可以负责用于异常路径处理的计算装置的资源供应、健康状态管理、故障恢复等。在所描绘的实施例中,客户端可以提供对于异常路径操作应该将分组发送到的一组目标资源1525(例如,一个或多个客户端控制的或客户端拥有的装置的IP地址)的指示。在其中在一个或多个最终用户IVN处生成(或引导到其)的业务将使用上述种类的流水线来处理的至少一个实施例中,用于客户端控制的CEP的资源可以驻留在不同IVN(例如,代表应用供应商配置的IVN)中或甚至在最终用户IVN所在的提供商网络外部。在一些实施例中,除图15所示的实体外的其它类型的实体可以被用于表示与分组处理操作相关联的元数据。
示例编程交互
图16和图17图示了根据至少一些实施例的示例分组处理流水线相关的程序交互。在图16和图17中描绘的实施例中在特征和功能性方面与图1的SPPS 102类似的SPPS 1640可以实施一组编程接口1677,该一组编程接口能够由诸如分组处理流水线的应用供应商和/或最终用户的客户端使用来提交各种类型的配置相关的请求并且接收对应的响应。在不同的实施例中,编程接口1677可以包括例如一组应用编程接口、命令行工具、图形用户界面、基于web的控制台等。
如图16所示,SPPS客户端1630(诸如分组处理应用的供应商或虚拟化计算服务的网络管理员)可以在StorePipelineDefinition请求1602中向SPPS 1640提交流水线定义。在所描绘的实施例中,用于流水线的各级的描述符,包括要在每个级处执行的规则、要使用的查找表的种类、要执行的动作等,可以被包括在StorePipelineDefinition请求中。在至少一些实施例中,要执行以实施规则和动作的程序(例如,在eBPF中)的可执行或源代码版本可以被包括在请求中。在一个实施例中,SPPS可以提供能够由客户端1630使用来生成流水线、验证流水线满足SPPS的FPPN的资源限制(例如,存储器大小极限、程序长度极限等)等的集成开发环境(IDE)和/或其它工具。在至少一些实施例中,在接受或部署流水线之前,SPPS可以实施内部管理工作流以确保由流水线提交者提供的程序满足期望的隔离准则—例如,给定流水线的程序不试图访问旨在仅从其它流水线访问的数据结构。满足这种隔离准则的程序/流水线可以以多租户方式安全地运行,例如,可以视需要而定在与流水线P2(由应用供应商V2提供)的程序相同的FPPN或主机处运行流水线P1(由应用供应商V1提供)的程序。响应于接收到StorePipelineDefinition请求1602,可以将流水线的表示存储在SPPS的储存库中,并且在一些实施例中可以提供PipelineDefinitionStored响应1604。
为了向一组最终用户呈现流水线的实例,代表其存储定义的客户端可以提交CreateAppliance请求1606,例如,指示要使用器具和/或其业务将使用该实例来处理的计算实例集来实施的流水线定义。作为响应,SPPS控制平面可以在一些实施例中例如基于业务源的计数指配FPPN和/或其它节点的集合,存储标识器具和为该器具选择的节点的元数据,并且在所描绘的实施例中在ApplianceID消息1608中提供新创建的器具的器具标识符。
在一些实施例中客户端1630可以经由编程接口1677提交CreateAttachment请求1610,例如,以建立一个或多个VNI(虚拟网络接口)或能够被用作要处理的业务的目标(流水线入口点)或用作能够从其获得在流水线处执行的分组处理操作的结果的源(流水线出口点)的其它构造。可以在SPPS处执行适当的联网配置操作(例如,VNI的创建、地址的指配、路由表条目的生成等),并且在一些实施例中可以在AttachmentID消息1612中提供附件标识符。
在一些实施例中,响应于请求1610对附件的创建可以使得业务能够流向流水线。在其它实施例中,可以发送ActivateAppliance请求1613以使分组经由附件被引导到流水线;也就是说,附件的创建单独可能不足以在器具处开始处理分组。响应于ActivateAppliance请求1613,可以在SPPS 1640处做出适当的网络配置变化以使得分组能够被引导到器具的FPPN,并且可以向客户端发送ApplianceActivated响应1615。
如果流水线的创建者或某个其它经授权的客户端希望改变流水线(例如,通过修改与一个或多个级相对应的规则/动作/程序、通过添加/组合/消除一个或多个级等),则在一些实施例中可以向SPPS提交指示变化的ModifyPipeline请求1616。如果发现变化是可接受的,则可以应用它们,例如,通过在不移除现有版本的情况下创建流水线的新版本,并且可以向请求者发送ModificationComplete消息1618。
在一些实施例中,DeployModifiedPipeline请求1620可以由客户端发送到SPPS以使流水线的新版本被传播到适当的数据平面节点。在传播变化之后(例如,依照在图15的上下文中讨论的种类的部署策略),可以由SPPS向客户端发送PipelineDeployed消息1622。
可以由客户端1630提交DescribePipeline请求1624以获得关于创建的流水线定义的信息。可以由SPPS在PipelineInfo消息1626中提供所请求的信息。类似地,为了了解为一个或多个器具创建的附件集,可以提交DescribeAttachments请求1628,并且可以在AttachmentInfo消息1630中提供所请求的信息。
在至少一些实施例中,SPPS可以捕获与各种器具相关联的度量,包括例如每单位时间处理的分组的总数、每单位时间传送的字节的总数等。可以由客户端1630提交GetApplianceMetrics请求1631以获得此类度量,并且在所描绘的实施例中可以使用MetricSet响应消息1632来提供所请求的度量。
如图17所示,在一些实施例中可以由客户端提交ConfigureCustomExceptionPath请求1702以请求建立上面在图15的上下文中讨论的种类的客户端管理的异常路径。例如,请求1702可以包括由客户端选择的一个或多个目标的指示,可以将分组发送到这些目标以进行与流水线或器具相关联的异常路径处理。请求1702中提供的信息可以被保存在SPPS处,例如,作为器具的元数据的一部分,并且作为响应可以发送CEPConfigured消息1704。
在各种实施例中客户端可以对定制异常路径做出改变,例如,通过添加目标、移除目标或者改变从其访问异常路径以获得给定分组的流水线的级,并且此类改变可以经由ModifyCustomExceptionPath请求1706指示。在改变的表示已被存储在SPPS处之后,可以向客户端提供CEPModified响应1708。
在为分组处理应用配置了定制异常路径的一些实施例中,客户端可能希望确保为该路径建立的目标将对发送给它们的分组做出响应,并且SPPS 1640可以提供机制来测试目标。这样的机制可以通过发送TestCustomExceptionPath请求1710(例如,指示要发送到定制异常路径目标的分组的种类的示例以及所预期的响应的种类)来发动,并且可以在TestResult消息1712中提供测试的结果。
可以由客户端1630提交ConfigureSPPSManagedExceptionPath请求1713以请求建立上面在图15的上下文中同样讨论的种类的SPPS管理的异常路径。例如,请求1713可以包括要在SPPS管理的异常路径处执行的操作的指示。在请求173中提供的信息可以被保存在SPPS处,例如,作为器具的元数据的一部分,并且作为响应可以发送MEPConfigured消息1715。
在各种实施例中客户端可以对SPPS管理的异常路径做出改变,例如,通过指示要执行的新操作序列,并且此类改变可以经由ModifySPPSManagedExceptionPath请求1716指示。在改变的表示已被存储在SPPS处之后,可以向客户端提供MEPModified响应1718。
在至少一些实施例中,可以使用DescribeExceptionPaths请求1720来获得描述器具或流水线的配置的异常路径的信息,例如,用于SPPS管理的或客户端控制的定制异常路径。SPPS可以在ExceptionPathInfo消息1722中提供包含可用信息的响应。
在至少一个实施例中,SPPS可以捕获与为各种器具建立的异常路径相关联的度量,包括例如每单位时间经由异常路径处理的分组的总数、每单位时间使用异常路径传送的字节的总数等。可以由客户端1630提交GetExceptionPathMetrics请求1724以获得此类度量,并且在所描绘的实施例中可以使用EPMetricSet响应消息1726来提供所请求的度量。在一个实施例中,SPPS 1640可以能够监测正在代表客户端使用的至少一些定制异常路径资源的健康状态(例如,通过发送类似ping的消息来探知资源是否响应),并且可以将参考健康状态度量经由EPMetricSet消息1726提供给客户端。在一些实施例中,除图16和图17所示的那些以外的编程交互可以用于执行流水线配置相关的操作。
示例异常路径分组处理场景
图18图示了根据至少一些实施例的示例异常路径分组处理场景。在所描绘的实施例中,示出了可以执行分组处理操作的三种类型的节点:SPPS的“标准”FPPN 1801、在SPPS管理的池中配置的异常路径分组处理节点(EPPN)1851A和1851B、以及被用于客户端控制的定制异常路径的EPPN 1851K和1851K。
在所描绘的实施例中,标准FPPN 1801可以包括受限分组处理引擎1805。可以例如包括可用于eBPF程序的基于寄存器的虚拟机的这样的引擎虽然能够快速地执行分组处理程序,但是关于能够被执行的任务的复杂度和大小可能受约束。例如,可用于给定程序的存储器的总量可以是小的,使得不能使用大查找表,或者能够被包括在程序中的最大指令数可以是低的。在一些实施例中可以支持仅某些类型的可执行指令:例如,在引擎1805处执行的程序中可以不允许一些类型的循环构造。引擎1805对各式各样的分组处理操作来说可以是足够的,但是一些应用可能需要访问较大的表,或者需要对于至少在流水线处接收到的分组的子集运行更复杂的程序。在一些情况下要执行的分组处理操作可能需要不可从标准FPPN 1801访问的一个或多个安全工件(例如,加密密钥)—即,FPPN可能未被授予对安全工件的权限,或者被提供有安全工件。例如,一些分组处理应用可以涉及终止安全联网会话,诸如TLS(传输层安全)或SSL(安全套接字层)会话,并且用于此类应用的加密密钥可能无法从FPPN获得。在一些实施例中,至少一些FPPN可能不具有执行一些类型的分组处理所需的加密/解密操作所需的计算资源(即使用于此类操作的安全工件在FPPN处可用也如此)。
为了满足SPPS的标准FPPN 1801不能满足的此类需求,在所描绘的实施例中可以配置一个或多个EPPN 1851。此类EPPN可以具有相对于能够被执行的任务的种类不太受限制的计算资源1855(例如,1855A、1855B、1855K或1855L)。在一些情况下,可以建立由SPPS控制平面管理的EPPN 1805的池,使用SPPS资源1807来管理,包括自动缩放管理器1871、健康状态管理器1872和供应管理器1872。如果并且当在这样的池处的异常路径工作负载增加(例如,由于附加业务源的配置),或者EPPN发生故障,则附加资源可以由管理资源1807部署。实际上,代表其建立SPPS管理的EPPN池的客户端可以获得关于如为标准FPPN获得的可伸缩性、可用性和可靠性的类似好处,而不限于标准FPPN的限制。
在一些情况下客户端可能不一定想要使用SPPS管理的资源进行异常路径处理。例如,如果将使用客户端不希望暴露给SPPS的专有的、高度敏感的分组处理算法(例如,使用诸如密码密钥的一个或多个安全工件1858),或者如果分组处理算法或查找表的快速改变是预期的,则情况可以是这样。在一些实施例中,SPPS可以使得此类用户能够建立客户端管理的EPPN 1830如EPPN 1851K和1851L的池。在一些情况下,机器学习模型1859和/或其它数据集(其可能不一定是安全相关的)可以被用于诸如1851L的EPPN处的分组处理,例如,在SPPS的标准FPPN处使用此类模型或数据集可能不切实际的场景中,或者简单地因为SPPS客户端不希望向SPPS提供模型或数据集。在一些实施方案中可以在SPPS管理的IVN内建立SPPS的标准FPPN和/或其它数据平面资源,并且可以在不同IVN(例如,代表应用供应商建立的IVN)内配置客户端管理的EPPN 1830;注意除这两个外的IVN与要处理其业务的IVN不同。在至少一个实施例中,可以在提供商网络外部的处所处建立客户端管理的EPPN。在一些实施例中,可以将在FPPN处不可访问的至少一些安全工件1858(诸如可用于TLS/SSL会话的密码密钥)传送到SPPS管理的EPPN以实现不能在要在SPPS管理的EPPN处执行的标准FPPN处执行的一些类型的安全相关的分组处理操作。
分组处理服务的示例扩展
图19图示了根据至少一些实施例的示例系统环境,其中可以在提供商网络外部的处所实施提供商网络的分组处理服务的数据平面扩展。如所示,系统1900可以包括提供商网络1901的若干网络可访问服务的资源和工件,包括虚拟化计算服务(VCS)1910和无服务器分组处理服务(SPPS)1902。在所描绘的实施例中提供商网络1901可以包括一个或多个数据中心。每一个提供商网络服务可以包括位于提供商网络的数据中心内的一组管理或控制平面资源(例如,SPPS控制平面资源1926和VCS控制平面资源1941,其可以包括诸如1912A或1912B的多个控制平面服务器1912)。
在高级别,VCS 1910和SPPS 1902可以提供与在包括图1的较早图的上下文中讨论的VCS和SPPS的功能性和特征类似的功能性和特征,同时添加了在提供商网络数据中心外部的处所处扩展两种服务的数据平面的能力。例如,可以在如较早地讨论的SPPS控制平面资源1926的帮助下在提供商网络数据中心内维持SPPS的一定数目的数据平面节点1922(包括例如快速路径分组处理节点、较慢路径或异常路径分组处理节点、用于存储状态信息的节点等)。位于提供商网络内的VCS 1910的数据平面资源1945的子集可以包括多个隔离虚拟网络(IVN)1915,例如IVN 1915A或1915V,在所述隔离虚拟网络(IVN)处可以例如在VCS控制平面资源1941的帮助下建立诸如1917A或1917B的计算实例(CI)1917的相应集合。
可以在所描绘的实施例中在诸如1932A和1932B的客户数据中心处和/或在提供商网络外部的其它设施如共址设施等处(例如,响应于编程请求)配置VCS和SPPS两者的数据平面资源的子集。例如,VCS数据平面扩展资源组(ERG)1935A可以包括在客户数据中心1932A处的虚拟化主机处建立的计算实例1918J和1918K的集合,并且可以在位于客户数据中心1932B处的虚拟化主机处建立包括计算实例1918P和1918Q的另一VCS数据平面扩展资源组1935B。在所描绘的实施例中,可以在对应的IVN内配置VCS数据平面ERG中的相应CI。可以在IVN 1915A内配置CI 1918J和1918K,从而在逻辑上将IVN 1915A扩展到客户数据中心1932A,然而可以在IVN 1915B内建立CI 1918P和1918Q,从而在逻辑上将IVN 1915B扩展到客户数据中心1932B。为了安全地执行与VCS数据平面扩展相关联的配置操作,可以在不同的实施例中采用技术的组合—例如,可以在预先配置的机架中向客户数据中心交付一组具有经验证/证明的软件栈的增强安全虚拟化主机,可以使用特殊安全引导序列来启动机架内的相应控制平面代理进程,和/或可以采用一个或多个出站命令通信器(OCC)1977来经由安全的(加密的)通信信道从提供商网络数据中心向代理传送VCS控制平面命令。
在一些实施例中,可以使用类似的技术来在客户数据中心1932A和1932B处建立诸如1927A或1927B的SPPS数据平面扩展资源。例如,可以在预先配置的机架内向客户数据中心交付一组具有用于SPPS数据平面节点(例如,包括一定数目的FPPN和一定数目的SPPN)的经验证/证明的软件栈的增强安全硬件装置,可以使用特殊安全引导序列来启动机架内的相应SPPS控制平面代理进程,和/或可以采用一个或多个出站命令通信器1925来经由安全的(加密的)通信信道从提供商网络数据中心向代理传送SPPS控制平面命令。在一些实施例中,为VCS数据平面扩展建立的硬件装置的给定机架也可以用于在外部处所处收容SPPS数据平面节点—例如,一些SPPS节点可以使用与其分组将使用SPPS实施的流水线来处理的计算实例相同的机构内的虚拟化主机处的相应计算实例来实施。在一个实施例中,在客户数据中心1932处建立的SPPN可以包括一个或多个状态信息储存库节点(与图1所示的SRN 274类似)。在这样的实施例中,仅处理客户数据中心1932的业务所需的正在实施的流水线的状态信息的子集可以被存储在此类SRN处。注意,在至少一些实施例中,当SPPS或VCS的客户端发出和任何一个服务的数据平面扩展相关的配置或管理相关的请求时,这些请求可以使用被用于与提供商网络内的数据平面资源有关的请求的相同种类的路径被传送到服务控制平面;也就是说,在此类实施例中入站请求可以不需要命令通信器1977或1925。
在各种实施例中,SPPS控制平面资源1926可以例如使用一个或多个出站命令通信器1925来从提供商网络数据中心向建立了SPPS数据平面节点的外部处所传送分组处理元数据1944(例如,1944A或1944B)。例如,诸如分组处理流水线或器具的供应商的SPPS客户端可以向SPPS控制平面资源传送要为给定IVN 1915的业务实施的流水线的指示。SPPS控制平面的IVN集成资源1924可以收集IVN的配置信息,并且可以如较早地讨论的那样在各种实施例中生成对应的IVN配置相关的分组处理流水线。在所描绘的实施例中,可以向SPPS数据平面扩展资源1927A或1927B传送供应商提交的流水线的至少一部分的表示和IVN配置相关的操作(例如,形式为能够被缓存在FPPN处的eBPF程序)。在各种实施例中,例如,响应于在SPPS控制平面处接收到的编程请求,可以在外部处所处建立分组处理器具的实例以及器具的入口点和出口点。在各种实施例中,可以例如基于流水线的业务源的数目通过SPPS控制平面增加或动态地增加分配给给定器具或流水线实例的基于外部处所的节点的数目。类似地,在至少一些实施例中,与图5中图示的那些类似的混洗分片技术可以用于标识将处理流水线的给定业务源的分组处理的基于外部处所的SPPS节点的特定集合。
当在SPPS扩展资源处从流水线实例的业务源(例如,外部处所处的源或提供商网络数据中心内的源)接收到分组时,可以在扩展资源处执行IVN配置相关的分组处理操作和供应商定义的分组处理操作的适当的组合。例如,如果在外部处所处的FPPN高速缓存中找到针对分组的规则和/或动作,则可以执行它们;否则可以咨询较慢路径资源以确定要由FPPN执行的操作。基于在SPPS数据平面扩展处对给定接收到的分组执行的分组处理的结果,在一些情况下可以将与所接收到的分组相对应的一个或多个分组(例如,所接收到的分组的变换版本)传送到目的地(在提供商网络数据中心中、在本地处所处或在不同位置处);在其它情况下,可以基于分组处理结果简单地丢弃给定接收到的分组。在至少一些实施例中,还可以为在外部处所处实例化的流水线建立定制异常路径目标(与用于执行不在SPPS的FPPN处执行的操作的较早地讨论的目标类似)—例如,可以使用可以与外部处所处的SPPS数据平面扩展位于一处的目标,可以使用提供商网络数据中心内的目标,或者可以使用其它外部处所处的目标。
在一些实施例中,诸如客户数据中心1932的外部处所可以包括诸如1923A和1923B的客户管理的服务器(CMS)的相应集合,所述服务器可以经由本地处所数据信道1968A或1968B链接到VCS数据平面ERG。在各种实施例中,CMS可以用作使用SPPS数据平面扩展处理的一些业务的源和/或目的地。在一些实施例中,CMS可以例如包括用于从本地VCS数据平面ERG的CI运行的应用的服务器,并且将CI定位在此类应用附近可以帮助为与此类应用相关联的消息业务实现较低时延。
根据至少一些实施例,SPPS数据平面扩展资源1927可以同样或替代地被建立在其它类型的处所处,并且可以不限于客户数据中心。在一些情况下,在其处建立了SPPS数据平面扩展节点的外部处所可以不一定包括VCS数据平面ERG。在一些实施例中,给定流水线的一部分可以使用基于提供商网络的SPPS数据平面节点来实施,并且同一流水线的另一部分可以使用一个或多个SPPS数据平面扩展来实施。在一个实施例中,作为在一个外部处所处的SPPS数据平面扩展节点处进行分组处理的结果而生成的出站分组可以被传送到另一外部处所处的另一SPPS数据平面扩展节点—也就是说,一些流水线可以使用在提供商网络数据中心外部的多个处所处的SPPS数据平面扩展来实施。
用于分组处理服务扩展的示例处所
图20图示了根据至少一些实施例的可以实施分组处理服务扩展的处所的类型的示例。如图19另外所图示的,在一个示例场景中可以在客户数据中心2032处部署无服务器分组处理服务(SPPS)的数据平面的扩展资源2027A。客户数据中心2032可以在一些情况下包括虚拟化计算服务(VCS)的扩展资源组2035,例如,包括在增强安全虚拟化主机处建立的一定数目的计算实例(CI),诸如2018A和2019B,但是在至少一些实施例中,要扩展到客户数据中心的SPPS数据平面功能性可能不需要VCS ERG 2035的建立。在所描绘的实施例中,本地处所数据信道2068可以将SPPS数据平面资源2027A和/或VCS ERG 2035连接到一组客户管理的服务器2023。
根据至少一个实施例,可以在提供商网络的边界装置机群的一部分所位于的处所2034处部署SPPS扩展资源。例如,在一些实施例中,VCS边界装置机群节点2037可以包括一定数目的被配置为从公共因特网接收(或向公共因特网发送)或者从其它网络接收的网络分组的中介的边缘路由器(例如,2022A和2022B),并且此类边缘路由器可以被建立在与提供商网络的主要数据中心分开的特殊地理上分布的处所2034内。对于在此类实施例中例如经由虚拟专用网络(VPN)隧道等离开或进入提供商网络的业务,在与边界装置相同的处所中收容SPPS数据平面扩展资源2027B可以帮助改进分组处理应用的性能,以便在这样的实施例中。
如较早地提到的,在至少一些实施例中可以代表分组处理应用供应商以及使用由此类供应商开发的应用的其它提供商网络客户端采用SPPS资源。在一些实施例中,可以在应用供应商的数据中心2036处部署SPPS数据平面扩展资源2027C,所述数据中心还可以包括供应商拥有的计算装置2036,包括供应商管理的服务器2023。在使用供应商管理的服务器来建立定制异常路径目标(在功能上与例如在图17或图18的上下文中较早地讨论的异常路径资源类似)的一些实施例中,SPPS扩展资源的此类放置可以是尤其有益的。
一些提供商网络客户端可能希望对于在提供商网络与提供商网络外部的客户端之间的流动的业务利用专用高带宽物理链路(即,不与公共因特网的业务共享的链路)。在各种实施例中,使用此类专用物理链路实现的连接性可以被称为“直接连接”连接性。在一些实施例中,可以采用在其处收容有提供商网络的联网资源2065(例如,路由器)以及第三方联网装置2066(或客户拥有的联网装置)的共址设施2038以便促进直接连接业务。在一些实施例中,也可以在此类共址设施处部署SPPS数据平面扩展资源2027D,例如,以允许针对经由专用物理链路2091A(到/从提供商网络数据中心)和2091B(到/从客户数据中心)的业务实施较早地介绍的种类的复杂的分组处理流水线。在一些实施例中,可以将SPPS数据平面扩展到图20中未示出的其它类型的处所。
示例SPPS扩展相关的编程交互
图21图示了根据至少一些实施例的与分组处理服务扩展相关的示例编程交互。在所描绘的实施例中,支持到提供商网络外部的处所的数据平面扩展的SPPS 2140可以实施一个或多个编程接口2177,诸如一组API、命令行工具、基于web的控制台、图形用户界面等。EstablishSPPS-ERG请求2106可以由SPPS客户端2130经由编程接口2177提交以请求在指定处所处建立SPPS的扩展资源组(SPPS ERG)。在发起或完成用于建立SPPS ERG的适当的控制平面操作之后,在所描绘的实施例中可以向客户端2130发送SPPS-ERGConfigured消息2103。在一些实施例中,请求2106可以包括诸如已经代表客户端建立的IVN的一个或多个资源组的指示,从而使得SPPS能够确定资源组的分组处理相关的配置设置、可能不得不为其建立快速路径分组处理节点的业务源等的数目等。在一些实施例中,如较早地例如在图19的上下文中提到的,可以在逻辑上和/或在物理上链接虚拟化计算服务(VCS)和无服务器分组处理服务(SPPS)的数据平面扩展—例如,用于两种类型扩展的资源集可以位于一处。在至少一个这种实施例中,提交给VCS控制平面以建立VCS扩展资源组(VCS ERG)的编程请求还可以包括指示也将建立对应的SPPS资源组的参数—实际上,可以在对VCS ERG的请求中并入EstablishSPPS-ERG请求2106。
在各种实施例中,在已经创建SPPS ERG之后,类似于关于流水线部署和配置较早地(例如,在图16和图17的上下文中)描述的那些的编程交互可以用于在SPPS ERG处建立和使用流水线。例如,在所描绘的实施例中可以经由接口2177提交指示作为目标的SPPS ERG的CreateERGBasedAppliance请求2105以创建分组处理器具的实例,并且可以在使用SPPSERG来配置器具之后传送ApplianceCreated响应2107。在一些实施例中,可以提交ExtendApplianceToERG请求2109以将使用提供商网络数据中心内的数据平面资源来创建的分组处理器具的功能性扩展到已经建立了SPPS ERG的提供商网络外部的处所。例如,可以响应于ExtendApplianceToERG请求2109而向外部处所传送表示在提供商网络内建立的预先存在的流水线实例的规则和/或动作的程序。在器具功能性已经被扩展到处所之后,在一些实施例中可以提供ApplianceExtended响应2110。在至少一个实施例中,还可以经由接口2177提交要在SPPS ERG处建立附件、在SPPS ERG处激活器具等的请求。
可以在至少一些实施例中提交Modify-SPPS-ERG请求2113以改变SPPS ERG的一个或多个属性,例如,以增加要在SPPS ERG处处理的最大业务量。在应用所请求的改变(例如,通过在SPPS ERG处配置附加FFPN等)之后,可以向客户端2130传送SPPS-ERGModified响应2115。定制或SPPS管理的异常路径(与较早地例如在图15-图18的上下文中讨论的异常路径类似)可以使用外部处所处的资源来建立,例如,响应于ConfigureSPPS-ERG-ExceptionPath请求2116,并且当已经在外部处所处建立了异常路径时,SPPS可以传送ExceptionPathConfigured响应2118。
在至少一些实施例中,SPPS可以与使用提供商网络中的数据平面资源执行的SPPS操作的度量分开地收集与各种SPPS ERG相关联的度量(例如,处理的分组的总数、处理的分组的速率等)。为了获得此类度量,可以由客户端提交GetSPPS-ERG-Metrics请求2124,指示要为其提供度量的特定ERG或处所。在此类实施例中,可以经由SPPS-ERG-MetricSet消息2126提供所请求的度量。在至少一些实施例中,除图21所示的编程交互外还可以支持与SPPS扩展有关的其它类型的编程交互。
用于实施无服务器分组处理服务的方法
图22是图示了根据至少一些实施例的可以被执行来实施与隔离虚拟网络配置集成的分组处理流水线的操作的各方面的流程图。如元素2201中示出的,可以为在功能性方面与图1的无服务器分组处理服务(SPPS)120类似的SPPS的控制平面和数据平面操作配置资源的池。例如,数据平面可以包括处理各种流的大多数分组的快速路径分组处理节点(FPPN)的池,以及可以在要针对流的剩余分组执行的操作的表示被传送以便在FPPN处缓存之前处理一个或多个流的分组的子集的慢速路径分组处理节点(SPPN)的池。在各种实施例中,FPPN可以被配置为高效地执行与较早地讨论的种类的分组处理流水线的一个或多个级(每个级具有一个或多个规则和/或动作)相对应的程序。给定级的逻辑的至少一部分可以在一些实施例中使用eBPF程序或函数或能够在相对受限环境中运行的其它类似的程序(例如,其中程序在最大指令数、能够被使用的存储器等方面受限制)来实施。
可以经由编程接口例如在SPPS的控制平面资源处从联网应用供应商或设计者接收要为诸如隔离虚拟网络(IVN)的资源组的业务建立流水线实例(其也可以被称为分组处理器具的实例)的请求(元素2204)。可以为流水线实例标识一系列数据平面资源,包括先前建立的池的FPPN的集合(元素2207)。在至少一些实施例中,可以基于资源组的配置信息如资源组的计算实例、虚拟化主机或其它业务源的数目来确定FFPN的数目。在一个实施例中,可以基于与流水线实例的业务源和/或目的地的物理接近度来选择要用于流水线实例的特定FPPN。
在各种实施例中,流水线级的表示(例如,包括能够在FPPN处使用eBPF引擎和相关查找表来运行的可执行程序)可以被部署/传送到所选择的FPPN(元素2210)。另外,可以例如使用一个或多个联网配置操作如用于建立虚拟网络接口(VNI)的操作来建立流水线实例或器具实例的一个或多个入口点和/或出口点(元素2213)。在一些实施例中,可以响应于较早地讨论的种类的一个或多个附接请求而建立入口点和/或出口点。在一个实施例中,还可以在业务被引导到实例之前提交要激活流水线的实例的编程请求。
网络分组可以在入口点处从流水线实例的业务源之一被接收并且引导到特定FPPN(元素2213),例如,在一些实施例中使用混洗分片算法。可以在所描绘的实施例中相对于所接收到的分组执行一个或多个资源组配置相关的分组处理操作,例如与该组的一个或多个安全设置相对应的操作(元素2216)。在一些实施例中,可以为这种资源组配置相关的分组处理执行单独的流水线,然而在其它实施例中,可以实施包括此类操作以及应用供应商指定的操作的单个集成流水线。可以对所接收到的分组应用一个或多个流水线级的一个或多个规则(元素2222)。至少部分地基于规则的结果和/或部分地基于资源组的路由相关的配置设置,可以相对于所接收到的分组实施路由动作。例如,在所描绘的实施例中,可以将与所接收到的分组相对应的一个或多个分组(例如,所接收到的分组的重写版本)发送到一个或多个目的地或目标,或者可以简单地丢弃分组而不传送任何对应的分组(元素2225)。也可以对于后续分组执行向前与元素2216相对应的操作。
图23是图示了根据至少一些实施例的可以被执行来实施分组处理流水线的定制异常路径的操作的各方面的流程图。如元素2301中示出的,可以为在功能性方面与图1的无服务器分组处理服务(SPPS)120类似的SPPS的控制平面和数据平面操作配置资源的池,包括快速路径分组处理节点(FPPN)的池。在各种实施例中,FPPN可以被配置为高效地执行与较早地讨论的种类的分组处理流水线的一个或多个级(每个级具有一个或多个规则和/或动作)相对应的程序。给定级的逻辑的至少一部分可以在一些实施例中使用eBPF程序或函数或能够在相对受限环境中运行的其它类似的程序(例如,其中程序在最大指令数、能够被使用的存储器等方面受限制)来实施。因此,虽然FPPN对许多类的分组处理操作来说可以是极其高效的,但是在至少一些实施例中,它们可能不适于更复杂或更加资源密集的分组处理任务。
可以在SPPS处经由一个或多个编程接口接收要为诸如IVN的资源组的业务建立流水线实例的请求(元素2304)。在至少一些实施例中,虽然请求可以为流水线级提供规则和/或动作(例如,以eBPF程序代码的形式),但是请求可以不指定要用于在流水线的一个或多个级处进行快速路径分组处理的资源;也就是说,SPPS可以负责为各级指配FPPN。另外,在所描绘的实施例中还可以经由编程接口接收不满足流水线的快速路径处理准则的分组将被引导到的定制异常路径(CEP)处理目标(例如,一个或多个计算装置)的指示。在各种实施例中CEP目标可以负责对接收到的分组执行一个或多个操作,包括例如不能在FPPN处执行的操作或流水线设计者已经决定不应该在FPPN处执行的操作。关于能够被执行的操作的种类CEP目标可以具有比FPPN更少的限制—例如,可以使用比在FPPN处可用的更强大的计算资源来运行更长且更复杂的程序,可以支持更多的编程语言,更多的存储器可以是可用的,依此类推。实际上,在一些实施例中CEP目标可以被配置为执行其相对于特定资源的使用率超过FPPN的资源使用率极限的分组处理操作。在至少一些实施例中CEP目标可以具有访问一个或多个安全工件(诸如密码密钥)的权限,这些安全工件可以被用于一些类型的分组处理任务,包括例如终止安全通信会话等,并且此类安全工件不可以从FPPN本身访问。在至少一个实施例中,在CEP目标处对接收到的分组执行的操作可以包括检查所接收到的分组的主体部分的内容(作为检查分组的报头部分的补充或替代),然而在FPPN处执行的操作可以仅访问接收到的消息的报头而不能甚至读取主体部分。在一个实施例中,CEP目标可以执行分组的加密/解密,然而由于所涉及的计算的复杂性,和/或因为没有为FPPN提供加密或解密操作所需的必需密码工件,所以FPPN可能不能够执行此类密码操作。
在至少一个实施例中,许多不同的IVN可以参与分组处理应用:例如,一个或多个IVN可以包括作为要处理的业务的源/目的地的计算实例,另一IVN可以被用于包括FPPN的SPPS数据平面节点并且又一个IVN可以被用于CEP目标。在一些实施例中,CEP目标可以位于除用于SPPS数据平面或控制平面的数据中心以外的处所处—例如,应用供应商的数据中心可以用于收容CEP目标。在至少一个实施例中,可以向SPPS指示CEP目标的池,可以例如基于客户端指定的准则或随机地在FPPN处从所述池中选择特定CEP目标。在各种实施例中,可以在配置CEP目标的请求中为CEP目标提供网络地址(例如,IP地址)。还可以在SPPS处使用编程接口来(例如,从虚拟化计算服务的控制平面)获得资源组的配置设置,包括用于入站和出站业务的安全规则、路由规则等。
响应于对流水线实例的请求,在所描绘的实施例中可以标识和指配一系列FPPN以执行与资源组相关联的业务的分组处理资源(元素2307)。可以使用与上面讨论的技术类似的技术来确定FPPN的数目,并且在各种实施例中从预先配置的池中选择特定FPPN—例如,数目可以基于业务源和/或目的地的计数,并且可以基于与源和/或目的地的物理接近度来选择特定SPPN。还可以将其它数据平面资源(例如,较慢路径的分组处理节点)指配给流水线实例,并且在所描绘的实施例中可以建立/验证CEP目标与SPPS数据平面之间的连接性。
当在流水线实例的FPPN处接收到来自业务源之一的分组(元素2310)时,在至少一些实施例中可以首先执行一个或多个资源组配置相关的分组处理操作,例如,以确保分组遵守资源组的安全设置等(元素2313)。如果分组不满足资源组的配置相关的要求,则在至少一些实施例中可以丢弃分组。在一些实施例中与元素2310相对应的配置相关的操作可以是在与元素2304相对应的操作中获得编程请求的同一分组处理流水线的一部分。
在所描绘的实施例中可以做出关于分组是否满足用于快速路径分组处理的一个或多个准则的确定(元素2316)。例如,如果FPPN的高速缓存包含指示能够在FPPN本身处执行一个或多个操作以处理分组的条目,则这可以指示在一些实施例中满足快速路径处理准则。在一些实施例中,情况可以是高速缓存不包括条目,但是可以在不需要CEP目标的参与的情况下从另一SPPS数据平面节点如较早地讨论的种类的较慢路径分组处理节点获得条目。如果满足快速路径准则,则无论是作为FPPN处的高速缓存命中的结果还是作为从SPPS数据平面内满足的高速缓存未命中的结果,在所描绘的实施例中可以在FPPN层处执行分组处理操作(元素2319)。至少部分地取决于分组处理操作的结果,可以标识和执行要结束所接收到的分组的处理的最终路由相关的动作。例如,在一些情况下可以朝向目的地发送一个或多个分组,然而在其它情况下,可以简单地丢弃所接收到的分组,而不朝向目的地发送任何对应的分组。
然而,如果不满足快速路径的准则(如同样在与元素2316相对应的操作中确定的那样),则可以从SPPS数据平面节点(例如,从FPPN或从较慢路径分组处理节点)向CEP目标传送分组,如元素2322中指示的。在各种实施例中,可以在CEP目标处相对于所接收到的分组执行一个或多个分组处理操作。任选地,在一些实施例中,在CEP目标已经处理了从SPPS数据平面发送的分组之后,可以从CEP目标向SPPS数据平面发送能够对于分组所属于的流的后续分组执行的分组处理操作的表示(元素2325)。如果在SPPS数据平面上获得这样的表示,则它可以被存储在一个或多个FPPN高速缓存中并且稍后用于流的其它分组。在各种实施例中,可以对于在指配给流水线实例的FPPN处接收到的其它分组重复向前与元素2310相对应的操作。
在一些实施例中,如较早地例如在图15、图17和图18的上下文中指示的,至少一些异常路径资源可以由SPPS管理—例如,SPPS控制平面可以基于对一个或多个度量(例如,指示用于流水线的业务源的数目,或在现有的异常路径资源处在一定时间间隔期间处理的分组的数目)的分析自动地实例化用于异常路径的附加资源。相比之下,在至少一些实施例中,CEP资源可以由代表其建立所对应的流水线实例的客户端管理—例如,客户端可以负责分析度量、视需要而定按比例扩大(或减少)CEP资源等。
图24是图示了根据至少一些实施例的可以被执行来在提供商网络的数据中心外部实施分组处理服务的扩展的操作的各方面的流程图。如元素2410中示出的,可以代表提供商网络客户端配置资源组,诸如与较早地讨论的IVN类似的隔离虚拟网络(IVN)。资源组的元数据,包括至少一些网络安全相关的设置,可以被存储在提供商网络的数据中心内的控制平面储存库中。在至少一些实施例中,可以使用虚拟化计算服务(VCS)的资源来建立资源组,其中元数据被存储在提供商网络内的VCS控制平面服务器处。在至少一个实施例中,可以(例如,使用与图19所示的ERG 1935类似的VCS数据平面扩展资源组)将VCS的数据平面扩展到提供商网络的数据中心外部的一个或多个处所。使用此类远程资源,在至少一些实施例中还可以将代表客户端建立的IVN扩展到这些处所,其中代表客户端在远程处所处配置许多计算实例。在其它实施例中,可以不一定建立此类VCS数据平面扩展资源组。
如元素2404中示出的,可以在提供商网络外部的处所(诸如客户端的数据中心或共址设施)处代表客户端配置在功能性方面与SPPS 102类似的无服务器分组处理服务(SPPS)的数据平面节点的集合。在外部处所处建立的SPPS数据平面节点可以包括例如与图2所示的数据平面组件类似的一个或多个快速路径分组处理节点(FPPN)、慢路径分组处理节点、状态信息储存库节点等。例如,FPPN可以被配置为高效地应用规则并且执行和与较早地介绍的分组处理流水线类似的分组处理流水线的各个级相对应的动作。在其中已经在提供商网络外部的处所处建立了VCS数据平面扩展资源组的一些实施例中,同一外部处所可以被用于收容SPPS数据平面节点,实际上建立SPPS的与VCS扩展资源组共存的扩展资源组。注意,在各种实施例中与数据平面节点相关联的控制平面或管理操作可以继续从提供商网络数据中心发起并在提供商网络数据中心处编排—例如,在此类实施例中可以经由安全通信信道从提供商网络内的SPPS控制平面资源向外部处所传送配置相关的命令。
可以例如在SPPS控制平面处经由编程接口获得要相对于与资源组相关联的业务实施的特定分组处理流水线的指示(元素2407)。在至少一些实施例中,可以经由编程接口定义流水线的一个或多个级的规则和/或动作(例如为了高效分组处理使用eBPF或类似框架来表达)。
可以将流水线的至少一部分的表示从提供商网络数据中心传送到外部处所处的SPPS数据平面节点(元素2410)。在至少一些实施例中,可以建立与流水线相对应的器具的实例,并且可以为该实例配置FPPN的集合(例如,其中FPPN的数目是基于业务源和/或目的地的数目而选择的)。例如,响应于与较早地讨论的附接相关请求类似的附加编程请求,也可以在外部处所处建立用于流水线的一个或多个入口点和/或出口点。在至少一个实施例中,给定流水线可以包括提供商网络数据中心内的一些数据平面节点和外部处所处的一些数据平面节点。可以激活器具或流水线的实例,例如,可以在各种实施例中在SPPS控制平面和/或VCS控制平面的发起时做出使业务被引导到流水线的入口点的联网配置变化。
可以在外部处所处的特定数据平面节点处获得、接收或检测网络分组(元素2413)。取决于使用流水线实施的应用的性质,分组可以源自于提供商网络处的业务源或外部处所处的本地业务源。在所描绘的实施例中可以相对于所获得的分组执行至少两种类型的操作(元素2416):(a)资源组的配置设置所需要的安全检查和/或其它操作,以及(b)对应于与资源组的配置无关的流水线级的操作。
至少部分地基于这种分组处理的结果,可以执行要执行以完成对所获得的分组的处理的一个或多个路由相关的动作。例如,在所描绘的实施例中,可以在朝向目的地的路径上传送与经处理的分组相对应的一个或多个分组(例如,经处理的分组的重写版本),或者可以丢弃分组(元素2419)。取决于正在实施的特定应用,目的地可以例如在提供商网络数据中心内、在SPPS数据平面节点所位于的外部处所处,或者在一些其它外部处所处。如果并且当资源组配置改变或者流水线被修改时,可以从提供商网络数据中心向外部处所处的数据平面节点传送对应的更新(元素2422)。类似地,随着且当检测到诸如流水线的业务源/目的地的计数的度量的变化时,在至少一些实施例中可以在外部场所处按比例扩大或减少数据平面节点。
应注意,在各个实施例中,除图22、图23和图24的流程图中图示的操作以外的至少一些操作可以用于实施上述分组处理技术。所示的一些操作可能在一些实施例中不实施,或者可以以不同的顺序实施,或者并行实施而不是顺序实施。
使用案例
上述用于实施可扩展且可定制的无服务器分组处理服务(SPPS)的技术在各种场景中可以是极其有益的。随着越来越多的分布式应用迁移到提供商网络环境,尤其是其中为不同的客户端建立隔离虚拟网络(IVN)的环境,对还考虑IVN配置要求的分组处理操作的高效和容错管理的需要也在增加。通过消除对分组处理操作的供应商以及用户做出要分配分组处理节点的请求的需要,SPPS可以大体上简化客户端管理工作负载。快速路径处理节点和其它较慢路径处理节点的层之间的功能的简洁分离可以使得能够在每个层处推出改进的功能性或附加节点,而不影响在另一层处完成的工作。对定制异常路径处理的支持可以允许应用供应商设计并部署不局限于单独利用提供商网络资源的复杂应用。SPPS数据平面到提供商网络数据中心外部的处所的扩展,同时保留数据中心内的大部分SPPS控制平面功能性,可以为分组处理提供安全和低时延的理想组合。例如,给定应用的一些部分可以使用客户端的数据中心处的SPPS客户端的专有资源来运行,并且在专有资源处生成的分组可以在被转发到他们预定的目的地之前使用在客户端的数据中心处配置的SPPS节点来以非常低的时延处理。可以使用所描述的技术来实施各式各样客户端选择的分组处理流水线,包括例如虚拟路由应用、入侵检测操作等。例如,通过随着业务源的数目增加快速地添加分组处理资源,可以改进利用分组处理操作的应用的总体响应性。
说明性计算机系统
在至少一些实施例中,实施本文描述的一种或多种技术的一部分或全部的服务器,包括分组处理服务、虚拟化计算服务等的各种组件,可以包括通用计算机系统,所述通用计算机系统包括或被配置为访问一个或多个计算机可访问介质。图25图示了这样的通用计算装置9000。在所图示的实施例中,计算装置9000包括经由输入/输出(I/O)接口9030耦合到系统存储器9020(其可以包括非易失性存储器模块和易失性存储器模块两者)的一个或多个处理器9010。计算装置9000还包括耦合到I/O接口9030的网络接口9040。在至少一些实施例中,计算装置9000可以包括此类组件中的一些或全部可以附连到的主板。
在各个实施例中,计算装置9000可以是包括一个处理器9010的单处理器系统,或包括若干处理器9010(例如,两个、四个、八个或另一合适的数目)的多处理器系统。处理器9010可以是能够执行指令的任何合适的处理器。例如,在各个实施例中,处理器9010可以是实施各种指令集架构(ISA)中的任何一种的通用或嵌入式处理器,如x86、PowerPC、SPARC或MIPS ISA、或任何其它合适的ISA。在多处理器系统中,处理器9010中的每一个处理器可以共同但不是必须地实施相同的ISA。在一些实施中,可以使用图形处理单元(GPU)来代替常规的处理器或作为常规处理器的补充。
系统存储器9020可以被配置成存储可由处理器9010访问的指令和数据。在至少一些实施例中,系统存储器9020可以包括易失性部分和非易失性部分两者;在其它实施例中,可以仅使用易失性存储器。在各个实施例中,系统存储器9020的易失性部分可以使用任何合适的存储器技术来实施,例如,静态随机存取存储器(SRAM)、同步动态RAM或任何其它类型的存储器。对于系统存储器的非易失性部分(例如,其可以包括一个或多个NVDIMM),在一些实施例中,可以使用基于闪速的存储器装置,包含与非(NAND)闪速装置。在至少一些实施例中,系统存储器的非易失性部分可以包含电源,如超级电容器或其它电力存储装置(例如,电池)。在各个实施例中,基于忆阻器的电阻随机存取存储器(ReRAM)、三维NAND技术、铁电RAM、磁阻RAM(MRAM)或任何各种类型的相变存储器(PCM)可以至少用于系统存储器的非易失性部分。在所图示的实施例中,实施如上述那些方法、技术和数据等一个或多个所期望功能的程序指令和数据被示为存储在系统存储器9020中作为代码9025和数据9026。
在一个实施例中,I/O接口9030可以被配置成协调处理器9010、系统存储器9020与装置中的任何外围装置之间的I/O业务量,包含网络接口9040或如各种类型的持久和/或易失性存储装置的其它外围接口。在一些实施例中,I/O接口9030可以执行任何必要的协议、定时或其它数据变换,以将来自一个组件(例如,系统存储器9020)的数据信号转换为适合于由另一个组件(例如,处理器9010)使用的格式。在一些实施例中,例如,I/O接口9030可以包含对通过各种类型的外围总线(如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变体)而附接的装置的支持。在一些实施例中,例如,I/O接口9030的功能可以拆分成两个或更多个独立组件,如北桥和南桥。而且,在一些实施例中,如用于系统存储器9020的接口等I/O接口9030的一些或所有功能可以直接地合并到处理器9010中。
网络接口9040可以被配置为允许数据在计算装置9000和附接到一个或多个网络9050的其它装置9060之间交换,诸如图1至图24中所图示的其它计算机系统或装置。例如,在各个实施例中,网络接口9040可以支持经由任何适合的有线或无线一般数据网络进行通信,如以太网类型。另外地,网络接口9040可以支持经由如模拟语音网络或数字光纤通信网络等电信/电话网络、经由如光纤信道SAN等存储区域网络、或经由任何其它适合类型的网络和/或协议的通信。
在一些实施例中,系统存储器9020可以是计算机可访问介质的一个实施例,所述计算机可访问介质被配置成存储如上文针对图1到图24所描述的程序指令和数据,以用于实施对应方法和设备的实施例。然而,在其它实施例中,程序指令和/或数据可以是在不同类型的计算机可访问介质上接收、发送或存储。一般而言,计算机可访问介质可以包含非暂时性存储介质或如磁性或光学介质等存储介质,例如经由I/O接口9030耦合到计算装置9000的磁盘或DVD/CD。非暂时性计算机可访问存储介质还可以包含任何易失性或非易失性介质,如RAM(例如SDRAM、DDR SDRAM、RDRAM、SRAM等)、ROM等,其可以包含在计算装置9000的一些实施例中作为系统存储器9020或另一种类型的存储器。在一些实施例中,多个非暂时性计算机可读存储介质可以共同存储程序指令,当所述程序指令在一个或多个处理器上或者跨一个或多个处理器执行时实施上文所描述的方法和技术的至少一个子集。计算机可访问介质可以包含传输介质或如电信号、电磁信号或数字信号等信号,经由如网络和/或无线链路等通信介质传送,如可以经由网络接口9040实施。可以使用如图25所图示的计算装置等多个计算装置中的部分或全部计算装置来实施各个实施例中的所描述功能;例如,在各种不同的装置和服务器上运行的软件组件可以协作以提供功能。在一些实施例中,除了使用通用计算机系统实施之外或代替使用通用计算机系统实施,可以使用存储装置、网络装置或专用计算机系统来实施所描述的功能的部分。如本文所使用的术语“计算装置”是指至少所有这些类型的装置,并且不限于这些类型的装置。
能够鉴于以下条款描述本公开的实施例:
1.一种系统,包括:
一个或多个计算装置;
其中所述一个或多个计算装置包括指令,所述指令在一个或多个处理器上或跨一个或多个处理器执行时使所述一个或多个处理器:
经由一个或多个编程接口获得要为虚拟化计算服务的隔离虚拟网络的网络业务建立分组处理流水线的请求,其中所述分组处理流水线包括多个级,其中所述请求不指定要用于实施所述流水线的至少一部分的资源,并且其中对应于所述多个级中的一级,所述请求指示至少规则;
至少部分地基于所述隔离虚拟网络内的业务源的数目,标识用于所述网络业务的多个快速路径分组处理节点;
将所述分组处理流水线的一个或多个级的表示部署到所述多个快速路径分组处理节点中的各个快速路径分组处理节点;
响应于编程请求,建立所述分组处理流水线的业务入口点;以及
响应于在所述业务入口点处接收到特定分组,
依照所述隔离虚拟网络的安全相关的配置设置发起一个或多个分组处理操作,其中所述一个或多个分组处理操作不是所述分组处理流水线的一部分;
在选择的快速路径分组处理节点处应用所述规则;
相对于所述特定分组实施路由动作,其中所述路由动作至少部分地基于(a)所述规则的应用的结果和(b)所述隔离虚拟网络的路由配置设置。
2.如条款1所述的系统,其中所述路由动作包括以下项中的一个:(a)将与所述特定分组相对应的至少一个分组传送到目的地或(b)丢弃所述特定分组。
3.如条款1至2中任一项所述的系统,其中所述一个或多个计算装置包括另外的指令,所述另外的指令在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
响应于以下项中的一个或多个的配置:(a)所述隔离虚拟网络内的附加的业务源或(b)所述隔离虚拟网络内的附加的业务目的地,自动地配置一个或多个附加的快速路径分组处理节点。
4.如条款1至3中任一项所述的系统,其中所述一个或多个计算装置包括另外的指令,所述另外的指令在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
在获得所述要建立所述第一分组处理流水线的请求之前,在数据中心的多个机架处预先配置一个或多个快速路径分组处理节点的相应组;以及
向所述隔离虚拟网络的资源指配来自所述多个机架中的一机架的特定快速路径分组处理节点,所述特定快速路径分组处理节点满足关于所述资源的接近度准则。
5.如条款1至4中任一项所述的系统,其中所述一个或多个计算装置包括另外的指令,所述另外的指令在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
在所述选择的快速路径分组处理节点的高速缓存处存储包括所述规则的高速缓存条目;以及
至少部分地基于与所述高速缓存条目相关联的超时的期满,从所述选择的快速路径分组处理节点发起关于所述高速缓存条目的重新证实操作。
6.一种方法,包括:
在一个或多个计算装置处执行:
经由一个或多个编程接口获得要为资源组的资源集的网络业务建立分组处理流水线的请求,其中所述流水线包括一个或多个级,其中对应于所述一个或多个级中的至少一个级,所述请求指示至少用于执行一个或多个分组处理操作的程序;
至少部分地基于所述资源集的配置,为所述资源集指配一个或多个快速路径分组处理节点;以及
响应于在所述流水线的入口点处检测到特定分组,
根据所述资源组的配置设置相对于所述特定分组发起一个或多个安全操作;
在所述一个或多个快速路径分组处理节点中的一快速路径分组处理节点处执行所述程序;以及
实施与所述特定分组相关联的路由动作,其中所述路由动作至少部分地基于所述程序的执行的结果。
7.如条款6所述的方法,其中所述一个或多个快速路径分组处理节点包括多个快速路径分组处理节点,其中所述资源组包括虚拟化计算服务的多个计算实例,包括第一计算实例和第二计算实例,所述方法进一步包括在所述一个或多个计算装置处执行:
指配所述多个快速路径分组处理节点的第一子集以相对于源自于所述第一计算实例的分组执行一个或多个分组处理流水线的一个或多个操作;以及
指配所述多个快速路径分组处理节点的第二子集以相对于源自于所述第二计算实例的分组执行一个或多个分组处理流水线的一个或多个操作,其中所述第二子集包括不在所述第一子集中的至少一个节点。
8.如条款6至7中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
响应于经由编程接口接收到的请求,提供所述分组处理流水线的一个或多个入口点的指示。
9.如条款8所述的方法,其中所述一个或多个入口点包括一个或多个虚拟网络接口。
10.如条款6至8中任一项所述的方法,其中所述一个或多个快速路径分组处理节点包括多个快速路径分组处理节点,所述方法进一步包括在所述一个或多个计算装置处执行:
指配所述多个快速路径分组处理节点的第一子集以相对于源自于所述资源组的一个或多个资源的分组执行一个或多个分组处理流水线的一个或多个操作;以及
指配所述多个快速路径分组处理节点的第二子集以相对于引导到所述资源组的一个或多个资源的分组执行一个或多个分组处理流水线的一个或多个操作,其中所述第二子集包括不在所述第一子集中的至少一个快速路径分组处理节点。
11.如条款6至8或10中任一项所述的方法,其中第一快速路径分组处理节点包括以下项中的一个:(a)包括经由外围互连附接的一个或多个硬件卡的服务器,其中所述程序的至少一部分在所述一个或多个硬件卡处被执行,或(b)虚拟化计算服务的计算实例。
12.如条款6至8或10至11中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
配置用于与要对其执行分组处理的一个或多个网络分组流相关联的状态信息的储存库;以及
从所述储存库获得状态信息以实施分组处理流水线的至少一个级。
13.如条款6至8或10至12中任一项所述的方法,其中所述程序包括一个或多个eBPF(扩展伯克利包过滤器)操作。
14.如条款6至8或10至13中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
接收与所述分组处理流水线的特定级相关联的规则的指示;以及
应用所述规则以确定(a)将相对于所述特定分组执行与所述特定级相关联的程序的至少一部分并且(b)将不相对于另一分组执行所述程序的至少一部分。
15.如条款6至8或10至14中任一项所述的方法,其中所述程序实施以下项中的一个或多个的至少一部分:(a)定制路由算法、(b)网络地址转换算法、(c)多播算法、(d)源取代算法、(e)用于从虚拟化计算服务的一个隔离虚拟网络向另一隔离虚拟网络传送分组的算法、(f)用于向或从隔离专用网络安全地转移数据的算法、(g)入侵检测算法、(h)带宽使用率跟踪算法、(i)负载平衡算法、(j)用于在提供商网络数据中心与所述提供商网络外部的处所之间安全地传送数据的算法、(k)数据漏出检测算法或(l)实施应用的商业逻辑的专有算法。
16.一种或多种非暂时性计算机可访问存储介质,所述介质存储程序指令,所述程序指令当在一个或多个处理器上或跨一个或多个处理器执行时使所述一个或多个处理器:
确定要针对资源组的资源集的网络业务执行一个或多个分组处理操作,其中所述资源组具有一个或多个安全设置,其中所述一个或多个分组处理操作中的至少一个操作包括执行经由编程接口指示的程序;
将所述程序传送到一个或多个快速路径分组处理节点中的各个快速路径分组处理节点,其中至少部分地基于所述资源组的元数据将所述一个或多个快速路径分组处理节点指配给所述资源集;以及
响应于在所述一个或多个快速路径分组处理节点处检测到所述特定分组,使得,
根据所述安全设置发起一个或多个安全操作;
在所述一个或多个快速路径分组处理节点中的一快速路径分组处理节点处执行所述程序;以及
至少部分基于所述程序的执行的结果,相对于所述特定分组实施路由操作。
17.如条款16所述的一种或多种非暂时性计算机可访问存储介质,所述介质存储另外的程序指令,所述另外的程序指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
确定所述资源集中的业务源的数目已经改变;以及
至少部分地基于所述改变来修改指配给所述资源集的快速路径分组处理资源的数目。
18.如条款16至17中任一项所述的一种或多种非暂时性计算机可访问存储介质,其中所述一个或多个快速路径分组处理节点包括多个快速路径分组处理节点,其中所述资源组包括虚拟化计算服务的多个计算实例,包括第一计算实例和第二计算实例,并且其中所述一种或多种非暂时性计算机可访问存储介质存储另外的程序指令,所述另外的程序指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
指配所述多个快速路径分组处理节点的第一子集以相对于与所述第一计算实例相关联的分组执行所述一个或多个分组处理操作;以及
指配所述多个快速路径分组处理节点的第二子集以相对于与所述第二计算实例相关联的分组执行所述一个或多个分组处理操作。
19.如条款16至18中任一项所述的一种或多种非暂时性计算机可访问存储介质,所述介质存储另外的程序指令,所述另外的程序指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
建立储存库,在所述储存库处存储与针对一个或多个分组流采用的一个或多个分组处理流水线相关的状态信息;以及
继向特定快速路径处理节点指配另一快速路径分组处理节点的工作负载的至少一部分之后,使得在所述特定快速路径分组处理节点处从所述储存库获得状态信息。
20.如条款16至19中任一项所述的一种或多种非暂时性计算机可访问存储介质,所述介质存储另外的程序指令,所述另外的程序指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
建立快速路径分组处理节点的多个独立地更新的信元,包括第一信元和第二信元,所述第一信元包括所述一个或多个快速路径分组处理节点中的第一快速路径分组处理节点,所述第二信元包括所述一个或多个快速路径分组处理节点中的第二快速路径分组处理节点;
将软件更新传播到所述第一信元的快速路径分组处理节点;以及
在将所述软件更新传播到所述第二信元的快速路径分组处理节点之前,验证所述第一信元在已经在所述第一信元处应用所述软件更新之后满足稳定性准则。
21.一种系统,包括:
一个或多个计算装置;
其中所述一个或多个计算装置包括指令,所述指令在一个或多个处理器上或跨一个或多个处理器执行时使所述一个或多个处理器:
在提供商网络的一个或多个数据中心处存储与代表所述提供商网络的客户端建立的隔离虚拟网络相关联的元数据,其中所述元数据包括用于网络业务的一个或多个安全设置;
在所述提供商网络外部的处所处,代表所述客户端配置分组处理节点集;
获得要针对至少与所述隔离虚拟网络相关联的分组的子集实施的分组处理流水线的指示;
从所述一个或多个数据中心中的一数据中心向所述提供商网络外部的所述处所传送所述分组处理流水线的至少一部分的表示;
响应于在所述提供商网络外部的所述处所处检测到特定分组,
相对于所述特定分组,根据所述一个或多个安全设置执行安全操作;以及
相对于所述特定分组,在所述分组处理节点集处执行所述分组处理流水线的一个或多个分组处理操作。
22.如条款21所述的系统,其中所述一个或多个计算装置包括另外的指令,所述另外的指令在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
检测以下项中的一个或多个的建立:(a)所述处所处的附加的业务源或(b)所述处所处的附加的业务目的地;以及
响应于检测到所述建立而在所述处所处自动地配置一个或多个附加的分组处理节点。
23.如条款21至22中任一项所述的系统,其中所述一个或多个计算装置包括另外的指令,所述另外的指令在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
指配所述分组处理节点集的第一子集以相对于源自于在所述处所处启动的多个计算实例中的第一计算实例的分组执行一个或多个分组处理流水线的一个或多个操作;以及
指配所述分组处理节点集的第二子集以相对于源自于所述多个计算实例中的第二计算实例的分组执行所述一个或多个分组处理流水线的一个或多个操作,其中所述第二子集包括不在所述第一子集中的至少一个节点。
24.如条款21至23中任一项所述的系统,其中所述提供商网络外部的所述处所包括以下项中的一个:(a)所述客户端的数据中心,或(b)包括由除所述提供商网络的运营商以外的一个或多个实体拥有的资源的共址设施。
25.如条款21至24中任一项所述的系统,其中所述分组处理节点集包括以下项中的一个:(a)包括经由外围互连附接的一个或多个硬件卡的服务器,其中所述分组处理流水线的至少一部分在所述一个或多个硬件卡处被执行,或(b)虚拟化计算服务的计算实例。
26.一种方法,包括:
在一个或多个计算装置处执行:
在提供商网络处存储从所述提供商网络的客户端获得的分组处理流水线的表示,其中所述分组处理流水线包括一个或多个级,在所述一个或多个级处执行分组处理操作的相应集合;
在所述提供商网络外部的处所处,代表所述客户端配置一个或多个分组处理节点;
从所述提供商网络向所述处所传送所述分组处理流水线的表示;以及
在所述一个或多个分组处理节点处,使得响应于在所述提供商网络外部的所述处所处检测到特定分组而执行所述分组处理流水线的一个或多个分组处理操作。
27.如条款26所述的方法,其中所述提供商网络外部的所述处所包括以下项中的一个:(a)所述客户端的数据中心,或(b)包括由除所述提供商网络的运营商以外的一个或多个实体拥有的资源的共址设施。
28.如条款26至27中任一项所述的方法,其中所述一个或多个分组处理节点包括多个分组处理节点,所述方法进一步包括:
由所述提供商网络的虚拟化计算服务的控制平面组件,使得在所述提供商网络外部的所述处所处启动多个计算实例,其中所述多个计算实例包括第一计算实例和第二计算实例;
指配所述多个分组处理节点的第一子集以相对于源自于所述第一计算实例的分组执行一个或多个分组处理流水线的一个或多个操作;以及
指配所述多个分组处理节点的第二子集以相对于源自于所述第二计算实例的分组执行一个或多个分组处理流水线的一个或多个操作,其中所述第二子集包括不在所述第一子集中的至少一个节点。
29.如条款26至28中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
响应于经由编程接口接收到的请求,配置所述分组处理流水线的入口点,其中所述特定分组被引导到所述入口点。
30.如条款29所述的方法,其中所述入口点包括一个或多个虚拟网络接口。
31.如条款26至29中任一项所述的方法,其中所述一个或多个分组处理节点中的第一分组处理节点包括以下项中的一个:(a)包括经由外围互连附接的一个或多个硬件卡的服务器,其中所述分组处理流水线的至少一部分在所述一个或多个硬件卡处被执行,或(b)虚拟化计算服务的计算实例。
32.如条款26至29或31中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
配置用于与要对其执行分组处理的一个或多个网络分组流相关联的状态信息的储存库;以及
在所述提供商网络外部的所述处所处的分组处理节点处,从所述储存库获得状态信息以实施分组处理流水线的至少一个级。
33.如条款26至29或31至32中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
接收与所述分组处理流水线相关联的异常路径目标的指示;以及
响应于在所述提供商网络外部的所述处所处的所述一个或多个分组处理节点处确定另一分组不满足所述分组处理流水线的快速路径准则,使得在所述异常路径目标处处理所述另一分组。
34.如条款26至29或31至33中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
检测以下项中的一个或多个的建立:(a)所述处所处的附加的业务源或(b)所述处所处的附加的业务目的地;以及
响应于检测到所述建立而在所述处所处自动地配置一个或多个附加的分组处理节点。
35.如条款26至29或31至34中任一项所述的方法,其中在所述提供商网络外部的所述处所处的分组处理节点处执行的所述一个或多个分组处理操作包括以下项中的一个或多个的至少一部分:(a)定制路由算法、(b)网络地址转换算法、(c)多播算法、(d)源取代算法、(e)用于从虚拟化计算服务的一个隔离虚拟网络向另一隔离虚拟网络传送分组的算法、(f)用于向或从隔离专用网络安全地转移数据的算法、(g)入侵检测算法、(h)带宽使用率跟踪算法、(i)负载平衡算法、(j)用于在提供商网络数据中心与所述提供商网络外部的处所之间安全地传送数据的算法、(k)数据漏出检测算法、(l)安全会话终止协议或(l)实施应用的商业逻辑的专有算法。
36.一种或多种非暂时性计算机可访问存储介质,所述介质存储程序指令,所述程序指令当在一个或多个处理器上或跨一个或多个处理器执行时使所述一个或多个处理器:
在提供商网络处存储从所述提供商网络的客户端获得的一个或多个分组处理操作的表示;
在所述提供商网络外部的处所处,代表所述客户端配置分组处理节点集;
从所述提供商网络向所述处所传送所述一个或多个分组处理操作的表示;以及
在所述分组处理节点集处,使得响应于在所述提供商网络外部的所述处所处接收到特定分组而执行所述一个或多个分组处理操作。
37.如条款36所述的一种或多种非暂时性计算机可访问存储介质,其中所述提供商网络外部的所述处所包括以下项中的一个:(a)所述客户端的数据中心,或(b)包括由除所述提供商网络的运营商以外的一个或多个实体拥有的资源的共址设施。
38.如条款36至37中任一项所述的一种或多种非暂时性计算机可访问存储介质,其中所述一个或多个分组处理节点包括多个分组处理节点,其中所述一种或多种非暂时性计算机可访问存储介质存储另外的程序指令,所述另外的程序指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
指配所述多个分组处理节点的第一子集以相对于源自于在所述提供商网络外部的所述处所处运行的多个计算实例中的第一计算实例的分组执行一个或多个分组处理流水线的一个或多个操作;以及
指配所述多个分组处理节点的第二子集以相对于源自于所述多个计算实例中的第二计算实例的分组执行一个或多个分组处理流水线的一个或多个操作,其中所述第二子集包括不在所述第一子集中的至少一个节点。
39.如条款36所述的一种或多种非暂时性计算机可访问存储介质,其中所述分组处理节点集的第一分组处理节点包括以下项中的一个:(a)包括经由外围互连附接的一个或多个硬件卡的服务器,其中所述一个或多个分组处理操作中的至少一个操作在所述一个或多个硬件卡处被执行,或(b)虚拟化计算服务的计算实例。
40.如条款36所述的一种或多种非暂时性计算机可访问存储介质,其中所述一种或多种非暂时性计算机可访问存储介质存储另外的程序指令,所述另外的程序指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
获得与所述一个或多个分组处理任务相关联的异常路径目标的指示;以及
将所述异常路径目标的指示提供给所述提供商网络外部的所述处所处的所述分组处理节点集,其中所述分组处理节点集包括被配置为向所述异常路径目标传送不满足快速路径准则的分组的至少一个节点。
41.一种系统,包括:
一个或多个计算装置;
其中所述一个或多个计算装置包括指令,所述指令在一个或多个处理器上或跨一个或多个处理器执行时使所述一个或多个处理器:
经由一个或多个编程接口获得(a)对要针对至少与代表网络可访问服务的第一客户端配置的第一隔离虚拟网络相关联的分组的子集实施的分组处理流水线的请求,其中所述请求不指示要用于所述流水线的快速路径分组处理节点,(b)被配置为对不满足用于在所述分组处理流水线处进行快速路径处理的准则的分组执行至少一个操作的异常路径目标的指示,以及(c)所述第一隔离虚拟网络的一个或多个安全要求;
标识用于实施所述分组处理流水线的至少一部分的快速路径分组处理节点的集合;
响应于(a)在所述快速路径分组处理节点的集合处接收到第一分组并且(b)确定所述第一分组满足所述一个或多个安全要求和所述用于快速路径处理的准则,在所述集合的一个或多个节点处执行所述分组处理流水线的一个或多个分组处理操作;以及
响应于(a)在所述集合处接收到第二分组并且(b)确定所述第二分组满足所述一个或多个安全要求并且不满足所述用于快速路径处理的准则,
从所述集合的特定快速路径分组处理节点向所述异常路径目标传送所述第二分组。
42.如条款41所述的系统,其中所述第一隔离虚拟网络被配置在一个或多个数据中心处,其中所述快速路径处理节点的集合被配置在第二隔离虚拟网络内,并且其中所述异常路径目标包括以下项中的一个或多个:(a)第三隔离虚拟网络中的计算装置,或(b)位于所述一个或多个数据中心外部的处所处的计算装置。
43.如条款41至42中任一项所述的系统,其中所述第二分组属于特定分组流,并且其中所述一个或多个计算装置包括另外的指令,所述另外的指令在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
继所述第二分组的传输之后在特定快速路径分组处理节点处获得要针对所述特定分组流的后续分组执行的一个或多个附加的分组处理操作的指示;
在所述特定快速路径分组处理节点处缓存所述一个或多个附加的分组处理操作的可执行版本;以及
使用所述可执行版本来在所述特定快速路径分组处理节点处对所述特定分组流的一个或多个后续分组执行所述一个或多个附加的分组处理操作。
44.如条款41至43中任一项所述的系统,其中所述集合的快速路径分组处理节点具有资源使用率极限,并且其中所述异常路径目标被配置为执行资源使用率超过所述资源使用率极限的分组处理操作。
45.如条款41至44中任一项所述的系统,其中所述异常路径目标被配置为执行以下项中的一个或多个:(a)对分组的解密操作或(b)对所述分组的加密操作。
46.一种方法,包括:
在一个或多个计算装置处执行:
获得(a)分组处理流水线的异常路径目标的指示,其中所述分组处理流水线将针对至少与资源组相关联的分组的子集被实施,以及(b)所述资源组的一个或多个配置设置;
响应于(a)在为所述分组处理流水线配置的快速路径分组处理节点的集合处接收到第一分组并且(b)确定所述第一分组满足所述配置设置的一个或多个要求和用于快速路径处理的准则,在所述集合的一个或多个节点处执行所述分组处理流水线的一个或多个分组处理操作;以及
响应于(a)在所述快速路径分组处理节点的集合处接收到第二分组并且(b)确定所述第二分组不满足所述用于快速路径处理的准则,将所述第二分组传送到所述异常路径目标。
47.如条款46所述的方法,其中,所述第二分组属于特定分组流,所述方法进一步包括在所述一个或多个计算装置处执行:
继所述传送所述第二分组之后,在所述特定快速路径分组处理节点处从所述异常路径目标获得要针对所述特定分组流的后续分组执行的一个或多个附加的分组处理操作的指示;
在所述特定快速路径分组处理节点处缓存所述一个或多个附加的分组处理操作的可执行版本;以及
使用所述可执行版本来在所述特定快速路径分组处理节点处对所述特定分组流的一个或多个后续分组执行所述一个或多个附加的分组处理操作。
48.如条款46至47中任一项所述的方法,其中所述集合的分组处理节点具有资源使用率极限,并且其中所述异常路径目标被配置为执行资源使用率超过所述资源使用率极限的分组处理操作。
49.如条款48所述的方法,其中所述资源使用率极限包括以下项中的一个或多个:(a)存储器极限、(b)计算资源极限、或(c)程序指令计数极限。
50.如条款46至48中任一项所述的方法,进一步包括由所述一个或多个计算装置执行:
通过所述异常路径目标访问安全工件以执行与所述第二分组相关联的一个或多个操作,其中所述安全工件在所述一个或多个快速路径分组处理节点处不可访问。
51.如条款46至48或50中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
在所述异常路径目标处检查所述第二分组的主体的内容,其中在所述一个或多个快速路径分组处理节点处执行的分组处理操作(a)包括读取网络分组的一个或多个报头的内容并且(b)不包括读取网络分组的主体的内容。
52.如条款46至48或50至51中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
由分组处理服务的控制平面组件基于对一个或多个度量的分析,自动地实例化附加的异常路径目标资源。
53.如条款46至48或50至52中任一项所述的方法,其中确定所述第二分组不满足所述用于快速路径处理的准则包括确定存储在所述一个或多个快速路径分组处理节点处的高速缓存不满足包括指示要被实施以执行分组处理操作的可执行程序的条目。
54.如条款46至48或50至53中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
经由编程接口获得表示在快速路径处理节点处相对于所述第一分组执行的所述一个或多个分组处理操作中的分组处理操作的程序代码。
55.如条款46至48或50至54中任一项所述的方法,进一步包括在所述一个或多个计算装置处执行:
在所述异常路径目标处,使得执行以下项中的一个或多个的至少一部分:(a)定制路由算法、(b)网络地址转换算法、(c)多播算法、(d)源取代算法、(e)用于从虚拟化计算服务的一个隔离虚拟网络向另一隔离虚拟网络传送分组的算法、(f)用于向或从隔离专用网络安全地转移数据的算法、(g)入侵检测算法、(h)带宽使用率跟踪算法、(i)负载平衡算法、(j)用于在提供商网络数据中心与所述提供商网络外部的处所之间安全地传送数据的算法、(k)数据漏出检测算法、(l)安全会话终止协议或(l)实施应用的商业逻辑的专有算法。
56.一种或多种非暂时性计算机可访问存储介质,所述介质存储程序指令,所述程序指令当在一个或多个处理器上或跨一个或多个处理器执行时使所述一个或多个处理器:
获得(a)要针对至少与资源组相关联的分组的子集实施的一个或多个分组处理操作的指示和(b)所述资源组的一个或多个配置设置;
响应于(a)在为所述资源组配置的快速路径分组处理节点的集合处接收到第一分组并且(b)确定所述第一分组满足所述一个或多个配置设置中指示的一个或多个要求而且(c)确定所述第一分组满足用于快速路径处理的准则,在所述集合的一个或多个节点处执行所述一个或多个分组处理操作;以及
响应于(a)在所述快速路径分组处理节点的集合处接收到第二分组并且(b)确定所述第二分组不满足所述用于快速路径处理的准则,将所述第二分组传送到异常路径目标。
57.如条款56所述的一种或多种非暂时性计算机可访问存储介质,所述介质存储另外的程序指令,所述另外的程序指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
继传送所述第二分组之后,在所述特定快速路径分组处理节点处从所述异常路径目标获得要针对所述第二分组所属于的特定分组流的后续分组执行的一个或多个附加的分组处理操作的指示;
在所述特定快速路径分组处理节点处缓存所述一个或多个附加的分组处理操作的可执行版本;以及
使用所述可执行版本来在所述特定快速路径分组处理节点处对所述特定分组流的一个或多个后续分组执行所述一个或多个附加的分组处理操作。
58.如条款56至57中任一项所述的一种或多种非暂时性计算机可访问存储介质,其中所述集合的快速路径分组处理节点具有资源使用率极限,并且其中所述异常路径目标被配置为执行资源使用率超过所述资源使用率极限的分组处理操作。
59.如条款56至58中任一项所述的一种或多种非暂时性计算机可访问存储介质,其中所述异常路径目标被配置为访问用于与所述第二分组相关联的处理的安全工件,其中所述安全工件在所述一个或多个快速路径分组处理节点处不可访问。
60.如条款56至59中任一项所述的一种或多种非暂时性计算机可访问存储介质,所述介质存储另外的程序指令,所述另外的程序指令当在所述一个或多个处理器上或跨所述一个或多个处理器执行时进一步使所述一个或多个处理器:
在所述异常路径目标处检查所述第二分组的主体的内容,其中在所述一个或多个快速路径分组处理节点处执行的分组处理操作(a)包括读取网络分组的一个或多个报头的内容并且(b)不包括读取网络分组的主体的内容。
结论
各个实施例可还包含在计算机可访问介质上接收、发送或存储根据前述描述而实施的指令和/或数据。一般而言,计算机可访问介质可以包含存储介质或存储器介质(如磁性介质或光学介质,例如,磁盘或DVD/CD-ROM)、易失性或非易失性介质(如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等)以及传输介质或信号(如通过通信介质(如网络和/或无线链路)而输送的电信号、电磁信号或数字信号)。
如图所图示和本文所描述的各种方法表示方法的示例性实施例。所述方法可以以软件、硬件或其组合的方式实施。可以改变方法的顺序,并且可以添加、重新排序、组合、省略、修改等各种元素。
对于受益于本公开的本领域的技术人员来说显而易见的是,可进行各种修改和改变。旨在包含所有这些修改和变化,并且因此,以上描述被认为是说明性的而不是限制性的。

Claims (15)

1.一种计算机实现的方法,包括:
获得要检测去往或来自云环境的第一组计算实例的数据的未授权传输的指示;
分配分组处理资源的第一集合来检测去往或来自第一组计算实例的数据的未授权传输;以及
响应于检测到计算实例已被添加到第一组计算实例而自动增加所述第一集合中的分组处理资源的数目。
2.根据权利要求1所述的计算机实现的方法,还包括:
获得要对第二组计算实例和第一目的地集合之间的网络流量进行负载平衡的指示;以及
分配分组处理资源的第二集合来执行第二组计算实例和第一目的地集合之间的网络流量上的负载平衡。
3.根据权利要求1至2中任一项所述的计算机实现的方法,其中所述第一组计算实例被配置在所述云环境的隔离网络内。
4.根据权利要求1至2中任一项所述的计算机实现的方法,其中所述指示是经由所述云环境的网络可访问服务的一个或多个编程接口获得的。
5.根据权利要求1至2中任一项所述的计算机实现的方法,其中分组处理资源的所述集合包括在所述云环境的虚拟化主机处运行的分组处理节点。
6.根据权利要求5所述的计算机实现的方法,其中所述分组处理节点在所述虚拟化主机处的虚拟机内运行。
7.根据权利要求5所述的计算机实现的方法,其中所述分组处理节点在所述虚拟化主机处的管理程序内运行。
8.一种系统,包括:
一个或多个计算设备;
其中所述一个或多个计算设备包括指令,所述指令当在所述一个或多个计算设备上或跨所述一个或多个计算设备执行时使得所述一个或多个计算设备:
获得要检测去往或来自云环境的第一组计算实例的数据的未授权传输的指示;
分配分组处理资源的第一集合来检测去往或来自第一组计算实例的数据的未授权传输;以及
响应于检测到计算实例已被添加到第一组计算实例而自动增加所述第一集合中的分组处理资源的数目。
9.根据权利要求8所述的系统,其中所述一个或多个计算设备还包括指令,所述指令当在所述一个或多个计算设备上或跨所述一个或多个计算设备执行时使得所述一个或多个计算设备:
获得要对第二组计算实例和第一目的地集合之间的网络流量进行负载平衡的指示;以及
分配分组处理资源的第二集合来执行第二组计算实例和第一目的地集合之间的网络流量上的负载平衡。
10.根据权利要求8至9中任一项所述的系统,其中所述第一组计算实例被配置在所述云环境的隔离网络内。
11.根据权利要求8至9中任一项所述的系统,其中所述指示是经由所述云环境的网络可访问服务的一个或多个编程接口获得的。
12.根据权利要求8至9中任一项所述的系统,其中分组处理资源的所述集合包括在所述云环境的虚拟化主机处运行的分组处理节点。
13.根据权利要求12所述的系统,其中所述分组处理节点在所述虚拟化主机处的虚拟机内运行。
14.根据权利要求12所述的系统,其中所述分组处理节点在所述虚拟化主机处的管理程序内运行。
15.一种或多种计算机可读存储介质,包括指令,所述指令当在一个或多个计算设备上或跨一个或多个计算设备执行时使得所述一个或多个计算设备执行根据权利要求1至2中任一项所述的计算机实现的方法。
CN202310376088.6A 2019-06-24 2020-06-17 具有隔离虚拟网络集成的无服务器分组处理服务 Pending CN116366350A (zh)

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US16/450,690 2019-06-24
US16/450,720 US11296981B2 (en) 2019-06-24 2019-06-24 Serverless packet processing service with configurable exception paths
US16/450,720 2019-06-24
US16/450,690 US11088944B2 (en) 2019-06-24 2019-06-24 Serverless packet processing service with isolated virtual network integration
US16/450,700 2019-06-24
US16/450,700 US10848418B1 (en) 2019-06-24 2019-06-24 Packet processing service extensions at remote premises
CN202080045348.6A CN114008979B (zh) 2019-06-24 2020-06-17 具有隔离虚拟网络集成的无服务器分组处理服务
PCT/US2020/038052 WO2020263640A1 (en) 2019-06-24 2020-06-17 Serverless packet processing service with isolated virtual network integration

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202080045348.6A Division CN114008979B (zh) 2019-06-24 2020-06-17 具有隔离虚拟网络集成的无服务器分组处理服务

Publications (1)

Publication Number Publication Date
CN116366350A true CN116366350A (zh) 2023-06-30

Family

ID=71950830

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202080045348.6A Active CN114008979B (zh) 2019-06-24 2020-06-17 具有隔离虚拟网络集成的无服务器分组处理服务
CN202310376088.6A Pending CN116366350A (zh) 2019-06-24 2020-06-17 具有隔离虚拟网络集成的无服务器分组处理服务

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202080045348.6A Active CN114008979B (zh) 2019-06-24 2020-06-17 具有隔离虚拟网络集成的无服务器分组处理服务

Country Status (3)

Country Link
EP (2) EP4239952A1 (zh)
CN (2) CN114008979B (zh)
WO (1) WO2020263640A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116668191A (zh) * 2023-07-25 2023-08-29 北京发祥地科技发展有限责任公司 具有数据加密汇聚功能的物联网应用虚拟网关

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11570011B2 (en) * 2021-01-05 2023-01-31 Vmware, Inc. Multicast packet handling based on flow cache information

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140301492A1 (en) * 2013-03-08 2014-10-09 Samsung Electronics Co., Ltd. Precoding matrix codebook design for advanced wireless communications systems
WO2014159270A1 (en) * 2013-03-14 2014-10-02 Apcera, Inc. System and method for transparently injecting policy in a platform as a service infrastructure
US10264071B2 (en) * 2014-03-31 2019-04-16 Amazon Technologies, Inc. Session management in distributed storage systems
US9602424B1 (en) * 2014-03-31 2017-03-21 Amazon Technologies, Inc. Connection balancing using attempt counts at distributed storage systems
US10044581B1 (en) * 2015-09-29 2018-08-07 Amazon Technologies, Inc. Network traffic tracking using encapsulation protocol
US9935829B1 (en) * 2014-09-24 2018-04-03 Amazon Technologies, Inc. Scalable packet processing service
US20160094668A1 (en) * 2014-09-29 2016-03-31 Alcatel-Lucent Usa Inc. Method and apparatus for distributed customized data plane processing in a data center
US10021196B1 (en) * 2015-06-22 2018-07-10 Amazon Technologies, Inc. Private service endpoints in isolated virtual networks
US10083054B2 (en) * 2015-12-28 2018-09-25 Amazon Technologies, Inc. Application-based computing resource management

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116668191A (zh) * 2023-07-25 2023-08-29 北京发祥地科技发展有限责任公司 具有数据加密汇聚功能的物联网应用虚拟网关
CN116668191B (zh) * 2023-07-25 2023-10-20 北京发祥地科技发展有限责任公司 具有数据加密汇聚功能的物联网应用虚拟网关

Also Published As

Publication number Publication date
WO2020263640A1 (en) 2020-12-30
EP3987746A1 (en) 2022-04-27
EP4239952A1 (en) 2023-09-06
CN114008979A (zh) 2022-02-01
CN114008979B (zh) 2023-05-26

Similar Documents

Publication Publication Date Title
US11088944B2 (en) Serverless packet processing service with isolated virtual network integration
US20210344692A1 (en) Providing a virtual security appliance architecture to a virtual cloud infrastructure
US11310155B1 (en) Virtual router workload offloading
US8665876B2 (en) Distributed overlay network data traffic management by a virtual server
US8959611B1 (en) Secure packet management for bare metal access
US20190273718A1 (en) Intercepting network traffic routed by virtual switches for selective security processing
US8640220B1 (en) Co-operative secure packet management
US11601365B2 (en) Wide area networking service using provider network backbone network
JP2016502795A (ja) データフロー処理の方法および装置
US9398121B1 (en) Selecting among virtual networking protocols
US10911493B2 (en) Identifying communication paths between servers for securing network communications
US20220052944A1 (en) Scalable network function virtualization service
US11824773B2 (en) Dynamic routing for peered virtual routers
CN114008979B (zh) 具有隔离虚拟网络集成的无服务器分组处理服务
US11082338B1 (en) Distributed connection state tracking for large-volume network flows
US11296981B2 (en) Serverless packet processing service with configurable exception paths
US20230291769A1 (en) Distributed evaluation of networking security rules
US11153195B1 (en) Packet processing service configuration change propagation management
US10848418B1 (en) Packet processing service extensions at remote premises
US20220321471A1 (en) Multi-tenant offloaded protocol processing for virtual routers

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