内联服务交换机的制作方法

文档序号:11637286阅读:320来源:国知局
内联服务交换机的制造方法与工艺



背景技术:

数据中心如今使用非常静态的、配置密集的方式在不同的应用层和不同的服务层之间分发数据消息。如今常见的方法是将虚拟机配置为向虚拟ip地址发送分组,然后利用转发规则配置数据中心中的转发元件和负载均衡器,其中转发规则指示它们向适当的应用和/或服务层转发寻址到vip的分组。关于现有的消息分发方案的另一个问题是,如今的负载均衡器常常是分布式流量的阻塞点。因而,本领域需要在数据中心中不同的应用和/或服务层之间无缝地分发数据消息的新方法。理想情况下,这种新方法将允许在不重新配置发送数据消息的服务器的情况下容易地修改分发方案。



技术实现要素:

一些实施例提供将数据消息从源计算节点(scn)分发到目的地服务计算节点(dscn)的不同组的新颖内联交换机。在一些实施例中,内联交换机部署在源计算节点数据路径(例如,出口数据路径)中。在一些实施例中,内联交换机是(1)从scn接收数据消息、(2)基于交换机实现的服务策略来识别服务-节点集群中用于处理数据消息的服务节点,以及(3)使用隧道向其识别出的服务节点发送接收到的消息的服务交换机数据。

可替代地,或相结合地,一些实施例的内联服务交换机(1)基于交换机实现的服务策略来识别用于处理数据消息的服务-节点集群,以及(2)使用隧道向识别出的服务-节点集群发送接收到的数据消息。在一些实施例中,服务-节点集群可以执行相同的服务或者可以执行不同的服务。这种用于将数据消息分发到服务节点/集群的基于隧道的方法对于在数据中心中无缝地实现基于云的xaas模型(其中xaas代表x即服务,并且x代表任何东西)是有利的,其中任何数量的服务由云中的服务提供商提供。

在一些实施例中,内联服务交换机执行负载均衡操作,以在执行相同服务的若干服务节点或服务-节点集群之间分发数据消息。可替代地,或相结合地,一些实施例中的服务集群可以具有在服务集群的服务节点之间分发为集群接收的数据消息的一个或多个负载均衡器。

在一些实施例中,至少一个服务集群实现弹性模型,其中一个主服务节点从内联服务交换机接收集群的数据消息。这个服务节点然后或者自己对数据消息执行服务或者将数据消息(例如,通过l3和/或l4网络地址转换、通过mac重新引导等)引导到集群中的其它服务节点之一(称为次服务节点),以对数据消息执行服务。在一些实施例中,主服务节点基于接收到的数据消息负载弹性收缩或增加集群中次服务节点的数量。

一些实施例提供了内联负载均衡交换机,其基于一个或多个l4+参数有状态地将服务负载分发到多个服务节点,这些参数是高于l1-l4参数的分组报头参数。l4+参数的示例包括会话密钥、会话cookie(例如,ssl会话标识符)、文件名、数据库服务器属性(例如,用户名)等。为了在服务器节点间有状态地分发服务负载,一些实施例中的内联负载均衡交换机与数据消息scn和服务节点建立层4连接会话(例如,tcp/ip会话),使得交换机(1)可以监视为该会话交换的初始有效负载分组中的一个或多个,和(2)可以提取和存储l4+会话参数,以供在其后续的负载均衡操作中使用。

在一些实施例中,通过执行与scn的三路tcp握手以及与服务节点的另一个三路tcp握手,内联交换机与scn建立层4连接会话并与服务节点建立另一个会话。为了在scn和服务节点之间中继数据消息,一些实施例中的内联交换机可以调整被中继的数据消息的序列号,以解决scn与服务节点之间序列号的差异。

一些实施例提供了用于重新配置数据中心中的应用或服务层部署的控制器驱动的方法。在一些实施例中,一个或多个控制器为数据中心中的scn定义数据消息分发策略,并将这些策略或基于这些策略的规则推送到scn的内联交换机。然后,内联交换机将数据消息分发到由分发策略/规则识别作为用于数据消息的数据计算节点(dcn)的dcn。在一些实施例中,分发策略或规则是按照scn用来寻址dcn组中的若干dcn的dcn组地址(例如,虚拟ip地址(vip))来表示的。

这种控制器驱动的方法可以无缝地重新配置数据中心中的应用或服务层部署,而不必将scn配置为使用新的dcn组地址(例如,新的vip)。控制器集合只需要为内联交换机提供新的分发策略或规则,这些策略或规则基于先前配置的dcn组地址来指定新的流量分发模式。在一些实施例中,无缝重新配置可以基于由scn使用的任意分组报头参数(例如,l2、l3、l4或l7参数)。换句话说,在一些情况下,这些分组报头参数不一定包括dcn组地址。在一些实施例中,内联交换机可以被配置为基于与分组相关联的元数据标签来分发数据消息,并且由应用级网关(alg)注入到分组(例如,作为l7参数)中。例如,由于alg被配置为在分组进入网络域(例如,逻辑域)时检查和标记分组,因此在一些实施例中控制器集合被配置为将新的分发策略和/或规则推送到内联交换机,以配置这些内联交换机在网络域中实现新的应用或服务层部署。

前面的发明内容旨在用作为对本发明的一些实施例的简要介绍。这不意味着是对本文档中公开的所有发明性主题的介绍或概述。以下的具体实施方式和在具体实施方式中提及的附图将进一步描述在本发明内容中描述的实施例以及其它实施例。相应地,为了理解由本文档描述的所有实施例,需要对发明内容、具体实施方式、附图和权利要求书进行全面审查。而且,所要求保护的主题不受发明内容、具体实施方式和附图中的说明性细节的限制。

附图说明

本发明的新颖特征在所附权利要求中阐述。但是,为了解释的目的,在以下图中阐述了本发明的若干实施例。

图1示出了具有内联服务交换机的多主机系统的示例。

图2概念性地示出了在一些实施例中内联服务交换机执行的过程。

图3示出了服务规则的不同示例。

图4概念性地示出了将数据消息流分发到一个服务节点集群中的服务节点。

图5概念性地示出了将数据消息流分发到执行相同服务的不同服务节点集群。

图6示出了顺序地调用不同集群的多个不同服务节点的iss的示例。

图7示出了使用一个主服务节点和零个或多个次服务节点的弹性服务模型的示例。

图8示出了将数据消息从vm顺序地转发到不同的可弹性调整的服务集群的示例。

图9概念性地示出了在一些实施例中内联服务交换机执行的另一个过程。

图10概念性地示出了主服务节点在本发明的一些实施例中执行的过程。

图11示出了具有将服务负载有状态地分发到服务节点的内联服务交换机的多主机系统的示例。

图12概念性地示出了提取和重用会话参数的示例。

图13概念性地示出了提取和重用会话参数的另一个示例。

图14概念性地示出了用于从相关联的虚拟机以粘滞方式(stickymanner)处理服务请求的一些实施例的过程。

图15示出了主计算设备的更详细的体系架构。

图16示出了控制器重新配置应用层部署的示例。

图17示出了控制器重新配置应用层部署的另一个示例。

图18概念性地示出了定义用于内联交换机的服务策略规则的一些实施例的过程。

图19概念性地示出了用于修改服务规则并重新配置实现这个服务规则的内联服务交换机的一些实施例的过程。

图20概念性地示出了利用其实现本发明的一些实施例的电子系统。

具体实施方式

在本发明的以下详细描述中,阐述和描述本发明的众多细节、示例和实施例。但是,对本领域技术人员来说将清楚和显然的是,本发明不限于所阐述的实施例,并且本发明可以在没有所讨论的一些具体细节和示例的情况下实践。

一些实施例提供将数据消息从源计算节点(scn)分发到目的地服务计算节点(dscn)的不同组的新颖内联交换机。在一些实施例中,内联交换机部署在源计算节点数据路径(例如,出口数据路径)中。在一些实施例中,内联交换机是(1)从scn接收数据消息、(2)基于交换机实现的服务策略来识别服务-节点集群中用于处理数据消息的服务节点,以及(3)使用隧道向其识别出的服务节点发送接收到的数据消息的服务交换机。

可替代地,或相结合地,一些实施例的内联服务交换机(1)基于交换机实现的服务策略来识别用于处理数据消息的服务-节点集群,以及(2)使用隧道向识别出的服务-节点集群发送接收到的数据消息。在一些实施例中,服务-节点集群可以执行相同的服务或者可以执行不同的服务。这种用于将数据消息分发到服务节点/集群的基于隧道的方法对于在数据中心中无缝地实现基于云的xaas模型(其中xaas代表x即服务,并且x代表任何东西)是有利的,其中任何数量的服务由云中的服务提供商提供。

隧道使用隧道报头将来自一种类型的协议的分组封装在不同协议的数据报中。例如,vpn(虚拟专用网络)隧道使用pptp(点对点隧道协议)经诸如互联网的公共网络来封装ip(互联网协议)分组。gre(通用路由封装)隧道使用gre报头经ip网络在虚拟点对点链路内封装各种各样的网络层协议。换句话说,gre隧道在外部ip分组中封装有效载荷。

如本文档中所使用的,云是指通过网络(例如,通过互联网)可访问的一个或多个数据中心中的计算机的一个或多个集合。在一些实施例中,xaas模型由在相同数据中心或处于不同位置(例如,不同的邻域、城市、州、国家等)的不同数据中心中操作的一个或多个服务提供商来实现。

而且,如本文档中所使用的,数据消息是指跨网络发送的特定格式的位的集合。本领域普通技术人员将认识到,术语“数据消息”在本文中可以被用来指可以跨网络发送的各种格式化的位集合,诸如以太网帧、ip分组、tcp分段、udp数据报等。而且,如本文档中所使用的,对l2、l3、l4和l7层的引用分别是对osi(开放系统互连)层模型的第二数据链路层、第三网络层、第四传输层和第七应用层的引用。

在一些实施例中,内联服务交换机(iss)执行负载均衡操作,以在执行相同服务的若干服务节点或服务节点集群之间分发数据消息。可替代地,或相结合地,一些实施例中的服务集群可以具有在服务集群的服务节点之间分发为集群接收的数据消息的一个或多个负载均衡器。

在一些实施例中,至少一个服务集群实现弹性模型,其中一个主服务节点从内联服务交换机接收集群的数据消息。这个服务节点然后或者自己对数据消息执行服务或者将数据消息(例如,通过l3和/或l4网络地址转换、通过mac重新引导等)引导到集群中的其它服务节点之一(称为次服务节点),以对数据消息执行服务。在一些实施例中,主服务节点基于接收到的数据消息负载弹性收缩或增加集群中次服务节点的数量。

在一些实施例中,scn可以是与充当scn或目的地计算节点(dcn)的其它vm或容器一起在主机上执行的虚拟机(vm)或软件容器(诸如docker容器)。在一些实施例中,dcn的示例包括生成或消费数据消息的计算端节点,或者在数据消息在数据计算端节点之间被中继时对这些消息执行某种类型的数据处理的中间件服务节点。数据计算端节点的示例包括web服务器、应用服务器、数据库服务器等,而中间件服务节点的示例包括防火墙、入侵检测系统、入侵防御系统等。

服务节点是独立设备或者是在主计算机上执行的dcn(例如,vm、容器或模块)。服务节点可以是数据计算端节点(例如,web服务器、应用服务器、数据库服务器等),或者可以是中间件服务节点(例如,防火墙、入侵检测系统、入侵防御系统等)。

在一些实施例中,内联服务交换机是在与scn相同的主机上执行的另一个软件模块。在一些实施例中,主机上的两个或更多个scn使用相同的内联服务交换机,而在其它实施例中,主机上的每个scn具有在主机上执行的其自己的内联服务交换机。在一些实施例中,主机还执行软件转发元件(sfe)。sfe将主机的scn彼此通信耦合并耦合到主机外部的其它设备(例如,其它scn)。在一些实施例中,内联交换机被插入在scn的出口路径中在sfe之前。

在一些实施例中,一个或多个控制器通过提供服务分发策略或通过提供基于服务分发策略定义的分发规则来配置内联服务交换机。这些控制器的一个示例是图1的iss控制器120。这个图示出了具有一些实施例的内联服务交换机105的多主机系统100的示例。这个系统包括多个主机计算设备110、iss控制器120的集合,一个或多个vm管理控制器125的集合,以及多个服务节点集群150。如图1中所示,主机110、iss控制器集合120、vm管理器集合125以及服务节点集群150通过网络175通信地耦合,其中网络175可以包括局域网(lan)、广域网(wan)或网络的网络(例如,互联网)。

每个主机计算设备110(例如,计算机)执行一个或多个vm115、一个或多个sfe130(例如,软件交换机、软件路由器等)、iss代理135,以及一个或多个内联服务交换机105。在一些实施例中,vm包括scn和dcn。在一些实施例中,主机上的sfe130将主机的vm彼此通信地耦合并耦合到主机外部的设备(例如,耦合到其它主机的vm)。而且,在一些实施例中,主机的sfe与在其它主机上执行sfe一起实现一个或多个逻辑网络。sfe130还将主机上的iss105通信地耦合到一个或多个服务节点或一个或多个服务节点集群150。

