响应满tcp队列的系统和方法

文档序号:7961504阅读:99来源:国知局
专利名称:响应满tcp队列的系统和方法
技术领域
本发明一般涉及数据处理系统领域,并尤其涉及网络数据处理系统领域。更具体地,本发明涉及用于处理连网的数据处理系统之间的连接请求的系统和方法。
背景技术
传输控制协议(TCP)是因特网上最广泛应用的传输协议之一。由于TCP可在两个通信点之间提供可靠的和按次序的字节流,所以利用TCP的应用不必在传输期间跟踪丢失或重排序的数据。
为了使用TCP建立连接,发送和接收主机执行三路握手。首先,发送主机(主机A)向接收主机(主机B)发送同步(SYN)信号。该SYN信号向主机B指示主机A准备传输。在主机B接收到来自主机A的SYN信号之后,主机B发送指示主机确认和接受该连接的SYN/ACK消息。如果主机A接收到SYN/ACK消息,则主机A将以第二ACK消息进行响应,此后通信流可在建立的TCP连接上流动。
当服务器例如主机B接收到最初的SYN消息时,其通常创建一新的过程线程(process thread)以处理客户机(主机A)连接请求。该过程线程的创建和保持利用了处理器和系统存储器资源。当TCP会话终止时,处理器和系统存储器资源被释放并准备好分配给其他任务。
但是,TCP连接过程包括一些缺陷。例如,由于服务器例如主机A和主机B通常服务于多个连接,所以通常将形式为SYN信号的连接请求放置在TCP连接队列(下文被称为“初始(embryonic)队列”)中。所有初始队列的长度是有限的,并且会由于动态因素例如连接接收率、可用系统资源、协议响应和应用行为变为饱和。本领域内的那些技术人员将理解当初始队列满时,配置参数导致删除随机选择的初始队列项以便为新到来的连接请求释放项槽(entry slot)。此随机删除是任意的且效率低。因此,需要一种处理TCP连接请求的不需要随机删除接收到的TCP连接请求的系统和方法。

发明内容
本发明减轻了由连接接收率、系统资源(例如CPU调度)、协议响应(例如计时器)、应用行为(例如连接的接受)和利用冒用的有效IP地址的恶意SYN泛滥攻击等等导致的初始队列饱和的影响。
本发明的优选实施例公开了一种用于响应满TCP队列的系统和方法。在服务器接收到来自客户机的TCP连接请求之后,服务器将请求放置在按照自服务器响应于每个TCP连接请求以来经过的时间量排序的TCP连接请求的初始队列中。当服务器试图将新TCP连接请求放置在满初始队列中时,主机将经由TCP协议除去位于初始队列末端的项。该末端项由于高计时器值而更可能已进行了完成连接的不成功尝试。
从下面的详细书面说明中可更清楚地了解本发明的上述特征以及额外的目的、特征和优点。


