CN1354578A - 动态负载平衡器 - Google Patents

动态负载平衡器 Download PDF

Info

Publication number
CN1354578A
CN1354578A CN01130371A CN01130371A CN1354578A CN 1354578 A CN1354578 A CN 1354578A CN 01130371 A CN01130371 A CN 01130371A CN 01130371 A CN01130371 A CN 01130371A CN 1354578 A CN1354578 A CN 1354578A
Authority
CN
China
Prior art keywords
packet
load balancer
accelerator
project
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN01130371A
Other languages
English (en)
Inventor
莱尔·沙别塔伊
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.)
AWAYA COMMUNICATION ISRAEL Ltd
Original Assignee
AWAYA COMMUNICATION ISRAEL Ltd
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 AWAYA COMMUNICATION ISRAEL Ltd filed Critical AWAYA COMMUNICATION ISRAEL Ltd
Publication of CN1354578A publication Critical patent/CN1354578A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/122Avoiding congestion; Recovering from congestion by diverting traffic away from congested entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)
  • Small-Scale Networks (AREA)

Abstract

一种由加速器交换机加速负载平衡器的操作的方法。该方法包括:由加速器交换机接收传送到负载平衡器的数据包;通过把小于五个的数据包参数与一个数据包组列表的项目的各个字段相比较,对至少一个所接收数据包确定该数据包是否与该列表的一个项目相匹配;以及响应该确定结果,由加速器交换机把至少一个所接收数据包直接转发到其目的地。

Description