在一些实施例中,每个iss105与其主机上的一个vm相关联,而在其它实施例中,一个iss105与其主机上的多于一个vm相关联(例如,与其主机上的作为一个逻辑网络的一部分的所有vm相关联)。对于由其相关联的vm发送的数据消息,iss105强制执行实现一个或多个服务策略的一个或多个服务规则。基于服务规则,iss(1)确定所发送的数据消息是否应当由一个或多个服务节点或集群处理,(2)如果是,则选择服务节点或集群来处理数据消息,并通过隧道向选定的节点或集群转发数据消息。

每个iss105具有它用来确定如何将执行服务的负载分发给执行这个服务的一个或多个服务节点或一个或多个服务节点集群的负载均衡器160。在一些实施例中,iss105通过隧道连接到服务节点或集群。在其它实施例中,内联交换机通过隧道连接到一些服务节点/集群,而不使用隧道连接到其它服务节点/集群。在一些实施例中,服务节点处于与主机110和控制器120和125不同的数据中心中,而在其它实施例中,一个或多个服务节点与主机110和控制器120和125处于相同的数据中心中。在一些实施例中,一些服务节点是在主机110上执行的服务vm。

而且,在一些实施例中,不同的服务节点集群可以提供相同的服务或者可以提供不同的服务。例如,在图1中所示的示例中,服务节点集群150a和150b提供相同的服务(例如,防火墙服务),而服务节点集群150c提供不同的服务(例如,入侵检测)。将数据消息分发到同一数据中心或不同数据中心中的服务节点/集群的基于隧道的方法对于无缝地实现基于云的xaas模型是有利的,其中任何数量的服务由云中的服务提供商提供。

这种基于隧道的xaas模型体系架构允许私有数据中心中(例如,在企业数据中心中)的主机110和vm115无缝地使用在一个或多个位置的一个或多个公共多租户数据中心中的一个或多个服务集群。私有数据中心通常通过诸如互联网的公共网络连接到公共数据中心。云服务提供商的示例包括:防火墙服务提供商、电子邮件垃圾邮件服务提供商、入侵检测服务提供商、数据压缩服务提供商等。一个提供商可以提供多种云服务(例如,防火墙、入侵检测等),而另一个提供者只能提供一种服务(例如,数据压缩)。

在一些实施例中,用于vm的iss部署在vm的出口数据路径中。例如,在一些实施例中,每个vm具有连接到sfe的端口的虚拟网络接口卡(vnic)。在这些实施例中的一些当中,用于vm的内联交换机由vm的vnic或由vm的vnic连接到的sfe端口来调用。在一些实施例中,vm在管理程序之上执行,其中管理程序是启用主机的共享硬件资源的虚拟化的软件层。在这些实施例中的一些当中,管理程序提供向其vm提供内联切换和负载均衡服务的内联交换机。

在多个主机上执行的多个内联服务交换机可以实现分布式服务交换机。在分布式服务交换机中,来自多个不同主机上的一组相关vm的数据消息根据相同的服务分发策略被分发给一个或多个服务节点或集群。这些数据消息是根据相同的服务分配策略进行分发的,因为用于scn组的各个内联服务交换机配置有相同的策略或规则。

vm管理控制器125提供用于定义(例如,分配或实例化)和管理每个主机上的一个或多个vm的控制和管理功能。iss控制器集合120通过iss代理135配置内联交换机105及其相关联的负载均衡器160。在一些实施例中,这两个控制器集合120和125之一提供用于定义和管理在主机的公共sfe物理基础设施上定义的多个逻辑网络的控制和管理功能。在一些实施例中,控制器120和125通过带外控制信道通信与在主机上执行的代理进行通信。在一些实施例中,控制器120和125是独立服务器,或者是与其它服务器一起在主机上执行的服务器。

在一些实施例中,iss控制器集合120向iss代理提供iss代理将其转换成用于内联交换机实现的服务规则的高级服务策略。这些服务策略和规则包括内联交换机的负载均衡器实现的负载均衡策略和规则。在一些实施例中,iss控制器集合向iss代理提供代理一直传递到内联交换机和负载均衡器的服务规则。在还有其它实施例中,iss控制器集合向iss代理既提供服务策略又提供服务规则。在这些实施例中,iss代理将服务策略转换为服务规则,然后它将接收并转换的服务规则提供给内联交换机和负载均衡器。在还有其它实施例中,iss控制器集合直接配置内联交换机和负载均衡器,而不经过iss代理。

在一些实施例中,iss控制器集合还向iss代理135、服务交换机105或其负载均衡器160提供负载均衡器用来执行其负载均衡操作的负载均衡标准。例如,负载均衡标准包括指定负载均衡器应当如何以加权轮询(roundrobin)方法在服务节点集合中分发数据消息负载的权重值集合。在一些实施例中,iss控制器集合120分发数据-消息负载统计信息,并且服务代理135、iss105或负载均衡器160基于这些统计信息生成负载均衡标准。

更具体而言,在一些实施例中,iss控制器集合120采集来自内联交换机的统计信息,并且基于所采集的统计信息,动态地调整其直接或间接(通过iss代理)分发到内联交换机和负载均衡器的服务策略、服务规则和/或负载均衡标准。在一些实施例中,每个内联交换机在数据储存装置(以下称为stat储存装置)中存储它在其主机上更新的关于其数据消息分发的统计信息。iss代理135周期性地从stat数据储存装置(图1中未示出)采集所收集的统计信息,并将这些统计信息中继到iss控制器集合120。在一些实施例中,代理135聚合和/或分析一些统计信息,然后将处理后的统计信息中继到iss控制器集合120,而在其它实施例中,代理将所收集的原始统计信息中继到iss控制器集合120。

一些实施例的iss控制器集合120聚合它从主机的代理接收的统计信息。在一些实施例中,iss控制器集合120然后将聚合的统计信息分发给在主机上执行的代理。然后,这些代理分析聚合的统计信息,以生成和/或调整其相关联的内联交换机或其负载均衡器强制执行的规则或标准。在其它实施例中,控制器集合分析聚合的统计信息,以生成和/或调整服务策略、服务规则和/或lb标准,然后控制器集合将其分发给主机的代理135,用于让其内联交换机和负载均衡器强制执行。

在这些实施例的一些当中,控制器集合将相同的策略、规则和/或标准分发给一组相关联的iss中的每个iss,而在其它实施例中,控制器集合将不同的策略、规则和/或标准分发给一组相关联的iss中的不同iss。在一些实施例中,控制器集合将更新的策略、规则和/或标准分发给相关联的交换机组中的一些内联交换机,而不将更新的策略、规则和/或标准分发给该相关联的组中的其它内联交换机。在一些实施例中,控制器集合基于聚合的统计信息更新和分发一些策略、规则或标准,同时还将一些或所有聚合的统计信息分发给主机,使得其代理可以生成其它规则或标准。本领域普通技术人员将认识到,在一些实施例中,策略、规则和/或标准不总是基于聚合的统计信息来调整,而是仅在聚合的统计信息需要这种修改时才被修改。

不考虑对于更新策略、规则和/或标准的实现,数据流量统计信息的收集和聚合允许动态地调整切换规则或标准。例如,当统计信息显示一个服务节点太过充满数据流量时,可以为向这个服务节点发送数据消息的负载均衡器动态调整负载均衡规则或标准,以便减少在这个服务节点上的负载,同时增加同一服务节点集群中的一个或多个其它服务节点上的负载。在一些实施例中,数据流量统计信息的收集和聚合还允许控制器集合120通过动态地指示服务-节点管理控制器集合(未示出)向服务集群供应(一个或多个)新的服务节点或分配(一个或多个)以前供应的服务节点来减小服务-节点集群中的任何服务节点上的负载。

图2示出了vm115的iss105针对vm发送的数据消息执行的过程200。在执行这个过程中,iss105(1)确定数据消息是否应当由一个或多个服务节点或集群处理,以及(2)如果是,则选择服务节点或集群来处理数据消息并将数据消息通过隧道转发到选定的节点或集群。为了选择服务节点或服务-节点集群,isss执行负载均衡操作,以确保它处理的数据消息流基于负载均衡标准的集合在若干服务节点或集群之间被分发。以下将参考图3-5来描述过程200。图3是在一些实施例中由过程200强制执行的服务规则的不同示例。图4和5分别示出了iss105向一个服务节点集群310中的服务节点305分发数据消息流,并且向执行相同服务的不同服务节点集群405分发数据消息流。

当iss105接收到其相关联的vm发送的数据消息时,过程200开始。如上面所提到的,iss105部署在vm的出口数据路径中,使得它可以截取由其vm发送的数据消息。在一些实施例中,iss105由vm的vnic或由通信连接到vm的vnic的sfe端口调用。

在210,该过程确定数据消息是否是该过程已经为其处理其它数据消息的数据消息流的一部分。在一些实施例中,该过程通过检查iss维护的连接储存装置以跟踪其最近处理的数据消息流来做出这种确定。当两个数据消息共享相同的消息报头时,它们是同一个流的一部分。例如,当两个分组具有相同的五元组标识符时,它们是同一个流的一部分,五元组标识符包括源ip地址、目的ip地址、源端口、目标端口和协议。

如下面参考255进一步描述的,连接储存装置为iss最近处理的每个数据消息流存储一个记录。这个记录存储必须应用到流的数据消息的服务规则集合的描述,或者具有对这种描述的引用(例如,指针)。在一些实施例中,当服务规则集合的操作需要丢弃数据消息时,连接-储存装置记录也指定这个动作,或者代替服务规则描述而指定这个动作。而且,当不需要对这个流的数据消息执行服务时,连接-储存装置记录指示iss应当允许接收到的数据消息沿着vm的出口数据路径传递。

在一些实施例中,这个记录存储流的标识符(例如,五元组标识符)。此外,在一些实施例中,连接储存装置是可散列寻址的(例如,基于流的标识符的散列来识别连接储存装置中的位置)。当过程确定(在210)它已经先前处理了来自与接收到的数据消息相同的流中的数据消息时,它变换到215,在那里它执行先前在用于这个流的连接-储存装置记录中为这个流的数据消息指定的动作或服务-规则集合。在执行这些服务操作之后,过程200向调用它的模块(例如,sfe端口或vnic)提供(在215)数据消息,假设服务操作不需要数据消息被丢弃,在这种情况下该过程这样通知调用的模块。通常,由于(一个或多个)服务操作被执行,因此过程200返回到调用模块的数据消息是在205接收的数据消息的修改版本。经修改的数据消息可以具有与接收到的数据消息不同的报头值和/或数据报(即,有效负载)。在一些情况下,返回的数据消息可能与接收到的数据消息完全相同。在215之后,过程结束。

当过程确定(在210)它先前没有处理来自相同数据消息流的数据消息时,该过程确定(在220)其强制执行的服务规则是否需要对接收到的数据消息执行一个或多个服务动作。在一些实施例中,iss具有存储iss强制执行的若干服务规则的服务规则储存装置。每个服务规则可以与来自内联交换机的vm的一个或多个数据消息流相关联,并且不同的服务规则可以与来自这个vm的不同数据消息流相关联。在一些实施例中,服务规则储存装置中的每个服务规则具有(1)相关联的数据消息标识符(例如,分组报头值)的集合和(2)一个或多个动作的集合。

过程200确定(在220)接收到的数据消息的标识符(例如,五元组)是否与其服务规则储存装置中的任何服务规则的数据消息标识符匹配。当数据消息匹配多于一个服务规则时,一些实施例的过程200仅执行由最高优先级匹配服务规则指定的动作集合。在一些这样的实施例中,服务规则储存装置根据基于其优先级的排序(sort)来存储规则,使得,当多于一个规则与数据消息匹配时,过程200首先将数据消息与较高优先级规则匹配,然后才能够将其与较低优先级的规则匹配。

当接收到的数据消息的报头值与服务规则储存装置中指定服务动作的任何服务规则的规则匹配标识符都不匹配时,过程200确定它不需要将数据消息转发到任何服务节点,以执行任何服务操作。由此,它在连接储存装置中创建(在222)记录,以指定对于作为与接收到的数据消息同一个流的一部分的数据消息不需要服务动作。对于本发明的一些实施例,连接储存装置的结构已在上面描述并在下面进一步描述。在222,该过程还通知调用它的模块(例如,sfe端口或vmvnic)该过程已经完成处理数据消息。在一些实施例中,这个通知不附带数据消息,而在其它实施例中,这个通知附带数据消息。在发送这个通知时,过程200允许接收到的数据消息通过,而不对其执行任何服务。在222之后,过程结束。

当接收到的数据消息的标识符与服务规则储存装置中的一个或多个服务规则的规则匹配标识符匹配时,过程执行225-250,以处理匹配一个或多个服务规则的动作。在一些实施例中,每个服务规则只能指定一个动作,而在其它实施例中,服务规则可以指定一个或多个动作的序列。在一些实施例中的服务动作需要将匹配的数据消息转发到服务节点或集群。对于这种操作,服务规则直接或通过(规则所参考的)另一个记录来识别用于执行服务的一组服务集群的集群或服务节点集群的服务节点。如下面进一步描述的,过程200选择识别出的服务节点或集群中的一个。