所附权利要求中阐述了被认为是本发明的特点的新颖特征。但是,通过在结合附图阅读时参照下面对说明性实施例的详细说明将最好地理解发明本身以及其优选使用模式、另外的目标以及优点,其中图1是示出其中可实现本发明的优选实施例的示例性网络的框图;图2A是示出其中可实现本发明的优选实施例的示例性数据处理系统的框图;图2B是示出其中可实现本发明的优选实施例的示例性初始队列的框图;
图3是示出根据本发明的优选实施例的TCP连接协议的高层流程图;以及图4是示出根据本发明的优选实施例的响应满TCP队列的方法的高层流程图。
具体实施例方式
现在参照附图并尤其参照图1,示出其中可实现本发明的优选实施例的示例性网络100。如图所示,网络100包括因特网102、主机A(客户机)104和主机B(服务器)106。在本发明的优选实施例内,主机A 102试图经由因特网102建立与主机B的连接。
本领域内的那些技术人员将理解网络100可包括图1内没有明确示出的许多附加部件(例如路由器、防火墙等)。由于这样的附加部件对于理解本发明并不是必须的,所以它们未在图1内示出或在文中被进一步讨论。
现在参照图2A,示出其中可实现本发明的优选实施例的示例性数据处理系统200。如图所示,示例性数据处理系统200可在通用计算机例如IBM兼容计算机系列的成员之一或者目前在市场上可买到的一些工作站或图形计算机设备之一上实现。主机A 104和主机B 106可实现为数据处理系统例如数据处理系统200。
如图所示,示例性数据处理系统200包括处理器202,该处理器经由系统总线206连接到系统存储器204。优选地,系统存储器204可实现为一组动态随机存取存储器(DRAM)模块。通常,系统存储器204包括用于运行一组应用的数据和指令。在本发明中,系统存储器204包括由处理器202实例化以使数据处理系统200能够与网络上的其他数据处理系统通信的一组套接字。另外,系统存储器204优选地包括如图2B所示的初始队列250以接收和排序来自网络上的其他数据处理系统的TCP连接请求。初始队列250优选地实现为双链表。双链表包括一组节点252a-n,而指针254a-n和256a-n指向下一个和前一个节点。在本发明中,节点优选地是来自试图与数据处理系统200形成连接的客户机的TCP连接请求。如结合图3和4更详细地说明的,双链表内的每个节点还包括计时器字段258a-n,该字段指示在主机(在该情况中,为数据处理系统200)响应于特定TCP连接请求已发出SYN/ACK消息以来经过的时间。
现在再来参照图2A,中间总线208用作系统总线206和外围总线214之间的中介物。本领域内的那些技术人员将理解,外围总线214可实现为外设部件互连(PCI)、加速图形端口(AGP)或任何其他外围总线。硬盘驱动器210连接到外围总线214,数据处理系统200利用该硬盘驱动器作为海量存储设备。一组外设212a-n也连接到外围总线214。
本领域内的那些技术人员应理解数据处理系统200可包括图2A内未明确示出的许多附加部件。由于这样的附加部件对于理解本发明并不是必须的,所以它们未在图2A内示出或在文中被进一步讨论。但是,还应理解本发明提供的用于改进对满TCP队列的响应的、对数据处理系统200的提高还可应用于任何系统体系结构的数据处理系统,并且决不局限于一般多处理器体系结构或图2A内所示的对称多处理(SMP)体系结构。
本发明的一优选实施例,即图1的网络100,包括以客户机-服务器配置操作的数据处理系统200。本领域内的那些技术人员将理解,本发明并不局限于客户机-服务器配置,并且可使用其他网络配置包括但不局限于大型机网络、文件共享网络和对等网络实现。
网络例如网络100经常利用各种协议以实现网络的部分之间的连接性。尽管本发明的优选实施例利用传输控制协议(TCP),但是本领域内的那些技术人员将理解本发明中的公开的系统和方法还可应用于其他通信协议例如Winsock、NetBIOS等。
在本发明的优选实施例内,TCP作为操作系统核心的扩展操作。即操作系统使得不需要额外的TCP程序就可执行TCP操作。但是,在本发明的一些实施例内,可使用专用TCP程序处理TCP操作。
图3是示出其中可实现本发明的优选实施例的示例性客户机-服务器交互的高层流程图。此示例性客户机-服务器交互表示一服务器创建套接字以侦听连接请求、处理这些请求并在服务器和客户机之间传送数据。另外,客户机创建套接字以与服务器通信,经由该套接字连接到服务器并在客户机和服务器之间传送数据。
如图所示,图3被分成两个相交互的部分,一个部分代表服务器进行的操作(块302-312),而另一个部分代表客户机进行的操作(块320-326)。对于服务器,该过程从步骤300开始并转到步骤302,该步骤描述服务器创建套接字以使服务器能够与客户机通信。计算机系统利用套接字在单个计算机系统内或在网络例如因特网上的过程之间实现通信。
然后该过程转到步骤304,该步骤描述服务器将套接字绑定到服务器内的本地端口。然后,过程转到步骤306,该步骤说明服务器经由套接字通过本地端口侦听客户机请求。然后,如步骤308所示,服务器确定是否从客户机接收到TCP连接请求。如果服务器没有接收到TCP连接请求,则该过程在步骤308重复。但是,如果服务器接收到TCP连接请求,则该过程转到步骤310,该步骤描述服务器发送SYN/ACK请求以确认和接收来自客户机的SYN请求。
然后,如步骤312所示,服务器确定是否已从客户机接收到ACK消息。如果服务器确定没有从客户机接收到ACK消息,该过程在步骤312重复。但是,如果服务器确定已从客户机接收到ACK消息,则该过程转到步骤314,该步骤描述服务器和客户机在建立的连接上传送数据。然后该过程转到步骤316,该步骤说明服务器确定服务器和客户机之间的连接是否已通过显式连接终止或连接超时终止。如果连接没有终止,则该过程返回到步骤314并以重复方式继续执行。但是,如果服务器确定连接已终止,则该过程转到步骤318,该步骤描述该过程结束。
对于客户机,该过程在步骤300开始并转到步骤320,该步骤描述客户机创建套接字并将该套接字绑定到本地端口以便与服务器通信。然后,如步骤322所示,客户机优选地以SYN请求的形式向服务器发送连接请求。然后,如步骤324所示,客户机确定其是否已从服务器接收到SYN/ACK消息。如果客户机没有从服务器接收到SYN/ACK消息,则该过程在步骤324重复。但是,如果客户机已从服务器接收到SYN/ACK消息,则该过程转到步骤326,该步聚示出客户机向服务器发送ACK消息,这完成了三路握手过程并使服务器和客户机能够形成连接。然后,如步骤314所述,服务器和客户机开始传送数据。如前文讨论的,如步骤316所示,服务器和客户机定期确定连接是否已终止。如果连接没有终止,则该过程转到步骤314并且以重复方式继续进行。如果连接已终止,则过程转到步骤318,该步骤示出该过程结束。
图4是更详细示出图3的步骤308和310的高层流程图。该过程在步骤400开始并转到步骤402,该步骤描述服务器确定是否已从客户机接收到TCP连接请求(形式为SYN信号)。如果服务器没有接收到TCP连接请求,过程在步骤402重复。但是,如果服务器已接收到TCP连接请求,则该过程转到步骤404,该步骤描述服务器确定是否接受该连接请求。服务器将不接受连接请求的一些原因包括但不局限于连接请求来自受限的服务器以及缺少服务请求的资源。如果服务器确定不服务TCP连接请求,则该过程转到步骤406,该步骤描述服务器丢弃TCP连接请求。然后,该过程返回步骤402并以重复方式继续执行。
返回步骤404,如果服务器确定接受TCP连接请求,则该过程转到步骤408,该步骤描述服务器响应于客户机的SYN信号发送SYN/ACK信号。另外,服务器启动与该TCP连接请求相关的计时器。该计时器测量自服务器发送SYN/ACK信号以来经过的时间量。如下文更详细说明的,存储在如图2B内所示的TCP连接请求节点252内的计时器字段258内的计时器值使服务器能够按照自发送SYN/ACK信号以来经过的时间对队列内的TCP请求排序。
该过程然后转到步骤410,该步骤说明服务器确定用于将TCP连接请求排序的初始队列是否是满的。如果服务器确定该队列不满,则该过程转到步骤414,该步骤描述服务器将TCP连接请求放置在队列中,并按照计时器字段258内存储的每个TCP连接请求的相对计时器值对队列排序。通过对队列排序,服务器将具有较小计时器值的TCP连接请求放置在队列前端而将具有较大值的请求放置在队列末端。具有较大计时器值的TCP连接请求具有较小的成功连接完成的可能性。通常,导致成功连接的TCP连接请求具有较小的相关联的计时器值,因为更可能成功连接的客户机迅速返回来自服务器的SYN/ACK信号。该过程然后转到标记A并转到图3内的步骤310。
返回步骤410,如果服务器确定初始队列是满的,则该过程转到步骤412,该步骤说明服务器除去位于列表末端的项以能够将最新接收和接受的TCP连接项放置在队列中。如前文讨论的,在初始队列末端的TCP连接请求具有较大的计时器值,从而不导致成功连接的可能性较大。因此,位于队列末端的TCP连接请求是用于从队列删除以能够将最新接收的TCP连接请求放置在队列上的更符合逻辑的候选者。然后该过程转到步骤414,前文已讨论该步骤。然后,该过程返回步骤402并以重复方式继续执行。
如文中公开的,本发明是响应满TCP初始队列的系统和方法。在服务器接收到来自客户机的TCP连接请求之后,服务器将该请求放置在按照自服务器响应各个TCP连接请求以来经过的时间量排序的TCP连接请求的初始队列中。当服务器试图将新的TCP连接请求放置在满的初始队列中时,服务器经由TCP协议将除去在初始队列末端的项。最后的项因具有高计时器值而更可能已执行不成功的完成连接的尝试。
另外,应理解,本发明的至少一些方面可作为另一种选择在程序产品内实现。可经由多种信号承载介质包括但不局限于不可写存储介质(例如CD-ROM)、可写存储介质(例如软盘、硬盘驱动器、读/写CD-ROM,光介质)和通信介质例如计算机和电话网络包括以太网将定义本发明的功能的程序传送给数据存储系统或计算机系统。因此,应理解,这样的信号承载介质在承载或编码指导本发明中的方法功能的计算机可读指令时代表本发明的其他可选择实施例。此外,应理解本发明可由具有形式为如文中所述的硬件、软件或软件和硬件的组合或它们的等价物的装置的系统实现。
尽管已参照优选实施例具体示出和说明本发明,但是本领域内的那些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。
权利要求
1.一种数据处理系统,包括处理器;互连;经由所述互连连接到所述处理器的系统存储器,其中所述系统存储器存储连接管理器,其中响应于接收到来自客户机的连接请求,所述连接管理器按照自所述数据处理系统响应所述连接请求以来经过的时间量将所述连接请求在列表内排序,并且所述操作系统除去具有最大计时器值的所述连接请求。
2.根据权利要求1的数据处理系统,其中,所述列表是双链表。
3.根据权利要求1的数据处理系统,其中,所述连接请求是SYN信号。
4.根据权利要求1的数据处理系统,其中,所述列表是初始队列。
5.一种方法,包括响应于接收到来自客户机的连接请求,按照用于表示自所述数据处理系统响应所述连接请求以来经过的时间量的计时器值将所述连接请求在列表内排序;以及除去具有最大计时器值的所述连接请求。
6.根据权利要求5的方法,其中,所述列表是双链表。
7.根据权利要求5的方法,其中,所述连接请求是SYN信号。
8.根据权利要求5的方法,其中,所述列表是初始队列。
9.一种用于存储包括用于实现前面方法权利要求的任何方法的指令的计算机程序产品的计算机可读介质。
全文摘要
一种用于响应满TCP队列的系统和方法。在服务器接收到来自客户机的TCP连接请求之后,服务器将请求放置在按照自服务器响应每个TCP连接请求以来经过的时间量排序的TCP连接请求的初始队列中。当服务器试图将新TCP连接请求放置在满初始队列上时,主机将经由TCP协议除去位于初始队列末端的项。该末端项由于高计时器值而更可能已执行完成连接的不成功尝试。
文档编号H04L12/56GK1878177SQ20061008275
公开日2006年12月13日 申请日期2006年5月25日 优先权日2005年6月9日
发明者V·文卡特苏布拉, R·P·扬曼 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1