动态负载平衡器
技术领域
本发明涉及通信网络特别涉及在这种网络中的服务器负载平衡。
背景技术
繁忙的网址通常包含一群多个服务器,每个服务器处理与部分客户机的连接。通常,这样一群服务器包括一个负载平衡器,其用于接收传送到该群的网址的数据包(也称为帧)。该负载平衡器在包含该网址的多个服务器之间分布该数据包,使得所有单个客户机对话(session)的数据包被传送到单个服务器。服务器负载平衡器也用于其它目的,例如把数据包重新传送到代理缓存器。
在一些情况中,在负载平衡器上的负载非常大,并且需要一个附加和/或较新的负载平衡器。但是,更换和/或增加负载平衡器可能需要大量的编程工作,使得新的平衡器根据旧的负载平衡器的操作规则而操作,或者附加的负载平衡器正确地与旧的负载平衡器协作。
负载平衡加速器通过根据旧的负载平衡器的行为学习如何分布传送到该网址的数据包(即,具有该网址的目标IP地址),其在此称为加速的负载平衡器。从客户机传送到网址的数据包被通过监听该数据包的加速器路由到该负载平衡器,并且在一个加速表中创建用于每组数据包的项目。该组数据包被根据通常定义通信对话期的五个参数而确定,即,来源和目标IP地址、协议和来源及目标端口。另外,从负载平衡器到服务器的数据包经过监听该数据包并搜索匹配项目的加速器。该加速器从由负载平衡器所转发匹配该表格中的项目的数据包中提取数据包的目标服务器,并且把它添加到各个项目。通过该加速器,从客户机到负载平衡器,匹配包含服务器标识的表格中的一个项目的数据包被加速器直接转发到服务器。
在此称为三角负载平衡器的一些负载平衡器根据负载平衡判定改变它们转发的数据包的目标MAC地址和VLAN,但是不改变数据包的IP报头中的信息。在称为半NAT(网络地址转换)转发的一种方案中,其它负载平衡器改变它们转发到服务器的数据包的目标IP地址和/或端口。这些半NAT负载平衡器必须截取从服务器到客户机的数据包,以把这些数据包的来源地址从服务器地址改变为该群的地址,即互联网网址。其它负载平衡器改变它们转发到服务器的数据包的来源和目标IP地址。这些负载平衡器被称为全NAT平衡器。
上述加速器适合用于三角负载平衡器。但是,这些加速器不适合用于半NAT和全NAT负载平衡器,因为由负载平衡器改变IP地址防止加速器查找在该表格中与转发到服务器的数据包相匹配的项目。
发明内容
本发明的一些实施例的一个方面涉及一种负载平衡加速器,其用于执行半NAT和/或全NAT转发的负载平衡器。
本发明的一些实施例的一个方面涉及一种负载平衡加速器,其根据与包括通常用于识别通信对话期的5个参数,即来源和目标IP地址、协议和来源及目标端口,不同的一组参数,识别应当转发到同一服务器的数据包的组。在本发明的一些实施例中,比上述5个参数用得更少的该组参数被用于识别转发到同一服务器的数据包组。
根据一般实践,即负载平衡器以相同的方式与属于单个对话期的数据包相关,现有技术中通常使用5个参数组,其识别不同组之间的差别的通信对话期。但是,许多负载平衡器以相同的方式与由包含更少参数的参数值所确定的更大组相关。通过在数据包分组中采用更小的参数组,加速器的操作被简化(例如,加速器的负载平衡表保持较小),而没有违反负载平衡器的负载平衡规则。另外,在一些情况中,可以根据不同的参数组识别通信对话期,因为在该组中的一些参数可能在特定的情况下会过盛。使用较少的参数简化负载平衡加速器的参数,并且减少所需的存储空间量。
在本发明的一些实施例中,根据不由半NAT负载平衡器所改变的参数,例如,IP来源地址、IP来源端口和协议,识别数据包组。通过仅仅根据不由半NAT负载平衡器所改变的参数识别数据包的组,可以容易地执行半NAT负载平衡器的加速。请注意,与通过基于数据包的网络的一般数据包不同,携带公共的IP来源地址和公共的来源端口的传送到一个互联网网址的数据包一般携带相同的IP目标地址和目标端口,从而被负载平衡器传送到相同的服务器。
在本发明的一些实施例中,其中当前把所有数据包从单个客户机传送到相同服务器的负载平衡器被加速,该加速器仅仅根据数据包的来源IP地址识别数据包组。仅仅使用在分组数据包中的单个参数进一步简化该加速器。
本发明的一些实施例的一个方面涉及一种负载平衡加速器,其把由加速器传送到负载平衡器的数据包与由加速器从负载平衡器接收的数据包相匹配。该匹配是根据不由工作在半NAT模式中的负载平衡器所改变并且对于两个不同数据包为相同的可能性较小的数据包部分而执行的。该加速器根据从两个匹配的数据包提取的信息创建一个负载平衡表的项目。
本发明的一些实施例的一个方面涉及一种负载平衡加速器,其在确定所接受数据包属于哪个数据包组时,使用用于不同所接收数据包的不同参数组的数值。例如,属于不同协议的数据包可能受到不同的处理。加速器根据第一组参数确定第一协议的数据包所属的组,而对于第二协议的数据包,使用第二组参数。
本发明的一些实施例的一个方面涉及一种负载平衡加速器,其允许用户配置在确定传送到相同服务器的数据包组中所用的参数。在本发明的一些实施例中,如果加速的负载平衡器把来自相同客户机的所有数据包转发到相同的服务器,则用户根据来源IP地址配置该加速器以确定数据包组。但是,如果加速的负载平衡器把数据包从相同的客户机转发到不同的服务器(例如,从相同客户机的不同端口转发),则用户根据来源IP地址和来源端口配置加速器以确定数据包组。
本发明的一些实施例的一个方面涉及一种负载平衡加速器,其自动确定被加速的负载平衡器的工作模式。在本发明的一些实施例中,加速器确定该负载平衡器是否工作在全NAT、半NAT或三角模式中。另外,加速器确定最小的参数组,其数值唯一地确定由负载平衡器把数据包转发到的服务器。例如,在一些实施例中,加速器确定负载平衡器可能把数据包从单个客户机转发到两个不同的服务器。
在本发明的一些实施例中,加速器把转发到负载平衡器的数据包(在此称为监控的数据包)的参数与从负载平衡器接收的相同数据包的参数相匹配。根据在相同数据包中转发到负载平衡器和从负载平衡器接收的状态之间的不同,该加速器确定负载平衡器的工作模式。
在本发明一些实施例中,监控的数据包包括传送到服务器的过程中从客户机接收的数据包,其作为它们正常处理的部分被转发到负载平衡器。另外,监控的数据包包括传送到客户机的过程中从服务器接收的数据包,其作为它们正常处理的部分被转发到负载平衡器。另外,监控的数据包包括用于确定负载平衡器的工作模式特别产生的数据包。
加速器存储转发到负载平衡器的所监控数据包的足够的识别信息,使得它们可以在被负载平衡器处理之后与从负载平衡器接收的数据包相匹配。识别信息例如包括数据包的有效负荷的前导部分或者例如TCP这样的传输协议的标识号。另外,识别信息包括由加速器在数据包中插入的唯一标签。另外,在负载平衡器的测试过程中,加速器把限制数目的数据包转发到负载平衡器,而不转发另外的数据包,直到从负载平衡器接收各个数据包为止。
因此,根据本发明的一个实施例提供一种由加速器开关加速负载平衡器的操作的方法,其中包括通过加速器开关接收传送到负载平衡器的数据包;通过把少于5个的数据包参数与该列表中的项目的各个字段相比较,对于至少一些所接收数据包确定该数据包是否匹配一个数据包组列表的一个项目;以及响应该确定结果,通过加速器开关把至少一些所接收数据包直接转换到它们的目标地址。
可选地,确定该数据包是否匹配该列表的一个项目,包括把该数据包的三个参数或更少的参数与列表中的各个字段相比较。另外,确定该数据包是否匹配该列表的一个项目,包括把该数据包的两个参数或单个参数与该列表中的各个字段相比较。优选地,确定该数据包是否匹配该列表中的一个项目,包括把该数据包的单参数与该列表中的各个字段相比较。
接收传送到负载平衡器的数据包可能包括接收从客户机传送到与负载平衡器相关的网址的数据包,把至少一些所接收数据包直接转发到它们的目标地址,包括把该数据包从客户机转发到该网址的一个服务器,而不通过负载平衡器。优选地,确定该数据包是否与该列的一个项目相匹配包括把该数据包的来源IP地址和来源端口与该列表中的各个字段相比较。在本发明的一些实施例中,所比较的参数不包括目标地址。
或者或另外地,接收传送到负载平衡器的数据包包括接收从服务器传送到客户机的数据包,以及把至少一些所接收数据包直接转发到它们的目标地址包括把数据包从服务器转发到客户机而不通过负载平衡器。优选地,确定该数据包是否与该列表中的一个项目相匹配包括把该数据包的目标IP地址与目标端口与该列表中的各个字段相比较。在本发明的一些实施例中,所比较的参数不包括一个来源地址。
在本发明的一些实施例中,转发至少一些所接收数据包包括转发没有找到匹配项的数据包。优选地,负载平衡器工作在半NAT或全NAT模式。
根据本发明的一个实施例,在此进一步提供在数据包组与各个目标服务器之间互相关的一个列表中产生一个项目的一种方法,其中包括由加速器接收由负载平衡器传送或传送到负载平衡器的数据包,其中该负载平衡器至少改变它转发到服务器的数据包的目标IP地址;以及由该加速器响应所接收的数据包在目标服务器的列表中创建一个项目。
可选地,创建项目包括创建不包含网址的目标地址的一个项目。可能,该数据包被传入或传出工作在半NAT模式或全NAT模式的负载平衡器。
可选地,接收该数据包包括接收从负载平衡器传送到服务器的数据包或者从服务器传送到负载平衡器的数据包。在本发明的一些实施例中,创建项目包括基本上仅仅使用在原样接收的所接收数据包中的信息创建该项目。另外,创建项目包括使用不包含在原样接收的所接收数据包中的信息来创建项目。在本发明的一些实施例中,创建项目包括利用来自以前由加速器所接收的所接收数据包的一个副本的信息创建该项目。
可选地,接收数据包包括从负载平衡器接收一个数据包,以及创建项目包括使用来自所接收数据包以及来自转发到负载平衡器的所接收数据包的一个副本的一个信息来创建该项目。
在本发明的一些实施例中,该方法包括由加速器接收传送到由负载平衡器管理的网址的数据包,在一个暂时存储器中存储传送到该网址的数据包的一个或多个参数的识别信息和数值,以及在该暂时存储器中搜索匹配来自负载平衡器的所接收数据包的项目,其中仅仅在找到匹配时才执行在数据包组的目标服务器的列表中创建项目的操作。
可选地,存储识别信息包括存储由加速器附加到数据包上的唯一标识号。另外,存储标识信息包括存储TCP数据包的至少一个排序和确认字段。另外,存储标识信息包括存储数据包的有效负荷的前导片断。
根据本发明的实施例,在此进一步提供一种负载平衡加速器,其中包括:接收传送到负载平衡器的数据包的输入接口;列出数据包组和它们各自目标服务器的表格,该表格具有容纳多个不同字段组的项目;把传送到负载平衡器的至少一个数据包与该表格的至少一个项目相比较的比较器;响应匹配项目的内容把由比较器找到的至少一个匹配数据包直接转发到服务器的转发单元;以及从多个不同字段组确定哪个字段包含在表格的每个项目中的控制器。
可选地,该控制器包括一个用户接口,通过该用户接口配置表格的项目的字段组。另外,该控制器自动确定包含在该项目中的字段。在本发明的一些实施例中,控制器把一个或多个数据包发送到负载平衡器,并且检查负载平衡器的响应,以确定包含在该项目中的字段。
可能地,该控制器确定该表格的字段,使得在一个时间内,该表格的所有项目具有相同的字段。另外,控制器确定该表格字段,使得在操作的至少一些周期中,该表格包括具有不同字段的至少两个项目。优选地,该表格的至少一个项目可以被配置为具有不同的字段组。另外,该表格包括具有不同字段组的多个子表格。
根据本发明的一个实施例,在此进一步提供一种负载平衡加速器,其中包括:接收传送到负载平衡器的数据包的输入接口;列出数据包组和它们各自的目标服务器的表格;把传送到负载平衡器的至少一些数据包与该表格的至少一些项目相比较的比较器;转发单元,其响应匹配项目的内容,把由比较器所查找的至少一些匹配数据包直接转发到服务器,该转换单元能够工作在多个工作模式,至少一些工作模式包括改变转发数据包的至少一个字段;以及控制器,其确定转发单元所工作在的模式。优选地,转换单元能够执行拼接。在本发明的一些实施例中,控制器根据用户配置确定转发单元的工作模式。另外,控制器根据传送到负载平衡器或者由负载平衡器传送的数据包内容,确定转发单元的工作模式。可能,控制器通过把来自负载平衡器的数据包的内容与传送到负载平衡器的数据包相比较,确定转发单元的工作模式。
附图说明
下面将结合附图,参照实施例的如下描述,来描述本发明的具体非限制性实施例。在多个图中出现的相同结构、单元或部件在全部附图中由相同或相似的标号所标注,其中:
图1为根据本发明一个实施例的服务器群的示意方框图;
图2为根据本发明一个实施例的加速器的负载平衡表;
图3为根据本发明一个实施例的在接收数据包时由加速器所执行的操作的流程图;
图4为根据本发明一个实施例的用于半NAT负载平衡器的加速器的负载平衡表;
图5为根据本发明另一个实施例的在接收数据包时由加速器所执行的操作的流程图;
图6为根据本发明一个实施例的加速器的负载平衡表;
图7为根据本发明另一个实施例的在接收数据包时由加速器所执行的操作的流程图;以及
图8为根据本发明一个实施例的与多个负载平衡器一同工作的一个服务器群的示意方框图。
具体实施方式
图1为根据本发明一个实施例的服务器群20的示意方框图。服务器群20包括多个服务器22(标号为22A、22B、22C和22D),其容纳一个互联网网址。传送到该网址的数据包,即具有该网址的IP地址的数据包,被路由到负载平衡器24,其确定应当由哪个服务器22转发该数据包。优选地,服务器群20根据半NAT方案而工作,即,该负载平衡器替换它转发到服务器22的数据包的至少一个IP目标地址和/或TCP/UDP目标端口字段。另外,负载平衡器24工作在三角模式。另外,如下文中所述,负载平衡器24根据全NAT方案而工作。
加速器26作为一个在负载平衡器24和客户机之间以及在负载平衡器24与服务器22之间传送数据包的交换机。加速器26从至少一些由它转发的数据包对至少一些数据包组确定该组数据包要转发到的服务器22。相应地,加速器26把所确定组的数据包直接转发到各个服务器22。在本发明的一些实施例中,其中负载平衡器24工作在半NAT模式,加速器26对它直接转发到服务器22的数据包执行IP目标地址的替换。优选地,加速器26还改变从服务器22发送到客户机的数据包的来源地址。
图2为根据本发明一个实施例的加速器26在负载平衡器24工作在三角模式时使用的负载平衡表30。表格30包括识别总是转发到同一服务器22的数据包组的一个或多个参数的关键字段32。在表格30与现有技术之间的一个差别是关键字段32的数目和/或特性。在本发明的一些实施例中,关键字段32包括小于5个的字段。在本发明的一些实施例中,关键字段32不包括与从客户机传送到服务器组的数据包的目标相关的字段(例如,目标地址或端口)。在本发明的一个示意实施例中,关键字段32包括客户机地址字段34、客户机端口字段36和协议字段38。另外,例如当负载平衡器24仅仅处理TCP数据包时,关键字段不包括协议字段38。另外,关键字段32包括关键字段32和识别与该数据包相关的网址的字段。如果客户机端口包含在该关键字段中,由于在表格30中所需的项目数小于?,这种择一情况特别适用于负载平衡器24把从单个客户机到单个网址的所有数据包传送到同一服务器的情况。
除了关键字段32之外,表格30包括与匹配特定项目的关键字段32的数据包的处理相关的结果字段40。在本发明的一些实施例中,结果字段40包括识别该组数据包应当转发到的服务器22的目标字段,例如通过指定服务器的MAC地址以及可选的VLAN。
图3为根据本发明的一个实施例在接收数据包时由加速器26所执行的操作的流程图。在图3的方法中,当工作在三角模式时,加速器26与负载平衡器24协同工作。如果(52)所接收(50)数据包被从客户机发送到服务器群20,则加速器26确定(54)该数据包是否具有在表格30中的一个匹配项目。如果(54)找到一个匹配项目,则在匹配所接收数据包的项目中的结果字段40,把数据包直接转发(56)到一个服务器22。但是,如果没有找到一个匹配项目,则把数据包转发到(57)负载平衡器24。该匹配一般是通过把数据包的字段与该项目的关键字段32相比较而执行的。例如,找到一个匹配,如果数据包的IP来源地址、来源端口和协议与客户机地址34相匹配,则客户机端口36和协议38在该项目中列出。
如果除了把数据包转发到(62)服务器之外还把所接收数据包从负载平衡器24传送到(52)其中一个服务器22,则加速器26确定(基本上与对确定步骤(54)描述的相同)一个匹配项目是否(58)存在于表格30中。如果(58)不存在一个匹配项目,则加速器26从数据包提取来源地址、来源端口和目标服务器信息,并且在表格30中创建(60)各个项目。项目的创建(60)一般是通过把数据包的来源地址和端口置于字段34和36中,把数据包的协议置于字段38中以及把数据包的目标MAC地址和可选的VLAN置于字段40中而执行的。优选地,加速器26仅仅对一些数据包组创建项目。例如,在本发明的一些实施例中,加速器26具有有限尺寸的表格,并且当该表格被填满时不创建附加项目。另外,加速器26仅仅对例如HTTP和/或FTP这样的特定协议的数据包创建字段,和/或对属于预期具有大的通信量的对话期的数据包创建字段。例如,加速器26不对属于预期包含非常少的数据包的组中的数据包创建字段。
在本发明的一些实施例中,如果(58)存在一个匹配项目,则通常不接收从负载平衡器24传送到服务器22的数据包,这种数据包被直接转发到各个服务器22,并且将不被转发到负载平衡器24。如上文所述,如果无论如何接收到这种数据包,则它们被直接转发到在该数据包中涉及的服务器。在本发明的一些实施例中,如果在项目中的信息与数据包中的信息不同,则加速器26使用数据包的内容来更新各个项目。优选地,在本发明的一些实施例中,加速器26定期地把从客户机传送到服务器群的数据包转发到负载平衡器24,使得这些数据包将被用于刷新它们各自的项目。另外,如下文所述,加速器26定期地从表格30中删除项目,使得它们被刷新。
如果(52)所接收数据包被传送到客户机,或者被传送到任何上文所述之外的其它方向,则加速器26根据其内容转发(72)数据包,而没有任何特殊的处理。在其它方向传送的这种数据包例如包括与访问服务器群20无关的数据包,例如传送到负载平衡器24本身的数据包或者传送到特定服务器22的数据包。另外,加速器26把这种数据包转发到相邻的路由器,其确定它们要被转发的路径。
在本发明的一些实施例中,加速器26根据数据包的IP和/或MAC来源和/或目标地址确定它接收数据包的方向。另外,使用任何其它方向确定方法,例如在下文中参照图5和/或图7所述的方法。在本发明的实施例中,其中负载平衡器24工作在三角模式,根据它们的来源和目标MAC地址以及它们的目标IP地址确定数据包的方向。具有负载平衡器24的来源MAC地址和由负载平衡器24所管理的网址的目标IP地址的数据包被从负载平衡器24传送到服务器。从客户机传送到负载平衡器24的数据包具有由负载平衡器24所管理的网址的目标IP地址和负载平衡器24的目标MAC地址。所有没有满足上文所述情况的其它数据包被加速器26转发而没有任何特殊的测量。
图4为根据本发明的一个实施例加速器26在负载平衡器24工作在半NAT模式时使用的负载平衡表31。表格31类似于表格30,但是,在本发明的一些实施例中,表格31的结果字段40根据它们的IP地址识别服务器22。在本发明的一些实施例中,结果字段40包括一个服务器IP地址字段42,其指定数据包(即,来自客户机的数据包)转发到哪个匹配客户机的服务器22的IP地址。优选地,结果字段40还包括一个服务器端口字段44,其指定数据包应当改变到哪个匹配客户机的目标端口的数值。在本发明的一些实施例中,在服务器端口字段44中的特定数字表示应当使用数据包的来源端口。
在本发明的一些实施例中,表格31还包括识别要插入到从服务器22传送到客户机的匹配数据包中的群地址。优选地,群字段45包括一个群IP地址字段43和一个群端口字段47。另外,加速器26与仅仅用于单个群地址的负载平衡器24协同工作,并且对表格31的每个项目存储单组群数值,而不是表格31对每个项目包含分离的群字段45。优选地,由于群20的IP地址和/或端口数值被存储在单组数值中,从而由系统管理员配置给加速器26。另外,加速器26从由客户机发送到该组的数据包或从负载平衡器24转发到客户机的数据包得知该群20的IP地址和/或端口数值。
图5为示出根据本发明一个实施例在接收数据包时由加速器26所执行的操作的流程图。图5的方法是图3的方法的一种变形,其中负载平衡器24工作在半NAT模式。因此,下文的描述仅仅针对于与参照图3的描述不同的操作。如图5中所述,在根据它们的匹配项目转发(56)从客户机传送到服务器群20的数据包之前,加速器26把数据包的目标IP地址改变为(55)在匹配项目的结果字段40中列出的服务器22的地址。优选地,加速器26还把数据包的目标端口改变为在匹配项目中的服务器端口字段44的数值。
可选地,当加速器26改变(55)转发到(56)服务器22的数据包的目标IP地址时,它在群字段45中存储替换的IP目标地址和/或替换的目标端口,用于改变(68)发送到客户机的数据包的来源字段。另外,加速器26仅仅根据匹配该项目的从客户机接收并且使用该项目由加速器转发到服务器22的第一数据包,在群字段45中存储数值。优选地,在其匹配项目的群字段45被填充前返回到客户机的数据包通向负载平衡器24进行处理。可能,加速器26从由负载平衡器24传送到客户机的数据包得知该项目的群字段45的内容。
或者,例如当负载平衡器24仅仅用于单个群时,在创建(60)一个项目中,从预先配置的数值中取出群字段45的内容,或者从传送到服务器群20的一个数据包得知群字端45的内容。另外,如果负载平衡器24表示多个群,则在转发(57)从客户机传送到一个群的数据包之前,该数据包没有匹配项目,对该数据包准备一个分项目。该分项目包括如上文参照图3所述从数据包中取出的关键字段,以及从数据包的目标字段(地址和端口)取出数值的群字段45。在根据从负载平衡器24传送到服务器22的数据包创建(60)一个项目中,加速器26查找匹配该数据包的分项目,并且从数据包的目标字段填充服务器地址42和服务器端口44。
或者,根据传送到客户机的数据包,执行分项目的创建、项目填充和/或创建整个项目。从传送到客户机的数据包的目标字段取出关键字段32的数值。从由负载平衡器24传送到客户机的数据包的来源字段取出群字段45,或者当负载平衡器24表示单个群时由用户预先配置该群字段。从由服务器22传送到客户机的数据包的来源字段取出结果字段40的数值。
如果(52)把所接收数据包从服务器22传送到客户机,则加速器26确定该数据包是否具有在表格31中的匹配项目。通过把数据包的目标字段与关键字段32相比较查找一个匹配项目。如果存在各个项目,则加速器26把来源地址字段以及可选的来源端口字段改变(66)为群字段45中的IP地址和端口值。然后把改变的数据包转发(68)到客户机。如果确定(64)不存在一个匹配项目,则把数据包转发到(70)负载平衡器24进行处理。另外,来源端口和地址被改变为群20的各个数值,或者改变为任何其它默认数值,并且该数据包被直接转发到(68)客户机。
在其它方向上传送的数据包,例如从负载平衡器24到客户机,被根据它们的内容而转发到它们的目标地址。
在本发明的一些实施例中,加速器26根据数据包的来源和目标IP地址,确定(52)所接收数据包的方向。例如,当负载平衡器24工作在半NAT模式时,从客户机传送到服务器群20的数据包具有该群的目标IP地址,并且从负载平衡器24传送到服务器22的数据包具有一个服务器的目标IP地址。从服务器22传送到客户机的数据包具有该服务器的来源IP地址,而从负载平衡器24传送到客户机的数据包具有该群的地址作为它们的来源IP地址。
另外,加速器26根据数据包的来源和目标端口确定(52)所接收数据包的方向。例如,传送到HTTP(或者其它服务器协议)端口的数据包或者从客户机传送到服务器群20,或者从负载平衡器24传送到服务器群20。具有HTTP端口号作为它们的来源端口的数据包被从服务器22或从负载平衡器24传送到客户机。具有其它端口号的数据包被认为与服务器群20无关,并且仅仅传送到(59)它们的目标地址。另外,传送到服务器群的20的数据包具有与传送到服务器的数据包不同的端口号。
或者或另外,来自不同方向的数据包被在不同的VLAN和/或用不同的MAC地址发送到加速器26。例如,客户机在第一VLAN与服务器群20进行通信,并且服务器群20在第二VLAN与负载平衡器24进行通信。可以使用本领域内已知的任何方法来执行VLAN的分配。在本发明的一些实施例中,除了使用不同的VLAN之外,加速器26具有不同的MAC地址,其用于不同的数据包。例如,用第一目标MAC地址接收来自客户机的数据包,以及用第二MAC地址接收来自服务器的数据包。另外,服务器22用第一IP和/或MAC地址把与群20相关的消息发送到加速器26,并且用第二IP地址和/或MAC地址把与该群无关的消息发送到加速器26。
在本发明的一些实施例中,另外使用数据包的MAC地址来确定数据包的方向。携带负载平衡器24的来源MAC地址的数据包来自负载平衡器,并且携带一个服务器22的来源MAC地址的数据包来自该服务器。
或者或另外,每个服务器被分配两个或多个不同的IP地址。第一IP地址用于识别用于其专用通信的服务器,而作为群20的一部分接收的数据包使用第二IP地址。优选地,服务器22具有用于它们所包含的每个网址的分离IP地址。另外,每个服务器被分配两个或多个不同的MAC地址。
或者,为了加速到客户机的通信以及来自客户机的通信,由于互联网通信流在通向客户机的方向上具有较大比例,因此加速器26仅仅在通向客户机的方向上进行加速负载平衡器24的操作。在这种替代情况下,从客户机传送到该群的数据包被转发到(57)负载平衡器24,而没有确定该数据包是否具有匹配项目。
图6为根据本发明一个实施例的用于参照图7描述的方法中的加速器26的负载平衡表130。负载平衡表130类似于上文从参照图4描述的表格31,附加字段用于与工作在全NAT模式的负载平衡器的操作。但是,应当指出该表格130还可以用于工作在其它模式的负载平衡器。与表31相类似,表格130包括引用由客户机所分配的原始来源数值的客户机地址字段34和客户机端口字段36、协议字段38、群字段45和结果字段40(例如,服务器地址字段42和服务器端口字段44),为了清楚地在下文中描述,把其称为服务器字段40。另外,表格130包括伪客户机字段49,例如伪客户机地址46和伪客户机端口字段48。
在一些实施例中,被用作为关键字段的字段(即,确定数据包是否与一个项目相匹配中与相应数据包字段相比较的字段)取决于搜索匹配的数据包流的方向。根据客户机关键字段,把从客户机传送到群20的数据包与表格130相比较,该客户机关键字段包括在由客户机产生数据包时匹配该数据包的字段。在一个实施例中,客户机关键字段包括关键字段32、客户机端口字段36以及可选的协议字段38。根据服务器关键字段,把从负载平衡器24传送到服务器22的数据包和/或从一个服务器22传送到客户机的数据包与表格130相比较,该服务器关键字段包括在由负载平衡器24改变数据包的字段之后匹配数据包的字段。在本发明的一些实施例中,服务器关键字段包括伪客户机字段49和可选的协议字段38和/或一个或多个服务器字段40。
在本发明的一些实施例中,在创建之后经过预定时间,删除表格30、31和/或130的项目。另外,如果在预定时间内不使用该项目则把它删除。在本发明的一些实施例中,表格30、31和或130包括时效字段,其用于跟踪该项目存在的时间和/或该项目不被使用的时间。优选地,加速器26确定与一个客户机的对话何时结束,并且相应地从表格30、31和/或130中删除项目。例如,加速器26可以在接收具有匹配该项目的一组FIN位(其表示连接的结束)的数据包之后的预定时间后删除项目。
图7为根据本发明的一个实施例在接收数据包时由加速器26所执行的操作的流程图。图7的方法是图5的方法一种变形,其中负载平衡器24工作在全NAT模式。在图7的方法中,加速器26对提供给负载平衡器24的数据包和在由负载平衡器所处理之后的同一数据包之间互相关。根据互相关数据包的参数创建表格130中的项目。在本发明的一些实施例中,对提供给负载平衡器24的一些或所有数据包在暂时存储器中创建项目,以执行互相关。
如果(52)所接收(50)数据包从一个客户机传送到服务器群20,则加速器26根据客户机关键字段确定(54)该数据包是否具有在表格130中的匹配项目。例如,数据包的来源地址和端口分别与字段34和36相比较,并且把数据包的协议字段与字段38相比较。如果(54)找到一个匹配项目,则加速器26用该匹配项目的字段42、44、46和48(图6)中的数值改变(75)来源和目标IP地址和端口。然后把改变后的数据包直接转发到(56)由改变的IP目标字段所标识的服务器22。优选地,替换的目标IP地址和/或端口被分别存储在群IP地址字段43和群端口字段47中,用于在响应数据包传送回客户机时使用。
如果(54)没有找到一个匹配项目,则把数据包转发到(57)负载平衡器24。除了把数据包转发到(57)负载平衡器24之外,加速器26在暂时存储器中创建(77)用于该数据包的一个项目。在本发明的一些实施例中,在暂时存储器中的项目包括客户机数据包信息,例如数据包的来源IP地址和来源端口,以及识别该数据包所需的信息,如下文中所述。优选地,存储在暂时存储器中的客户机数据包信息还包括该数据包的目标地址和/或目标端口。另外,客户机数据包信息还包括从数据包的目标字段取出的群信息。
可选地,在暂时存储器中创建用于所接收数据包的项目之前,加速器26检查暂时存储器的另一个项目是否具有与所接收数据包相同的客户机数据包信息(例如,来源IP地址和来源端口)。如果在暂时存储器中找到这样一个项目,由于仅仅需要单个数据包互相关以在表格130中创建用于一个数据包组的项目,则不对所接收数据包在暂时存储器中创建一个项目。另外,如果旧项目存在于在暂时存储器中超过预定时间,则创建一个项目以代替来源组的旧项目。另外,对于在相同来源组的数据包允许在暂时存储器中具有一定数目的项目,以便于例如当一个数据包丢失时允许更快地在表格130中构造项目。在本发明一些实施例中,根据在暂时存储器中的空闲空间的量和/或在负载平衡器24上的负载,动态地调节用于相同来源组的暂时存储器中的预定数目的许可项目。
在本发明的一些实施例中,加速器26在项目创建的预定时间之后从暂时存储器中删除项目和/或定期删除在暂时存储器中的所有项目。另外,当暂时存储器为充满并且应当创建新的项目时,改写最旧的项目。当找到匹配并且在表格130中创建一个项目时,删除在暂时存储器中的各个项目。
如果(52)除了把数据包转发到(62)之外,还把所接收数据包从负载平衡器24发送到一个服务器22,则加速器26确定在表格130中是否(58)存在一个匹配项目。如果(58)不存在一个匹配项目,则加速器26根据所存储的识别信息在该暂时存储器中搜索与该数据包相匹配的项目。如果(82)在暂时存储器中找到一个匹配项目,则加速器26根据所接收数据包的参数和来自暂时存储器的匹配项目的客户机数据包信息在表格130中创建(84)一个项目。在本发明的一些实施例中,从暂时存储器中的客户机数据包信息的各个来源字段取出关键字段32和客户机端口字段36的数值。从数据包的协议字段取出协议字段38的数值。从数据包的目标字段取出服务器字段40的数值,以及从数据包的各个来源字段取出伪客户机字段49的数值。优选地,从暂时存储器中的群字段取出群字段的数值。
如果(52)所接收数据包从服务器22传送到客户机,则加速器26根据如上文中所定义的服务器关键字段确定(64)该数据包是否具有在表格130中的各个项目。如果存在各个项目,则加速器26把数据包的来源IP地址和来源端口改变为(86)群20的来源IP地址和来源端口。另外,加速器26把数据包的目标IP地址和目标端口改变为(88)匹配项目的客户机字段34和36的数值。所改变的数据包然后被转发到(68)到客户机。如果匹配字段被确定为(64)不存在,则把数据包转发到(70)负载平衡器24,用于处理。
根据数据包的内容,把在其它方向上传送的数据包,例如从负载平衡器24到客户机,转发到(72)它们的目标地址。
在本发明的一些实施例中,加速器26确定使用任何参照图5中所述的方法接收的数据包的方向。在本发明的一个实施例中,根据作为由群20所管理的一个网址的地址,识别从客户机传送到该网址的数据包。根据作为负载平衡器24的来源MAC地址和作为由负载平衡器24所使用的伪客户机地址的来源IP地址识别从负载平衡器24传送到服务器的数据包。根据作为伪客户机地址的目标IP地址和可选的作为负载平衡器24的地址的目标MAC地址,识别从服务器22传送到负载平衡器24的数据包根据作为由群20所管理的一个网址的地址的来源IP地址识别从负载平衡器24传送到客户机的数据包。不适于上述分类的数据包被作为与群20无关而转发。
在本发明的一些实施例中,当传送到负载平衡器24的所接收数据包与暂时存储器中的一个项目相匹配时,在该暂时存储器中的项目被删除,并且没有项目被创建用于所接收的数据包。因此,当由于具有相同识别信息的附加数据包被传送通过网络而可能出现匹配错误时,加速器26不根据匹配数据包(来自和/或到负载平衡器24)而在表格30中创建项目。
或者或另外地,在暂时存储器和/或在表格130中创建一个项目之前,加速器26估算该数据包的识别信息的可靠性。如果该数据包不够可靠,即有可能由加速器26接收具有相同标识信息的不同数据包,则不创建一个项目。可能由于数据包非常短或者携带非常普通信息的数据包而产生不可靠的识别信息。
在本发明的一些实施例中,在暂时存储器中的项目被存储预定的时间,在该时间之后假定该数据包被丢失因此删除该项目。另外,填充有最旧的项目的暂时存储器被改写。当找到一个匹配并且已经在表格130中创建(84)一个项目,则从暂时存储器中删除该项目。
在本发明的一些实施例中,用于识别在暂时存储器中的数据包的信息包括该数据包的一个或多个特定字段,其该特定字段在两个不同的帧中具有相当小的无意重复的可能性。在本发明的一些实施例中,从该帧的各个报头中取出该特定字段。在本发明的一些实施例中,该识别信息不包括可能被负载平衡器24所改变的字段,例如数据包的VLAN和/或IP和MAC地址。优选地,该识别信息不包括对大量帧具有相同数值的字段,例如IP报头长度和/或版本。在本发明的一个实施例中,对于TCP数据包来说,该特定字段包括该TCP(传输控制协议)报头的一个或多个序列和确认字段以及数据包的长度。在本发明的一个实施例中,对HTTP(Hypertext Transfer Protocol,WWW服务程序所用的协议)数据包来说,该特定字段包括URL(统一资源定位符)字段和/或cookie字段。
或者或另外地,该识别信息包括容易比较和/或在任何两个随机选择的通过加速器26的数据包之间具有小的互相关或者不相关的随机字段。在本发明的一个实施例中,该随机字段包括预定的数目(例如,50-100之间)的前导、中间和/或末尾字节。前导字节可选地从IP报头之后,从传输报头之后或者从任何其它报头之后计数,从而它们不包括被负载平衡器24所改变的字段。在本发明的一些实施例中,使用一个或多个特定字段或一个或多个随机字段的组合。
或者或另外地,识别信息包括除了可以由负载平衡器24所改变的字段之外的整个数据包。
图7的方法可以用于各种类型的全NAT负载平衡模式。在一个全NAT模式中,负载平衡器24替换它转发到服务器22或由服务器22转发来的数据包的来源和目标IP地址。优选地,在全NAT模式中,负载平衡器24替换它转发的数据包的来源和目标端口地址。在另一个全NAT模式中(称为拼接),负载平衡器24改变它所转发的可能除了IP地址和/或协议端口之外的数据包的TCP序列号(包括确认号)。在该模式中,表格130优选地包括用于改变TCP序列号的一个或多个附加字段。在本发明的一个实施例中,传送到负载平衡器24的数据包的序列号与客户机数据包信息一同存储在暂时存储器中。当接收一个从负载平衡器24到服务器22的数据包时,在所接收数据包和暂时存储器中的序列号和/或该序列号本身被存储在所创建的项目中。在另一个全NAT模式中,在此称为代理转换,可能除了其它模式的其它改变之外,负载平衡器24把要求转发的HTTP的内容改变为代理格式。
在本发明的一些实施例中,根据负载平衡器24所工作的特定模式,选择用于把转发到负载平衡器24的数据包与从负载平衡器24接收的数据包相匹配的字段。另外,用于匹配中的字段是在所有模式中不改变的字段。在代理转换模式中,加速器26考虑到在匹配数据包中在代理转换时执行的改变。
在本发明的一些实施例中,加速器26对传送到群20的数据包标记一个唯一的标识号,其转发到负载平衡器24。该唯一标识号用作为标识信息。该唯一标识号可以使用各种方法标记到帧上。在本发明的一些实施例中,包括唯一标识号在内的附加字段,例如附加报头或结尾被添加到传送到负载平衡器24的帧上。另外,包括唯一标识号的IP可选字段和/或TCP可选字段被添加到该帧。优选地,附加字段不被添加到具有最大长度的数据包,超过该长度则必须对帧分段。
在本发明的一些实施例中,唯一的标识号被置于该帧的一个现有字段中。优选地,该唯一标识号被置于不被使用并且不被负载平衡器24所更改的保留字段中,例如在IP报头的服务类型(TOS)字段和/或不包含片断的帧中的IP报头的分段字段中的保留位。优选地,当分段字段被用于存储唯一的标志号时,加速器26不改变并且不从被分段的帧中获得信息。
或者或另外地,加速器26替换可能用于例如IP报头的分段字段中的一个或多个帧字段的数值,并且当该帧原路返回时返回原始数值。在本发明的一些实施例中,加速器26识别是否需要替换字段的当前数值,并且仅仅当需要该数值时存储该原始数值,例如,该帧实际被分段。
在本发明的一些实施例中,仅仅当加速器26得知所有通过加速器26到达负载平衡器24的帧必须通过加速器26返回时,把唯一的标识号添加到所接收的帧。例如,当负载平衡器24仅仅通过加速器26的一个或多个端口连接时,可能出现这种情况。在本发明的一些实施例中,当该帧从负载平衡器24返回时,加速器26消除该唯一标识号。在本发明的一些实施例中,系统管理员利用关于负载平衡器24是否仅仅通过加速器26连接的控制配置加速器26。另外,加速器26保持跟踪它从负载平衡器24接收的帧的IP目标地址,并且仅仅把唯一的标识号标记到具有一个IP目标地址的帧,先前利用该IP地址从负载平衡器24接收一个帧。
或者,该唯一标识号不需要这样麻烦没有认识到该唯一标识号的含义的路由器和/或服务器的一种方式来改变该帧,并且把该唯一标识号保留在该帧中。
在本发明的一些实施例中,如下文参照表格30所述,加速器26没有对一些数据包组创建在表格130中的项目。优选地,加速器26没有为那些没有根据加速器26的规则在表格130中创建项目的数据包在暂时存储器中创建项目。
在本发明的一些实施例中,加速器26可以与根据不同的工作模式而工作的负载平衡器24一同工作。优选地,系统管理员根据负载平衡器24的工作模式配置加速器26。
或者或另外地,加速器26自动地确定负载平衡器24是否工作在三角模式、半NAT模式、全NAT模式或者任何其它模式。在本发明的一些实施例中,当加速器26开始工作和/或定期地工作时,它检查负载平衡器24的工作模式。工作模式的定期检查例如可以在加速器26的工作过程中替换和/或重新配置负载平衡器24的那些实施例中是需要的。在本发明的一些实施例中,自动确定是通过把一个可识别数据包发送到负载平衡器并且确定该可识别数据包如何被负载平衡器所处理而执行的。在本发明的一些实施例中,由加速器26产生可识别数据包,以测试负载平衡器24。另外,可识别数据包包括从客户机接收的由加速器26学习如何识别的一个数据包。在本发明的一些实施例中,该可识别数据包由加速器26所标记,以便于它的识别。另外,加速器26存储可识别数据包的一个或多个唯一字段(或极少重复的字段),以便于数据包的识别。除了使用可识别数据包之外,当加速器26测试负载平衡器24时,它同时仅仅把限制数目的数据包,例如仅仅单个数据包,发送到负载平衡器24。
在本发明的一些实施例中,加速器26可以与把所有数据包从单个客户机IP地址传送到单个服务器22的负载平衡器24一同工作。这种负载平衡器24最好仅仅代表单个网址。在一些实施例中,加速器26可以通过系统管理员来配置,使得关键字段32仅仅包括关键字段32。因此,在表格30中所需的项目数被减少,并且加速器26的操作被加速。另外,加速器26自动检测负载平衡器24,以确定它是否把数据包从同一客户机IP地址转发到不同的服务器22。在一些实施例中,加速器26使用预定的测试序列,其包括具有相同客户机地址但具有不同来源端口和/或协议的多个测试数据包。加速器26从由负载平衡器24对测试数据包的处理确定负载平衡器所在的工作模式。
在本发明的一些实施例中,该测试序列包括具有不同来源地址和/或用于多个来源地址的每个地址的协议的多个数据包。在本发明的一些实施例中,响应负载平衡器24可能工作在的模式而选择该测试序列。
在本发明的一些实施例中,加速器26可以通过一个通信网络接收要用于确定负载平衡器24的工作模式的测试序列的更新。因此,当引入具有新的工作模式的负载平衡器时,可以把用于区分该新的工作模式的测试序列下载到加速器26,并且不需要对加速器中的硬件做出改变。
在本发明的一些实施例中,加速器26包括多个不同类型和/或具有不同关键字段的负载平衡子表(例如,30、31、130),该关键字段用于负载平衡器的不同工作模式。
图8为根据本发明一个实施例的与多个负载平衡器24一同工作的服务器群120的示意方框图。服务器群120包括多个服务器22,每个服务器容纳一个或多个网址。每个负载平衡器24处理服务器群120的一个或多个网址的数据包。优选地每个网址的数据包由特定的一个负载平衡器24所处理。另外,一个或多个负载平衡器24用于多个网址。每个负载平衡器24可以根据任何上述工作模式而工作,特别地,不同负载平衡器24可以同时工作在不同模式。另外,相同的负载平衡器24可以在不同时间工作在不同模式。
加速器26加速负载平衡器24的操作。在本发明的一些实施例中,系统管理员利用服务器群120的网址的IP地址和每个网址的各个负载平衡器24来配置加速器26。对于服务器群120的每个网址,加速器26管理一个分离的负载平衡子表。另外,单个负载平衡子表被分配给一些或所有由各个负载平衡器在单个模式中管理的网址。另外,单个子表被分配给每个负载平衡器24。
接收从客户机传送到一个网址的数据包时,加速器26根据数据包的目标IP地址(即,该网址的地址)确定用于处理该数据包的子表。如果需要的话,该目标IP地址还确定该数据包要被转发到该负载平衡器。另外,加速器26根据数据包的目标MAC地址和/或VLAN确定哪个子表要用于处理该数据包和/或确定应当把该数据包转发到哪个负载平衡器24。
对于从一个负载平衡器24转发到服务器22的数据包,加速器26根据作为处理数据包的网址的负载平衡器的MAC地址的数据包的来源MAC地址以及可选的数据包的VLAN,选择数据包的各个子表。另外,当负载平衡器24工作在全NAT模式时,使用该数据包的IP来源地址。另外,把数据包的目标MAC地址(或者在全NAT模式中的IP地址)与服务器22的MAC地址相比较,并且相应地选择一个子表。在这种变型中,每个服务器仅仅处理单个负载平衡器的网址。
对于从一个服务器22传送到一个客户机的数据包,加速器26根据该数据包的来源MAC地址与服务器22的MAC地址的比较选择该数据包的各个子表。另外,使用在半NAT模式中的来源IP地址和在全NAT模式的目标IP地址。另外,把该数据包与加速器26的所有表格相比较,以查找该数据包的各个项目。
在本发明的一些实施例中,由加速器26在任何上述特定实施例中用于正确工作所需的信息被系统管理员配置到加速器26。所需信息例如包括负载平衡器24和/或服务器22的一个或多个MAC和/或IP地址、由服务器群20所服务的网址的IP地址和/或从不同方向接收数据包的VLAN。除了配置所需信息之外,由加速器自动确定至少一些所需信息。优选地,加速器26利用在本领域中所公知的任何方法,例如使用地址解析协议(ARP)询问,根据配置的IP地址确定负载平衡器24和/或服务器22的MAC地址。另外,通过加速器26确定所需信息,例如使用设计用于识别相邻服务器和/或负载平衡器和/或用于从相邻服务器和/或负载平衡器接收信息的轮询协议(poling protocol)。
在本发明的一些实施例中,每个子表与一个IP地址以及可选的表示该子表所工作在的网址的端口相关。另外,该子表包括一个或多个附加字段,其对于每个项目列出代表的IP地址以及可选的与该项目相关的网址的端口。
在本发明的一些实施例中,加速器26包括多个物理质量,其被动态分配给网址和/或负载平衡器24。优选地,该子表的字段根据该子表被分配到的负载平衡器24而自动调节,即根据负载平衡器的工作模式(例如,全NAT、半NAT)。另外,加速器26包括根据它们的工作模式(例如三角、半NAT、全NAT)分配给加速器26的不同类型的物理子表(例如,上文所述的表格30、31和130)。
或者或另外地,加速器26包括一个或多个结构表,其项目被动态分配给各个网址和/或负载平衡器的不同子表。该结构表的索引表示每个项目属于哪个子表。因此,项目在不同子表中的分配被动态执行,并且明显减小当其它子表没有充满时其中一个子表的所有项目被填充的可能性。
在本发明的一些实施例中,加速器26还与用于相同网址的多个负载平衡器一同工作。优选地,在这些实施例中的子表包括例如根据MAC地址识别处理该项目的数据包的负载平衡器24的附加字段。另外,例如当负载平衡器24没有使用表格而工作时,不需要这种字段。
在本发明的一些实施例中,负载平衡器24被优化用于与加速器26一同工作。例如,由于加速器26的使用,如果使用一个表格,则24要求在该表格中的项目更少。
尽管上文描述涉及与负载平衡器一同工作的加速器26,其中该负载平衡器与一个服务器群一同工作,但是本发明还可以用于工作于其它结构中的负载平衡器,例如执行缓存器转向的负载平衡器。因此,在本申请中的术语“服务器”包括代理服务器。
应当指出,本发明不限于使用执行加速器26的任务的单个装置。具体来说,一个或多个装置可以在执行加速器26的任务中协同工作。例如,第一装置可以截取从客户机传送到负载平衡器24的数据包,第二装置可以截取从负载平衡器24传送到服务器22的数据包。
应当指出,尽管本发明是参照TCP/IP协议而描述的,但是本发明的一些方面可以用与其它基于数据包的传输协议相关的方法实现,该协议例如IPX、DECNET和ISO协议。另外,尽管上述实施例与以太网链路成相关,但是本发明可以用于基本上任何层-2协议,包括但不限于,帧中继、点对点调制解调器、ISDN、ASDL和ATM。
应当认识到,上述方法可以在许多方式以及所用的确切实现方法上具有变化,包括改变步骤的次序。还应当认识到上述的方法和装置的描述被认为是包括用于执行该方法的装置以及使用该装置的方法。
已经利用通过举例并且不用于限制本发明的范围的非限制性实施例的具体描述来描述本发明。应当知道,参照一个实施例描述的特征和/或步骤可以用于其它实施例,并且并非所有本发明的实施例具有在特定附图中所示或者参照一个实施例所述的所有特征和/或步骤。本领域内的专业人员将能够作出所述实施例的变型。
应当指出,上述实施例描述由本发明人认为的最佳模式,因此包括结构、操作或详细结构和操作,这不是本发明的实质内容,并且是作为例子描述。如本领域内所公知,在此描述的结构和操作可以由执行相同功能的等效结构和操作来代替,即使该结构或操作是不同的亦可。因此,本发明的范围仅仅由用于权利要求中的要素和限定来确定。当用于下述权要求中时,术语“包括”、“包含”、“具有”以及它们的结合意味着包括但不限于”。