图3示出了指定服务动作的服务规则的若干示例。这个图示出了存储多个服务规则的服务规则储存装置300。每个服务规则具有按照一个或多个数据消息报头值(例如,如上所述的一个或多个五元组值)表示的相关联的服务规则标识符集合305。过程200将服务规则标识符集合与数据消息的报头值进行比较,以便确定服务规则是否与接收到的数据消息匹配。

每个服务规则还指定一个或多个动作,每个动作按照动作类型310(例如,防火墙动作类型、ips动作类型、ids动作类型等)和隧道id集合315来指定。在一些实施例中,服务规则的每个动作的隧道id集合识别(1)iss与集群中的一个或多个服务节点之间的一个或多个隧道,或者(2)服务集群组中提供服务的一个或多个服务集群。在一些实施例中,将服务规则的隧道id集合作为由iss控制器集合最初提供的数据的一部分(例如,为了配置iss)提供,或者在由控制器集合提供的后续更新中提供。

当服务规则指定多于一个动作时,动作可以与多于一个服务相关联。以这种方式,服务规则可以指定需要对匹配的数据消息执行的服务操作序列。如上面所提到的,一些实施例根据基于规则优先级的排序将服务规则存储在数据储存装置300中,因为这些实施例中的过程200将数据消息与仅一个服务规则匹配,并且排序的次序允许过程将数据消息与匹配的较高优先级规则而不是匹配的较低优先级规则匹配。

在图3所示的示例中,服务规则350具有一个相关联的动作,而服务规则355具有多个相关联的动作。在其它实施例中,每个服务规则只能指定一个服务动作。而且,在其它实施例中,服务规则不直接识别用于服务节点或集群的隧道id。例如,在一些实施例中,过程200通过使用服务-节点标识符或服务-集群标识符从识别这些id的表中检索隧道id来识别隧道id。

在225,该过程选择与接收到的数据消息报头值匹配的服务规则的服务动作。当匹配的服务规则指定两个或更多个服务动作的序列时,过程200维护识别其在其必须执行的动作序列中的位置的记录(例如,计数),以便当其返回到225时将知道它必须选择的序列中的下一个服务动作是哪个。这将在下面进一步描述。

在一些实施例中,这个服务动作具有相关联的隧道id集合315,其指定执行服务动作的一个或多个服务节点或服务节点集群的一个或多个隧道。因而,在230,过程200使用iss的负载均衡器以负载均衡的方式从由隧道id集合识别的服务节点或者服务-节点集群的集合中为数据消息选择一个业务节点或一个服务节点集群。在一些实施例中,iss负载均衡器以有状态的方式分发负载,使得作为同一流的一部分的数据消息由相同的服务节点或相同的服务节点集群来处理。

为了以负载均衡的方式选择服务节点或服务-节点集群,一些实施例中的每个服务规则为规则的每个指定的隧道id集合指定权重值的集合(未示出)。可替代地,在其它实施例中,每个服务规则参考识别针对为该规则识别的每个隧道id集合的权重值集合的另一个记录。每个权重值集合指定用于相关联的隧道id集合中每个隧道id的权重值,并为iss负载均衡器提供负载均衡标准,以将流量散布到由隧道id集合识别的服务节点或集群。

例如,在一些实施例中,iss负载均衡器使用这些权重值来实现加权轮询方案,以将流量散布到节点或集群。作为一个示例,假设隧道id集合具有五个隧道id,并且用于隧道id的权重值为1、3、1、3和2。基于这些值,iss负载均衡器将如下分发作为十个新流的部分的数据消息:1针对第一隧道id,3针对第二隧道id,1针对第三隧道id,3针对第四隧道id,2针对第五隧道id。如下面进一步描述的,在一些实施例中,基于控制器集合从内联交换机收集的统计信息,由iss代理135和/或iss控制器集合120生成并调整用于服务规则的权重值。为了在不同的负载均衡标准之间从容地切换,隧道id集合可以具有多个权重值集合,并且在一些实施例中,服务规则可以指定不同的时间段,在这些时间段期间,隧道id集合的不同权重值(即,不同的负载均衡标准)有效。

在选择(230)用于数据消息的服务节点或服务-节点集群之后,过程(在235)识别隧道密钥,利用用于到选定的服务节点或服务-节点集群的隧道的(包括识别出的隧道密钥的)隧道报头封装数据消息,并将这个隧道-报头封装的数据消息提供给其主机的sfe,用以转发到选定的服务节点或服务-节点集群。这种隧道和密钥的示例是gre隧道、geneve隧道、gre密钥、geneve密钥等。如下面进一步描述的,一些实施例的内联交换机还使用其它重新引导机制(诸如mac重新引导、目的地网络地址转换等)将数据消息转发到一些服务节点和服务-节点集群。

隧道密钥(例如,gre密钥)允许多个数据消息流共享相同的隧道。对于每个数据消息流,在一些实施例中,该过程使用一个gre密钥将流的数据消息发送到在隧道另一端的服务节点或集群,并且响应于从这个节点或集群发送的数据消息而接收响应性数据消息。对于来自服务节点或集群的数据消息,隧道密钥还允许过程200将数据消息与该过程发送到服务节点或集群的数据消息相关联。

图4给出了示出在同一主机或不同主机上执行的若干相关vm115的内联服务交换机105的示例,其中交换机105使用若干隧道450将其vm数据消息分发到服务节点集群410的对这些消息上执行相同服务(例如,防火墙服务或ips服务)的多个服务节点405。iss执行负载均衡操作,以便为每个数据消息流选择服务节点。

在图4中,每个隧道在集群中的iss105和服务节点405之间建立。对于共享到同一服务节点的相同隧道的不同流的数据消息,iss105使用不同的隧道密钥,使得不同的流可以共享相同的隧道。而且,通过每个服务-节点隧道,iss响应于它发送到服务节点的数据消息而接收数据消息,并且使用隧道密钥将每个响应数据消息与其发送的数据消息相关联。

在一些实施例中,每个服务节点405是独立设备。在其它实施例中,一个或多个服务节点405是在主计算机上执行的服务器。对于这种服务节点,在一些实施例中,隧道405是为服务节点在其上执行的主计算机或者主计算机的sfe供应的隧道。在一些实施例中,在内联交换机侧,隧道也可以在主机级提供。换句话说,在一些实施例中,在相同主计算机上执行的两个或更多个内联交换机105使用到服务节点的相同隧道。

图5给出了示出在相同主机或不同主机上执行的若干相关vm115的内联服务交换机105的示例,其中交换机105使用若干隧道550将其vm数据消息分发到对这些消息执行相同服务(例如,防火墙服务或ips服务)的多个服务节点集群505。在这个示例中,iss执行负载均衡操作,以便为每个数据消息流选择服务集群。如在图4的示例中,不同的隧道密钥被用来识别在图5的示例中共享相同隧道的不同流的数据消息。

在图5所示的示例中,每个服务集群505具有执行相同服务的多个服务节点510,以及将接收到的数据消息分发到其集群的服务节点的负载-均衡web服务器集合515(具有一个或多个web服务器)。在这个示例中,每个隧道在iss105和集群的负载-均衡web服务器515之间建立。通过其负载均衡操作230,iss选择图5的集群组中的一个集群,以便将服务负载分发给执行相同服务的不同集群。然后,每个集群的负载-均衡web服务器515具有在集群的服务节点之间分发每个集群的负载的任务。在一些实施例中,这些web服务器以有状态的方式分发负载,使得集群中的相同服务节点处理作为同一流的一部分的数据消息。

在一些实施例中,图5中所示的服务集群组的不同服务集群在位于不同位置的不同数据中心中。在不同位置具有执行相同服务的不同服务集群会是有利的,因为它允许在不同位置的不同iss将其服务集群选择偏向于更靠近该iss位置的服务集群。而且,让不同服务集群执行相同的服务动作还为数据中心中的不同租户提供了为同一服务挑选不同服务提供商以及容易地在这些提供商之间进行切换而无需重新配置内联交换机或其服务器(例如,他们的vm或容器)的能力。在其它实施例中,这些服务集群505中的一个或多个处于相同的数据中心中。当不同的服务提供商在一个数据中心中提供相同的服务时,可能创建这种服务集群。

而且,在一些实施例中,图5中所示的体系架构还被用来在向执行相同服务或不同服务的一个或多个服务节点分发它们从内联交换机105接收的数据消息的非服务节点元件上(例如,在负载均衡器(诸如负载均衡器515)上)终止隧道。在一种这样的方法中,一个服务提供商的服务节点515可以在不同的集群505中。而且,在这种方法中,每个服务集群可以仅具有一个服务节点。鉴于上述,本领域普通技术人员将认识到的是,内联交换机用来向服务节点转发数据消息的隧道不一定必须在服务节点终止(即,不一定必须被供应),而是可以在通过隧道向服务节点转发其接收的数据消息的机器或设备终止。

在向服务节点或集群发送(235)数据消息之后一段时间,过程通过被用来在235发送数据消息的隧道从服务节点或集群接收(在240)服务完成确认。确认是从服务节点或集群接收并且被具有隧道密钥的隧道报头封装的一个或多个数据消息的一部分。隧道密钥允许过程200将接收到的(一个或多个)数据消息与所发送的数据消息(即,在235发送的数据消息)相关联。

接收到的确认可能指示数据消息应当被丢弃(例如,当服务节点执行确定数据消息应当被丢弃的安全服务操作(例如,防火墙、ips、ids等)时)。可替代地,(一个或多个)确认数据消息可能返回具有一个或多个经修改的数据消息报头的数据消息。一旦过程200完成其对数据消息的处理,这些经修改的报头值就可以将数据消息重新定向到不同的目的地。

而且,一些实施例中的(一个或多个)确认数据消息可能返回新的或经修改的有效载荷,以替换在235被发送到服务节点或集群的数据消息的有效载荷。例如,当服务节点或集群执行加密或压缩操作时,新的有效载荷可能是已发送的数据消息的有效载荷的加密或压缩版本。当返回的(一个或多个)数据消息为所发送的数据消息提供新的或经修改的有效载荷时,过程200在让另一个服务节点或集群对数据消息执行另一个服务之前或者在让sfe向其最终目的地转发数据消息之前将所发送的数据消息有效载荷用接收到的新的或经修改的有效载荷替换。

在接收(在240)服务完成确认之后,过程200确定(在245)是否应当继续处理数据消息。当接收到的确认指示数据消息应当被丢弃时,过程200变换到255,在那里它在iss连接储存装置中创建记录,以指定作为同一流的一部分的数据消息(如在205接收的数据消息)应当被丢弃。创建这个记录,使得对于作为同一流的一部分的后续数据消息,该过程不必在确定它应当丢弃数据消息之前搜索服务规则数据储存装置并执行服务操作。在255,过程200还更新它在issstat储存装置中维护的统计信息,以反映在数据消息被丢弃之前处理这个数据消息的(一个或多个)服务节点的当前数据消息的处理。

可替代地,当过程确定(在245)应当继续处理数据消息时,它确定(在250)其在220的服务规则检查是否识别出必须执行当前数据消息的任何其它服务动作。如上面所提到的,在一些实施例中,该过程可以识别具有必须对数据消息执行的多个服务动作的多个匹配服务规则。在其它实施例中,该过程只能识别对数据消息的一个匹配的服务规则。但是,在一些实施例中,匹配服务规则可能指定必须对数据消息执行的多个服务动作。

因而,当过程确定(在250)需要对数据消息执行另一个服务动作时,它返回到225,以选择另一个服务动作并重复操作230-250。当匹配的服务规则指定两个或更多个服务动作的序列时,过程200维护识别其在其必须执行的动作序列中的位置的记录(例如,计数),以便当其返回到225时将知道它必须在序列中选择的下一个服务动作是哪一个。换句话说,这个记录维护该过程处于它必须为接收到的数据消息实现的服务策略链中什么位置的状态。

图6示出了顺序调用执行不同服务的不同集群的多个不同服务节点的iss以便实现涉及多个不同的个体服务策略的复杂服务策略的示例。这个图示出了vm115的iss105顺序地使用x个不同服务集群610的x个服务节点605执行涉及x个个体服务动作的复杂服务策略,其中x是整数。如图所示,iss使用不同的隧道650向x个服务节点发送数据消息。图6以实线示出了被用来处理数据消息的隧道,同时以虚线示出了iss105不选择的其它候选隧道。隧道的使用允许一些或所有的集群在云中。换句话说,隧道允许iss无缝地实现基于云的xaas模型。

在一些实施例中,不同的服务集群610可以彼此位于相同的数据中心中,或者位于不同的数据中心中。而且,服务集群610可以位于与vm115和iss105相同的数据中心中,或者它可以位于不同的数据中心中。vm115位于私有数据中心中(例如,在企业数据中心中),而一个或多个服务集群位于处于不同位置的公共多租户数据中心中。如上面所提到的,用于向相同数据中心或不同数据中心中的服务节点/集群分发数据消息的基于隧道的方法对于无缝地实现基于云的xaas模型是有利的,其中任何数量的服务由云中的服务提供商提供。

