CN104272708A - 带有到服务器群组的无状态第一级分组分布和到群组内某个服务器的有状态第二级分组分布的二级分组分布 - Google Patents

带有到服务器群组的无状态第一级分组分布和到群组内某个服务器的有状态第二级分组分布的二级分组分布 Download PDF

Info

Publication number
CN104272708A
CN104272708A CN201380023427.7A CN201380023427A CN104272708A CN 104272708 A CN104272708 A CN 104272708A CN 201380023427 A CN201380023427 A CN 201380023427A CN 104272708 A CN104272708 A CN 104272708A
Authority
CN
China
Prior art keywords
server
grouping
state
stream
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201380023427.7A
Other languages
English (en)
Other versions
CN104272708B (zh
Inventor
M.阿里索伊卢
A.阿罗拉
P.阿南德
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of CN104272708A publication Critical patent/CN104272708A/zh
Application granted granted Critical
Publication of CN104272708B publication Critical patent/CN104272708B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1014Server selection for load balancing based on the content of a request
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1027Persistence of sessions during load balancing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1006Server selection for load balancing with static server selection, e.g. the same server being selected for a specific client
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1023Server selection for load balancing based on a hash applied to IP addresses or costs

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

一种在一个或更多个网络元素中在要处理分组的服务器之间分布分组的方法,这些网络元素处于在传送分组的客户端与服务器之间的通信中。将流的粘度提供到被指派成处理流的服务器。在静态第一级分组分布模块接收流的分组。通过第一级模块为流的分组静态选择服务器群组。不使用将流的分组指派到选择的服务器群组的状态。将流的分组分布到分布式有状态第二级分组分布系统。通过访问将流的分组的处理指派到选择的服务器的状态,使用第二级系统静态选择选择的群组的服务器。将流的分组分布到选择的服务器。

Description

带有到服务器群组的无状态第一级分组分布和到群组内某个服务器的有状态第二级分组分布的二级分组分布
技术领域
本发明的实施例涉及组网领域,并且更具体地说,涉及在组网中服务器之间分布分组。
背景技术
组网中有客户端或服务请求者通过一个或更多个网络与服务器或服务或资源的提供商进行通信的许多示例。客户端一般请求资源或执行服务,并且服务器执行服务或者提供资源。经常提供了服务器的集合以便提供更大的服务能力、弹性或高可用性(例如,在服务器发生故障或者变成离线的情况下)等。例如,仅举几例,服务器农场可用于提供与网站、因特网中继聊天网络、高带宽文件传送协议站点、网络新闻传送协议(NNTP)服务器、域名系统(DNS)服务器相关联的服务。
服务器负载平衡通常用于在服务器的集合之间分布来自客户端的服务请求,以便在服务器的集合之间平衡或更均匀地分布与处理服务请求相关联的负载(例如,处理负载或工作负载)。在某些约束内,服务器负载平衡通常有助于防止一些服务器过载而其它服务器却利用不足。此类服务器负载平衡通常提供诸如增大的资源利用率、提高的性能、增大的吞吐量、缩短的响应时间、降低的服务器负载等优点。另外,服务器负载平衡也可与通过在服务器之一发生故障,变成离线等时重新分布负载而提供弹性或高可用性相结合使用。通常,服务器负载平衡对于请求服务的客户端是透明的。
服务器负载平衡算法一般用于确定将服务请求或工作负载分布到哪些服务器。服务器负载平衡算法一般包括调度算法及其它算法。用于实现服务器负载平衡的算法有所有不同,有相对简单的算法,也有相对复杂的算法。相对简单的算法的示例包括随机选择算法和舍入算法。更复杂的算法的示例包括将诸如服务器的当前负载、服务器的运行/关闭(up/odwn)状况等与负载平衡有关的因素考虑在内的那些算法。举例而言,可使用加权舍入算法,并且服务器的权重可基于服务器的当前工作负载而动态改变。
普通类型的服务器负载平衡称为有状态服务器负载平衡。在用于有状态服务器负载平衡的一个已知方案中,在服务器负载平衡器检测流的第一分组。例如,通过检查SYN分组的报头,可检测到TCP连接的SYN分组。服务器负载平衡器使用服务器负载平衡算法(例如,随机选择算法或舍入算法)选择或指派服务器以处理TCP连接。将包括用于TCP连接的标识符和用于被指派成处理TCP连接的服务器的标识符的实体作为状态添加到由服务器负载平衡器保持的状态表中。随后,在收到TCP连接的另外分组时,服务器负载平衡器执行到状态表中的表查找。表查找定位映射TCP连接标识符到服务器标识符的条目。服务器负载平衡器将另外的分组转发到识别的服务器。在此类有状态方案中,基于以前负载平衡判定(例如,基于通过负载平衡算法的以前计算)的状态被存储或保持,并且用于做出随后的负载平衡判定。
此类有状态服务器负载平衡方案往往具有某些缺陷,特别是在连接的数量大时。例如,在连接的数量大时,状态表的大小往往相应变大。因此,存储表的存储空间量通常增大。此外,执行表查找所需的时间和处理资源通常也增大。可为收到的用于每个建立的连接的每个分组执行此类表查找。另外,可为每个新连接执行负载平衡算法。因此,特别是在连接的数量大时,此类方案可能可造成服务器负载平衡器受存储器和/或处理资源的资源耗尽影响。备选,为尽力避免此类资源耗尽,负载平衡器可在硬件方面配给高,这通常往往相应地使它们变得成本高。如果提供冗余或备份服务器负载平衡器(例如,以实现弹性或高可用性),则另一潜在的缺陷是可产生相当大的通信和处理开销以便同步冗余或备份服务器负载平衡器的状态(例如,状态表)。
发明内容
一方面,一种在一个或更多个网络元素中执行的在要处理分组的服务器之间分布分组的方法,这些网络元素处于在传送分组的客户端与服务器之间的通信中。将分组的流的粘度提供到被指派成处理流的分组的服务器。方法包括在静态第一级分组分布模块接收流的分组的步骤。方法也包括使用静态第一级分组分布模块,从服务器的多个群组中静态选择用于流的分组的服务器群组的步骤。静态选择服务器群组不涉及使用将流的分组指派到选择的服务器群组的状态。方法还包括将流的分组分布到分布式有状态第二级分组分布系统的步骤。还包括通过访问指派流的分组的处理到选择的服务器的状态,使用分布式有状态第二级分组分布系统,静态选择要处理流的分组的选择的服务器群组的服务器的步骤。方法包括将流的分组分布到选择的服务器的步骤。根据实现可获得的优点包括有效处理大量流的能力和/或有效处理多个流而无需过度硬件配给(provisioning)的能力,避免在分组分布的第一级中使用状态的能力及服务器具动态性而不破坏现有流的粘度的能力。
另一方面,多级分组分布系统配置成部署在网络中在传送分组的客户端与服务器之间的一个或更多个网络元素中。多级分组分布系统可用于在服务器之间分布分组,同时将分组的流的粘度提供到服务器。多级分组分布系统包括配置成接收流的分组的静态第一级分组分布模块。静态第一级分组分布模块可用于从服务器的多个群组中静态选择用于流的分组的服务器群组。静态选择服务器群组不涉及使用将流的分组指派到选择的服务器群组的状态。多级分组分布系统也包括与静态第一级分组分布模块通信的分布式有状态第二级分组分布系统。分布式有状态第二级分组分布系统包括多个分布式有状态第二级分组分布模块。分布式有状态第二级分组分布模块可用于静态选择要处理流的分组的选择的服务器群组的服务器。静态选择服务器群组涉及使用将流指派到选择的服务器的状态。分布式有状态第二级分组分布系统可用于将分组分布到选择的服务器。根据实现可获得的优点包括有效处理大量流的能力和/或有效处理多个流而无需过度硬件配给(provisioning)的能力,避免在分组分布的第一级中使用状态的能力及服务器具动态性而不破坏现有流的粘度的能力。
附图说明
通过参照下面的说明和用于示出本发明实施例的附图,可最好地理解本发明。在图中:
图1是具有多级分组分布系统的一实施例的网络的框图,该多级分组分布系统可用于在被指派成处理分组的服务器之间分布分组的流,同时将流的粘度提供到服务器。
图2是二级分组分布系统的一更详细实施例的框图,该二级分组分布系统可用于在服务器之间分布分组,并且将分组的流的粘度提供到服务器。
图3是包括静态/无状态第一级分组分布模块的二级分组分布系统的框图,静态/无状态第一级分组分布模块在与用于实现分布式有状态第二级分组分布系统的硬件不同的硬件上实现。
图4是在单个网络元素中实现的二级分组分布系统的框图。
图5是在要处理分组的处理器之间分布分组,同时将分组的流的粘度提供到被指派成处理流的分组的服务器的方法的一实施例的流程框图,方法可在一个或多个网络元素中执行,网络元素处于在传送分组的客户端与服务器之间的通信中。
图6是方法的一实施例的流程框图,方法可由用于类型1流的选择的群组的每个分布式有状态第二级分组分布模块执行以选择处理分组的服务器。
图7是方法的一实施例的流程框图,方法可由用于类型1或类型2流的选择的群组的每个分布式有状态第二级分组分布模块执行以选择处理分组的服务器。
图8是具有流表的对应示例集合的群组的分布式有状态第二级分组分布模块的集合的一实施例的框图。
图9是具有流表的对应示例集合和存在的其它(exists-on-others)流表的对应示例集合的群组的分布式有状态第二级分组分布模块的集合的一实施例的框图。
图10是在分布式有状态第二级分组分布模块的群组之间分布类型1和类型2流的一实施例的框图。
图11是可用于相互发送消息的分布式有状态第二级分组分布模块群组的一实施例的框图,其中,消息指示对应服务器的状态和/或负载。
图12是对应于相互交换消息的不同服务器群组的分布式分布式有状态第二级分组分布模块的一实施例的框图,其中,消息指与对应服务器群组相关联的状态和/或负载。
图13是可用于有效转发较大流量流(例如,大象流(elephant flow))和较小流量流(例如,小流(mice flow))的分组的二级分组分布系统的一实施例的框图。
具体实施方式
在下面的描述中,陈述了许多特定的细节以提供本发明更详尽的理解,如特定的网络配置、算法、操作的序列、数据结构、分区/集成选择及诸如此类。然而,要理解的是,实践本发明的实施例可无需这些特定细节。在其它情况下,公知的电路、结构和技术未详细显示以免混淆对此描述的理解。
在本文中使用时,网络元素(例如,路由器、交换器、桥接器)是一件连网设备,包括硬件和软件,其在通信上与网络上的其它设备(例如,其它网络元素、计算机终端站等)互连。一些网络元素是“多服务网络元素”,其为多个连网功能(例如,路由选择、桥接、交换、第2层聚合、会话边界控制、服务质量和/或订户管理)提供支持和/或为多个应用服务(例如,数据、话音和视频)提供支持。订户终端站(例如,客户端、工作站、膝上型计算机、上网本、掌上型计算机、移动电话、智能电话、多媒体电话、因特网协议话音(VOIP)电话、用户设备、终端便携式媒体播放器、GPS单元、游戏系统、机顶盒(STB))访问通过因特网提供的内容/服务和/或在因特网上重叠(例如,隧穿)的虚拟专用网(VPN)上提供的内容/服务。内容和/或服务一般由属于参与对等服务的服务或内容提供商或终端站的一个或更多个终端站(例如,服务器终端站)提供,并且可例如包括公共网页(例如,免费内容、店面、搜索服务)、私人网页(例如,提供电子邮件服务的用户名/密码访问网页)和/或通过VPN的企业网络等。一般情况下,订户终端站耦合(例如,通过耦合到接入网络(以有线或无线方式)的客户场所设备)到边缘网络元素,所述边缘网络元素耦合(例如通过到其它边缘网络元素的一个或更多个核心网络元素)到其它终端站(例如,服务器终端站)。
图1是具有客户端101、服务器112和多级分组分布系统100的一实施例的网络的框图,客户端可用于传送分组的流,服务器可用于处理分组,多级分组分布系统可用于在服务器之间分布分组并且将流的粘度提供到被指派成处理流的分组的服务器。在一些实施例中,多级分组分布系统可表示多级服务器负载平衡系统,并且可用于在服务器之间大约均匀地分布或平衡与处理分组相关联的工作负载。其它实施例不限于此类服务器负载平衡。
客户端101耦合,连接到多级分组分布系统100,或者通过一个或更多个网络102与多级分组分布系统100进行通信。在图示中,示出了客户端1 101-1到客户端P 101-P,其中,P可以是任何整数。每个客户端可表示能够通过一个或更多个网络连接接入服务和/或资源的硬件和软件(例如,操作系统和客户端应用程序)的组合。适合客户端的示例包括但不限于无线客户端装置(例如,移动电话、膝上型计算机、移动计算机、手持式装置等)和有线客户端装置(例如,台式计算机、机顶盒等)。客户端可用于通过一个或更多个网络将连接或其它流105的分组传送或发送到多级分组分布系统。
多级分组分布系统100与一个或更多个网络102耦合,连接或进行通信,以接收来自客户端101的流105的分组。多级分组分布系统100也与服务器112的集合耦合,连接,或者与其进行通信。每个服务器可表示能够通过一个或更多个网络接口提供服务和/或内容到客户端和/或作为服务器操作的硬件和软件(例如,操作系统和服务器应用程序)的任何组合。适合服务器的示例包括但不限于刀片(例如,刀片服务器)上的可执行软件、控制卡、服务卡、处理器、处理器核等。如图示中所示,在一些实施例中,服务器在逻辑上相关联或者编组成多个群组113。在图示中,服务器在逻辑上编组成群组1 113-1到群组N 113-N,其中,N可以是任何整数。群组至少之一具有多个服务器,并且其它群组可每个具有一个或更多个服务器。在一些情况下,每个群组具有多个服务器。在一些实施例中,一个服务器可由不止一个群组共享(即,群组可重叠)。
多级分组分布系统可用于在服务器112的集合的服务器之间分布流105的分组。在一些实施例中,多级分组分布系统可以提供或保持分组的流的粘度到被指派成处理流的分组的服务器的方式分布分组。此类流粘度有时也称为流持续性。带有流粘度或流持续性的分组的分布可涉及将流的所有分组分布到相同服务器。多级分组分布系统可最初分配流(例如,基于流的第一分组)到服务器之一。例如,将进入流的初始分组(例如,TCP连接的SYN分组、SCTP连接的INIT分组等)转发到服务器。随后,可将相同连接或流遇到的所有其它分组转发到相同服务器。通常,每个服务器保持与它被指派成处理的流相关联的状态(例如,会话数据)。此状态经常未由其它服务器保持或者不可用于其它服务器,但经常是适当处理流的分组所需要的。例如,对于如TCP、SCTP等面向连接的传输协议,情况经常是如此。
流可表示通过表征流的属性的共同集合识别的网络业务。在本文中使用时,流表示不止单个分组(即,具有至少两个分组)。作为第一示例,流可表示通过五个元组属性(例如,来源/目的地IP地址、协议、来源/目的地TCP/UDP端口)识别的网络业务。作为第二示例,流可表示通过来源/目的地MAC地址识别的网络业务。作为第三示例,流可表示通过VLAN ID识别的网络业务。作为第四示例,流可表示通过业务的来源和目的地节点识别的网络业务。作为第五示例,通过从节点a到节点b的某个链路,通过链路传递,带有特定来源IP地址(例如IP1)的分组可表示通过带有属性(IP1, ab)的该链路,通过来源IP地址识别的流。作为第六示例,在接入网络中,始发于订户的业务可表示识别为通过住宅网关的特定端口的业务的流。接入和边缘网络中的此类订户流也可通过订户IP地址识别。上游/下游订户流(从订户/网络侧到网络侧/订户侧的流)可具有分别作为来源/目的地IP地址的订户的IP地址。流可包括单个流、多个子流或许多子流。较大的粗粒度流可包括多个较小的更精细粒度子流。例如,通过链路(从节点a到节点b)传递,带有多个目的地IP地址的聚合流具有比通过相同链路传递,带有单个目的地IP地址的子流更粗的粒度。前一流能够称为链路流,并且后一流能够称为链路目的地IP流。
多级分组分布系统100在此情况下是二级分组分布系统,包括静态和/或无状态第一级分组分布模块103和分布式有状态第二级分组分布系统107。静态/无状态第一级分组分布模块103与一个或更多个网络102耦合,连接或进行通信,以接收流105的分组。静态/无状态第一级分组分布模块包括静态/无状态群组选择模块104。静态/无状态群组选择模块可用于从多个服务器群组113-1到113-N之间静态和/或无状态选择用于流105的分组的服务器群组113。静态/无状态选择群组指模块无需使用状态来选择群组。无需保持指派或映射流的分组到服务器群组的状态(例如,状态表)。特别是在要处理的连接数量大时,这可有助于降低资源消耗和/或硬件配给。不要求静态/无状态第一级分组分布模块不保持状态,这是因为实际上可保持某一状态(例如,与流表不同的状态和/或用于实现除选择用于分组的群组外其它目的)。
相反,模块可使用静态方案,如哈希算法或其它静态算法(例如,基于分组的内容,静态确定群组)。例如,哈希功能可将分组的属性映射到选择的群组的群组标识符。流标识符可从分组生成(例如,基于分组报头的某些字段)。流ID可表示用于识别流的ID或标记(例如,号码)。作为一个特定示例,假设有N(例如,N=10)个服务器。简单的哈希功能可采用分组的来源IP地址(例如,192.168.1.122)的最后字节作为整数(例如,122),并且对N(例如,N=10)取模。结果数字(例如,2)在0与N-1之间,指向分组要转发到的群组。为清晰起见,术语静态不暗示选择需要不更改,这是因为静态选择可更改,例如,如果群组的数量更改(例如,添加了群组,从而通过N=11执行哈希功能,或者删除了群组,从而使用N=9执行哈希功能)。相反,如提及的一样,术语静态指没有使用状态(例如,状态表)映射或指派分组到群组。静态/无状态第一级分组分布模块经耦合,连接或者进行通信以将分组106的流到群组分布提供到分布式有状态第二级分组分布系统107。静态/有状态第一级分组分布模块提供流到群组粘度,使得流的所有分组被分布到相同群组。静态/无状态第一级分组分布模块可在硬件、软件、固件或其各种组合中实现。在一些实施例中,静态/无状态第一级分组分布模块可包括至少一些特定硬件、电路或逻辑(例如,专用电路),但这不是必需的。
分布式有状态第二级分组分布系统107包括多个分布式有状态第二级分组分布模块108。在图示中,示出了模块1 108-1到模块P 108-M,其中,P可以是任何整数。在一些实施例中,每个分布式有状态第二级分组分布模块108可对应于一个或更多个服务器群组113。每个分布式有状态第二级分组分布模块108包括对应分布式有状态第二级服务器选择模块109和对应状态110。具体而言,第二级分组分布模块1包括分布式有状态第二级服务器选择模块109-1和状态110-1,并且第M个第二级分组分布模块M包括分布式有状态第二级服务器选择模块109-M和状态110-M。每个分布式有状态第二级服务器选择模块可用于静态选择由要处理流105的分组的静态/无状态第一级分组分布模块103选择的服务器群组的特定单独服务器。在一些实施例中,分布式有状态第二级分组分布系统可用于跨第一级选择的群组内所有服务器实现大质均匀的服务器负载平衡。其它实施例不限于服务器负载平衡。
在静态选择服务器中,服务器选择模块109可用于访问和使用对应状态110。在一些实施例中,状态可映射或指派流到选择的服务器。例如,每个状态可表示具有条目的状态表,条目将不同连接或流(例如,流标识符)映射到被指派成处理连接或流的分组的处理的对应服务器(例如,服务器标识符)。在第二级的分组分布处理往往比在第一级的处理在计算上更密集,但跨多个分组分布模块分布。因此,通过此类分布,多个分组分布模块的每个模块内的状态通常在数量上小于无此类分布情况下将需要的数量。存储这些更少量的状态的每个状态通常消耗更少的存储空间,并且利用状态(例如,执行表查找)通常占用更少的时间和消耗更少的处理资源。有利的是,分布有状态第二级分组分布系统有助于使方案更易于扩展到大量的连接或其它流。分布式有状态第二级分组分布模块经耦合,连接或者进行通信中以将分组111的流到服务器分布或转发提供到可处理分组的选择的服务器。分布式有状态第二级分组分布模块可提供流到服务器粘度,使得流的所有分组被分布到相同服务器。
如图所示并且无限制,在一些实施例中,服务器112的集合可以通过一个或更多个网络114与其它服务器115进行通信。例如,服务器115可提供服务或内容到客户端。例如,客户端可通过服务器112启动与服务器115的连接。服务器112可执行与连接相关联的处理,如订户管理、深度分组检查或诸如此类。备选,在其它实施例中,服务器112可以是连接或流端点,并且服务器112可提供用于客户端的内容和/或服务的完全集合。
在一些实施例中,多级分组分布系统可在单个网络元素(例如,单个路由器)上实现。在其它实施例中,多级分组分布系统可在两个或更多个连接的网络元素上实现。在一些实施例中,多级分组分布系统的第一和第二级在不同硬件上实现。
多级分组分布系统100可提供多个优点,特别是在连接的数量和/或业务量大时。近年来,已连网装置的数量和包括因特网的网络上遇到的总网络业务有了相当大的增长。另外,这些连接的许多连接具有相对高的带宽,如提供视频(例如,视频点播、高清晰电视等)的那些连接。如背景部分中前面提及的一样,某些已知有状态负载平衡方案往往受资源耗尽影响,特别是在连接的数量和/或业务量大时。然而,多级分组分布系统可有助于避免或至少降低此类资源耗尽。第一级分组分布器模块实现静态/无状态方案,并且不需要保持状态。分组分布和状态保持的计算更密集型任务在分布到多个分组分布模块中的第二级中执行。多个分组分布模块的每个模块具有在数量上少于无此类分布时将需要的相关联状态。存储这些更少量的状态的每个状态通常消耗更少的存储空间,并且利用状态(例如,执行表查找)通常占用更少的时间和消耗更少的处理资源。
图2是二级分组分布系统200的一更详细实施例的框图。在一些实施例中,二级分组分布系统可用于服务器负载平衡和/或在服务器之间大致均匀分布与处理分组相关联的负载。其它实施例不限于负载平衡。
二级分组分布系统200包括静态/无状态第一级分组分布模块203和分布式有状态第二级分组分布系统207。静态/无状态第一级分组分布模块包括静态/无状态群组选择模块204。在一些实施例中,静态/无状态群组选择模块可包括哈希模块216以通过执行哈希(例如,基于分组的内容)来选择用于流的群组。如图所示,在一些实施例中,静态/无状态群组选择模块可忽略将流的分组指派到选择的服务器群组的状态217。静态/无状态第一级分组分布模块可提供流到群组分组分布206。
分布式有状态第二级分组分布系统207与静态/无状态第一级分组分布模块203耦合,连接或者进行通信。在所示实施例中,第二级分组分布系统包括6个分布式有状态第二级(DSSL)分组分布(PD)模块208-1到208-6。DSSL PD模块208-1到208-6的每个模块对应于6个服务器212-1到212-6的一个相应服务器。例如,DSSL PD模块3 208-3对应于服务器3 212-3。虽然在所示实施例中示出了6个服务器和6个DSSL PD模块,但在其它实施例中,可以有更少或更多的服务器和/或DSSL PD模块。服务器在虚线中示出以指示它们不是二级分组分布系统200的一部分。6个DSSL PD模块的每个模块具有对应服务器选择模块209-1到209-6和对应状态210-1到210-6。例如,DSSL PD模块3 208-3具有服务器选择模块209-3和状态210-3(例如,状态表)。服务器选择模块和状态可如前面所述。每个DSSL PD模块执行分组分布计算(例如,服务器选择计算),并且做出用于其对应服务器的分组分布判定。分布式有状态第二级分组分布系统和/或DSSL PD模块提供流到服务器分组分布211。
在所示实施例中,为便于说明,在逻辑上将服务器及其对应DSSL PD模块分成三个群组。具体而言,服务器1-3和DSSL PD模块1-3在群组1中,服务器4-5和DSSL PD模块4-5在群组2中,以及服务器5-6和DSSL PD模块5-6在群组3中。静态/无状态第一级分组分布模块可选择这些群组1-3之一,并且流到群组分组分布206可将分组分布到这些群组1-3之一。选择的群组内的DSSL PD模块可选择在选择的群组内的服务器之一,并且流到服务器分组分布211可将分组转发到选择的服务器。
为更好地示出二级分组分布系统的操作的一实施例,假设在静态/无状态第一级分组分布模块203接收第一流的第一分组[F1]、第二流的第二分组[F2]及第三流的第三分组[F3]。静态/无状态第一级分组分布模块203在此示例中可静态选择用于第一分组[F1]的群组1、用于第二群组[2]的群组2及用于第三分组[F3]的群组3。在一些实施例中,可将分组提供或分布到选择的群组的每个DSSL PD模块。如图所示,第一分组[F1]可分布到DSSL PD模块1-3的每个模块,第二分组[F2]可分布到DSSL PD模块4-5的每个模块,以及第三分组[F3]可分布到DSSL PD模块5-6的每个模块。在一些实施例中,每个群组内的DSSL PD模块可共享多播和/或广播域,并且分组可多播和/或广播到每个群组内的DSSL PD模块。在一些实施例中,每个群组内的DSSL PD模块可共享虚拟局域网(VLAN)标识符。例如,群组1内的DSSL PD模块可具有VLAN ID #1,群组2内的DSSL PD模块可具有VLAN ID #2,并且群组3内的DSSL PD模块可具有VLAN ID #3。
在一些实施例中,每个群组内的第二级分组分布模块可以分布式方式一起执行分组分布以将流的分组指派到每个群组内适当的服务器。在一些实施例中,由于流粘度原因,用于给定流的每个分组可只由一个服务器接受以便进行处理,而群组内的其它服务器可丢弃分组。在所示实施例中,例如,DSSL PD模块2可选择服务器2,并且促使分组[F1]的其副本由服务器2接受以便进行处理,而DSSL PD模块1和3可不选择其对应服务器并且可促使分组[F1]的其对应副本被丢弃。类似地,DSSL PD模块4可选择服务器4,并且促使分组[F2]的其副本由服务器4接受以便进行处理,而DSSL PD模块5可不选择服务器5,并且可促使分组[F2]和[F3]的其对应副本被丢弃。继续而言,DSSL PD模块6可选择服务器6,并且促使分组[F3]的其副本由服务器6接受以便进行处理。这只是一个说明性示例,并且本发明的范围不限于此示例。
图3是包括静态/无状态第一级分组分布模块304的二级分组分布系统的框图,静态/无状态第一级分组分布模块304在与用于实现分布式有状态第二级分组分布系统307的硬件324不同的硬件322上实现。例如,不同硬件可以是在不同网络元素、网络元素的不同硬件部分、不同板、不同卡、不同处理器、不同处理器核等中的硬件。在一些实施例中,除不同的一些硬件外,可共享一些硬件。在一些实施例中,用于实现分布式有状态第二级分组分布系统307的硬件324可与用于实现服务器312的集合的硬件相同,或者可包括用于实现服务器312的集合的硬件,而该二级分组分布系统为服务器执行分组分布。例如,系统307的分布式有状态第二级分组分布模块和服务器312之一可共享网络元素、刀片、板、卡、处理器或处理器核的一部分的硬件。有利的是,可将总分组分布系统的大多数存储器和计算机密集型任务卸载到服务器的现有存储器和处理资源。由于利用现有硬件的能力,共享此类硬件可有助于使分布式有状态第二级分组分布可扩展到大量的连接或其它流而无需过度的额外硬件配给。在一些实施例中,硬件322和硬件324可以在单个网络元素内。在其它实施例中,硬件322和硬件324可在两个或更多个连接的网络元素内。
图4是在单个网络元素中实现的二级分组分布系统的框图。网络元素通常被分离成控制平面和数据平面(有时称为转发平面或媒体平面)。如果网络元素是路由器(或者在实现路由功能性),则控制平面一般确定要如何路由数据(例如,分组)(例如,用于数据的下一跳和用于该数据的输出端口),以及数据平面负责转发该数据。例如,控制平面一般包括与其它网络元素进行通信以交换路由,并且基于一个或更多个路由选择度量选择那些路由的一个或多个路由选择协议。路由和邻接存储在控制平面上的一个或更多个路由选择结构中。控制平面通过基于路由选择结构的信息为数据平面编程。在转发业务时,数据平面使用这些转发和邻接结构。对于第2层转发,网络元素能够存储用于基于第2层信息转发数据的一个或更多个桥接表。
在一些实施例中,网络元素包括一个或更多个线路卡的集合、一个或更多个控制卡的集合和可选的一个或更多个服务卡(有时称为资源卡)的集合。在其它实施例中,网络元素包括一个或更多个线路卡的集合和一个或更多个服务卡的集合。这些卡通过一个或更多个机制耦合在一起(例如,耦合线路卡的第一全网状和耦合所有卡的第二全网状、交换结构、背板等)。线路卡的集合构成数据平面,而控制卡和/或服务卡的集合提供控制平面并且通过线路卡与外部网络元素交换分组。服务卡的集合能够提供专业化处理(例如,第4层到第7层服务(例如,防火墙、IPsec、IDS、P2P)、VoIP会话边界控制器、移动无线网关(GGSN、演进分组系统(EPS)网关))。例如,服务卡可用于终接IPsec隧道,并且执行服务员鉴权(attendant authentication)和加密算法。
参照图4,网络元素包括一个或更多个线路卡422、交换结构420和控制和/或服务卡424的集合。这些卡可以常规方式完全互连在一起。在所示实施例中,示出了N个控制和/或服务卡,其中,N可以是任何整数。在所示实施例中,静态/无状态第一级分组分布系统404在线路卡422上实现。分布式有状态第二级分组分布系统408在控制和/或线路卡424的集合上实现。控制和/或服务卡也用于实现服务器412。具体而言,DSLL PD模块1 408-1在也实现服务器1 412-1的控制/服务卡1 424-1上实现,DSLL PD模块2 408-2在也实现服务器2 412-2的控制/服务卡12 424-2上实现,并且DSLL PD模块N 408-N在也实现服务器N 412-N的控制/服务卡N 424-N上实现。第一级分组分布模块可在分组中嵌入有关控制/服务卡的选择的群组的信息(例如,群组ID),并且将分组转发到交换结构。交换结构在一个实施例中包括交换卡的集合,可使用有关选择的群组的信息(例如,群组ID)执行到选择的群组的所有控制/服务卡的多播和/或广播。
图5是在要处理分组的处理器之间分布分组,同时将分组的流的粘度提供到被指派成处理流的分组的服务器的方法530的一实施例的流程框图,方法可在一个或多个网络元素中执行,网络元素处于在传送分组的客户端与服务器之间的通信中。在一些实施例中,方法530可由图1的多级分组分布系统100或图2的二级分组分布系统200执行。在其它实施例中,方法可由其它不同的多级或两级分组分布系统执行。另外,多级分组分布系统100和二级分组分布系统200可执行与方法530相同或不同的方法。
方法包括在框531在静态第一级分组分布模块接收流的分组。分组可以是任何已知类型和协议。本文中公开的方案的一个优点是它们不限于任何特定分组类型或分组协议(例如,它们是协议不可知论的)。甚至在分组或分组报头内不允许和/或不需要包括有关指派到流的服务器的信息的协议中,可实现流粘度。
在框532,使用静态第一级分组分布模块,从多个服务器群组中静态选择用于流的分组的服务器群组。在选择服务器群组中,不访问或使用将流的分组指派到选择的服务器群组的状态(例如,流表)。在一些实施例中,通过使用来自分组的内容执行哈希或诸如此类,选择服务器群组。
在框533,将流的分组分布到分布式有状态第二级分组分布系统。在一些实施例中,将流的分组多播,广播或以其它方式分布到分布式有状态第二级分组分布模块的集合的每个模块。在一些实施例中,第二级模块共享VLAN ID。在一些实施例中,分布式模块的集合的每个模块对应于选择的群组的不同服务器。在一些实施例中,将流的分组从用于实现第一级分组分布模块的硬件分布到用于实现分布式有状态第二级分组分布系统的单独或不同硬件,在一些情况下,分布式有状态第二级分组分布系统也用于实现服务器。
在框534,使用分布式有状态第二级分组分布系统,静态选择在选择的服务器群组中要处理流的分组的服务器。静态选择服务器可包括访问和使用将流的分组的处理指派到选择的服务器的状态。在一些实施例中,分布式有状态第二级分组分布模块的集合的每个模块确定是促使分组由对应服务器接受以便进行处理还是促使分组被丢弃,每个分布式有状态第二级分组分布模块对应于选择的群组的不同服务器。一方面,仅用于选择的群组的模块之一确定要接受分组,而用于选择的群组的所有其它模块确定要丢弃分组。
在框535,将流的分组分布到选择的服务器。选择的服务器可处理流的分组。在一些实施例中,随后通过先选择相同群组,然后选择相同服务器,从而提供流粘度,将流的其它分组引导到相同服务器。
对于某些类型的流,可能只基于流的第一分组的比特或内容,检测到流的开始或流的第一分组而无需查询其它信息。例如,可同样在初始分组的内容中识别连接或流的初始分组。也就是说,流的初始分组可具有指示分组是流的第一分组的比特或内容。此类类型的分组的示例包括但不限于具有SYN标志以指示它是流中第一分组的TCP分组、具有INIT标志以指示它是流中第一分组的SCTP分组。类似地,各种其它面向连接的协议通常具有通过初始分组的内容通知其它网络元素分组是连接或流的第一分组的方式。作为又一示例,订户级流能够通过订户IP地址(例如,上游/下游业务的来源/目的地IP地址)识别。在此类情况下,RADIUS开始请求或DHCP请求可指示订户级流的开始。在流ID基于来源IP地址时,通过检测为建立订户会话而生成的RADIUS分组或DHCP分组,将检测到用于订户的新流。仅基于流的第一分组的比特或内容而无需查询其它信息便可能检测或识别流的开始或流的第一分组的连接或流的类型称为类型1连接或流。
图6是方法638的一实施例的流程框图,方法可由用于类型1流的选择的群组的每个分布式有状态第二级分组分布模块执行以选择处理分组的服务器。在框639,在分布式有状态第二级分组分布模块接收分组。在框640,通过检查分组(例如,分组的报头)确定分组是否用于新流。例如,分组或分组报头可包括指示它是新流的初始分组的标志或标记。第二级分组分布模块可具有分组检查模块以做出此确定。如果分组用于新流(即,在框640的确定为“是”),则方法前移到框641。在框641,使用在选择的群组的所有模块之间一致的新流分组分布算法,选择处理分组的服务器。新流分组分布算法在选择的群组的所有模块之间一致是指在选择的群组的每个模块上算法的实例可用于选择处理分组的相同服务器(即,全部一致选择完全相同的服务器)。例如,选择的群组的所有模块将选择服务器2,而不是任何模块选择不同服务器。在一些实施例中,算法全部是相同的。在其它实施例中,算法可不同,但仍产生一致的选择。前面所述算法的类型是适合的,如舍入、随机选择、加权舍入、加权随机选择、哈希功能等及各种其它已知类型的更成熟算法。作为一个特定示例,每个模块可使用一致(例如,相同)哈希功能,该功能将从分组提取的流ID映射到服务器ID,使得相同服务器将被选择,并且仅该服务器将接受分组以便进行处理。在一些实施例中,此算法可尝试例如通过权重,大约平均地分布或平衡与在服务器之间处理分组相关联的负载(例如,用于服务器负载平衡)。其它实施例不限于服务器负载平衡。
在框642,确定选择的服务器是否对应于执行方法的模块,服务器由执行方法(即,在框641的选择的服务器)的模块选择。例如,如果对应于服务器2的模块2选择了服务器2,则确定将为“是”,或者如果对应于服务器2的模块2选择了除服务器2外的任何另一服务器,则确定将为“否”。第二级可具有确定模块以做出此确定。如果选择的服务器不对应于模块(即,在框642的确定为“否”),则方法前移到框643。在框643,执行方法的模块促使分组被丢弃(例如,模块丢弃分组,模块不将分组转发到服务器,或者模块促使服务器丢弃分组等)。备选,如果选择的服务器确实对应于模块(即,在框642的确定为“是”),则方法前移到框644。在框644,在执行方法的模块的流表中记录新流标识符(流ID)。在一些实施例中,流表可包括用于指派到对应于执行方法的模块的服务器的所有流的流ID的完整集合。一方面,流表可包括映射到对应服务器的服务器ID的流ID对。备选,另一方面,流表可只明确包括流ID,并且服务器ID可以是隐含式或可理解的。在框645,模块促使分组由对应服务器接受以便进行处理(例如,模块接受分组,模块将分组转发到服务器,或者模块促使服务器接受分组等)。
再参照框640,如果分组不是用于新流(即,确定为“否”),则方法前移到框646。在框646,确定用于分组的流标识符(流ID)是否在执行方法的模块的流表中。第二级可具有流表校验器模块以做出此确定。在框647,如果流ID不在流表中,则模块促使分组被丢弃。一般情况下,由于分组不是用于新流,并且流ID不在模块的流表中,因此,将假设流ID不在选择的群组的其它模块之一的流表中。备选,在框648,如果流ID在流表中,则模块促使分组由对应服务器接受以便进行处理。由于分组是用于执行方法的模块的流表中列出的现有流,因此,为保持流持续性或流粘度,应接受分组以便进行处理。第二级可具有确定模块以做出接受或丢弃的确定。一般情况下,执行方法的所有其它模块不可在其流表中找到用于分组的流ID(仅一个流表包括流ID),并且可促使分组被丢弃,以便它不由其对应服务器处理。
这只是适合的方法的一个示例。虽然方法已通过相对基本的形式示出,但可选地可添加操作到方法和/或从方法删除操作。另外,虽然操作的特定顺序已示出和描述,但要理解的是,特定顺序是示范。备选实施例可选地可以不同顺序执行操作,组合某些操作,重叠某些操作等。例如,另一实施例可在框640的确定之前在框646做出确定。
对于其它类型的连接或流,不可能只基于流的第一分组的比特或内容,检测到流的开始或流的第一分组而无需查询其它信息。此类型的连接或流在本文中称为类型2连接或流。
图7是方法750的一实施例的流程框图,方法可由用于类型1或类型2流的选择的群组的每个分布式有状态第二级分组分布模块执行以选择处理分组的服务器。方法750是不限于任何特定协议或只从分组内容检测新流的需要的一般方案。此类方案可用于类型1流、类型2流或类型1和类型2流的组合。在框751,在分布式有状态第二级分组分布模块接收分组。在框752,确定用于分组的流ID是否在执行方法的模块的流表中。如果流ID在流表中(即,在框752的确定为“是”),则方法前移到框753。在框753,模块促使分组由对应服务器接受以便进行处理。备选,如果流ID不在流表中(即,在框752的确定为“否”),则方法前移到框754。在框754,确定用于分组的流ID是否在执行方法的模块的存在的其它流表中。在一些实施例中,存在的其它流表可列出或包括指派到对应于执行方法的模块的服务器外选择的群组的其它服务器的流ID。模块的流表中包括的流ID和模块的存在的其它流表中包括的不同流ID的组合表示服务器群组在服务的所有现有流的身份。给定模块的流表和存在的其它流表中的流ID是相互排斥的。在框755,如果流ID是在存在的其它流表中(即在框754的确定为“是”),则模块促使分组被丢弃。
备选,如果流ID不在存在的其它流表中(即,在框754的确定为“否”),则方法前移到框756。分组的流ID在模块的流表中或者模块的存在的其它流表中不存在的事实从推理上指示分组是用于新流。因此,可为新流的分组做出新分组分布判定。在一些情况下,可做出此判定以实现服务器负载平衡,但这不是必需的。在框756,使用在选择的群组的所有模块之间一致的新流分组分布算法,选择处理分组的服务器。如前面提及的一样,这指选择相同服务器处理分组的选择的群组的每个模块上算法的实例。在框757,确定选择的服务器是否对应于执行方法的模块。如果选择的服务器确实对应于执行方法的模块(即,在框757的确定为“是”),则在框758,在执行方法的模块的流表中记录或存储用于分组的新流ID。在框759,模块促使分组由对应服务器接受以便进行处理。再参照框757。如果选择的服务器不对应于执行方法的模块(即,确定为“否”),则在框760,在执行方法的模块的存在的其它流表中记录或存储用于分组的新流ID。在框761,模块促使分组被丢弃。
可由群组的所有其它模块类似地保持存在的其它流表。每个存在的其它流表允许对应模块知道哪些和多少流在由群组的其它服务器处理。在一些实施例中,存在的其它流表的集合中的此信息可用于通知或修改新分组调度算法(例如,以执行服务器负载平衡)。例如,新流表分组分布算法可将用于新流的分组分布到带有最少数量的流的服务器。在一些实施例中,群组的模块可交换消息以便同步有关其流表和存在的其它流表的信息,以保持群组内流的一致视图。
由于图7的方法750使用需要存储的存在的其它流表,因此,它往往比图6的方法638消耗更多的存储空间。此外,保持和使用存在的其它流表往往占用另外的处理资源。例如,其流ID未在模块的流表中表示的每个分组到达时,可需要执行到存在的其它流表中的查找。相应地,与为类型1流执行方法750相比,执行方法638可提供某些优点。幸运的是,许多更常见类型的连接或流是类型1连接或流(例如,TCP、SCTP、GTP、其它面向连接的协议等)。在一些实施例中,方法638可用于此类类型的流而无需执行方法750。在其它实施例中,可为所有流执行方法750而无论它们是类型1还是类型2。在还有的其它实施例中,可为是类型1的流执行方法638,并且可为是类型2的流和/或为是两种类型的流执行方法750。
这只是适合的方法的一个示例。虽然方法已通过相对基本的形式示出,但可选地可添加操作到方法和/或从方法删除操作。另外,虽然操作的特定顺序已示出和描述,但要理解的是,特定顺序是示范。备选实施例可选地可以不同顺序执行操作,组合某些操作,重叠某些操作等。例如,另一实施例可在框752的确定之前在框754做出确定。作为另一示例,两种方法可合并成单个混合方法。
图8是具有流表810的对应集合的群组的分布式有状态第二级分组分布(DSSL PD)模块808的集合的一实施例的框图。在所示实施例中,为便于说明,群组具有三个DSSL PD模块808-1、808-2、808-3,模块具有3个对应流表810-1、810-2、810-3,但本发明的范围并不限于此。此外,在所示实施例中,为便于说明,具有流ID #1-6的6个流由群组服务,并且在流表中表示,但本发明的范围并不限于此。对应于DSSL PD模块1的第一服务器被指派成服务于带有流ID #1的第一流、带有流ID #3的第三流和带有流ID #5的第五流。相应地,流ID #1、#3和#5包括在DSSL PD模块1的流表810-1中。对应于DSSL PD模块2的第二服务器被指派成服务于带有流ID #2的第二流。相应地,流ID #2包括在DSSL PD模块2的流表810-2中。对应于DSSL PD模块3的第三服务器被指派成服务于带有流ID #4的第四流和带有流ID #6的第六流。相应地,流ID #4和#6包括在DSSL PD模块3的流表810-3中。
图9是具有流表910的对应集合和存在的其它流表962的对应集合的群组的DSSL PD模块908的集合的一实施例的框图。在所示实施例中,为便于说明,群组具有三个DSSL PD模块908-1、908-2、908-3,模块具有3个对应流表910-1、910-2、910-3,但本发明的范围并不限于此。此外,在所示实施例中,为便于说明,具有流ID #1-6的6个流由群组服务,并且在流表中表示,但本发明的范围并不限于此。对应于DSSL PD模块1的第一服务器被指派成服务于带有流ID #1的第一流、带有流ID #3的第三流和带有流ID #5的第五流。相应地,流ID #1、#3和#5包括在DSSL PD模块1的流表810-1中。对应于DSSL PD模块2的第二服务器被指派成服务于带有流ID #2的第二流。相应地,流ID #2包括在DSSL PD模块2的流表810-2中。对应于DSSL PD模块3的第三服务器被指派成服务于带有流ID #4的第四流和带有流ID #6的第六流。相应地,流ID #4和#6包括在DSSL PD模块3的流表810-3中。
对应于服务器2的流ID #2、对应于服务器3的流ID #4及对应于服务器3的流ID #6包括在DSSL PD模块1的存在的其它流表962-1中。对应于服务器1的流ID #1、对应于服务器1的流ID #3、对应于服务器1的流ID #5、对应于服务器3的流ID #4及对应于服务器3的流ID #6包括在DSSL PD模块2的存在的其它流表962-2中。对应于服务器1的流ID #1、对应于服务器1的流ID #2、对应于服务器1的流ID #5及对应于服务器2的流ID #2包括在DSSL PD模块3的存在的其它流表962-3中。如所示实施例中所示,在一些实施例中,存在的其它流表可识别对应于(例如,服务于)每个流ID的服务器。有利的是,在存在的其它流表中包括服务器ID有助于提供群组的更完全图片,并且在一些实施例中,可用于高可用性目的和/或执行服务器负载平衡。备选,在其它实施例中,存在的其它流表可只列出对应于其它服务器的流ID。
图10是在DSSL PD模块1008的群组1013之间分布类型1和类型2流的一实施例的框图。群组1 1013-1专用于仅类型1的流。此类流的示例包括但不限于TCP和SCTP流。每个DSSL PD模块1 1008-1、DSSL PD模块2 1008-2和DSSL PD模块3 1008-1具有可用于为类型1流选择服务器的服务器选择模块1064。例如,群组1中每个服务器选择模块可用于实现图6的方法。
群组2 1013-2用于类型1和类型2流。例如,群组2可用于订户级流管理。订户级流可包括类型1和类型2两种子流。例如,订户可具有在终端站上运行的不同应用程序,并且一些应用程序可使用类型1流,而其它应用程序使用类型2流。又如,群组2可用于一些类型1流和其它类型2流,而无论它们是否为订户流。每个DSSL PD模块4 1008-4和DSSL PD模块5 1008-5具有可用于为类型1流选择服务器的服务器选择模块1064和可用于为类型2流选择服务器的服务器选择模块1066。例如,每个类型1服务器选择模块1064可用于实现图6的方法,并且每个类型2服务器选择模块1066可用于实现图7的方法。如图所示,群组2中的每个DSSL PD模块也可包括逻辑交换器1065,逻辑交换器1065可用于检查进入分组,确定分组是用于类型1还是类型2流,并且相应地促使使用类型1服务器选择模块1064或类型2服务器选择模块1066。
群组3 1013-3专用于类型2流。DSSL PD模块6 1008-6具有可用于为类型2流选择服务器的服务器选择模块1066。
图11是可用于相互发送消息的DSSL PD模块1108的群组1113的一实施例的框图,其中,消息指示对应服务器1112的状态和/或负载。DSSL PD模块1 1108-1对应于服务器1 1112-1,DSSL PD模块2 1108-2对应于服务器2 1112-2,并且DSSL PD模块3 1108-3对应于服务器3 1112-3。服务器和DSSL PD模块属于相同群组1113。DSSL PD模块1将指示服务器1的第一状态(S1)和第一负载(L1)的第一消息(m1)发送到DSSL PD模块2和DSSL PD模块3。DSSL PD模块2将指示服务器2的第二状态(S2)和第二负载(L2)的第二消息(m2)发送到DSSL PD模块1和DSSL PD模块3。DSSL PD模块3将指示服务器3的第三状态(S3)和第三负载(L3)的第三消息(m3)发送到DSSL PD模块1和DSSL PD模块2。一方面,每个DSSL PD模块可向其群组内的其它模块广播或多播指示状态和/或负载的分组。DSSL PD模块每个可包括消息发送模块和消息接收模块以分别发送和接收这些消息。在一些实施例中,每个DSSL PD模块也可将指示状态和/或负载的相同或不同类型的消息发送到第一级分组分布模块。分组可具有各种适合格式或协议的任何格式或协议。在另一实施例中,消息可包括状态信息而不包括负载信息。在仍有的另一实施例中,消息可包括负载信息而不包括状况信息。
状态表示服务器的状态和/或状况。适合状况/状态的示例包括但不限于活跃(例如,活动并且能够处理分组),从容关闭(例如,能够处理用于现有连接的分组但不接受新连接),离开群组,加入群组,重新启动(例如,在从失效恢复或重新启动的过程中)和诸如此类及其组合。一方面,从DSSL PD模块收到的消息可隐含而不是明确指示状态。例如,在从DSSL PD模块收到消息时,可假设对应服务器是活跃和/或活动的。如果在某个时间内未从DSSL PD模块收到消息,则可假设对应服务器不可用。负载可表示与服务器相关联的负载。适合负载的示例包括但不限于当前负载、连接的数量、流的数量、处理器上的负载、热负载(例如,温度)、消耗的存储空间量、流表大小等。
DSSL PD模块1具有新流分组分布算法调整模块1109-1,DSSL PD模块2具有新流分组分布算法调整模块1109-2,以及DSSL PD模块3具有新流分组分布算法调整模块1109-3。在一些实施例中,每个新流分组分布算法调整模块可用于基于状态和/或负载,动态调整分组分布算法(例如,新流分组分布算法)。例如,在一些实施例中,可基于群组内交换的消息中指示的负载集以将服务器上的当前负载考虑在内,动态调整诸如加权随机选择或加权舍入算法等加权新流分组分布算法的权重。也考虑了修改技术领域中已知的其它类型的算法的其它方式。又如,群组的DSSL PD模块可修改其分组分布算法以计及不再可用的给定服务器和/或计及添加到群组的给定服务器。
在不同实施例中,状态和/或负载信息可用于不同目的。在一些实施例中,状态和/或负载信息可用于根据分组分布策略或目的,在服务器之间分布分组。示例包括但不限于服务器负载平衡、服务质量保证、热负载平衡等。在一些实施例中,可结合实现高可用性使用状态和/或负载信息。高可用性有时指弹性、冗余性、失效保护等。高可用性通常用于防止或至少降低在一个或更多个服务器变得不可用时在其它情况下往往可发生的服务中断。服务器可由于各种潜在原因而变得不可用,如硬件失效、软件失效、已由管理员关闭或变成离线以更改软件和/或软件或诸如此类。在DSSL PD模块之间交换的消息可用于或者可帮助检测何时服务器变得不可用。之后,不可用服务器的服务可传送到一个或更多个其它服务器,以便不存在提供服务的中断。
各种已知高可用性或冗余性置是适合的。适合的高可用性配置的示例包括但不限于:主动/被动配置,其中,活动服务器具有完全冗余的被动或备用服务器,如果活动服务器不可用,则被动或备用服务器可用于变成活动状态;主动/主动配置,其中,一个或更多个活动服务器可用于作为另一活动服务器的备份并且如果该服务器不再可用,则处理该服务器处理;N活动M被动配置,其中,M个被动服务器(例如,一个或更多个)作为N个活动服务器(例如,多个)的备份;及诸如此类;以及其组合。在各种示例实施例中,冗余性可按服务器,按群组,按群组的集合,或全局(例如,为所有群组)提供。
假设将新活动服务器添加到群组的示例。可修改DSSL PD模块的新流分组分布算法以将新活动服务器考虑在内。例如,假设基于哈希的新流分组分布算法可将取来源IP地址模n映射到群组中的n个服务器,在将新活动服务器添加到群组时,可取模n+1而不是n以计及新活动服务器。
有利的是,在将另外的给定服务器添加到群组(即,无需更改处理现有流的服务器)时,可保持用于现有流的流到服务器粘度。仅为新流而不是现有流调用新流分组分布算法。假设有通过图6的方法处理的类型1流。DSSL PD模块收到用于现有流的分组时,DSSL PD模块通过检查分组的报头(例如,在框640)来确定分组用于现有流。DSSL PD模块随后确定用于现有流的流ID是否在模块的流表中(例如,在框646)。服务于流的服务器将在其对应流表中找到相关联流ID,并且将接受分组(例如,在框648)。其它服务器将在其相应流表中未找到流ID,并且将丢弃分组(例如,在框647)。因此,在将新服务器添加到群组时,保持用于现有流的流到服务器粘度。
类似地,假设有通过图7的方法处理的类型2流。在将给定服务器添加到群组时,可保持用于现有流的流到服务器粘度(即,无需更改处理现有流的服务器)。最初,对应于添加的服务器的流表和存在的其它流表是空的。仅在由对应服务器接受新流以便进行处理时才填充流表。在收到用于现有流的分组时,对应于添加的服务器的DSSL PD模块将确定用于分组的流ID不在其对应流表中(例如,在框752)。在做出接受或丢弃分组的判定之前,可通过用于群组的现有流,更新对应于添加的服务器的存在的其它流表。在已更新存在的其它流表后,由于分组是用于现有流,因此,DSSL PD模块将确定用于分组的流ID是在其存在的其它流表中(例如,在框754),并且将促使分组被丢弃(例如,在框755)。
也可从群组删除活动服务器。例如,在主动/主动配置中,活动服务器之一将失效,或者可变成离线。在一些实施例中,为提供高可用性,通过旨在为给定服务器提供弹性或高可用性的一个或更多个其它活动或被动服务器,可保持给定服务器的状态。例如,假设有类型1流和主动/被动高可用性配置。被动或备用服务器可保持它负责备份的每个活动服务器的状态和流的集合(例如,流表)。又如,在主动/主动高可用性配置中,活动服务器可保持至少该部分的它负责备份的另一活动服务器的状态和流的集合。活动服务器失效时,负责备份该服务器的服务器可将流ID移到其流表。也可修改新流分组分布算法以反映已从群组删除服务器。例如,在删除服务器后,可取模n-1执行基于哈希的算法,而在服务器的删除前执行模n,其中,n是群组中活动服务器的数量。
在一些实施例中,指示状况的消息也可提供到静态/无状态第一级分组分布模块。只要第一级分组分布模块收到的消息指示群组的至少一个服务器是在活动状态并且可用于处理分组,第一级分组分布模块便无需一定调整其分组分布方案。相反,它可只如以前一样保持分布分组到群组。如果在某个时间量内未收到用于群组的消息,则第一级分组分布模块可推断群组的所有服务器不可用,并且可更改其流到群组映射,以便分组被提供到一个或更多个其它群组。
图12是对应于相互交换消息的不同服务器群组的DSSL PD模块1210的一实施例的框图,其中,消息指与对应服务器群组相关联的状态和/或负载。DSSL PD模块1 1210-1对应于服务器1213-1的群组1。DSSL PD模块2 1210-2对应于服务器1213-2的群组2。DSSL PD模块1将发送指示与服务器群组1相关联的第一状态(S1)和第一负载(L1)的第一消息(M1)。DSSL PD模块2将发送指示与服务器群组2相关联的第二状态(S2)和第二负载(L2)的第二消息(M2)。DSSL PD模块每个可包括消息发送模块和消息接收模块以分别发送和接收这些消息。一方面,状态和负载可反映整个群组(例如,活动服务器的总数和平均负载)。另一方面,状态和负载可包括用于每个服务器群组的不同对应状态和负载。在一些实施例中,群组的DSSL PD模块之一或群组共享的另一专用DSSL PD模块可经如上面结合图11所述交换的消息接收有关群组中其它服务器的状态和/或负载信息,并且随后可平均和/或组合状态和负载到与其它群组交换的消息。
DSSL PD模块1包括可用于在服务器群组之间重新指派服务器的服务器群组重新指派模块1268-1(例如,从群组1到群组2和/或从群组2到群组1)。类似地,DSSL PD模块2包括可用于在服务器群组之间的服务器群组重新指派模块1268-2。在一些实施例中,可在群组之间重新指派服务器以实现给定目的和/或根据准则在群组之间重新指派服务器(例如,以实现服务器负载平衡,实现保证的服务质量,跨服务器缓和温度等)。例如,可在群组之间动态、从容地重新指派服务器,以跨群组的服务器更均匀地平衡负载(例如,在一个群组具有比它需要的更多服务器资源并且另一群组没有足够服务器资源时)。在服务器负载平衡的上下文中,在群组之间重新指派服务器的能力允许在需要时通过本文中公开的二级方案实现极高度均匀的服务器负载平衡。如图所示,在一个实施例中,基于交换的消息,可从群组2删除服务器1269,以及将其作为服务器1270添加到群组1。
通常情况是包括因特网等网络中大部分的业务是由相对少的较大流量流造成的。这些较大的流量流有时称为大象流。相对小部分的业务是由相对大数量的较小流量流造成的。这些较小的流量流有时称为小流。
图13是可用于有效转发较大流量流(例如,大象流)和较小流量流(例如,小流)的分组的二级分组分布系统1300的一实施例的框图。在本文中使用时,术语较大和较小流量流是相对而不是绝对术语(即,较大流量流大于较小流量流)。二级分组分布系统包括第一级分组分布模块1303。第一级分组分布模块包括有状态第一级较大流量分组分布模块1371,该模块可用于分布用于已经识别的相对较大流量流的分组。如在(1)所示,假设在第一级分组分布模块接收仍然未识别的较大流量流的进入分组。有状态第一级较大流量分组分布模块包括将用于已经识别的较大流量流(例如,大象流)的流ID映射到已经被指派成处理较大流量流的对应服务器的较大流量流表1373。较大流量流表表示为较大流量流保持的状态。由于较大流量流通常在数量上更少,因此,需要存储和利用的状态量不会过多。较大流量流表校验器模块1372可用于校验用于对应于进入分组的流ID的较大流量流表。由于分组来自仍然未识别的较大流量流(例如,是较大流量流的第一分组或初始分组之一),因此,尚未确定流是较大流量流,并且流ID尚未记录在较大流量流表中。
如在(2)所示,在确定进入分组的流ID不在较大流量流表中时,查询静态/无状态第一级较小流量/未识别的较大流量群组选择模块1304。此模块1304可用于分布用于如名称暗示的较小 流量流(例如,小流)的分组,及分布用于尚未在较大流量流表中如此识别和记录的较大流量流(例如,大象流)的分组。模块可使用与如本文中别处所述那些方案类似或相同的静态/无状态方案,选择服务器群组。如在(3)所示,可将分组多播,广播或以其它方式分布到选择的群组中分布式第二级分组分布模块1308-1、1308-2的集合。
分布式第二级分组分布模块1308-1包括大流量旁路模块1374。如果用于分组的流ID在较大流量流表中,并且分组被分布到选择的服务器,则较大流量旁路模块可用于促使分组被提供到选择的服务器1312以便进行处理。然而,由于对于仍然未识别的较大流量流的当前考虑的分组,情况不是如此,因此,如在(4)所示,分布式有状态第二级服务器选择模块1309用于选择在选择的群组中分组要分布到的服务器。可使用与本文中别处为服务器选择所述的那些方案类似或相同的方案。如在(5)所示,较大流量检测模块1375可用于检测较大流量流。检测大象流或其它较大流量流的各种方案在技术领域已知。简单方案例如要使用过去历史,要指定某些来源IP地址作为较大流量流等。如果流被检测为小流,则无需采取进一步的动作。然而,假设为便于说明,较大流量检测模块确定分组是用于较大流量流。如在(6)所示,调用较大流量流表修改模块1376。如在(7)所示,修改模块可用于促使修改较大流量流表1373。例如,修改模块可指示较大流量流表添加将用于分组的流ID映射到选择的服务器。
如在(8)所示,在第一级分组分布模块收到现在识别的较大流量流的随后进入分组时,较大流量流表校验器模块将校验较大流量流表。现在,将用于现在识别的较大流量流的流ID保持为在较大流量流表中的状态,对应服务器被选择成处理较大流量流的分组。如在(9)所示,有状态第一级较大流量分组分布模块可将分组单播或以其它方式分布到在较大流量流表中指示的选择的服务器。相应地,第一级分组分布模块可用于执行用于一部分流(例如,较大流量流)的有状态流到服务器单播分组分布及用于一部分流(例如,较小流量流)的静态/无状态流到群组多播分组分布。在其它实施例中,除较大/较小流量流(例如,特定类型的业务或连接)外,此类混合方案可用于其它准则。
上述方案可提供某些潜在优点。首先,可检测到大部分的业务(例如,大象流的业务)并且将其单播转发到对应服务器而无需将分组多播到群组中的所有服务器。视群组内服务器的数量而定,这可有助于大幅降低在第一与第二级之间互连或耦合上的分组业务量。此外,可避免在其它情况下将在有状态第二级执行的一些相对计算更密集型的任务。由于较大流量流表可存储用于在数量上相对小的流的状态,因此,状态量不会过多(例如,较大流量流表可以是相对小的),使得存储状态的存储器和访问状态的时间和处理也不会过多。此外,检测较大流量流的相对计算更密集型任务及有状态分组分布已被卸载到分布式第二级分组分布模块。
在描述各种实施例后,现在将描述几个另外的备选实施例。实施例已相对于二级分组分布系统进行描述。然而,其它实施例可具有三级或更多级。例如,第一级可无状态映射流到更大群组,第二级可无状态映射流到更大群组内的较小子群组,以及第三级可有状态映射流到子群组内的单独服务器。
又如,在一些实施例中,可提供分组分布的第三级以支持在服务器和/或实现服务器的硬件之间的服务链接。在服务链接中,可使用如前面所述二级分组分布方案,将分组分布到第一服务器和/或第一服务器实现硬件。随后,在第一服务器和/或第一服务器实现硬件上的分组处理后,分组分布的第三级可用于将分组分布到相同网络元素的第二服务器和/或第二服务器实现硬件。在处理分组后,第一服务器和/或第一服务器实现硬件可将分组转发或分布到相同网络元素内相同或不同群组的第二服务器和/或第二服务器实现硬件。作为简单的示例,假设在第一服务卡上实现的第一服务器属于群组1,并且在第N个服务卡上实现的第N个服务器属于群组N,以及分组要先在第一服务器上处理并且随后要发送到第N个服务器以做进一步处理。也假设流是类型1流,这不是必需的。在第一服务器上处理分组后,对应于第一服务器和/或第一服务器实现硬件的静态/无状态第三级分组分布模块可选择群组(在此情况下的群组N)。可使用与前面为第1级所述方案类似的静态/无状态方案。分组可广播或多播到群组N。可在对应于第N个服务器的分布式第二级分组分布模块上执行分布式第二级分组分布的第二实例,以选择处理分组的第N个服务器以便进行处理。第N个服务器可处理分组。如果需要,可通过通常重复上述过程,执行另外的链接。
实施例已相对于提供服务到客户端的服务器进行描述。其它实施例适用于在客户端的集合之间分布分组。例如,在一个或更多个网络元素上客户端的集合(例如,每个在不同服务器刀片上)可启动与外部节点(例如,服务器)的连接。本文中公开的二级分组分布系统可用于将分组从外部节点(例如,服务器)转发到保持流粘度的客户端。
在上面的描述中,为便于解释。陈述了许多特定的细节以提供本发明的实施例的详尽理解。然而,本领域的技术人员将明白,可在这些特定细节不存在的情况下实践一个或几个其它实施例。所述特定实施例未提供用于限制本发明而是用于说明本发明。本领域的技术人员将认识到,通过在随附权利要求的精神和范围内的修改和变化,可实践本发明。描述因此要视为是说明性的而不是限制。本发明的范围不由上面提供的特定示例确定,而只由下面的权利要求确定。
在其它情况下,公知的电路、结构、装置和操作以框图开展示出或者未详细显示以免混淆对描述的理解。此外,在认为视当之处,标号或标号的末端部分已在图中重复以指示可选择性地具有类似特性的一致或类似的元素。
说明书中对“一个实施例”、“一实施例”、“示例实施例”等的引用指所述实施例可包括特定特征、结构或特性,但每个实施例可不一定包括特定特征、结构或特性。另外,此类词语不一定指同一实施例。此外,结合实施例描述某个特定特征、结构或特性时,应认为结合无论是否明确描述的其它实施例来影响此类特征、结构或特性是在本领域技术人员的认知之内。
在具体实施方式和权利要求书中,可使用术语“耦合”和“连接”及其衍生词。应理解,这些术语无意做为彼此的同义词。“耦合”用于指示可相互直接物理或电接触或不直接物理或电接触的两个或更多个元素相互协作或交互。“连接”用于指示在相互耦合的两个或更多个元素之间通信的建立。
各种操作和方法已描述。一些方法已在流程图中以基本形式描述,但操作可选择性地添加到方法和/或从方法中删除。另外,虽然流程图根据示例实施例示出操作的特定顺序,但要理解的是,该特定顺序是示范。备选实施例可选择地以不同顺序执行操作,组合某些操作,重叠某些操作等。可进行并且考虑了方法的许多修改和适应。
本发明的不同实施例可使用软件、固件和/或硬件的不同组合实现。因此,所述图中所示技术可使用一个或更多个电子装置(例如,终端站、网络元素)上存储和执行的代码和/或数据来实现。此类电子装置使用计算机可读介质存储和传递(在内部和/或通过网络与其它电子装置)代码和数据,如有形、非暂时性计算机可读存储介质和非有形暂时性计算机可读通信或传送介质。有形非暂时性计算机可读存储介质的几个代表性示例包括但不限于磁盘、光盘、诸如静态RAM (SRAM)或动态RAM (DRAM)等随机存取存储器(RAM)、诸如可编程ROM (PROM)、可擦除可编程ROM (EPROM)和电可擦除可编程ROM (EEPROM)等只读存储器(ROM)、闪存存储器、相变存储器及诸如此类。有形存储介质可包括一个或几个固态或有形物理材料,如半导体材料、相变材料、磁性材料等。实施例涉及一种制品,该制品包括存储指令序列的有形非暂时性计算机可读存储介质,指令序列在由机器(例如,网络元素、交换器、路由器、终端站、主机、计算机系统或具有至少一个微处理器的电子装置)执行时,促使或导致机器执行本文中公开的一个或几个操作或方法。非有形暂时性计算机可读传送存储介质的几个代表性示例包括但不限于电气、光学、声学或其它形式传播信号 - 如,载波、红外信号和数字信号。另外,此类电子装置一般情况下包括耦合到诸如一个或更多个存储装置(非暂时性机器可读存储介质)、用户输入/输出装置(例如,键盘、触摸屏和/或显示器)和网络连接等一个或更多个其它组件的一个或更多个处理器的集合。处理器的集合与其它组件的耦合一般情况下是通过一个或更多个总线和桥接器(也称为总线控制器)。因此,给定电子装置的存储装置一般情况下存储代码和/或数据以便在该电子装置的一个或更多个处理器的集合上执行。

Claims (25)

1. 一种在要处理分组的服务器之间分布所述分组、并且将所述分组的流的粘度提供到被指派成处理所述流的所述分组的服务器的方法,所述方法在一个或多个网络元素中执行,所述网络元素处于在传送分组的客户端与服务器之间的通信中,所述方法包括以下步骤:
在静态第一级分组分布模块接收流的分组;
使用所述静态第一级分组分布模块,从所述服务器的多个群组中静态选择用于所述流的所述分组的服务器群组,其中,静态选择所述服务器群组不涉及使用将所述流的所述分组指派到所选择的服务器群组的状态;
将所述流的所述分组分布到分布式有状态第二级分组分布系统;
通过访问指派所述流的分组的处理到所选择的服务器的状态,使用所述分布式有状态第二级分组分布系统,静态选择要处理所述流的所述分组的所选择的服务器群组的服务器;以及
将所述流的所述分组分布到所选择的服务器。
2. 如权利要求1所述的方法,其中所述分布式有状态第二级分组分布系统在与用于实现所述静态第一级分组分布模块的硬件不同的硬件上实现。
3. 如权利要求1所述的方法,其中所述分布式有状态第二级分组分布系统在包括用于实现所选择的服务器群组的硬件的硬件上实现。
4. 如权利要求1所述的方法,其中将所述流的所述分组分布到所述分布式有状态第二级分组分布系统的所述步骤包括将所述流的所述分组分布到多个分布式有状态第二级分组分布模块的每个模块的步骤,每个分布式有状态第二级分组分布模块对应于所选择的服务器群组的不同服务器。
5. 如权利要求4所述的方法,其中每个所述分布式有状态第二级分组分布模块执行以下步骤:
通过检查所述分组的报头,确定所述分组不是用于新流;
确定对应于所述分组的所述流的流标识符是否包括在做出所述确定的所述分布式有状态第二级分组分布模块的流表中,其中所述流表将流标识符指派到对应于在做出所述确定的所述分布式有状态第二级分组分布模块的所述服务器;以及
以下操作之一:(1)如果所述流标识符未包括在所述流表中,则促使丢弃所述分组;以及(2)如果所述流标识符包括在所述流表中,则促使接受所述分组以便由对应服务器进行处理。
6. 如权利要求5所述的方法,其中每个所述分布式有状态第二级分组分布模块执行以下步骤:
接收第二分组;
通过检查所述第二分组的报头,确定所述第二分组用于新流;
通过分组分布算法选择处理所述第二分组的服务器,其中所述分组分布算法可用于与用于所选择的群组的其它分布式有状态第二级分组分布模块的分组分布算法一致选择所述服务器;
确定为处理所述第二分组选择的所述服务器是否对应于选择了所述服务器的所述分布式有状态第二级分组分布模块;以及
以下操作之一:(1)如果所选择的服务器不对应于选择了所述服务器的所述分布式有状态第二级分组分布模块,则促使丢弃所述分组;以及(2)如果所选择的服务器确实对应于选择了所述服务器的所述分布式有状态第二级分组分布模块,则在选择了所述服务器的所述分组分布模块的流表中记录新流标识符,并且促使接受所述分组以便由所选择的服务器处理。
7. 如权利要求4所述的方法,其中每个所述分布式有状态第二级分组分布模块执行以下步骤:
确定对应于所述分组的所述流的流标识符是否包括在所述分布式有状态第二级分组分布模块的流表中,其中所述流表将流标识符指派到对应于所述分布式有状态第二级分组分布模块的所述服务器;以及
以下操作之一:(1)如果所述流标识符包括在所述流表中,则促使接受所述分组以便由所述对应服务器处理;以及(2)如果所述流标识符未包括在所述流表中,并且所述流标识符包括在所述分布式有状态第二级分组分布模块的存在的其它流表中,则促使丢弃所述分组,其中所述存在的其它流表列出指派到与对应于所述分布式有状态第二级分组分布模块的所述服务器不同的所述群组的服务器的流标识符。
8. 如权利要求1所述的方法,其中所述分布式有状态第二级分组分布系统包括多个分布式有状态第二级分组分布模块,每个分布式有状态第二级分组分布模块对应于所选择的服务器群组的不同服务器,以及其中分布式有状态第二级分组分布模块执行以下步骤:
将消息发送到对应于所选择的群组的所述服务器的其它分布式有状态第二级分组分布模块,其中所述消息指示对应于所述分布式有状态第二级分组分布模块的服务器的状态和负载;
接收来自所述其它分布式有状态第二级分组分布模块的消息,其中所收到的消息指示对应于所述其它分布式有状态第二级分组分布模块的所述服务器的状态和负载;以及
基于在所收到的消息中指示的所述状态和负载,调整所述分布式有状态第二级分组分布模块使用的分组分布算法。
9. 如权利要求1所述的方法,其中所述分布式有状态第二级分组分布系统包括对应于所选择的服务器群组的至少一个分布式有状态第二级分组分布模块和对应于第二服务器群组的至少一个分布式有状态第二级分组分布模块,以及其中所述方法还包括以下步骤:
在对应于服务器的所选择的群组的所述至少一个分布式有状态第二级分组分布模块接收来自对应于第二服务器群组的所述至少一个分布式有状态第二级分组分布模块的消息,其中所收到的消息指示与所述第二服务器群组相关联的至少一个负载;以及
至少部分基于在所收到的消息中指示的所述至少一个负载和与所述选择的服务器群组相关联的至少一个负载,将所述第二群组的一服务器重新指派到所选择的群组。
10. 如权利要求1所述的方法,其中所述方法在具有多个线路卡和从控制卡、服务卡与资源卡中选择的多个卡的单个网络元素中执行,其中用于实现所述静态第一级分组分布模块的硬件包括所述线路卡的硬件,以及其中所述分布式有状态第二级分组分布系统跨其分布的硬件包括从所述控制卡、所述服务卡和所述资源卡中选择的所述卡的硬件。
11. 如权利要求1所述的方法,还包括以下步骤:
在所述静态第一级分组分布模块接收第二流的第二分组,其中所述第二流是较大流量的流;
使用所述静态第一级分组分布模块,静态选择用于所述第二流的所述第二分组的服务器,其中静态选择用于所述第二分组的所述服务器包括使用将较大流量流指派到所述服务器的状态;以及
将所述第二流的所述第二分组分布到所选择的服务器。
12. 如权利要求1所述的方法,其中所述多个服务器群组的每个群组形成不同的虚拟局域网(VLAN)。
13. 如权利要求1所述的方法,其中静态选择要处理所述流的所述分组的所选择的服务器群组的所述服务器包括选择所述服务器以平衡在所选择的群组的所述服务器上的负载,其中静态选择所述服务器群组包括通过来自所述分组的信息执行哈希功能以静态选择所述服务器群组,其中所选择的群组的每个所述服务器包括不同服务器刀片、不同控制卡、不同服务卡、不同处理器及不同处理器核之一。
14. 如权利要求1所述的方法,还将服务器添加到所选择的服务器群组,其中将所述服务器添加到所选择的群组不会破坏提供到所选择的群组的所述服务器的现有流的粘度。
15. 如权利要求1所述的方法,还包括在使用所选择的服务器处理所述分组后:
从所述服务器的所述多个群组中静态选择第二服务器群组;以及
将所述分组分布到所述第二服务器群组。
16. 一种在服务器之间分布分组、并且将所述分组的流的粘度提供到所述服务器的多级分组分布系统,所述多级分组分布系统配置成部署在网络中在传送分组的客户端与所述服务器之间的一个或更多个网络元素中,所述多级分组分布系统包括:
静态第一级分组分布模块,配置成接收流的分组,所述静态第一级分组分布模块可用于从所述服务器的多个群组中静态选择用于所述流的所述分组的服务器群组,其中,静态选择所述服务器群组不涉及使用将所述流的所述分组指派到所选择的服务器群组的状态;以及
与所述静态第一级分组分布模块通信的分布式有状态第二级分组分布系统,其中所述分布式有状态第二级分组分布系统包括多个分布式有状态第二级分组分布模块,所述分布式有状态第二级分组分布模块可用于静态选择要处理所述流的所述分组的所选择的服务器群组的服务器,其中静态选择所述服务器涉及使用将所述流指派到所选择的服务器的状态,所述分布式有状态第二级分组分布系统可用于将所述分组分布到所选择的服务器。
17. 如权利要求16所述的多级分组分布系统,其中所述分布式有状态第二级分组分布系统在与用于实现所述静态第一级分组分布模块的硬件不同的硬件上实现。
18. 如权利要求16所述的多级分组分布系统,其中所述分布式有状态第二级分组分布系统在包括用于实现所述选择的服务器群组的硬件的硬件上实现。
19. 如权利要求16所述的多级分组分布系统,其中所述多级分组分布系统配置成部署在在具有多个线路卡和从控制卡、服务卡与资源卡中选择的多个卡的单个网络元素中,其中用于实现所述静态第一级分组分布模块的硬件包括所述线路卡的硬件,以及其中所述分布式有状态第二级分组分布系统跨从所述控制卡、所述服务卡和所述资源卡中选择的所述卡的硬件分布。
20. 如权利要求16所述的多级分组分布系统,其中所述多个分布式有状态第二级分组分布模块包括每个对应于所选择的服务器群组的不同服务器的多个分布式有状态第二级分组分布模块。
21. 如权利要求20所述的多级分组分布系统,其中对应于服务器的分布式有状态第二级分组分布模块包括:
分组检查模块,可用于通过检查所述分组的报头,确定所述分组不用于新流;
流表,将流标识符指派到对应于所述分布式有状态第二级分组分布模块的所述服务器;
流表校验器模块,可用于确定对应于所述分组的所述流的流标识符是否包括在所述流表中;以及
确定模块,可用于执行以下操作之一:(1)如果所述流标识符未包括在所述流表中,则促使丢弃所述分组;以及(2)如果所述流标识符包括在所述流表中,则促使接受所述分组以便由对应服务器进行处理。
22. 如权利要求21所述的多级分组分布系统,其中所述分组检查模块可用于接收分组并且可用于通过检查所述第二分组的报头,确定所述第二分组用于新流,以及还包括:
分组分布算法,可用于选择处理所述第二分组的服务器,其中所述分组分布算法可用于与用于所述选择的群组的其它分布式有状态第二级分组分布模块的分组分布算法一致选择所述服务器;
确定模块,可用于确定为处理所述第二分组选择的所述服务器是否与对应于所述分布式有状态第二级分组分布模块的所述服务器相同;以及
确定模块,可用于执行以下操作之一:(1)如果所述选择的服务器与对应于所述分布式有状态第二级分组分布模块的所述服务器不同,则促使丢弃所述分组;以及(2)如果所述选择的服务器与对应于所述分布式有状态第二级分组分布模块的服务器相同,则在所述分组分布模块的流表中记录新流标识符,并且促使接受所述分组以便由所述选择的服务器处理。
23. 如权利要求20所述的多级分组分布系统,其中对应于服务器的分布式有状态第二级分组分布模块包括:
流表,将流标识符指派到对应于所述分布式有状态第二级分组分布模块的所述服务器;
流表校验器模块,可用于确定对应于所述分组的所述流的流标识符是否包括在所述流表中;以及
存在的其它流表,其中所述存在的其它流表包括指派到与对应于所述分布式有状态第二级分组分布模块的所述服务器不同的所选择的群组的服务器的流标识符;以及
确定模块,可用于执行以下操作之一:(1)如果所述流标识符包括在所述流表中,则促使接受所述处理以便由所述对应服务器处理;以及(2)如果所述流标识符未包括在所述流表中,并且所述流标识符包括在所述存在的其它流表中,则促使丢弃所述分组。
24. 如权利要求16所述的多级分组分布系统,其中所述分布式有状态第二级分组分布系统包括多个分布式有状态第二级分组分布模块,每个分布式有状态第二级分组分布模块对应于所选择的服务器群组的不同服务器,以及其中对应于服务器的分布式有状态第二级分组分布模块包括:
消息发送模块,可用于将消息发送到所选择的群组的其它分布式有状态第二级分组分布模块,其中所述消息指示对应于所述对应服务器的状态和负载;
消息接收模块,可用于接收来自所述其它分布式有状态第二级分组分布模块的消息,其中所收到的信息指示所述对应服务器的状态和负载;以及
分组分布算法调整模块,可用于基于在所收到的消息中指示的所述状态和负载,调整所述分布式有状态第二级分组分布模块使用的分组分布算法。
25. 如权利要求16所述的多级分组分布系统,其中所述分布式有状态第二级分组分布系统包括对应于所述选择的服务器群组的至少一个分布式有状态第二级分组分布模块和对应于第二服务器群组的至少一个分布式有状态第二级分组分布模块,以及其中对应于所述选择的服务器群组的所述至少一个分布式有状态第二级分组分布模块包括:
消息接收模块,可用于在对应于服务器的所述选择的群组的所述至少一个分布式有状态第二级分组分布模块接收来自对应于第二服务器群组的所述至少一个分布式有状态第二级分组分布模块的消息,其中所述收到的消息指示与所述第二服务器群组相关联的至少一个负载;以及
服务器群组重新指派模块,可用于至少部分基于在所收到的消息中指示的所述至少一个负载和与所选择的服务器群组相关联的至少一个负载,将所述第二群组的一服务器重新指派到所选择的群组。
CN201380023427.7A 2012-05-04 2013-05-02 带有到服务器群组的无状态第一级分组分布和到群组内某个服务器的有状态第二级分组分布的二级分组分布 Active CN104272708B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/464,608 US8825867B2 (en) 2012-05-04 2012-05-04 Two level packet distribution with stateless first level packet distribution to a group of servers and stateful second level packet distribution to a server within the group
US13/464608 2012-05-04
PCT/IB2013/053454 WO2013164777A1 (en) 2012-05-04 2013-05-02 Two level packet distribution with stateless first level packet distribution to a group of servers and stateful second level packet distribution to a server within the group

Publications (2)

Publication Number Publication Date
CN104272708A true CN104272708A (zh) 2015-01-07
CN104272708B CN104272708B (zh) 2018-07-17

Family

ID=48670015

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380023427.7A Active CN104272708B (zh) 2012-05-04 2013-05-02 带有到服务器群组的无状态第一级分组分布和到群组内某个服务器的有状态第二级分组分布的二级分组分布

Country Status (5)

Country Link
US (1) US8825867B2 (zh)
EP (1) EP2845372B1 (zh)
CN (1) CN104272708B (zh)
ES (1) ES2711368T3 (zh)
WO (1) WO2013164777A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109743262A (zh) * 2019-01-30 2019-05-10 电子科技大学 一种基于流表虚拟化的mice flow聚合方法

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5867499B2 (ja) * 2011-03-01 2016-02-24 日本電気株式会社 仮想サーバシステム、管理サーバ装置及びシステム管理方法
US9426067B2 (en) 2012-06-12 2016-08-23 International Business Machines Corporation Integrated switch for dynamic orchestration of traffic
TWI476581B (zh) * 2012-12-28 2015-03-11 Ibm 主動式/使用中資訊設備叢集中提供高可用性的方法、裝置與電腦程式產品
US20140237118A1 (en) * 2013-02-19 2014-08-21 Broadcom Corporation Application Aware Elephant Flow Management
US10069903B2 (en) 2013-04-16 2018-09-04 Amazon Technologies, Inc. Distributed load balancer
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
US9137165B2 (en) 2013-06-17 2015-09-15 Telefonaktiebolaget L M Ericsson (Publ) Methods of load balancing using primary and stand-by addresses and related load balancers and servers
US9621642B2 (en) 2013-06-17 2017-04-11 Telefonaktiebolaget Lm Ericsson (Publ) Methods of forwarding data packets using transient tables and related load balancers
US9118571B2 (en) 2013-07-08 2015-08-25 Telefonaktiebolaget L M Ericsson (Publ) Methods of operating load balancing switches and controllers using matching patterns with unrestricted characters
US9118567B2 (en) * 2013-07-15 2015-08-25 Telefonaktiebolaget L M Ericsson (Publ) Removing lead filter from serial multiple-stage filter used to detect large flows in order to purge flows for prolonged operation
US9729510B2 (en) * 2013-07-24 2017-08-08 Nokia Solutions And Networks Gmbh & Co. Kg Network consolidation by means of virtualization
US9307018B2 (en) * 2013-09-11 2016-04-05 International Business Machines Corporation Workload deployment with real-time consideration of global network congestion
US20150189009A1 (en) * 2013-12-30 2015-07-02 Alcatel-Lucent Canada Inc. Distributed multi-level stateless load balancing
CN104980361B (zh) * 2014-04-01 2018-09-21 华为技术有限公司 一种负载均衡方法、装置及系统
US9485183B2 (en) 2014-04-25 2016-11-01 Telefonaktiebolaget Lm Ericsson (Publ) System and method for efectuating packet distribution among servers in a network
US9667494B2 (en) * 2014-06-30 2017-05-30 International Business Machines Corporation Abstraction layer and distribution scope for a logical switch router architecture
US9455908B2 (en) 2014-07-07 2016-09-27 Cisco Technology, Inc. Bi-directional flow stickiness in a network environment
EP2993866A1 (en) * 2014-09-08 2016-03-09 Alcatel Lucent Method for distribution of service requests
US9456030B2 (en) 2014-09-15 2016-09-27 Telefonaktiebolaget Lm Ericsson (Publ) Methods of operating load balancing switches and controllers using modified flow entries
US10003641B2 (en) 2014-09-16 2018-06-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and system of session-aware load balancing
US9571570B1 (en) * 2014-09-24 2017-02-14 Juniper Networks, Inc. Weighted rendezvous hashing
US10129077B2 (en) 2014-09-30 2018-11-13 Nicira, Inc. Configuring and operating a XaaS model in a datacenter
US9755898B2 (en) 2014-09-30 2017-09-05 Nicira, Inc. Elastically managing a service node group
US10063479B2 (en) * 2014-10-06 2018-08-28 Barefoot Networks, Inc. Fast adjusting load balancer
US9529531B2 (en) 2014-10-06 2016-12-27 Barefoot Networks, Inc. Proxy hash table
US9497123B2 (en) * 2014-12-18 2016-11-15 Telefonaktiebolaget L M Ericsson (Publ) Method and system for load balancing in a software-defined networking (SDN) system upon server reconfiguration
US10067967B1 (en) 2015-01-27 2018-09-04 Barefoot Networks, Inc. Hash table storing reduced search key
US9503363B2 (en) 2015-03-16 2016-11-22 Cisco Technology, Inc. Segment routing label switch paths in network functions virtualization communications networks
US10397313B2 (en) * 2015-03-18 2019-08-27 Nokia Of America Corporation Data stream load balancing utilizing multiple sets of servers
US10609091B2 (en) 2015-04-03 2020-03-31 Nicira, Inc. Method, apparatus, and system for implementing a content switch
US20160308766A1 (en) * 2015-04-16 2016-10-20 Ixia Unified Mapping Tables With Source/Destination Labels For Network Packet Forwarding Systems
US9979629B2 (en) 2015-08-21 2018-05-22 Cisco Technology, Inc. Distribution of segment identifiers in network functions virtualization and software defined network environments
WO2017053305A1 (en) * 2015-09-23 2017-03-30 Google Inc. Systems and methods for load balancing in a distributed software defined network packet core system
CN106301921B (zh) * 2016-08-16 2019-05-14 清华大学 基于隧道的大象流量传输调度方法及系统
US10476945B2 (en) * 2017-02-01 2019-11-12 Juniper Networks, Inc. Consistent flow assignment in load balancing
US10158573B1 (en) 2017-05-01 2018-12-18 Barefoot Networks, Inc. Forwarding element with a data plane load balancer
US10797966B2 (en) 2017-10-29 2020-10-06 Nicira, Inc. Service operation chaining
US10616321B2 (en) 2017-12-22 2020-04-07 At&T Intellectual Property I, L.P. Distributed stateful load balancer
US10797910B2 (en) 2018-01-26 2020-10-06 Nicira, Inc. Specifying and utilizing paths through a network
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
US10873636B2 (en) 2018-07-09 2020-12-22 Cisco Technology, Inc. Session management in a forwarding plane
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US11245750B2 (en) * 2019-02-16 2022-02-08 International Business Machines Corporation File server load balancing
US11042397B2 (en) 2019-02-22 2021-06-22 Vmware, Inc. Providing services with guest VM mobility
US11133999B1 (en) * 2019-10-04 2021-09-28 Rapid7, Inc. Network sensor deployment for deep packet inspection
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
US11283717B2 (en) 2019-10-30 2022-03-22 Vmware, Inc. Distributed fault tolerant service chain
US11223494B2 (en) 2020-01-13 2022-01-11 Vmware, Inc. Service insertion for multicast traffic at boundary
US11659061B2 (en) 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
US11438257B2 (en) 2020-04-06 2022-09-06 Vmware, Inc. Generating forward and reverse direction connection-tracking records for service paths at a network edge
CN113709044B (zh) * 2020-05-20 2023-05-23 阿里巴巴集团控股有限公司 数据转发方法、装置、电子设备和存储介质
US11477273B2 (en) * 2020-09-11 2022-10-18 Salesforce.Com, Inc. Feedback control based load balancing for containerized workloads
US11611625B2 (en) 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1575582A (zh) * 2001-09-28 2005-02-02 塞维斯通讯公司 可配置的自适应全球通信控制和管理
US20060233106A1 (en) * 2005-04-14 2006-10-19 Microsoft Corporation Stateless, affinity-preserving load balancing
US7321926B1 (en) * 2002-02-11 2008-01-22 Extreme Networks Method of and system for allocating resources to resource requests
CN102340525A (zh) * 2010-07-14 2012-02-01 美得康科技股份有限公司 医疗数据备援系统与备援及负载平衡方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7653700B1 (en) * 2000-11-16 2010-01-26 Microsoft Corporation System and method for performing client-centric load balancing of multiple globally-dispersed servers
US6944678B2 (en) * 2001-06-18 2005-09-13 Transtech Networks Usa, Inc. Content-aware application switch and methods thereof
US7860964B2 (en) * 2001-09-28 2010-12-28 Level 3 Communications, Llc Policy-based content delivery network selection
US7908605B1 (en) * 2005-01-28 2011-03-15 Hewlett-Packard Development Company, L.P. Hierarchal control system for controlling the allocation of computer resources
US7647424B2 (en) * 2005-06-15 2010-01-12 Hostway Corporation Multi-level redirection system
US8881167B2 (en) * 2008-04-28 2014-11-04 International Business Machines Corporation Load balancing in network based telephony applications
US8549146B2 (en) 2010-01-28 2013-10-01 Telefonaktiebolaget L M Ericsson (Publ) Stateless forwarding of load balanced packets
US8874744B2 (en) * 2010-02-03 2014-10-28 Vmware, Inc. System and method for automatically optimizing capacity between server clusters

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1575582A (zh) * 2001-09-28 2005-02-02 塞维斯通讯公司 可配置的自适应全球通信控制和管理
US7321926B1 (en) * 2002-02-11 2008-01-22 Extreme Networks Method of and system for allocating resources to resource requests
US20060233106A1 (en) * 2005-04-14 2006-10-19 Microsoft Corporation Stateless, affinity-preserving load balancing
CN102340525A (zh) * 2010-07-14 2012-02-01 美得康科技股份有限公司 医疗数据备援系统与备援及负载平衡方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109743262A (zh) * 2019-01-30 2019-05-10 电子科技大学 一种基于流表虚拟化的mice flow聚合方法
CN109743262B (zh) * 2019-01-30 2021-07-27 电子科技大学 一种基于流表虚拟化的mice flow聚合方法

Also Published As

Publication number Publication date
EP2845372A1 (en) 2015-03-11
WO2013164777A1 (en) 2013-11-07
EP2845372B1 (en) 2018-10-10
US8825867B2 (en) 2014-09-02
ES2711368T3 (es) 2019-05-03
US20130297798A1 (en) 2013-11-07
CN104272708B (zh) 2018-07-17

Similar Documents

Publication Publication Date Title
CN104272708A (zh) 带有到服务器群组的无状态第一级分组分布和到群组内某个服务器的有状态第二级分组分布的二级分组分布
US11588737B2 (en) Flow-based load balancing
CN102726021B (zh) 灵活的数据中心网络体系结构
US9137165B2 (en) Methods of load balancing using primary and stand-by addresses and related load balancers and servers
CN102118319B (zh) 流量负载均衡方法和装置
US7890656B2 (en) Transmission system, delivery path controller, load information collecting device, and delivery path controlling method
US9621642B2 (en) Methods of forwarding data packets using transient tables and related load balancers
EP2911348B1 (en) Control device discovery in networks having separate control and forwarding devices
CN102812676B (zh) 用于订户因特网协议主机路由的可缩放分布式用户平面分区两级转发信息库查找
US20140372616A1 (en) Methods of forwarding/receiving data packets using unicast and/or multicast communications and related load balancers and servers
CN104756451A (zh) 用于lag接口上网络流的动态负载平衡的方法
Wang et al. Implementation of multipath network virtualization with SDN and NFV
WO2014082538A1 (zh) 一种业务调度方法与装置及融合设备
CN103618678A (zh) 自适应多链路聚合的方法、装置及系统
CN101675346A (zh) 伪线负载平衡
CN106201356A (zh) 一种基于链路可用带宽状态的动态数据调度方法
CN102364900A (zh) 一种irf系统中基于frr的数据传输方法和设备
CN106375355B (zh) 负载均衡处理方法及装置
CN1953409A (zh) 一种半网状网的组网方法及其系统
CN107547394A (zh) 一种负载均衡设备多活部署方法和装置
EP2517422B1 (en) Grid router and network
CN110300073A (zh) 级联端口的目标选择方法、聚合装置及存储介质
CN105007234A (zh) 一种用于全局ip调度的负载均衡方法
US7633885B2 (en) Route computing system
Nithin et al. Efficient load balancing for multicast traffic in data center networks using SDN

Legal Events

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