Claims (18)

1.通过一种加速器交换机加速负载平衡器的操作的一种方法,包括:
通过加速器交换机接收传送到负载平衡器的数据包;
通过把小于五个的数据包参数与一个数据包组列表的项目的各个字段相比较,对至少一个所接收数据包确定该数据包是否与该数据包列表的一个项目相匹配;以及
响应该确定结果,通过加速器交换机把至少一个所接收的数据包直接转发到其目的地。
2.根据权利要求1所述的方法,其中接收传送到负载平衡器的数据包包括接收从一个客户机传送到与该负载平衡器相关的一个网址的数据包,且把至少一个所接收数据包直接转发到其目的地,包括把该数据包从该客户机转发到该网址的一个服务器而不通过负载平衡机。
3.根据权利要求2所述的方法,其中确定该数据包是否与该列表的一个项目相匹配包括把该数据包的来源IP地址和来源端口与该列表中的各个地址相比较。
4.根据权利要求2所述的方法,其中所比较的参数不包括目的地址。
5.根据权利要求1所述的方法,其中接收传送到负载平衡器的数据包包括接收从服务器传送到客户机的数据包,以及把至少一个所接收数据包直接转发到其目的地包括把该数据包从服务器转发到客户机而不通过负载平衡器。
6.根据权利要求5所述的方法,其中确定该数据包是否与该列的一个项目相匹配包括把该数据包的目标IP地址和目标端口与该列表中的各个字段相比较。
7.根据权利要求1所述的方法,其中该负载平衡器工作在半NAT或全NAT模式。
8.把数据包组和各个目标服务器相互关联的列表中的项目的创建方法,其中包括:
通过一个加速器接收传送到一个负载平衡器或来自该负载平衡器的数据包,该平衡器至少改变它转发到服务器的数据包的目标IP地址;以及
通过该加速器响应于所接收的数据包而在目标服务器的该列表中创建一个项目。
9.根据权利要求8所述的方法,其中该数据包被传出或传入工作在半NAT模式的负载平衡器。
10.根据权利要求8所述的方法,其中该数据包被传出或传入工作在全NAT模式的负载平衡器。
11.根据权利要求8所述的方法,其中创建项目包括基本上仅仅使用在原样接收的所接收数据包中的信息创建该项目。
12.根据权利要求8所述的方法,其中创建项目包括使用不包含在原样接收的所接收数据包中的信息来创建项目。
13.根据权利要求12所述的方法,其中创建项目包括利用来自以前由加速器所接收的所接收数据包的一个副本的信息创建该项目。
14.根据权利要求8所述的方法,其中包括:
由加速器接收传送到由负载平衡器管理的网址的数据包;
在一个暂时存储器中存储传送到该网址的数据包的一个或多个参数的识别信息和数值;以及
在该暂时存储器中搜索匹配来自负载平衡器的所接收数据包的项目,
其中仅仅在找到匹配时才执行在数据包组的目标服务器的列表中创建项目的操作。
15.一种负载平衡加速器,包括:
接收传送到负载平衡器的数据包的一个输入接口;
列出数据包组和它们各自目标服务器的一个表;
一个比较器,它把传送到负载平衡器的至少一个数据包与该表格的至少一个项目相比较;
一个转发单元,它响应匹配的项目的内容把由比较器找到的至少一个匹配的数据包直接转发到服务器,该转发单元能够在多个工作模式下工作,这些工作模式中的至少一个包括改变转发的数据包的至少一个字段;以及
一个控制器,它确定该转发单元所工作在的模式。
16.根据权利要求15所述的加速器,其中该转发单元能够执行拼接。
17.根据权利要求15所述的加速器,其中控制器根据传入或者传出负载平衡器的数据包内容,确定转发单元的工作模式。
18.根据权利要求15所述的加速器,其中该表格具有物理项目,其可以容纳由于数据项目的存储的不同字段。
CN01130371A 2000-11-21 2001-11-21 动态负载平衡器 Pending CN1354578A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/718,143 US7739398B1 (en) 2000-11-21 2000-11-21 Dynamic load balancer
US09/718,143 2000-11-21

