处理启动请求的技术的制作方法

文档序号:7610371阅读:115来源:国知局
专利名称:处理启动请求的技术的制作方法
技术领域
本发明涉及通信。更具体而言,本发明涉及一种用于处理与应答(acknowledge)传输协议相关联的启动请求(initiation request)的技术。
背景技术
运行在IP顶层的可靠传输协议,诸如流控制传输协议(SCTP),经常被网络组件(例如,客户等等)使用来经由应用协议数据单元(APDU)在建立的连接上(例如,面向连接的服务,诸如由SCTP提供的服务)与应用服务器通信。使用这种配置,网络组件通常使用主机服务器群,为了可伸缩性的目的,该主机服务器群可以部分地基于要求每个网络组件具有几个与之相关联的物理资源。
图1显示了SCTP信令100,该信令与客户110(端点EP A)和服务器120(端点EP Z)之间的关联(用于应用数据传输,等等)的建立有关。若干传输地址被与客户100(即,其是多归属端点)相关联,该客户端100包括用于客户的有效IP地址和被选择用于客户的端口号的对(其通常仅仅对SCTP关联的有效期内有效)。该IP地址作为列表{IP A1,...,IP An}给出,端口号被指示为P A。
相似地,对于服务器120具有传输地址,它们是从IP地址列表{IPZ1,...,IP Zm}和端口号P Z中建立的对。通常,用于服务器120的端口号是为在SCTP顶层的特定应用而定义的已知端口(例如,在用于MTP3用户自适应层(M3UA)的协议中定义的端口号2905)。在任何情况下,与服务器120相关联的端口号和IP地址(和/或相应的应用)必须对所有客户110来说都是已知的。
用于建立关联的过程开始于客户110经由用于服务器120的有效IP地址的其中一个和服务器端口号来发送启动请求(例如,在SCTP的情况下是INIT分组)130到服务器120。请求130将包括对客户110有效的IP地址列表和端口号,指示为IP地址列表和端口号。一个典型的请求130可以包括目的地IP地址=IP Zy;源IP地址=IP Ax;(源端口=P A;目的地端口=P Z;程序块=INIT;端点IP地址={IPA1,...,IP An})。虽然目的地IP地址和源IP地址通常被包括在IP分组报头中,但是括号中剩余的参数作为SCTP分组报头被发送,该SCTP分组报头被包含在IP分组有效负荷中。
在响应中,如果服务器接受启动请求130,服务器120将使用应答(例如,在SCTP情况下是INIT ACK消息)140来回答。应答140被指向请求130被从中接收的相同地址,但是其可以由服务器120从与接收INIT消息的地址所不同的地址发送(例如,IP地址Zz)。应答140还将包括定义服务器120端点的数据,诸如有效IP地址和在INIT消息中已经用作为目的地端口号的相同端口号。一个典型的应答130可以包括目的地IP地址=IP Ax;源IP地址=IP Zz;(源端口=PZ;目的地端口=P A;程序块=INIT ACK;端点IP地址={IP Z1,...,IPZm})。在客户110已经接收到该应答之后,为了安全的目的可以交换若干更多的消息(即,进行握手),这样各种传输地址对于每个端点来说都是已知的,以便在它们中选择交换有效负荷数据所需要的地址。
上述SCTP关联被建立的传统方法易受到服务拒绝(DoS)攻击的影响,因为对各种服务器的大量自动请求会削弱通信交换(通过有效地禁止服务器)。虽然在一些环境中当通信量需求高的时候可以通过添加更多的服务器以及建立服务器群来提高处理功率,但是各种客户必须被通知如何最好地使用增加的资源。因此,如果所有各种客户之间没有协调的话就不可能获得负荷平衡。虽然域名系统(DNS)可以提供有关负荷共享的好办法,但是DNS的使用以及相应的域名对于一些应用来说过于麻烦。
在类似的领域中,路由器(诸如因特网路由器)被用来确定数据如何经由最有效的路由发送到它想要的目的地。此外,路由器用于对通信量分段(例如,通过监控每个数据分组的传输)并提供路由的冗余。虽然该配置可以用来确保该数据以有效的方式传输到接收方,但是路由器在很大的数据通信量期间易于受过负荷影响。
因此,将理解仍然需要改进的技术来接收和应答大量的启动请求,其可以被修改,而不需要与多个客户进行显著的协调。

发明内容
本发明可以体现为一种处理从多个客户指向联系主机的启动(或建立)请求的方法。所述方法包括以下步骤由联系主机接收请求,由联系主机将每个请求与服务器相关联,以及应答每个请求的接收以便启动在客户和相关联服务器之间直接的数据传输。
根据期望的配置,应答可以由相关联的服务器或者由联系主机来发送。使用前一种配置,本方法就可以进一步包括由相关联服务器从相应的客户接收要开始数据传输的确认的步骤。此外,其他消息也可以被交换以便初始化数据传输。
本方法还包括步骤由联系主机将请求路由到相关联的服务器,这样该相关联的服务器可以应答每个请求。该路由可以仅仅包括最初的请求,或者其可以包括联系主机从请求客户在最初的请求之后接收的附加消息。
如上所述,联系主机可以直接向相应的客户应答该请求,而不是让相关联的服务器应答该请求。使用该变型,本方法还可以包括步骤由联系主机从被应答客户接收要开始数据传输的确认的步骤。本方法还可以包括步骤在数据传输已经开始之后和/或请求已经被联系主机接收之后,联系主机将来自请求客户的任何消息转发到相关联的服务器。替换地,本方法还包括步骤在数据传输已经开始之后和/或请求已经被联系主机接收之后,丢弃任何由联系主机从客户接收的消息。丢弃消息会让客户将联系主机分类为非响应和/或非激活,通常会使客户采取另一个传输地址。
本方法可以规定该应答包括用于相关联服务器的至少一个IP地址。当相关联服务器是多归属主机时,可以包括多个IP地址。可以使用多归属主机且与本方法相兼容的一个协议的例子就是流控制传输协议。此外,本发明还可以包括最初的步骤向联系主机提供单个地址以便接受请求以便在开始阻止客户对服务器的直接访问。
该关联步骤可以根据循环方案(round robin)选择相关联的服务器或者其可以确定在相关联服务器上的负荷并根据负荷平衡方案选择相关联的服务器。这种类型的关联在系统的配置中带来更多的便利,因为当产生请求时,只须知道用于联系主机的地址。
本方法可以由联系主机动态地分配地址给服务器。该动态分配可以使用诸如DHCP、无状态自动配置、全状态自动配置、NAT和NAPT等等类似的方案。
在一些变型中,本发明还包括步骤将联系主机安排驻留在单独的物理资源中而不是服务器中。但是,在其他变型中,本方法还包括步骤将联系主机安排驻留在与服务器相同的物理资源中。此外,本方法还可以包括步骤将服务器安排为在单个网络节点上的群以便提供到应用服务的连接性,或者其还可以包括步骤将服务器安排为在两个或更多网络节点上的群以便提供到应用服务的连接性。
为了进一步使服务器与客户隔绝直接的联系(尤其为了阻止服务拒绝攻击),本方法还包括步骤由联系主机认证每一个请求。该认证例如可以基于在请求中指示的IP地址或其他与客户相关联的标识符。
本发明还可以体现为一种计算机程序产品,该计算机程序产品包括程序代码部分,用于当该计算机程序产品在计算机系统上运行时执行这里公开的方法的任何步骤。这种计算机程序产品,根据期望的实现,可以存储在计算机可读记录介质中。
在另一个实施例中,提供了一种包括计算机处理器和耦接到该处理器的存储器的系统。该系统的存储器可以使用一个或多个程序编码,该程序可以执行这里公开的方法的任何步骤。
本发明还可以包括一种联系主机,用于处理从多个客户接收的启动请求。该联系主机可以包括用于接收请求的接收单元;用于将每个请求与服务器相关联的关联单元;和用于启动对每个请求客户的应答的应答单元。在一些变型中,该启动单元将请求路由到相关联的服务器,这样该相关联的服务器可以应答每个请求。在其他变型中,该启动单元直接应答每个请求。由启动单元启动的应答可以包括用于相关联服务器的至少一个IP地址。此外,联系主机还可以包括认证单元,用于认证每个请求。
本发明还可以在一种系统中提供,该系统包括多个客户,用于产生数据传输启动请求;多个服务器,用于处理由多个客户请求的数据传输;和联系主机,用于处理从所述多个客户接收的启动请求。该联系主机包括用于接收请求的接收单元;用于将每个请求与服务器相关联的关联单元;和用于启动对每个请求客户的应答的应答单元。


本发明更进一步的细节、实施例、修改和增强将从考虑以下本发明各种实例性实施例的描述以及附图而获得,其中图1是信令图示,显示用于在客户和服务器之间交换启动请求和应答的传统技术;图2是显示本发明的方法实施例的流程图;图3是显示本发明的装置实施例的示意图;图4是一个有助于理解和实现本发明实例的示意图,显示了客户发送启动请求到联系主机,该联系主机随后转发该请求到服务器,该服务器进而又发送该请求的应答到客户;图5是一个有助于理解和实现本发明实例的示意图,显示了客户发送启动请求到联系主机,该联系主机发送识别该服务器的该请求的应答到客户;图6是一个有助于理解和实现本发明实例的信令图,显示了客户发送启动请求到联系主机,该联系主机随后转发该请求到服务器,该服务器进而又发送该请求的应答到客户,这样可以绕过联系主机在服务器和客户之间开始数据传输;和图7是一个有助于理解和实现本发明实例的信令图,显示了客户发送启动请求到联系主机,该联系主机进而又发送识别该服务器的该请求的应答到客户,这样可以绕过联系主机在服务器和客户之间开始数据传输。
具体实施方案为了解释而不是限制的目的,在以下描述中陈述特定的细节,诸如特定步骤顺序和各种配置等等,以便提供对本发明充分的理解。对于本领域技术人员来说很明显,本发明可以以其他偏离这些特定细节的实施例来实现。此外,本领域技术人员将理解,以下解释的功能可以使用软件功能结合被编程的微处理器或通用计算机,和/或使用专用集成电路(ASIC)来实现。还将理解,虽然本发明主要描述为一种方法,但是其也可以实现为一种计算机程序产品或一种包括计算机处理器和耦接到该处理器的存储器的系统来实现,其中该存储器使用可以执行这里公开的方法的一个或多个程序编码。此外,虽然本发明的描述与SCTP相关,但是本领域的技术人员将理解,其可以结合各种数据传输协议和应用来使用,在这些数据传输协议和应用中,在客户和服务器的关联之前,由客户发送启动请求。
参考图2,显示了一个与一种处理启动请求的方法相关联的流程图,该启动请求从多个客户指向联系主机。在步骤210,该方法开始于(服务器)联系主机接收请求。在接收到请求之后,在步骤220,联系主机将每个请求和服务器相关联。之后,在步骤230,每个请求的接收应答被发送到请求客户,这样就可以随后在客户和相关联服务器之间直接开始数据传输。可选地,该联系主机也可以认证每个请求(和/或客户发送请求),尤其是为了提供进一步保护以抵抗DoS攻击。
图3显示了联系主机300,该联系主机300被配置来处理从多个客户接收的启动请求。接收单元310从各种客户接收请求。关联单元320将每个接收到的请求和服务器相关联,应答单元330启动对请求客户的应答(或者直接通过联系主机或者通过相关联的服务器)。可选地,联系主机300还可以包括认证单元320,其认证发送请求的每个客户(尤其是为了进一步隔离服务器防止受DoS攻击)。图2和图3所示本发明的实施例的变型以及有助于理解和实现本发明的实例将在下面介绍并在图4-7中示出。
图4所示的是示意图400,其显示了(服务器)联系主机410、客户420,和至少一个服务器430(或至少一个服务器群)之间的关系,所有这些都经由网络(诸如IP网络440)耦接。客户420可以经由IP网络440发送启动请求450(例如,在SCTP的情况下是INIT消息)到联系主机410。联系主机410然后可以认证该请求(例如,通过确定客户420是否被允许与服务器430通信)。如果客户420(和/或请求450)还没有被认证,那么联系主机410可以使用ABORT消息(在SCTP的情况下)或其他终止消息回复给客户420。
如果客户420被认证(或者,如果联系主机410没有配置来认证客户420和/或请求450),那么联系主机410就选择一个合适的服务器430来响应并处理该请求450。一旦服务器430已经被选择,那么联系主机410就经由IP网络440转发或中继该请求460(或者产生一个新的具有被请求信息的请求)到被选择的服务器430(根据协议其可以请求在联系主机410和服务器430之间交换几个消息,诸如INIT和INIT ACK,等等)。可以基于确定如何平衡/共享在各种服务器中的负荷(例如,基于由每个服务器或由耦接到服务器的负荷监控器提供的性能统计量)来选择服务器430,这些服务器与联系主机410相关联或者耦接到联系主机410,或者替换地,可以使用诸如循环选择方案来选择服务器430。替换地,服务器430可以转发该启动消息到相同服务器群中其他成员,直到在这些各种服务器中识别了合适的候选者。
为了确保客户420和服务器430被相关联(从而可以传输数据),联系主机410可以发送地址配置改变消息(在SCTP情况下是ASCONF消息)到客户420,指定服务器430作为未来消息的适当接收方。如果地址配置消息的应答(例如,在SCTP情况下是ASOCNF ACK)被联系主机410接收,那么联系主机410可以删除与该关联有关的所有状态信息。另一方面,如果客户420使用指示未识别程序块类型的错误消息(例如,在SCTP情况下是ERROR)回复,那么联系主机410可以静静地丢弃输入的数据消息和用于关联的HEARTBEAT消息。之后,客户420可以最后确定该联系主机410是非激活的,并将对属于服务器430的其他地址中的一个执行故障恢复(fail-over)。
服务器430可以经由IP网络440发送响应于请求450的应答470(例如,INIT ACK消息等等),这样可以在服务器430和客户420之间建立关联480(例如,SCTP关联等等)(以便有利于,例如,服务器430和客户420之间的数据传输)。根据实现,可以在开始关联之前,在服务器430和客户420之间交换进一步的握手信号。此外,使用该配置,由联系主机410从客户420接收的任何进一步与原始请求450有关的消息,诸如其他初始化消息(例如,如RFC 2960中描述的COOKIE ECHO消息等等),可以被直接路由到服务器430(这样服务器430可以直接对其响应)。
服务器430到客户420的应答470和/或其他初始化消息包括识别服务器430随后被联系到什么位置的服务器地址。服务器地址可以是属于服务器430的“半固定”分配的地址,或者其可以是动态分配的地址。例如,服务器430可以动态分配地址到它的一些(或全部)接口。该分配可以使用诸如动态主机配置协议(DHCP)、无状态/全状态自动配置、网络地址转换(NAT)或网络地址端口转换(NAPT)等等技术来产生。通过使用动态分配,每个关联可以被提供其在服务器430上的自己的真实(经由DHCP分配给服务器接口的IP地址)或虚拟(经由NAT的地址映射)的端点。
图5显示了示意图500(其中图4的共同信号和组件被显示使用了相同的参考数字),其中,客户410发送请求到联系主机430,联系主机发送应答510(例如INIT消息等等)到客户。之后,服务器420和客户410之间就建立了关联480。使用该变型,联系主机430就可以执行与关联480的初始化有关的各种步骤,诸如选择合适的服务器420(其可以包括进一步的与状态信息的交换有关的信令),准备在被选择的服务器420中的状态以便用于数据传输阶段,和强制数据传输阶段由被选择的服务器420处理(例如,通过保持状态信息处于关联,并且不对各种程序块进行回答,以便起到无用的接口的作用,从而强制客户410中的多归属重新定向通信量到驻留在服务器420中的剩余地址)。与图4的实例相反,联系主机430可以可选地直接响应从客户410接收的各种初始化消息(例如,COOKIE ECHO消息,等等)。可替换地,联系主机430可以简单地丢弃除了启动请求之外的其他消息(例如,DATA消息,HEARTBEAT消息,等等),这样,联系主机430就被宣称为客户410不可到达的。
图6显示了基于SCTP的,在具有相关联的IP地址{IP A1,...,IP An}和端口PA的客户610(端点EP A)、具有相关联IP地址{IP C1,...,IPCo}和端口P Z的联系主机620(端点EP C)、和具有相关联IP地址{IP Z1,...,IP Zm}和端口P Z的服务器630(端点EP Z)之间的信令图示600。客户610可以发送启动请求640到联系主机620。该启动请求640可以包括诸如以下的信息目的地IP地址=IP Cw;源IP地址=IP Ax(源端口=P A;目的地端口=P Z;程序块=INIT;端点IP地址={IP A1,...,IP An})。在联系主机620确定发送请求到服务器630之后(以上述方法),该请求就被转发650(或另一个包含请求中信息的消息被产生)到服务器630。然后服务器630就使用应答660响应客户610,该应答可以包括诸如以下的信息目的地IP地址=IPAx;源IP地址=IP Zz(源端口=P Z;目的地端口=P A;程序块=INIT ACK;端点IP地址={IP Z1,...,IP Zm})。之后,客户610和服务器630可以开始数据传输(或其他关联),该数据传输绕过或者说不使用联系主机620的功能。
图7显示了另一个基于SCTP的,在具有相关联的IP地址{IPA1,...,IP An}和端口P A的客户710(端点EP A)、具有相关联IP地址{IP C1,...,IP Co}和端口P Z的联系主机720(端点EP C)、和具有相关联IP地址{IP Z1,...,IP Zm}和端口P Z的服务器730(端点EP Z)之间的信令图示700。客户710可以发送启动请求740到联系主机720。该启动请求740可以包括诸如以下的信息目的地IP地址=IP Cw;源IP地址=IP Ax(源端口=P A;目的地端口=P Z;程序块=INIT;端点IP地址={IP A,...,IP An})。在联系主机720确定发送请求到服务器630之后(以上述方法),就发送应答750到客户710。该应答750可以包括诸如以下的信息目的地IP地址=IPAx;源IP地址=IP Zz(源端口=P Z;目的地端口=P A;程序块=INIT ACK;端点IP地址={IP Z,...,IP Zm})。之后,客户710和服务器730可以开始数据传输,该数据传输绕过或者说不使用联系主机720。
根据期望的实现,可以对本发明的配置做出各种修改。例如,联系主机可以是驻留在除了服务器之外的独立物理资源的专用机器。在其他变型中,联系主机位于与服务器相同的物理资源中(虽然该服务器可以最终不被联系主机选择或关联)。此外,服务器可以属于相同的网络节点(即,它们都提供对相同应用服务的连通性,诸如上述的应用层SCTP)。相反,服务器可以属于不同的网络节点,尽管提供相同的应用服务。
通过确定各种与联系主机相关联的服务器的特征可以实现负荷平衡,诸如协议处理能力(即,由处理协议分组所占用的处理性能)、存储器占用(即,用于队列处理所需的存储器)和链路容量。此外,联系主机可以周期地轮询各种服务器,或者替换地,负荷平衡监控器,来确定将未来的关联分配到哪里。
如上所述,通过起到防火墙的作用(即,通过过滤不想要的请求),使用联系主机保护了服务器,防止其收到攻击。在诸如INIT的启动消息公开之前,实际服务器的IP地址不提供给客户。因此,正在进行的数据传输(例如,SCTP关联)不会受到不希望的请求影响,该不希望的请求将会占用服务器处理特性。此外,联系主机提供单个联系地址,并对请求客户隐藏几个资源上潜在的服务器分布。该分布可以以技术的方法来管理,诸如负荷平衡或循环分布,以便更均匀的采用负荷共享。
此外,由于联系主机有利于产生对每个请求的应答,例如,通过(i)路由每个请求到相关联的服务器并让相关联服务器应答该请求;或(ii)使用应答(包括相关联服务器的传输地址)自己响应每个请求,数据传输可以直接在客户和相关联服务器之间启动,而不需要联系主机的进一步干预或中介。虽然在一些变型中,联系主机可以路由或者处理与数据传输的启动有关的消息,但是在数据传输过程中联系主机并不涉及其中(在本文中的意思就是绕过)。相反,在数据传输的各个阶段,路由器或其他设备处理数据。通过将由联系主机处理的消息事务限制到数据传输的启动,而不是数据传输本身,在大量数据传输过程中联系主机的处理能力就不会受到不利的影响,并且它们可以继续接受来自大量客户的请求,并有利于产生随后用来启动数据传输的应答。
虽然本发明已经参考特定实施例来描述(在各个方法中包括某种系统配置和某种步骤顺序),本领域技术人员将认识到本发明并不限于这里所描述的特定的实施例。因此,虽然本发明是参考其优选实施例描述的,但是可以理解该公开仅仅是示例性的。因此,本发明仅仅由附加的权利要求的范围来限制。
权利要求
1.一种处理从多个客户(420)指向联系主机(410)的启动请求的方法,所述方法包括以下步骤由联系主机(410)接收请求;由联系主机(410)将每个请求与服务器(430)相关联;以及应答每个请求的接收以便启动在客户(420)和相关联服务器(430)之间直接的数据传输。
2.权利要求1的方法,其中,相关联的服务器(430)向相应的客户(420)应答该请求。
3.前述任何一个权利要求的方法,还包括步骤由相关联的服务器(430)从相应的客户(420)接收要开始数据传输的确认。
4.前述任何一个权利要求的方法,还包括步骤由联系主机(410)将请求路由到相关联的服务器(430),从而该相关联的服务器(430)可以应答每个请求。
5.权利要求1的方法,其中,联系主机(410)向相应的客户(420)应答该请求。
6.权利要求5的方法,其中还包括步骤由联系主机(410)从被应答客户(420)接收要开始数据传输的确认。
7.权利要求5或6的方法,其中还包括步骤在数据传输已经开始之后,由联系主机(410)将来自被应答客户(420)的任何消息转发到相关联的服务器(430)。
8.权利要求5到7中任何一个的方法,其中还包括步骤在数据传输已经开始之后,丢弃任何由联系主机(410)从客户(420)接收的消息。
9.前述任何一个权利要求的方法,其中,该应答包括用于相关联服务器(430)的至少一个IP地址。
10.权利要求9的方法,其中,每个相关联的服务器(430)是多归属的。
11.前述任何一个权利要求的方法,其中,所述关联步骤根据循环方案选择相关联的服务器(430)。
12.权利要求1到10中任何一个的方法,其中,所述关联步骤可以确定在相关联服务器(430)上的负荷并根据负荷平衡方案选择相关联的服务器(430)。
13.前述任何一个权利要求的方法,还包括步骤由联系主机(410)动态地分配地址给服务器(430)。
14.前述任何一个权利要求的方法,其中,传输协议是流控制传输协议。
15.前述任何一个权利要求的方法,还包括步骤由联系主机(410)认证每个请求。
16.前述任何一个权利要求的方法,还包括最初的步骤向联系主机(410)提供单个地址以便接受请求以便在最初阻止由客户(420)对服务器(430)的直接访问。
17.一种计算机程序产品,该计算机程序产品包括程序代码部分,用于当该计算机程序产品在计算机系统上运行时执行上述任何一个权利要求的步骤。
18.权利要求17的计算机程序产品,其中,该计算机程序产品被存储在计算机可读记录介质上。
19.一种包括计算机处理器和耦接到该处理器的存储器的系统,其中所述存储器使用一种或多种程序来编码,该程序可以执行权利要求1到16中任何一个的步骤。
20.一种联系主机(410),用于处理从多个客户(420)接收的启动请求,该联系主机(410)包括用于接收请求的接收单元(310);用于将每个请求与服务器(430)相关联的关联单元(320);和用于启动对每个请求客户(420)的应答的应答单元(330)。
21.一种系统,该系统包括多个客户(420),用于产生数据传输启动请求;多个服务器(430),用于处理由所述多个客户(420)请求的数据传输;和联系主机(410),用于处理从所述多个客户(420)接收的启动请求,该联系主机包括用于接收请求的接收单元(310);用于将每个请求与服务器(430)相关联的关联单元(320);和用于启动对每个请求客户(420)的应答的应答单元(330)。
全文摘要
本发明描述了一种处理从多个客户指向联系主机的启动请求的技术,其使得能够处理大量的请求并提供设计阶段的灵活性。联系主机接收来自客户的请求。之后,应答被发送到每个请求客户,这样可以绕过联系主机而在客户和服务器之间开始直接的数据传输。该应答可以通过联系主机或者通过相关联的服务器产生和发送。在一些变型中,在每个请求关联前述,认证每个请求。
文档编号H04L29/08GK1954576SQ200480043074
公开日2007年4月25日 申请日期2004年5月19日 优先权日2004年5月19日
发明者J·布鲁斯 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1