在一些实施例中,当内联交换机105顺序地调用多个服务节点或集群以对交换机已经接收到的数据消息执行多个服务动作时,内联交换机向每个服务节点或集群发送与当过程200开始时内联服务交换机最初接收到的数据消息完全相同或者与内联服务交换机从对内联服务交换机发送到前一服务节点的数据消息执行前一服务动作的该前一服务节点接收的数据消息完全相同的数据消息。换句话说,在这些实施例中,内联交换机只是在将其连接到服务节点或集群的隧道中中继它在过程200开始时接收(在205)和从服务节点接收(在240)的数据消息。在这些情况下,内联交换机在向下一个服务动作节点转发它接收的数据消息之前只对该数据消息放置隧道分组报头。

在对接收到的数据消息执行其服务动作时,一个服务节点可能在发送回经修改的数据消息之前修改数据消息的报头值和/或其数据报。尽管有这样的修改,但是本文档中的讨论适用于在执行过程200期间(即,当这个交换机指示(一个或多个)服务节点或(一个或多个)集群执行期望的服务操作序列时,所述服务操作在205处接收到第一数据消息以开始过程200时被发起)由内联交换机接收的所有数据消息作为接收到的数据消息。普通技术人员将认识到的是,在每个服务操作之后,可以修改数据消息,使得结果得到的消息与对其执行操作的消息不相似(例如,具有不同的报头值或不同的数据报)。

而且,普通技术人员将认识到的是,在一些实施例中,内联交换机可能仅向服务节点发送接收到的数据消息的一部分。例如,在一些实施例中,内联交换机可以仅发送数据消息的报头、这个报头的一部分、数据消息的有效载荷或有效载荷的一部分。类似地,在一些实施例中,服务节点不发回作为它们接收的数据消息的修改版本的数据消息,而是发回某个值(例如,允许、丢弃等)。

当过程确定(在250)已经对于在205接收的数据消息执行了其识别出的所有服务动作时,该过程在iss连接储存装置中创建(在255)记录,以指定应当对作为同一流的一部分的数据消息(如在205接收的数据消息)执行的服务动作或服务-动作序列。创建这个记录,使得对于作为同一流的一部分的后续数据消息,该过程不必搜索服务规则数据储存装置。相反,在210,该过程可以从连接储存装置中的记录为这些后续的数据消息识别其必须执行的(一个或多个)服务动作,并且它可以在215执行这些动作。对于过程200在连接储存装置中识别出的每个服务动作,该过程还在连接储存装置记录中识别必须执行该服务动作的识别出的服务节点或集群(即,在225识别出的节点或集群),使得同一流的所有数据消息都由用于那个服务动作的相同的服务节点或集群处理。

在255,过程200还更新其在issstat储存装置中维护的统计信息,以反映由处理这个数据消息的一个或多个服务节点进行的当前数据消息的处理。在执行服务操作之后,过程200向调用它的模块(例如,sfe端口或vnic)提供(255)数据消息,假设服务操作不要求丢弃数据消息,在这种情况下,该过程就这样通知调用模块。再次,由于执行了(一个或多个)服务操作,过程200返回到调用模块的数据消息通常是在205接收的数据消息的修改版本(例如,具有一个或多个不同的报头值和/或经修改的有效载荷),但是在一些情况下,返回的数据消息可能与接收到的数据消息完全相同。在255之后,过程结束。

在上面参考图2-6描述的几个示例中,内联交换机以负载均衡的方式选择用于处理数据消息的服务节点或集群,然后通过隧道向选定的节点或集群发送数据消息。在其它实施例中,内联交换机不从若干服务节点中选择服务节点,也不从若干服务集群中选择服务集群。例如,在一些实施例中,内联交换机仅仅是沿着一条隧道向服务集群中继数据消息,使得在服务集群处的负载-均衡节点然后可以选择该集群的服务节点来执行服务。

在这些实施例中的一些当中,至少一个服务集群实现碎片模型,其中一个主服务节点从内联服务交换机接收集群的数据消息。然后这个服务节点或者自己对数据消息执行服务或者将数据消息(例如,通过l3和/或l4网络地址转换、通过mac重新引导等)引导到集群中的其它服务节点之一(称为次服务节点),以对数据消息执行服务。在一些实施例中,主服务节点基于接收到的数据消息负载弹性收缩或增加集群中次服务节点的数量。

图7示出了使用一个主要服务节点和零个或多个次服务节点的这种弹性服务模型的示例。这个示例在三个阶段705-715中示出,其中示出了服务节点集群700在三个不同时刻的操作。第一阶段705示出了在时间t1,集群仅包括一个主服务节点(psn)720。如图所示,psn720具有负载均衡器(lb)和服务虚拟机(svm)。

在第一阶段705中,psn接收集群必须对其执行其服务的所有数据消息。这些消息由内联交换机105通过隧道750捕获并从其vm发送到集群700。在第一阶段705中,psn的svm730对这些消息执行所需的服务,然后通过隧道750将这些消息引导回内联交换机105。

第二阶段710示出了时间t2,集群已经被扩展成包括由第二服务虚拟机实现的另一个服务节点ssn1。在一些实施例中,服务节点ssn1被添加到集群,因为集群上的数据消息负载已超过第一阈值。在一些实施例中,当服务-节点控制器集合(未示出)检测到数据消息负载已超过第一阈值时,或者当psn检测到这种条件并指示控制器集合添加ssn1时,控制器集合添加ssn1。在一些实施例中,服务-节点控制器集合从psn获得数据消息负载。

为了评估数据消息负载是否超过阈值,在不同实施例中,控制器集合或psn基于不同的度量来量化数据消息负载。在一些实施例中,这些度量包括以下参数中的一个或多个:(1)由集群或集群中的各个服务节点处理的流的数量,(2)由集群或集群中的各个服务节点处理的分组的数量,(3)由集群或组中的各个服务节点处理的分组数据的数量。

第二阶段710还示出,在时间t2,psn对一些数据消息流执行集群的服务,同时将其它数据消息流引导到ssn1,使得这个服务节点可以对这些其它流执行这个服务。一旦psn或ssn1对数据消息执行了服务,psn就将数据消息引导到iss105。如图所示,一旦ssn1执行了服务,在一些实施例中,这个服务节点就将数据消息返回到psn,psn将其引导回iss。在其它实施例中,ssn将经处理的数据消息直接返回到内联交换机。在这些实施例中的一些当中,ssn和内联交换机被配置为插入适当的分组报头值并且检查适当的分组报头值,以识别已经由ssn处理的数据消息。在还有其它实施例中,一旦供应了ssn,ssn就可以利用内联交换机(例如,利用内联交换机的主机)建立隧道,使得它们可以将其经处理的消息直接返回到内联交换机。

psn的负载均衡器725执行负载均衡操作,该操作选择集群中的哪个服务节点(主或次)应当对psn接收的每个数据消息执行组的服务。在一些实施例中,负载均衡器725基于iss105用来通过隧道750发送不同数据-消息流的不同隧道密钥的散列来分发数据消息。这种散列确保作为同一流由的部分的数据消息由集群中的相同服务节点进行处理。在一些实施例中,负载均衡还基于一些内部分组报头值。在其它实施例中,负载均衡仅基于内部分组报头值(即,它不基于隧道密钥)。在一些实施例中,负载均衡器725在连接储存装置中存储用于每个数据-消息流的每个服务节点选择的记录,并且使用这个记录来在挑选用于流中第一个数据消息的服务节点之后放弃对流的服务节点的重新评估选择。在一些实施例中,psn的负载均衡器还确定何时应当将服务节点添加到集群或从集群中移除。

第三阶段715示出了时间t3,集群已经被扩展成还包括作为第三服务虚拟机的另一个服务节点ssn2。在一些实施例中,服务节点ssn2被添加到集群,因为集群上的数据消息负载已超过第二阈值,在一些实施例中,第二阈值与第一阈值相同,或者在其它实施例中,第二阈值与第一阈值不同。一些实施例在psn或ssn1上的负载超过第二阈值量时添加服务节点ssn2。当n个(例如,两个或三个)服务节点上的负载超过阈值时,其它实施例添加新的服务节点。如前所述,在一些实施例中,服务节点控制器集合在它或psn检测到数据消息负载已经超过第二阈值时添加ssn2。

第三阶段715还示出了时间t3,psn对一些数据消息流执行集群的服务,同时将其它数据消息流引导到ssn1或ssn2,使得这些服务节点可以对这些其它流执行这种服务。如图所示,一旦服务节点psn、ssn1或ssn2中的任一个对数据消息执行服务,psn就通过隧道750向iss105返回数据消息。在处理该数据消息之后,ssn2就像ssn1一样向psn提供其应答数据消息,使得psn可以通过隧道750向iss105转发这个消息。

图8示出了其中vm115的iss105顺序地从vm向弹性调整的服务-节点集群的不同集群转发数据消息的示例。在这个示例中,不同的服务集群对数据消息执行不同的服务操作。在一些实施例中,当多个集群驻留在相同位置时,一个集群的ssn可以是其它集群的psn。

iss105通过隧道连接到每个服务集群的psn,这允许每个服务集群驻留在iss的局域网之外。通过顺序地向不同的服务集群中继数据消息,iss105可以对数据消息实现具有多个服务动作(在这个示例中为x)的复杂服务策略。隧道的使用允许一些或所有的集群在云中。换句话说,隧道允许iss无缝地实现基于云的xaas模型。

图9示出了iss105在一些实施例中执行以利用一个或多个弹性调整的服务节点集群来处理数据消息的过程900。除了过程900不执行负载均衡操作230以选择集群中的服务节点之外,这个过程与图2的过程200完全相同。如图所示,在识别出(在225)由服务集群的服务节点执行的服务动作之后,过程900仅沿着把iss连接到服务集群的隧道向服务集群转发(235)数据消息。

图10概念性地示出了在一些实施例中在这种psn接收到数据消息时该psn执行的过程1000。过程1000识别psn的sn组中应当处理接收到的数据消息的一个服务节点,然后指示识别出的服务节点对接收到的数据消息执行sn组的服务。识别出的服务节点可以是psn本身,或者它可以是sn组中的ssn。

如图10中所示,当psn通过隧道从iss过滤器接收到数据消息时,过程1000开始(在1005)。在接收到数据消息之后,该过程确定(在1010)接收到的消息是否是psn先前已经为其处理了至少一个数据消息的特定数据消息流的一部分。

为了做出这种确定,该过程检查(在1010)连接-状态数据储存装置,其存储(1)psn先前处理的若干数据消息流中的每一个的身份,以及(2)psn先前将其识别为用于处理每个识别出的流的数据消息的服务节点的服务节点的身份。在一些实施例中,该过程按照一个或多个流属性(例如,流的五元组标识符)识别连接状态数据储存装置中的每个流。而且,在一些实施例中,基于流属性的(例如,流的五元组报头值的)散列,连接-状态数据储存装置被散列索引。对于这种储存装置,psn从数据消息的报头参数集合中生成散列值,然后使用这个散列值来识别储存装置中的一个或多个位置,以检查匹配的报头参数集合(即,为了匹配数据消息流属性集合)。

当过程识别出(在1010)流连接-状态数据储存装置中与接收到的数据消息流的属性匹配的条目时(即,当过程确定其先前处理了作为与接收到的数据消息同一流的一部分的另一个数据消息时),该过程将接收到的数据消息引导到(在1015)在连接-状态数据储存装置的匹配条目中识别出的(sn组中的)服务节点(即,引导到psn先前识别出的用于处理该特定数据消息流的数据消息的服务节点)。然后这个服务节点对数据消息执行服务。这个服务节点可以是psn本身,或者可以是sn组中的ssn。在对数据消息执行(在1015)服务之后,sn向调用它的iss过滤器返回应答数据消息(例如,经处理的数据消息),然后结束。

另一方面,当过程确定(在1010)连接状态数据储存装置不存储用于接收到的数据消息的条目(即,确定其先前没有处理作为与接收到的数据消息同一流的一部分的另一个数据消息)时,过程变换到1020。在一些实施例中,连接-状态数据储存装置周期性地去除已经在给定的持续时间内未匹配任何接收到的数据消息的旧条目。因而,在一些实施例中,当过程确定(在1010)连接-状态数据储存装置没有存储用于接收到的数据消息的条目时,该过程可能先前已经识别出用于数据消息流的服务节点,但是匹配的条目可能已从连接-状态数据储存装置中被去除。

在1020,该过程确定接收到的数据消息是否应当由psn本地处理,或者由sn组的另一个服务节点远程处理。为了做出这种确定,在一些实施例中,psn基于在接收到数据消息时由psn为sn组维护的负载均衡参数集合来执行识别用于接收到的数据消息流的服务节点的负载均衡操作。在一些实施例中,(1)基于关于sn组中的每个服务节点上的流量负载的更新的统计数据,以及(2)基于添加到sn组或从sn组中去除的服务节点来调整负载均衡参数集合。

在不同的实施例中,过程1000执行不同的负载均衡操作(在1020)。在一些实施例中,负载均衡操作依赖数据消息流的l2参数(例如,从l2参数(诸如源mac地址)生成散列值,以识别为生成的散列值指定服务节点的散列范围)来向服务节点分发数据消息,而在其它实施例中,负载均衡操作依赖流的l3/l4参数(例如,从l3/l4参数(诸如五元组报头值)生成散列值,以识别指定用于生成的散列值的服务节点的散列范围),以向服务节点分发数据消息。在还有其它实施例中,负载均衡操作(在1020处)使用不同的技术(例如,轮询技术)在服务节点之间分发负载。

当过程确定(在1020)psn应当处理接收到的数据消息时,该过程指示(在1025)psn的服务模块对接收到的数据消息执行sn组的服务。在1025,过程1000还在流连接-状态数据储存装置中创建条目,以将psn识别为用于处理作为与接收到的数据消息同一流的一部分的数据消息的服务节点。在一些实施例中,这个条目识别psn并且识别指定消息的流的接收到的数据消息报头值(例如,五元组值)。在对数据消息执行(1025)服务之后,psn向调用它的iss过滤器返回应答数据消息(例如,经处理的数据消息),然后结束。

当过程确定(在1020),基于其负载均衡参数集合,psn不应当处理接收到的数据消息时,过程识别(在1020)psn的sn组中的另一个服务节点来对数据消息执行服务。因此,在这种情况下,过程将消息引导到(在1030)psn的sn组中的另一个服务节点。为了重新引导数据消息,在不同实施例中,psn使用不同的技术,诸如mac重新引导(用于l2转发)、ip目的地网络地址转换(用于l3转发)、端口地址转换(用于l4转发)、l2/l3隧道化,等等。

为了执行mac重新引导,在一些实施例中,过程1000将mac地址改变为其在1020识别出的服务节点的mac地址。例如,在一些实施例中,该过程将mac地址改变为包含与psn连接的sfe端口的端口组中的另一个sfe端口的mac地址。更具体而言,在一些实施例中,sn组的服务节点(例如,svm)被指派可以在同一主机或不同主机上指定的一个端口组的端口。在一些这样的实施例中,当psn想要将数据消息重新引导到另一个服务节点时,它将数据消息中psn端口的mac地址用另一个服务节点的端口的mac地址替换,然后向sfe提供这个数据消息,使得sfe可以直接或间接地(通过其它中间转发元件)向另一个服务节点的端口转发。

类似地,为了通过ip目的地网络地址转换(dnat)将数据消息重新引导到另一个服务节点,psn将数据消息中的目的地ip地址用另一个服务节点的目的地ip地址替换,然后向sfe提供这个数据消息,使得sfe可以直接或间接地(通过其它中间转发元件)向另一个服务节点转发。

为了通过端口地址转换将数据消息重新引导到另一个服务节点,psn将数据消息中的目的地端口地址用另一个服务节点的目的地端口地址替换,然后使用这个新端口地址来将数据消息引导到另一个服务节点。在一些实施例中,psn的网络地址转换可以包括对mac地址、ip地址和端口地址中的两个或更多个的改变。

在将数据消息引导到(在1030)另一个服务节点之后,过程在连接-状态数据储存装置中创建(在1035)条目,以将该另一个服务节点识别为用于处理作为接收到的数据消息的同一流的一部分的数据消息的服务节点。在一些实施例中,这个条目识别(1)另一个服务节点,以及(2)指定消息的流的接收到的数据消息报头值(例如,五元组值)。在对数据消息执行服务之后,ssn向调用它的iss过滤器返回应答数据消息(例如,经处理的数据消息),然后结束。在一些实施例中,ssn直接向iss过滤器返回应答数据消息,而在其它实施例中,ssn通过psn向iss过滤器返回这种应答数据消息。

一些实施例的内联服务交换机基于一个或多个l4+参数有状态地向多个服务节点分发服务负载。l4+参数的示例包括会话密钥、会话cookie(例如,ssl会话标识符)、文件名、数据库服务器属性(例如,用户名)等。为了在服务器节点之间有状态地分发服务负载,在一些实施例中,内联服务交换机与数据-消息scn和服务节点建立层4连接会话(例如,tcp/ip会话),使得交换机(1)可以检查为会话而交换的一个或多个初始有效载荷分组,以及(2)可以提取并存储l4+会话参数,供以后用于其会话的后续负载均衡操作。

图11示出了一些实施例的多主机系统1100的示例,其中内联服务交换机1105基于一个或多个l4+参数有状态地向多个服务节点分发服务负载。除了其主机1110的内联服务交换机1105与其相关联的vm并与服务节点建立层4连接会话(例如,tcp/ip会话)之外,系统1100与图1的系统100完全相同。

通过与其vm及其选择的服务节点的层4会话,iss1105(1)可以检查为会话而交换的初始有效载荷分组中的一个或多个,以及(2)可以提取和存储l4+会话参数,供以后用于针对其vm的其后续负载均衡操作。在与其vm和服务节点建立l4会话之后,iss过滤器(1)从会话端点(即,从vm或服务节点)接收数据分组,(2)提取旧的分组报头,(3)检查分组有效载荷(即,l3和l4分组报头值之后的数据报),以识别它需要提取的任何l4+会话参数,(4)如果发现一个这样的参数,则提取任何需要的l4+会话参数,(5)存储任何提取出的会话参数(例如,在其主机1110上的连接储存装置1190中),以及(6)在将分组中继到另一个会话的端点(即,到服务节点或vm)之前,利用新的分组报头重新封装有效载荷。在一些实施例中,除了指定不同的tcp序列号之外,新的和旧的分组报头是相似的,如下面进一步描述的。

图12示出了iss1105通过与其vm和服务集群1250的服务节点1205建立l4连接会话来提取和重用会话参数。在这个示例中,服务集群1250包括通过ssl(安全套接字层)会话执行服务(例如,提供对安全内容的访问)的多个服务器(服务节点)。而且,在这个示例中,提取出并被重用的会话参数是ssl会话cookie。

图12给出了消息传送图,该图示出了iss1105如何将ssl分组的两个不同集合1230和1235从其相关联的vm中继到服务节点1205。如图所示,在两个消息传送流中,iss1105首先通过执行3路tcp握手与vm建立tcp会话。在与其vm(对于ssl分组的第一集合1230)建立第一tcp会话之后,iss1105检查其vm115发送的一个或多个分组的初始集合,并确定vm正在请求ssl服务会话。然后,iss1105确定所请求的ssl服务会话是新的会话,因为这个请求没有附带ssl会话cookie。

因此,iss1105确定它必须从服务集群1250中为所请求的ssl会话选择服务节点,并且它必须监视在vm与这个服务节点之间交换的分组,使得它可以记录用于这个会话的ssl会话cookie。在一些实施例中,iss1105基于其针对服务集群1250考虑的负载均衡标准的集合来选择集群中的服务节点1205。

在选择服务节点1205之后,iss1105与服务节点1205执行3路tcp握手,以便建立与服务节点1205的l4连接会话。一旦建立了这个会话,iss1105就开始向服务节点1205中继它从vm115接收的分组,并向其vm115中继它从服务节点1205接收的分组。在vm115和服务节点1205之间中继数据分组时,在一些实施例中,iss1105可以调整所中继的数据消息的序列号,以解决vm与服务节点之间的序列号的差异。在一些实施例中,iss1105通过隧道向服务节点1205发送分组并从服务节点1205接收分组。

在从服务节点1205向vm115中继一个或多个响应分组时,iss1105在初始的分组集合中识别由服务节点1205生成的ssl会话id。这个会话id常常被称为ssl会话id或cookie。在创建ssl会话id之后,生成ssl会话密钥,例如由vm基于服务节点的ssl证书来生成。ssl会话密钥的生成是计算密集型的。

当iss1105已经建立了与服务节点1205的l4连接时,它可以从服务节点1205发送的一个或多个分组的初始集合中提取ssl会话cookie。如图所示,iss1105将ssl会话cookie存储在连接储存装置1190中。在一些实施例中,存储这个ssl会话cookie的连接储存装置记录还包括作为生成这个cookie的服务节点的服务节点1205的身份。在一些实施例中,这个记录还包括当前流的一个或多个分组报头属性(诸如当前流的源ip、目的地ip、目的地端口和协议)。

在图12中所示的示例中,vm停止与服务节点的通信一段时间。然后通过发送数据分组的第二集合来恢复这个通信。因为vm想要像以前一样继续使用相同的ssl会话,所以vm发送其先前获得的ssl会话cookie。但是,在这种情况下,让vm对于这些新的数据分组使用不同的源端口并非是不寻常的。由于不同的源端口,iss1105最初假设新的数据分组是针对新的流。

因此,iss1105通过执行另一个3路tcp握手来与vm建立另一个tcp会话。在与其vm建立这个第-二tcp会话之后,iss1105检查由其vm115发送的一个或多个分组的初始集合,并确定这个分组集合包括ssl会话cookie。如图所示,iss1105提取这个cookie,将其与其连接储存装置1190中的cookie进行比较,识别存储这个cookie的记录(即,确定其先前已经存储了这个cookie),并且根据这个记录将服务节点1205识别为用于处理与这个请求相关联的ssl会话的服务节点。

然后,iss1105与服务节点1205执行另一个3路tcp握手,以便与服务节点1205建立另一个l4连接会话,因为它已经确定这个服务节点是应当处理请求ssl会话的节点。一旦建立了这个会话,iss1105就开始在其vm115与服务节点1205之间来回中继分组。通过在最初建立ssl会话时提取和存储ssl会话cookie,iss1105可以向相同的服务节点1205适当地路由来自其vm115的包含这个会话的cookie的后续数据分组。这是非常有益的,因为它允许ssl会话快速恢复,并且节省必须生成另一个会话密钥的计算资源。

如上面所提到的,一些实施例的内联服务交换机可以提取并存储不同的l4+会话参数,用于稍后在促进服务请求从vm到服务节点集群中的服务节点的高效分发中使用。其它示例包括会话密钥、文件名、数据库服务器属性(例如,用户名)等。图13示出了作为提取的l4+会话参数的文件名的示例。文件名是由vm115请求并且由服务集群1350的服务器提供的一条内容(例如,图像、视频等)的名称。

在图13的示例中,vm的iss1105将所请求的文件名存储为内容处理消息1330的第一集合的一部分。作为这些消息的一部分,iss(1)执行初始的tcp3路握手,(2)接收vm的初始请求,以及(3)从请求中提取文件名。在一些实施例中,vm的初始请求是以url(统一资源定位符)的形式,并且iss1105从这个url提取文件名。url常常包含被请求的内容类型的名称或缩写(例如,包含.mov、.img、.jpg或其它类似的命名,这些命名是识别所请求的内容的名称的附注)。在一些实施例中,iss将提取出的文件名存储在其连接储存装置1190中识别其选择以处理这个请求的服务节点1305的记录中。从集群1350的服务器,iss通过基于其对于它分发到集群1350的内容请求进行处理的负载均衡标准集合执行负载均衡操作来识别服务节点1305。

接下来,iss1105与服务节点1305执行3路tcp握手,以便建立与服务节点1305的l4连接会话。一旦建立了这个会话,iss1105就向服务节点1305中继内容请求。在向服务节点1305中继这个请求时,在一些实施例中,iss1105可以调整被中继的数据分组的序列号,以解决vm与服务节点1305之间序列号的差异。在一些实施例中,iss1105通过隧道向服务节点1305发送分组并从服务节点1305接收分组。

然后,iss1105从服务节点1305接收一个或多个响应分组,并将向vm115中继这些分组。分组的这个集合包括所请求的内容片段。在一些实施例中,iss1105在连接储存装置1190中创建记录,以将服务节点1305识别为仅在从这个服务器接收到响应分组之后检索所请求的内容片段的服务器。

在一些实施例中,服务节点1305将其应答分组直接发送到vm115。在这些实施例中的一些当中,iss1105向服务节点提供tcp序列号偏移量,使得这个节点可以使用这个偏移量来调整其在其响应来自vm115的分组的应答分组中使用的tcp序列号。在一些实施例中,iss1105在被用来从iss向服务节点1305中继分组的隧道的封装隧道分组报头中提供tcp序列号偏移量。而且,在一些实施例中,内联服务交换机1105被配置为为其相关联的vm建立l4连接会话,或者是被配置为为其相关联的vm建立l4连接会话的过滤器体系架构的一部分。在这些实施例中,为了检查由vm发送的l4参数,iss1105将不需要与其vm建立l4连接会话。

在其对内容片段的初始请求之后一段时间,vm115通过请求相同的内容片段来开始内容处理消息1335的第二集合。在这种情况下,让vm对于这些新的数据分组使用不同的源端口并非是不寻常的。由于不同的源端口,iss1105最初假设新的数据分组是用于新的流。因此,iss1105通过执行3路tcp握手建立与其vm的另一个tcp会话。在与其vm建立这个第二tcp会话之后,iss1105检查由其vm115发送的一个或多个分组的初始集合,并确定分组的这个集合包括内容请求。然后,iss1105从这个请求的url提取文件名,将这个文件名与存储在其连接储存装置1190中的文件名进行比较,并且确定其先前已经通过使用服务节点1305处理了对这个内容片段的请求。

因而,iss1105与服务节点1305执行另一个3路tcp握手,以便与服务节点1305建立另一个l4连接会话。一旦建立了这个会话,iss1105就向这个服务节点中继该内容请求,并且在获得响应数据分组之后将它们中继到其vm。

这种方法是非常有益的,因为它节省了服务集群的必须获得相同的内容片段两次所需的资源。换句话说,去往同一服务节点是高效的,因为服务节点1305有可能仍然在其高速缓存或存储器中具有所请求的内容。当同一主机上的多个iss1105共享相同的连接储存装置时,这种方法也是有益的,因为当两个vm在特定的时间段内请求同一内容片段时,它允许一个vm的一个iss去往与另一个vm的iss相同的服务节点。

图14示出了vm159的iss1105执行以便以粘滞方式处理来自相关联的vm的服务请求的过程1400。在执行这个过程中,iss1105(1)确定请求是否与先前由服务-节点集群的服务节点处理的服务请求相关联,以及(2)如果是,则将服务请求引导到先前使用的服务节点。iss1105通过检查它在其连接储存装置1901中为先前的请求存储的l4+会话参数来确定该请求是否与先前处理的请求相关联。

当iss1105接收到由其相关联的vm发送的数据消息时,过程1400开始。在一些实施例中,iss1105被部署在vm的出口数据路径中,使得它可以截取由其vm发送的数据消息。在一些实施例中,iss1105由vm的vnic或通信连接到vm的vnic的sfe端口调用。在一些实施例中,接收到的数据消息被寻址到与服务节点集群相关联的目的地地址(例如,目的地ip或虚拟ip地址)。基于这种寻址,iss确定(在1405)数据消息是对由集群的服务节点执行的服务的请求。

在1410,该过程确定数据消息是否是该过程已为其处理其它数据消息的数据消息流的一部分。在一些实施例中,该过程通过检查其连接储存装置1190来做出这种确定,其中连接储存装置1190存储其最近处理的数据消息流的记录,如下面参考1445进一步描述的。每个记录存储该过程先前从它处理的先前数据消息中提取的一个或多个服务参数。这种会话参数的示例包括会话cookie、会话密钥、文件名、数据库服务器属性(例如,用户名),等等。每个记录还识别先前处理的作为同一流的一部分的数据消息的服务节点。在一些实施例中,这个记录还存储流的标识符(例如,五元组标识符)。此外,在一些实施例中,连接储存装置是可散列寻址的(例如,连接储存装置中的位置是基于流标识符的散列来识别的)。

当过程确定(在1410)它先前已经处理了来自与接收到的数据消息同一流的数据消息时,它变换到1415。在1415,该过程从连接储存装置1190检索服务节点的身份,这被用来处理同一流的先前数据消息,并将接收到的数据消息转发到识别出的服务节点进行处理。在一些情况下,在1415,该过程还(1)从连接储存装置1190检索针对数据消息的流的先前存储的(一个或多个)会话参数(例如,会话cookie),以及(2)向识别出的服务节点转发检索出的(一个或多个)参数,使得这个节点可以使用这(一个或多个)参数来处理转发的数据消息。在一些实施例中,过程1400不是将检索出的(一个或多个)服务参数转发到服务节点,而是在将数据消息转发到识别出的服务节点之前使用检索出的(一个或多个)服务参数对接收到的数据消息执行操作。而且,在一些实施例中,该过程提供不能在隧道密钥中编码的附加上下文信息(例如,租户id、网络id等)。在1415之后,过程1400结束。

当过程确定(在1410)它先前没有处理来自相同数据消息流的数据消息时,该过程建立(在1420)与vm的l4会话(例如,通过执行与vm的三路tcp握手)。在与其vm建立l4会话之后,该过程确定(在1425)由其vm发送的一个或多个分组的初始集合是否包含该过程可以用来确定其是否先前已经处理过类似服务请求的一个或多个l4服务参数。再次,这种会话参数的示例包括会话cookie、会话密钥、文件名、数据库服务器属性(例如,用户名),等等。

当分组的集合包括一个或多个这种l4服务参数时,该过程确定(在1420)连接储存装置1190是否包含用于识别出的(一个或多个)l4服务参数的记录。如果是,则过程变换到1415,以向记录的识别出的服务节点转发数据消息。在一些实施例中,过程1400还在1415执行其它操作,如上所述。过程1400可以从1410或1420变换到1415,因为该过程可以基于一个消息流的外部分组报头值(例如,l2、l3和l4值)或基于另一个消息流的内部分组值(例如,l4+参数)确定相同的会话记录是可应用的。当vm对跟着较早的相关服务会话的服务会话使用不同的源端口时,内部分组值可能与会话记录匹配,如上面参考图12所描述的。当vm请求相同的文件并且文件名被用来识别相同的服务节点时,结果也是如此,如上文参考图13所描述的。

当过程1400确定被检查的分组不包括连接储存装置为其存储将服务节点识别为用于处理vm的服务请求的服务节点的记录的l4+服务参数时,该过程使用(在1430)iss的负载均衡器来选择服务节点集群中的服务节点以处理来自vm的服务请求。为了以负载均衡的方式选择服务节点,过程1400使用与接收的消息流属性匹配的服务规则。服务规则指定服务节点的集合,以及针对规则的每个指定的服务节点的负载均衡标准(例如,权重值)集合。在一些实施例中,不同的服务规则指定必须执行的不同服务动作集合,并且用于规则的每个服务动作的负载均衡标准指定用于在用于那个动作的服务节点之间分发数据消息的标准。

在选择(在1430)用于数据消息的服务节点之后,该过程建立(在1435)与服务节点的l4会话(例如,通过与服务节点的三路tcp握手),因为它软终止与vm的会话。接下来,在1440,该过程使用这个连接会话向选定的服务节点转发其从vm接收的数据消息。

通过这种连接,该过程还从选定的服务节点接收响应数据消息,并且通过其与vm的连接会话向vm转发这些接收到的数据消息。在往复中继数据消息时,如上所述,在一些实施例中,该过程调整数据消息的tcp序列号。在一些实施例中,该过程通过隧道与选定的服务节点交换消息。因此,在这些实施例中,该过程利用隧道报头封装其向服务节点中继的数据消息,并且从其从服务节点向vm传递的数据消息中去除这个隧道报头。当过程1400向服务节点中继数据消息时,在一些实施例中,它更新其在issstat储存装置中维护的统计信息,以跟踪其引导到不同服务节点的数据消息。

在1445,该过程在连接储存装置1190中存储它从在vm与选定的服务节点之间中继的数据消息中提取的一个或多个l4+参数。在一些实施例中,如上面所提到的,该过程在记录中存储识别选定的服务节点的l4+参数集合。通过存储用于提取出的l4+参数集合的选定的服务节点的身份,该过程可以稍后重用选定的服务节点来处理与相同的l4+参数集相关的数据消息。在一些实施例中,在1445创建的记录还存储在1405接收的数据消息的流标识符,使得这个记录还可以基于流的外部分组报头属性来识别。在1445之后,过程结束。

以上参考图12-14描述的实施例的内联服务交换机选择服务节点集群中的服务节点,并向选定的服务节点中继数据消息。但是,如上所述,一些实施例的内联服务交换机选择一组服务节点集群中的服务节点集群,并向选定的集群转发数据消息。普通技术人员将认识到的是,一些实施例的内联服务交换机通过以粘滞方式向(执行相同服务的)服务集群转发数据消息来实现粘滞服务请求处理。换句话说,这些实施例中的内联交换机存储允许这个交换机向集群组中执行相同服务的相同服务节点集群转发相同或相似的服务会话请求的l4+会话参数。

图15示出了执行本发明一些实施例的iss过滤器的主机1500的更详细的体系架构。如图所示,主机1500执行多个vm1505、sfe1510、多个iss过滤器1530、多个负载均衡器1515、代理1520,以及发布器1522。每个iss过滤器具有相关联的iss规则储存装置1550,统计(stat)数据储存装置1554,以及连接-状态储存装置1590。主机还具有聚合(全局)统计数据储存装置1586。

在一些实施例中,vm在管理程序之上执行,其中管理程序是启用主机的共享硬件资源的虚拟化的软件层。在这些实施例中的一些当中,管理程序提供iss过滤器,以便支持内联服务将服务切换到其vm。

sfe1510在主机上执行,以通过在主机外部操作的一个或多个转发元件(例如,交换机和/或路由器)将主机的vm彼此通信地耦合并耦合到主机外部的其它设备(例如,其它主机上的其它vm)。如图所示,sfe1510包括连接到主机的物理网络接口卡(未示出)的端口1532,以及连接到每个vm的每个vnic1525的端口1535。

在一些实施例中,vnic是由虚拟化软件(例如,由管理程序)实现的物理网络接口卡(pnic)的软件抽象。每个vnic负责通过其对应的sfe端口在其vm和sfe1510之间交换数据消息。如图所示,vm用于其数据消息的入口数据路径包括sfe端口1532、sfe1510、sfe端口1535,以及vm的vnic1525。vm用于其数据消息的出口数据路径涉及相同的组件,但是在相反的方向,具体而言是从vnic1525到端口1535、到sfe1510,然后到端口1532。

通过其端口1532和nic驱动器(未示出),sfe1510连接到主机的pntc,以发送传出分组并接收传入分组。sfe1510执行消息处理操作,以向其另一个端口转发它在其一个端口上接收的消息。例如,在一些实施例中,sfe尝试使用vm数据消息中的报头值来匹配消息到基于流的规则,并且在找到匹配时,执行由匹配的规则指定的动作(例如,以向其端口1532或1535中的一个传递分组,这指示分组被提供给目的地vm或pnic)。在一些实施例中,sfe从数据消息中提取虚拟网络标识符(vni)和mac地址。这些实施例中的sfe使用提取出的vni来识别逻辑端口组,然后使用mac地址来识别端口组内的端口。在一些实施例中,sfe1510是软件交换机,而在其它实施例中,它是软件路由器或组合的软件交换机/路由器。

在一些实施例中,sfe1510实现一个或多个逻辑转发元件(例如,逻辑交换机或逻辑路由器),其中sfe在多主机环境中的其它主机上执行。在一些实施例中,逻辑转发元件可以跨多个主机,以连接在不同主机上执行但属于一个逻辑网络的vm。换句话说,可以定义不同的逻辑转发元件,以便为不同的用户指定不同的逻辑网络,并且每个逻辑转发元素可以由多个主机上的多个sfe定义。每个逻辑转发元件将一个逻辑网络的vm的流量与由另一逻辑转发元件服务的另一个逻辑网络的vm隔离。逻辑转发元素可以连接在同一主机和/或不同主机上执行的vm。

在一些实施例中,sfe端口1535包括对一个或多个模块的一个或多个功能调用,这些模块对在端口处接收的传入和传出的分组实现具体的输入/输出(i/o)操作。对端口的这些功能调用之一是针对iss过滤器1530的。在一些实施例中,iss过滤器对来自过滤器的vm的传出的数据消息执行服务交换机操作。在图15中所示的实施例中,每个端口1535具有其自己的iss过滤器1530。在其它实施例中,端口1535中的一些或全部共享相同的iss过滤器1530(例如,同一主机上的所有端口共享一个iss过滤器,或者主机上作为同一逻辑网络的一部分的所有端口共享一个iss过滤器)。

通过端口1535的功能调用实现的其它i/o操作的示例包括防火墙操作、加密操作等。在一些实施例中,通过实现这种功能调用的堆栈,端口可以对传入和/或传出的消息实现i/o操作链。在图15中所示的示例中,从端口1535调用iss过滤器用于由vm发送的数据消息。其它实施例从vm的vnic或从sfe的端口1532调用iss过滤器用于由vm发送的数据消息,或者从vm的vnic1525、端口1535或端口1532调用这个过滤器用于为vm接收的数据消息(即,沿着vm的入口路径部署服务操作调用)。

对于由其相关联的vm发送的数据消息,iss过滤器1530强制执行存储在iss规则储存装置1550中的一个或多个服务规则。这些服务规则实现一个或多个服务策略。基于服务规则,iss过滤器(1)确定所发送的数据消息是否应当由一个或多个服务节点或集群处理,(2)如果是,则选择用于处理数据消息的服务节点或集群,并向选定的节点或集群转发数据消息(例如,通过隧道)。

在一些实施例中,服务规则储存装置1550中的每个服务规则具有(1)相关联的数据消息标识符(例如,分组报头值)的集合,(2)一个或多个动作的集合,(3)对于每个动作,执行该动作的服务节点或服务节点集群的集合,以及(4)对于每个动作,用于在规则的服务节点或服务节点集群的集合中选择服务节点或集群的负载均衡准则集合。如下面进一步描述的,在一些实施例中,规则可以通过为连接到服务节点或集群的隧道(例如,从主机、或sfe或iss过滤器)提供标识符来识别服务节点或集群。

在被调用处理数据消息之后,在一些实施例中,iss过滤器1530确定接收到的数据消息的标识符(例如,五元组)是否与其服务规则储存装置中的服务规则的数据消息标识符匹配。当接收到的数据消息的报头值与服务规则储存装置中的一个或多个服务规则的规则匹配标识符不匹配时,iss过滤器1530通知端口1535它已经完成数据消息的处理,而不对数据消息执行任何服务。iss过滤器还在其连接储存装置1590中存储这个决定的记录。这个记录识别数据消息流标识符(例如,其五元组标识符)并且识别出不需要为这个数据消息流执行服务动作。这个记录可以被用于同一流的后续数据消息的快速处理。

当数据消息的报头值与服务规则匹配时,iss过滤器执行利用匹配的服务规则指定的动作集合。当动作集合包括多于一个操作时,iss过滤器顺序地执行服务动作。在一些实施例中,匹配的服务规则的服务动作由sn组的服务节点或sn集群组的sn集群执行。因而,为了执行这种服务动作,iss过滤器选择用于处理数据消息的服务节点或集群,并向选定的节点或集群转发数据消息。

在一些实施例中,iss过滤器1530通过隧道向选定的节点或集群转发数据消息。在其它实施例中,iss过滤器1530通过隧道连接到一些服务节点/集群,而不使用隧道连接到其它服务节点/集群。例如,在一些实施例中,iss过滤器1530可能使用l3或l4目的地网络地址转换(dnat)或mac重定向来向一些服务节点转发数据消息。而且,在一些实施例中,一个或多个服务节点可能在与iss过滤器1530相同的主计算机1500上执行,并且在这些实施例中,iss过滤器1530通过dnat、mac重定向或作为一些实施例的过滤器框架的一部分的某种其它转发机制将数据消息引导到这些服务节点。在一些实施例中,服务规则具有指定不同的重新定向机制的标识符,因为一个规则可以,或者不同的规则可以,识别通过不同的重定向机制可访问的不同服务节点或sn集群。

当iss过滤器1530使用隧道向服务节点或集群发送数据消息时,在一些实施例中,iss过滤器使用隧道分组报头来封装数据消息。在一些实施例中,这种分组报头包括隧道密钥。在其它实施例中,iss过滤器1530具有另一个利用隧道分组报头封装数据消息的i/o链过滤器。

在一些实施例中,iss过滤器1530必须与服务节点建立l4连接会话。在一些实施例中,iss过滤器还必须与其vm建立l4连接会话。为了建立l4连接会话,在一些实施例中,iss过滤器与连接的另一端(例如,与服务节点或vm)执行三路tcp/ip握手。

如上面所提到的,在一些实施例中,匹配服务规则指定用于执行由规则指定的服务动作的每个服务节点或集群的集合的负载均衡标准集合。在这些实施例中,iss过滤器1530让其相关联的负载均衡器1550使用规则的指定的负载均衡标准来从指定的sn组中选择服务节点或者从指定的sn集群组中选择服务集群。

负载均衡器以负载均衡的方式向由负载均衡标准指定的服务节点或sn集群分发用于执行服务动作的数据消息负载。在一些实施例中,负载均衡标准是与服务节点或sn集群相关联的权重值。上面描述了使用权重值以负载均衡的方式向服务节点分发新的数据消息流的一个示例。

在一些实施例中,权重值由代理1520和/或控制器集合基于负载统计信息生成并调整。在一些实施例中,每个iss过滤器1530具有其自己的负载均衡器1515,而在其它实施例中,多个iss过滤器1530共享相同的负载均衡器1525(例如,作为一个逻辑网络的一部分的vm的iss过滤器在每个主机上使用一个负载均衡器1515)。

iss过滤器1530在连接状态储存装置1590中存储维护针对iss过滤器1530先前已处理的数据消息流的连接状态的数据记录。这种连接状态允许iss过滤器1530有状态地向相同的内容服务器分发作为同一流的一部分的数据消息。在一些实施例中,连接储存装置中的每个记录对应于iss过滤器1530先前已处理的数据消息流。

每个记录存储必须应用到流的数据消息的服务规则集合的描述,或者具有对这种描述的引用(例如,指针)。在一些实施例中,当服务规则集合的操作需要数据消息被丢弃时,连接-储存装置记录也指定这个动作,或者代替服务规则描述而指定这个动作。而且,当不需要对这个流的数据消息执行服务时,在一些实施例中,连接-储存装置记录指示iss应当允许接收到的数据消息沿着vm的出口数据路径传递。在一些实施例中,这个记录存储流的标识符(例如,五元组标识符)。此外,在一些实施例中,连接储存装置是可散列寻址的(例如,连接储存装置中的位置是基于流标识符的散列来识别的)。当iss过滤器1530存储l4+会话参数时,在这些实施例中的一些当中,iss过滤器1530将这个参数存储在连接状态储存装置1590中。

在一些实施例中,每当iss过滤器将消息引导到服务节点或sn集群时,对于它中继到服务节点和/或集群的数据流量,iss过滤器更新其在它stat数据储存装置1554中维护的统计信息。这种统计信息的示例包括被中继到每个服务节点或集群的数据消息的数量(例如,分组的数量)、数据消息流和/或数据消息字节。在一些实施例中,度量可以被规格化到单位时间,例如,每秒、每分钟等。

在一些实施例中,代理1520采集(例如,周期性地收集)iss过滤器存储在stat数据储存装置1554中的统计信息,并将这些统计信息中继到控制器集合。基于控制器集合从各种主机的各种代理1520采集的统计信息,控制器集合(1)向每个主机的代理1520分发聚合的统计信息,使得每个代理可以为其主机上的负载均衡器定义和/或调整负载均衡标准,和/或(2)分析聚合的统计信息,以指定和向主机分发负载均衡标准的部分或全部。在控制器集合根据聚合的统计信息生成负载均衡标准的一些实施例中,控制器集合向主机的代理1520分发生成的负载均衡标准。

在其中代理1520从控制器集合接收新的负载均衡标准或新的iss规则的实施例中,代理1520将这些标准或新规则存储在主机级规则储存装置1588中,用以传播到iss规则储存装置1550。在其中代理1520从控制器集合接收聚合的统计信息的实施例中,代理1520将聚合的统计信息存储在全局统计数据储存装置1586中。在一些实施例中,代理1520分析这个储存装置1586中的聚合的统计信息,以定义和/或者调整负载均衡标准(例如,权重值),然后将其存储在规则储存装置1588中,用以传播到iss规则储存装置1550。发布器1522检索代理1520存储在规则储存装置1588中的每个服务规则和/或更新的负载均衡标准,并且将检索出的规则或标准存储在需要强制执行这个规则或标准的每个iss过滤器的iss规则储存装置1550中。

代理1520不仅基于新接收的聚合的统计信息传播服务规则更新,而且还基于对它从控制器集合接收的sn组或集群组的更新来传播服务规则或更新服务规则。再次,代理1520将这种更新的规则存储在规则数据储存装置1588中,从那里发布器将它们传播到需要强制执行这些规则的iss过滤器1530的iss规则储存装置1550。在一些实施例中,控制器集合向iss代理1520提供iss代理转换为让iss过滤器实现的服务规则的高级服务策略。在一些实施例中,代理1520通过带外控制信道与控制器集合进行通信。

一些实施例提供了用于重新配置数据中心中的应用或服务层部署的控制器驱动的方法。在一些实施例中,控制器集合120为主计算机提供用于建立若干隧道的参数,每个隧道在主计算机和可以与主计算机处于相同数据中心中或者可以与数据中心处于不同位置的服务节点之间。在一些实施例中,所提供的隧道建立参数包括隧道报头分组参数。在一些实施例中,这些参数还包括隧道密钥,而在其它实施例中,这些参数包括用于生成隧道密钥的参数。在一些实施例中,隧道密钥被用来允许多个不同的数据消息流使用从主机到服务节点的一个隧道。在一些实施例中,建立隧道需要利用供应的隧道参数(例如,隧道报头参数、隧道密钥等)配置在隧道端点的模块。

在一些实施例中,隧道将主计算机与在同一数据中心内或在数据中心外部操作的一个或多个服务提供商的若干服务节点连接。在一些部署中,在每个主机和服务节点之间只建立一条隧道,并且该主机上的所有iss过滤器都使用相同的隧道将数据消息中继到服务节点。这样做可以减少隧道的数量。这种方法可以被看作是在主机的sfe和服务节点之间建立一条隧道。在其它部署中,在主机和服务节点之间建立多于一条隧道。例如,在一些部署中,在主机上的每个iss过滤器和服务节点之间建立一条隧道。

在一些实施例中,控制器集合120为数据中心中的scn定义数据消息分发规则,并将这些规则推送到scn的iss过滤器。然后,iss过滤器将数据消息分发到由分发规则识别为用于数据消息的数据计算节点(dcn)的dcn。在其它实施例中,控制器集合120为数据中心中的scn定义数据消息分发策略,并将这些策略推送到执行scn的主机。然后主机从这些策略中生成分发规则,然后基于这些策略配置其iss过滤器。

在一些实施例中,分发规则包括(1)用来识别与规则匹配的数据消息流的规则标识符,以及(2)用于与规则匹配的数据消息流的服务动作集合。在一些实施例中,规则标识符可以按照由应用级网关指派的组标识符(诸如虚拟ip地址(vip))或元数据标签来定义。

在一些实施例中,通过参考识别用于执行服务动作的服务节点集合的标识符来定义规则的每个服务动作。一些规则可以指定由两个或更多个服务提供商的两个或更多个服务节点集合执行的两个或更多个服务动作。在一些实施例中,每个服务-节点集合是服务节点集群,并且在规则中参考识别(1)到服务节点集群的一条隧道或者(2)识别服务-节点集群中的每个服务节点的一条隧道的隧道标识符集合来定义。

对于每个服务动作,分发规则还包括用于规则的每个服务动作集合的选择标准集合。在一些实施例中,选择标准集合包括被动态评估的一个或多个标准(例如,基于在主机上执行的scn的身份,等等)。在一些实施例中,选择标准集合是指定用于在执行服务动作的服务节点之间分发新的数据消息流的标准的负载均衡标准集合。

这种控制器驱动的方法可以无缝地重新配置数据中心中的应用或服务层部署,而不必将scn配置为使用新的组地址或标签(例如,新的vip)。控制器集合只需要为内联交换机提供新的分发规则,该分发规则基于先前配置的组地址或标签来规定新的流量分发模式。在一些实施例中,无缝的重新配置可以基于由scn使用的任意分组报头参数(例如,l2、l3、l4或l7参数)。换句话说,在一些情况下,这些分组报头参数不一定要包括组地址或标签。

如上面所提到的,在一些实施例中,内联交换机可以被配置为基于与分组相关联并且由应用级网关(alg)注入到分组(例如,作为l7参数)中的元数据标签来分发数据消息。例如,由于alg被配置为在分组进入网络域(例如,逻辑域)时检查和标记分组,因此,在一些实施例中,控制器集合被配置为将新的分发策略和/或规则推送到配置这些交换机在网络域中实现新的应用或服务层部署的内联交换机。

现在将参考图16-19描述一些实施例的控制器驱动的方法。图16示出了控制器重新配置应用层部署以在web服务器1605的集合和应用服务器1610的集合之间插入防火墙服务操作的的示例。这个图示出了实现三服务器层部署的数据中心,其中第一层包括一个或多个web服务器1605,第二层包括一个或多个应用服务器1610,并且第三层包括一个或多个数据库服务器1615。

如图所示,控制器1620最初利用消息分发规则配置web服务器1610的内联交换机1630,其中消息分发规则指示交换机向应用服务器转发具有特定vip(vip1)作为其目的地ip地址的接收到的分组流。图16示出了这个规则1650的示例。如图所示,这个规则将vip1指定为流匹配属性,as(应用服务器)类型作为要执行的动作类型,ip地址集合1作为应用服务器1610的ip地址的集合。

在最初配置内联交换机1630之后一段时间,控制器1620用新的分组分发规则1655重新配置这些交换机1630,新的分组分发规则1655指示交换机(1)首先将这种分组流(即,具有vipl用作其目的地ip地址的分组流)转发到防火墙服务器1625的集合,然后(2)如果防火墙服务器不指示web服务器丢弃该分组流,则向应用服务器1610转发这个分组流的分组。附图所示,每个规则1655指定(1)vip1作为流匹配属性,(2)fw(防火墙)类型作为第一动作的类型,(3)ip地址集合2作为防火墙服务器1625的ip地址的集合,(4)as(应用服务器)类型作为第二动作的类型,以及(5)ip地址集合1作为应用服务器1610的ip地址的集合。

在一些实施例中,控制器1620提供给网络服务器交换机1630的新分组分发规则为具有vip1目的地ip的流规定了(1)首先识别防火墙操作,然后(2)识别应用级操作的服务策略链。这个新规则将替换仅为具有vip1目的地ip的流指定应用级别操作的先前规则。