Publications (1)

Publication Number Publication Date
CN1354578A true CN1354578A (zh) 2002-06-19

Family

ID=24884984

Family Applications (1)

Application Number Title Priority Date Filing Date
CN01130371A Pending CN1354578A (zh) 2000-11-21 2001-11-21 动态负载平衡器

Country Status (9)

Country Link
US (1) US7739398B1 (zh)
EP (1) EP1209876B1 (zh)
JP (1) JP3717836B2 (zh)
KR (1) KR100890015B1 (zh)
CN (1) CN1354578A (zh)
BR (1) BR0105234A (zh)
CA (1) CA2359855A1 (zh)
IL (1) IL146599A0 (zh)
MX (1) MXPA01011889A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102138307A (zh) * 2008-09-02 2011-07-27 微软公司 服务的负载平衡
US9787585B2 (en) 2012-03-30 2017-10-10 Nec Corporation Distributed storage system, control apparatus, client terminal, load balancing method and program
CN109412976A (zh) * 2017-08-17 2019-03-01 中国移动通信集团甘肃有限公司 数据传输方法、装置、系统、服务器、电子设备及介质
CN109491795A (zh) * 2010-10-13 2019-03-19 派泰克集群能力中心有限公司 用于处理计算任务的计算机集群布置及其操作方法

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418522B2 (en) * 2000-12-21 2008-08-26 Noatak Software Llc Method and system for communicating an information packet through multiple networks
US20020116397A1 (en) 2000-12-21 2002-08-22 Berg Mitchell T. Method and system for communicating an information packet through multiple router devices
US7287090B1 (en) * 2000-12-21 2007-10-23 Noatak Software, Llc Method and system for identifying a computing device in response to a request packet
US7430170B2 (en) 2002-12-26 2008-09-30 Nokia Siemens Networks Oy System and method for implementing protocol stack across multiple chassis
JP4053967B2 (ja) * 2003-11-20 2008-02-27 株式会社日立コミュニケーションテクノロジー Vlanサーバ
US7370100B1 (en) * 2003-12-10 2008-05-06 Foundry Networks, Inc. Method and apparatus for load balancing based on packet header content
KR100983133B1 (ko) * 2004-02-04 2010-09-20 엘지에릭슨 주식회사 소프트스위치에서 응용 서버의 부하 밸런싱 방법
US9189307B2 (en) 2004-08-06 2015-11-17 LiveQoS Inc. Method of improving the performance of an access network for coupling user devices to an application server
US8009696B2 (en) * 2004-08-06 2011-08-30 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US9647952B2 (en) 2004-08-06 2017-05-09 LiveQoS Inc. Network quality as a service
US8437370B2 (en) 2011-02-04 2013-05-07 LiveQoS Inc. Methods for achieving target loss ratio
US7953114B2 (en) 2004-08-06 2011-05-31 Ipeak Networks Incorporated System and method for achieving accelerated throughput
US20060248194A1 (en) * 2005-03-18 2006-11-02 Riverbed Technology, Inc. Connection forwarding
EP1793564A1 (en) * 2005-11-30 2007-06-06 Thomson Telecom Belgium Device and method to detect applications running on a local network for automatically performing the network address translation
US7675854B2 (en) 2006-02-21 2010-03-09 A10 Networks, Inc. System and method for an adaptive TCP SYN cookie with time validation
US8584199B1 (en) 2006-10-17 2013-11-12 A10 Networks, Inc. System and method to apply a packet routing policy to an application session
US8312507B2 (en) 2006-10-17 2012-11-13 A10 Networks, Inc. System and method to apply network traffic policy to an application session
US8868775B2 (en) * 2008-02-10 2014-10-21 Cisco Technology, Inc. Load balancing manipulation of packet flows within a transport conduit
US8996683B2 (en) * 2008-06-09 2015-03-31 Microsoft Technology Licensing, Llc Data center without structural bottlenecks
JP5381998B2 (ja) * 2008-12-03 2014-01-08 日本電気株式会社 クラスタ制御システム、クラスタ制御方法、及びプログラム
US8427938B2 (en) * 2009-05-14 2013-04-23 Avaya Inc. Virtual local area network server redundancy and failover to enable seamless mobility in the mobility domain
US8762460B2 (en) * 2009-07-13 2014-06-24 Qualcomm Incorporated Group communication sessions between session participants communicating via two or more different contact protocols within a wireless communications system
CN101997768B (zh) * 2009-08-21 2012-10-17 华为技术有限公司 一种上送地址解析协议报文的方法和装置
US9960967B2 (en) 2009-10-21 2018-05-01 A10 Networks, Inc. Determining an application delivery server based on geo-location information
US8219675B2 (en) * 2009-12-11 2012-07-10 Tektronix, Inc. System and method for correlating IP flows across network address translation firewalls
US8769156B2 (en) * 2009-12-23 2014-07-01 Citrix Systems, Inc. Systems and methods for maintaining transparent end to end cache redirection
US8549146B2 (en) * 2010-01-28 2013-10-01 Telefonaktiebolaget L M Ericsson (Publ) Stateless forwarding of load balanced packets
US9215275B2 (en) 2010-09-30 2015-12-15 A10 Networks, Inc. System and method to balance servers based on server load status
US8533285B2 (en) * 2010-12-01 2013-09-10 Cisco Technology, Inc. Directing data flows in data centers with clustering services
US9609052B2 (en) 2010-12-02 2017-03-28 A10 Networks, Inc. Distributing application traffic to servers based on dynamic service response time
US10951743B2 (en) 2011-02-04 2021-03-16 Adaptiv Networks Inc. Methods for achieving target loss ratio
US9590913B2 (en) 2011-02-07 2017-03-07 LiveQoS Inc. System and method for reducing bandwidth usage of a network
US8717900B2 (en) 2011-02-07 2014-05-06 LivQoS Inc. Mechanisms to improve the transmission control protocol performance in wireless networks
US8897154B2 (en) 2011-10-24 2014-11-25 A10 Networks, Inc. Combining stateless and stateful server load balancing
US9386088B2 (en) 2011-11-29 2016-07-05 A10 Networks, Inc. Accelerating service processing using fast path TCP
US9094364B2 (en) 2011-12-23 2015-07-28 A10 Networks, Inc. Methods to manage services over a service gateway
US10044582B2 (en) 2012-01-28 2018-08-07 A10 Networks, Inc. Generating secure name records
US8782221B2 (en) 2012-07-05 2014-07-15 A10 Networks, Inc. Method to allocate buffer for TCP proxy session based on dynamic network conditions
US9106561B2 (en) 2012-12-06 2015-08-11 A10 Networks, Inc. Configuration of a virtual service network
US10002141B2 (en) 2012-09-25 2018-06-19 A10 Networks, Inc. Distributed database in software driven networks
US9843484B2 (en) 2012-09-25 2017-12-12 A10 Networks, Inc. Graceful scaling in software driven networks
US10021174B2 (en) 2012-09-25 2018-07-10 A10 Networks, Inc. Distributing service sessions
KR101692751B1 (ko) 2012-09-25 2017-01-04 에이10 네트워크스, 인코포레이티드 데이터망 부하 분산
US9338225B2 (en) 2012-12-06 2016-05-10 A10 Networks, Inc. Forwarding policies on a virtual service network
US9531846B2 (en) 2013-01-23 2016-12-27 A10 Networks, Inc. Reducing buffer usage for TCP proxy session based on delayed acknowledgement
US9900252B2 (en) 2013-03-08 2018-02-20 A10 Networks, Inc. Application delivery controller and global server load balancer
US9992107B2 (en) 2013-03-15 2018-06-05 A10 Networks, Inc. Processing data packets using a policy based network path
WO2014179753A2 (en) 2013-05-03 2014-11-06 A10 Networks, Inc. Facilitating secure network traffic by an application delivery controller
US10027761B2 (en) 2013-05-03 2018-07-17 A10 Networks, Inc. Facilitating a secure 3 party network session by a network device
US9419851B1 (en) * 2013-08-13 2016-08-16 Ca, Inc. Application transaction tracking across network boundaries
US10230770B2 (en) 2013-12-02 2019-03-12 A10 Networks, Inc. Network proxy layer for policy-based application proxies
US9942152B2 (en) 2014-03-25 2018-04-10 A10 Networks, Inc. Forwarding data packets using a service-based forwarding policy
US10020979B1 (en) 2014-03-25 2018-07-10 A10 Networks, Inc. Allocating resources in multi-core computing environments
US9942162B2 (en) 2014-03-31 2018-04-10 A10 Networks, Inc. Active application response delay time
US9806943B2 (en) 2014-04-24 2017-10-31 A10 Networks, Inc. Enabling planned upgrade/downgrade of network devices without impacting network sessions
US9906422B2 (en) 2014-05-16 2018-02-27 A10 Networks, Inc. Distributed system to determine a server's health
US9992229B2 (en) 2014-06-03 2018-06-05 A10 Networks, Inc. Programming a data network device using user defined scripts with licenses
US9986061B2 (en) 2014-06-03 2018-05-29 A10 Networks, Inc. Programming a data network device using user defined scripts
US10129122B2 (en) 2014-06-03 2018-11-13 A10 Networks, Inc. User defined objects for network devices
US10516608B2 (en) 2014-09-11 2019-12-24 Oath Inc. Systems and methods for directly responding to distributed network traffic
US10581976B2 (en) 2015-08-12 2020-03-03 A10 Networks, Inc. Transmission control of protocol state exchange for dynamic stateful service insertion
US10243791B2 (en) 2015-08-13 2019-03-26 A10 Networks, Inc. Automated adjustment of subscriber policies
US10318288B2 (en) 2016-01-13 2019-06-11 A10 Networks, Inc. System and method to process a chain of network applications
US10389835B2 (en) 2017-01-10 2019-08-20 A10 Networks, Inc. Application aware systems and methods to process user loadable network applications
US10425472B2 (en) * 2017-01-17 2019-09-24 Microsoft Technology Licensing, Llc Hardware implemented load balancing
WO2019179634A1 (en) * 2018-03-23 2019-09-26 Nokia Solutions And Networks Oy Method and apparatus for dynamic network address translation
US11210216B2 (en) * 2019-06-25 2021-12-28 Intel Corporation Techniques to facilitate a hardware based table lookup
CN113438301B (zh) * 2021-06-22 2023-06-06 北京百度网讯科技有限公司 网络负载均衡器、请求消息分配方法、程序产品及系统

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5774660A (en) * 1996-08-05 1998-06-30 Resonate, Inc. World-wide-web server with delayed resource-binding for resource-based load balancing on a distributed resource multi-node network
US6157644A (en) * 1997-10-07 2000-12-05 Northern Telecom Limited Method and apparatus for accelerating OSI layer 3 routers
US6098093A (en) * 1998-03-19 2000-08-01 International Business Machines Corp. Maintaining sessions in a clustered server environment
US6256314B1 (en) 1998-08-11 2001-07-03 Avaya Technology Corp. Apparatus and methods for routerless layer 3 forwarding in a network
US6327622B1 (en) * 1998-09-03 2001-12-04 Sun Microsystems, Inc. Load balancing in a network environment
US6389462B1 (en) * 1998-12-16 2002-05-14 Lucent Technologies Inc. Method and apparatus for transparently directing requests for web objects to proxy caches
EP1049307A1 (en) * 1999-04-29 2000-11-02 International Business Machines Corporation Method and system for dispatching client sessions within a cluster of servers connected to the World Wide Web
US6374300B2 (en) * 1999-07-15 2002-04-16 F5 Networks, Inc. Method and system for storing load balancing information with an HTTP cookie
US6980549B1 (en) * 2000-09-01 2005-12-27 Avaya Technology Corp. Policy enforcing switch

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102138307A (zh) * 2008-09-02 2011-07-27 微软公司 服务的负载平衡
CN102138307B (zh) * 2008-09-02 2014-01-29 微软公司 用于服务的负载平衡的方法和系统
CN109491795A (zh) * 2010-10-13 2019-03-19 派泰克集群能力中心有限公司 用于处理计算任务的计算机集群布置及其操作方法
US9787585B2 (en) 2012-03-30 2017-10-10 Nec Corporation Distributed storage system, control apparatus, client terminal, load balancing method and program
CN109412976A (zh) * 2017-08-17 2019-03-01 中国移动通信集团甘肃有限公司 数据传输方法、装置、系统、服务器、电子设备及介质
CN109412976B (zh) * 2017-08-17 2022-04-01 中国移动通信集团甘肃有限公司 数据传输方法、装置、系统、服务器、电子设备及介质