在一些实施例中,对于规则指定的每个操作,规则包括或参考(1)执行那个操作的服务器集合的标识符(例如,ip地址、隧道标识符等),以及(2)用于将不同的流分发到集合中的不同服务器的负载均衡标准。在将数据消息引导到防火墙1625时,内联交换机基于负载均衡标准执行负载均衡操作,以在防火墙1625之间散布分组流负载。在一些实施例中,针对与多个不同服务策略集合相关联的多个不同的vip,控制器1620利用多个不同的规则配置内联交换机1630。

在图16的示例中,控制器重新配置web服务器1605(1)以将具有vip1作为目的地ip地址的分组流引导到防火墙服务器,然后在接收到关于是否不应当丢弃分组流的防火墙服务器评估之后,(2)将用于这个流的分组转发到应用服务器。图17示出,在其它实施例中,控制器1720(1)重新配置web服务器1705的内联交换机1730,以将具有目的地ip地址vip1的所有分组转发到防火墙服务器1725,以及(2)配置防火墙服务器1725,以便如果防火墙服务器1725确定不应当丢弃分组,则这个方法将这些分组直接转发到应用服务器1710。

如图所示,控制器1720最初利用上面描述的规则1650配置内联交换机。然后,控制器利用规则1755重新配置内联交换机,其中规则1755指定(1)vip1作为流匹配属性,(2)fw(防火墙)类型作为动作类型,以及(3)ip地址集合2作为防火墙服务器1725的ip地址集合。在图17的示例中,控制器然后配置防火墙服务器1725以向应用服务器1710直接转发任何通过的分组。在这些实施例的一些当中,控制器通过配置放在防火墙服务器的出口路径中的内联交换机以向应用服务器1710转发经防火墙处理的分组来配置防火墙服务器。

图18示出了控制器1620执行以为在主机上供应的vm的内联交换机定义服务策略规则的过程1800。如图所示,过程1800最初识别(在1805)要配置的新的内联交换机。接下来,在1810,该过程选择可以被用来识别内联交换机可以接收的分组流中的dcn组或安全策略/规则的虚拟标识符(例如,vip、虚拟地址等)。

在1815,过程1800识别与选定的虚拟标识符相关联的服务策略集合。服务策略集合指定需要对与选定的虚拟标识符相关联的分组流执行的一个或多个服务动作。然后该过程定义(在1820)用于识别出的服务策略集合的服务规则。对于服务策略集合中的每个服务动作,服务规则指定执行该服务动作的服务节点或服务节点集群的集合。

在1825,然后该过程在识别出的服务策略集合中选择服务动作。接下来,在1830,该过程生成并在既定的规则(即,在1820定义的规则)中存储用于执行选定的服务动作的服务节点集合或服务-节点集群的集合的负载均衡标准。该过程基于服务节点或服务-节点集群集合的成员身份生成负载均衡标准,以及关于服务-节点或服务集群集合上控制器从内联交换机收集的分组流负载的统计信息。

在1835,该过程确定它是否已经检查了识别出的服务策略集合中的所有服务动作。如果不是,则该过程选择(在1840)识别出的服务策略集合中的另一个服务动作,然后转换回1830,以生成并存储用于执行选定的服务动作的服务节点或服务-节点集群的集合的负载均衡标准。当过程确定它已经检查了识别出的服务策略集合中的所有服务动作时,该过程确定(在1845)它是否已经处理了可以被用来识别内联交换机可以接收的分组流中的dcn组或安全策略/规则的所有虚拟标识符。

如果不是,则该过程选择(在1850)另一个虚拟标识符,该虚拟标识符可以被用来识别内联交换机可以接收的分组流中的dcn组或安全策略/规则。在1850之后,该过程返回到1815,以便对选定的虚拟标识符重复操作1815-1850。当过程确定(在1845)它已经检查了用于内联交换机的所有虚拟标识符时,该过程结束。

在过程1800中,服务策略集合与可以在内联交换机可以接收的分组流中使用的虚拟标识符相关联。在其它实施例中,控制器可以为与两个或更多个虚拟标识符(例如,vip和l7标签)的集合或者与虚拟标识符和一个或多个其它分组报头值(例如,源ip地址、源端口地址等)相关联的服务策略集合定义服务规则。更一般地说,在一些实施例中,控制器可以定义服务规则,该服务规则定义实现服务策略集合的一个或多个服务动作,并且可以将这个服务规则与物理和/或虚拟分组报头值的任何任意组合相关联。

以这种方式,在一些实施例中,控制器可以无缝地重新配置数据中心中的应用或服务层部署,而不必将scn配置为使用新的dcn组地址(例如,新的vip)。控制器只需要向内联交换机提供新的分发规则,这些规则基于先前配置的dcn组地址和/或基于由scn使用的任何任意的分组报头参数(例如,l2、l3、l4或l7参数)来指定新的流量分发模式。

图19示出了用于修改服务规则并重新配置实现这个服务规则的内联服务交换机的过程1900。在一些实施例中,这个过程由一个或多个控制器的集合中的每个控制器执行。如图所示,当过程1900接收到对于控制器集合先前已经为其生成服务规则并将这个服务规则分发到实现服务策略集合的一个或多个在线交换机的集合的服务策略集合的修改时,过程1900开始(在1905)。接收到的修改可以涉及一个或多个服务动作从服务策略集合的去除或者一个或多个服务动作向服务策略集合的添加。可替代地或相结合地,接收到的修改可以涉及服务策略集合中一个或多个服务动作的重新排序。

接下来,在1910,过程1900改变服务规则中的服务动作链,以考虑接收到的修改。这种改变可以在规则的操作链中插入一个或多个服务动作,可以从规则的动作链中去除一个或多个服务动作,或者以重新排序规则的动作链中的一个或多个服务动作。在一些实施例中,服务规则通过指定(1)两个或更多个服务动作类型和(2)对于每个服务动作类型指定识别执行该服务动作类型的服务节点或服务-节点集群的集合的ip地址集合来指定服务动作链。在一些实施例中,每个服务规则还为每个动作类型的ip地址集合指定负载均衡标准集合。

对于服务动作链中的每个新的服务动作,过程1900然后定义(在1915)负载均衡标准集合(例如,用于加权的轮询负载均衡方案的权重值集合)。在一些实施例中,该过程基于(1)执行服务动作的服务节点或服务-节点集群的集合的成员身份,以及(2)控制器从内联交换机收集的关于服务-节点或服务-集群集合的分组流负载的统计信息来生成负载均衡标准集合。

最后,在1920,该过程将经修改的服务规则分发给执行处理该服务规则的内联服务交换机的主机。这些是可能遇到与经修改的服务规则相关联的分组的内联服务交换机。在1920之后,过程结束。

许多上述特征和应用被实现为被指定为记录在计算机可读存储介质(也被称为计算机可读介质)上的指令集的软件过程。当这些指令由一个或多个处理单元(例如,一个或多个处理器、处理器核心或其它处理单元)执行时,它们使(一个或多个)处理单元执行指令中所指示的动作。计算机可读介质的示例包括但不限于cd-rom、闪存驱动器、ram芯片、硬盘驱动器、eprom等。计算机可读介质不包括无线地或经有线连接传递的载波和电子信号。

在本说明书中,术语“软件”意在包括驻留在只读存储器中的固件或存储在磁存储器中的应用,其可以被读取到存储器中,以供处理器处理。而且,在一些实施例中,多个软件发明可以被实现为更大程序的子部分,同时保留不同的软件发明。在一些实施例中,多个软件发明也可以被实现为单独的程序。最后,一起实现这里描述的软件发明的单独程序的任意组合在本发明的范围内。在一些实施例中,当被安装成在一个或多个电子系统上操作时,软件程序定义运行并执行软件程序的操作的一个或多个具体的机器实现。

图20概念性地示出了利用其实现本发明一些实施例的电子系统2000。电子系统2000可以被用于执行上述控制、虚拟化或操作系统应用中的任何一个。电子系统2000可以是计算机(例如,台式计算机、个人计算机、平板计算机、服务器计算机、主机、刀片计算机等)、电话、pda或任何其它种类的电子设备。这种电子系统包括各种类型的计算机可读介质和用于各种其它类型的计算机可读介质的接口。电子系统2000包括总线2005、(一个或多个)处理单元2010、系统存储器2025、只读存储器2030、永久储存装置2035、输入设备2040和输出设备2045。

总线2005共同表示通信连接电子系统2800的多个内部设备的所有系统、外围设备和芯片集总线。例如,总线2005将(一个或多个)处理单元2010与只读存储器2030、系统存储器2025和永久储存装置2035通信连接。

从这些各种存储器单元,(一个或多个)处理单元2010检索要执行的指令和要处理的数据,以便执行本发明的过程。在不同的实施例中,(一个或多个)处理单元可以是单个处理器或多核心处理器。

只读存储器(rom)2030存储(一个或多个)处理单元2010和电子系统的其它模块所需的静态数据和指令。另一方面,永久储存装置2035是读写存储器设备。这种设备是即使当电子系统2000关闭时也存储指令和数据的非易失性存储器单元。本发明的一些实施例使用大容量存储设备(诸如磁或光盘及其对应的盘驱动器)作为永久储存装置2035。

其它实施例使用可移动储存装置(诸如软盘、闪存驱动器等)作为永久储存装置。就像永久储存装置2035,系统存储器2025是读写存储设备。但是,与储存装置2035不同,系统存储器是易失性读写存储器,诸如随机存取存储器。系统存储器存储处理器在运行时需要的一些指令和数据。在一些实施例中,本发明的过程存储在系统存储器2025、永久储存装置2035和/或只读存储器2030中。从这些各种存储器单元,(一个或多个)处理单元2010检索要执行的指令和要处理的数据,以便执行一些实施例的过程。

总线2005还连接到输入和输出设备2040和2045。输入设备使得用户能够向电子系统传送信息和选择命令。输入设备2040包括字母数字键盘和定点设备(也称为“光标控制设备”)。输出设备2045显示由电子系统生成的图像。输出设备包括打印机和显示设备,诸如阴极射线管(crt)或液晶显示器(lcd)。一些实施例包括诸如既充当输入设备又充当输出设备的触摸屏的设备。

最后,如图20中所示,总线2005还通过网络适配器(未示出)将电子系统2000耦合到网络2065。以这种方式,计算机可以是计算机的网络(诸如局域网(“lan”)、广域网(“wan”)或内联网)的一部分或者是网络的网络(诸如互联网)的一部分。电子系统2000的任何或全部部件可以与本发明结合使用。

一些实施例包括将计算机程序指令存储在机器可读或计算机可读介质(作为替代,被称为计算机可读存储介质、机器可读介质或机器可读存储介质)中的电子部件,诸如微处理器、储存装置和存储器。这种计算机可读介质的一些示例包括ram、rom、只读光盘(cd-rom)、可记录光盘(cd-r)、可重写光盘(cd-rw)、只读数字通用光盘(例如,dvd-rom、双层dvd-rom)、各种可记录/可重写dvd(例如,dvd-ram、dvd-rw、dvd+rw等)、闪存(例如,sd卡、迷你sd卡、微型sd卡等)、磁和/或固态硬盘驱动器、只读和可记录盘、超密光盘、任何其它光或磁介质,以及软盘。计算机可读介质可以存储可由至少一个处理单元执行的计算机程序并且包括用于执行各种操作的指令集。计算机程序或计算机代码的示例包括诸如由编译器产生的机器代码,以及包括由计算机、电子部件或微处理器利用解释器执行的更高级代码的文件。

虽然上述讨论主要参考执行软件的微处理器或多核心处理器,但是一些实施例由一个或多个集成电路(诸如专用集成电路(asic)或现场可编程门阵列(fpga))执行。在一些实施例中,这种集成电路执行存储在电路本身上的指令。

如本说明书中所使用的,术语“计算机”、“服务器”、“处理器”和“存储器”全都是指电子或其它技术设备。这些术语不包括人或人的群体。为了本说明书的目的,术语“显示”是指在电子设备上显示。如本说明书中所使用的,术语“计算机可读介质”和“机器可读介质”被完全限于以计算机可读的形式存储信息的有形的物理对象。这些术语排除了任何无线信号、有线下载信号和任何其它短暂信号。

虽然已经参考众多具体细节描述了本发明,但是本领域普通技术人员将认识到,在不背离本发明的精神的情况下,本发明可以以其它具体形式体现。例如,在上述若干实施例中,内联交换机沿着scn的出口数据路径截取数据消息。但是,在其它实施例中,内联交换机沿着scn的入口数据路径截取数据消息。

此外,多个附图概念性地示出了过程。这些过程的具体操作可以不按所示和所描述的确切次序执行。具体操作可以不在一个连续的操作序列中执行,并且在不同的实施例中可以执行不同的具体操作。此外,过程可以利用若干子过程来实现,或者作为更大的宏过程的一部分来实现。因此,本领域普通技术人员将理解,本发明不受前述说明性细节限制,而是由所附权利要求限定。

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