Also Published As

Publication number Publication date
MXPA01011889A (es) 2003-08-20
JP2002232446A (ja) 2002-08-16
US7739398B1 (en) 2010-06-15
JP3717836B2 (ja) 2005-11-16
BR0105234A (pt) 2002-06-25
CA2359855A1 (en) 2002-05-21
KR100890015B1 (ko) 2009-03-25
IL146599A0 (en) 2002-07-25
EP1209876A2 (en) 2002-05-29
EP1209876A3 (en) 2004-03-17
EP1209876B1 (en) 2012-11-21
KR20020039615A (ko) 2002-05-27

Similar Documents

Publication Publication Date Title
CN1354578A (zh) 动态负载平衡器
CN1140090C (zh) 分组网络中的接口及其操作方法
CN1118167C (zh) 在网络上用域名路由选择发送数据到目的端的系统和方法
CN102075445B (zh) 负载均衡方法及装置
CN1146809C (zh) 综合ip网络
CN1431805A (zh) 数据包交换系统、方法,路由设备,数据包结构和产生方法
CN1838636A (zh) 用于使数据包穿越网络地址转换装置的方法和装置
CN1929472A (zh) 数据网络中管理数据传输的方法、系统、信号及介质
CN105376114A (zh) 路由器网桥模式下无线终端类型的识别系统及方法
CN1150725C (zh) 减少存储器访问次数的网络包发送查询的方法和装置
JP5588345B2 (ja) 機能アドレスを生成するためのシステムおよび方法
KR20110030547A (ko) 패킷 목적지 주소 및 발신 인터페이스로부터 구성된 라우팅 검색 키에 기초하는 패킷의 발신 송신
CN1426211A (zh) 服务器负载分担系统
CN1216657A (zh) 互联网协议过滤器
CN1711743A (zh) 在数据网络中允许远程访问的方法和设备
CN1802638A (zh) 路由提示
CN1925452A (zh) 数据转发系统、方法以及网络转发设备
US20160269232A1 (en) Network management apparatus and network management method
CN1416064A (zh) 负载平衡器
US20160210366A1 (en) Method and apparatus for providing media resource
CN108111558A (zh) 一种高速报文处理方法、装置及系统
CN1270494C (zh) 通信系统中区分客户机的方法、通信系统和通信装置
CN1703890A (zh) 数据网络中识别和分析协议的方法
CN102184234B (zh) 用于查询、增加、更新或删除信息处理规则的方法和设备
JP2010193146A (ja) 通信装置および通信システム

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication