一种传输控制协议连接迁移方法及系统的利记博彩app

文档序号:7645739阅读:104来源:国知局
专利名称:一种传输控制协议连接迁移方法及系统的利记博彩app
技术领域
本发明涉及传输控制协议(TCP)中的报文调度技术,尤其涉及一种TCP连接迁移方法及系统。
背景技术
随着互联网技术的不断发展,用户终端对服务器请求的数量不断增加,单台服务器由于自身性能的限制,已经远远不能满足当前用户的需 求,因此,需要采用服务器集群来处理用户终端的请求。通常的做法是在服务器集群前端部署一台负载均衡设备作为TCP网关,将用户终端的请求通过负载均衡设备调度到服务器集群,并将服务器的响应通过负载均衡设备发送给相应用户终端。传统的TCP网关方式中,由于用户终端的请求报文和服务器的响应报文都要通过负载均衡设备来中转,很容易造成系统瓶颈,使得调度能力受限,不能部署到包含大量网络设备的大规模网络环境中。为了解决传统技术中的瓶颈问题,目前已提出两种实现TCP连接迁移的方式一种是基于Linux虚拟服务器(Virtual Server)的直接路由(Direct Routing)方式,该方式可以根据带权的Round Robin算法、或最少连接数算法、或带权的最少连接数算法进行连接的迁移,但该迁移方式不能使用基于内容的调度算法,从而会导致服务器的缓存命中率较低。一种是基于Linux Virtual Server的子项目一基于重构链接现场TCP迁移方法的Web服务器集群调度系统(TCPHA),该系统可以做到基于内容的请求调度,但该迁移方式调度算法单一,只能根据请求内容的不同类型将请求调度到不同的服务器,例如将后缀中含有JPG的请求内容调度到图片服务器等等,扩展性较差。可见,现有技术中提出的迁移方式,虽然能解决负载调度的瓶颈问题,但是,这两种实现方案要么不能基于内容进行请求调度,导致服务器的缓存命中率较低;要么调度算法单一,可扩展性差。显然,现有的TCP连接迁移方式不能满足实际环境的需要。

发明内容
有鉴于此,本发明的目的在于提供一种TCP连接迁移方法及系统,能在解决由于调度所产生网络吞吐量过大而导致的瓶颈问题的同时,提高服务器缓存命中率和系统可扩展性,且能避免采用单一的调度算法。为达到上述目的,本发明的技术方案是这样实现的本发明提供了一种TCP连接迁移方法,包括以下步骤用户终端向负载均衡设备发送请求报文,负载均衡设备选择服务器,并将用户终端的请求报文迁移到所选择的服务器;所述服务器对用户终端的请求报文处理后,直接向用户终端发送响应报文。上述方案中,所述将用户终端的请求报文迁移到所选择的服务器为负载均衡设备将请求报文的目的地址信息修改为所选择服务器的地址信息,之后将修改地址信息后的请求报文封装并发送至所选择服务器。上述方案中,所述服务器向用户终端发送响应报文之前,该方法还包括修改响应报文中的源地址信息为负载均衡设备的地址信息。上述方案中,所述服务器向用户终端发送响应报文之前,该方法还包括服务器向负载均衡设备发送迁移成功的信号。上述方案中,所述负载均衡设备选择服务器之前,该方法还包括负载均衡设备判断用户终端发起的请求报文是否是第一次请求,如果不是第一次请 求,则确定用户终端的请求是否已迁移,确定已迁移时,直接将报文发送给服务器;确定处于迁移中时,直接将报文丢弃,等待重传;如果是第一次请求,则缓存用户终端的第一次请求报文,更新连接状态,将用户终端的连接信息加入到连接状态信息表中,并将请求报文给负载均衡设备的协议栈继续处理。上述方案中,所述服务器对用户终端的请求报文处理为服务器解封装负载均衡设备传输的已修改目的地址的请求报文,判断是否为用户第一次发送的修改过目的地址的请求报文,如果是第一次请求,服务器需要根据用户终端请求报文中信息,虚拟完成用户终端与服务器的三次握手,完成连接的建立,将修改过目的地址的请求报文交由服务器自身协议栈继续处理;如果不是用户终端发送的第一次请求报文,服务器直接交由协议栈继续处理。本发明还提供了一种TCP连接迁移系统,包括用户终端、负载均衡设备、以及服务器;其中,用户终端,用于将对内容的请求报文发送至负载均衡设备;负载均衡设备,用于接收用户终端的请求报文,从服务器集群中选择服务器,并将用户终端的请求报文迁移到所选择的服务器;服务器,用于对用户终端的请求报文处理,直接向用户终端发送响应报文。上述方案中,所述负载均衡设备包括用户连接处理模块、负载调度模块、以及连接迁移模块;其中,用户连接处理模块,用于在负载均衡设备中维护连接状态信息表记录用户终端发起的连接;复制用户终端发起的第一次请求报文,并将复制的请求报文发送给连接迁移模块;负载调度模块,用于从服务器集群中选择服务器,并将所选服务器的地址写到请求报文的目的地址中发送给连接迁移模块;连接迁移模块,用于截获负载调度模块处理后的请求报文,从中提取出目的地址后丢弃所截获的请求报文;将用户连接处理模块中复制的用户终端请求报文中的目的地址修改为提取出的目的地址后封装报文,发送给服务器。上述方案中,所述服务器包括连接建立模块、应用服务器模块、以及目的端修改模块;其中,连接建立模块,用于解封报文后,虚拟完成用户终端与服务器之间的三次握手过程,完成连接的迁移;并将完成连接迁移的通知返回给负载均衡设备;应用服务器模块,用于针对用户终端的请求报文发送响应报文,将响应报文发送到目的端修改模块;
目的端修改模块,用于截获应用服务器模块发出的响应报文,将响应报文中的源地址信息修改为负载均衡设备的地址信息。上述方案中,所述负载调度模块,使用任意负载均衡应用软件提供的调度算法。本发明所提供的TCP连接迁移方法及系统,具有以下的优点和特点I)本发明的连接迁移只需在操作系统的内核中实现,与系统的应用层无关,因此,用户终端可以根据实际需求在应用层使用任意负载均衡应用方式来完成调度,这样,可解决调度算法单一的问题,并提高系统的可扩展性;而且,能提高服务器的缓存命中率。2)本发明中,服务器可直接将响应报文发送给用户终端,而不需要通过负载均衡设备转发,如此,可大大降低负载均衡设备成为瓶颈的可能,从而能避免由于调度产生网络吞吐量过大而导致的瓶颈问题,提高系统的稳定性。


图I为本发明TCP连接迁移系统的组成结构示意图;图2为本发明TCP连接迁移方法的流程示意图;图3为本发明TCP连接迁移方法的实施流程示意图。
具体实施例方式本发明的基本思想是用户终端向负载均衡设备发送请求报文,负载均衡设备选择合适的服务器,并将用户终端的请求报文迁移到所选择的服务器;该服务器对用户终端的请求报文处理后,将响应报文直接发送给用户终端。下面结合附图及具体实施例对本发明再作进一步详细的说明。如图I所示,本发明TCP连接迁移系统包括用户终端11、负载均衡设备12以及服务器13 ;其中,用户终端11,用于将对内容的请求报文发送至负载均衡设备12 ;负载均衡设备12,用于接收用户终端11发来的请求,从服务器集群中选择一台服务器13,并将用户终端的连接迁移到所选择的服务器13 ;这里,所述服务器集群是指多台服务器构成的服务器集合;所述选择是按负载均衡设备所用负载均衡软件中的具体调度算法选择服务器。所述迁移到具体是,负载均衡设备将用户终端发来的请求中的目的地址修改为所选择服务器的地址,并将修改地址后的请求进行封装。所述负载均衡设备12进一步包括用户连接处理模块、负载调度模块以及连接迁移模块;其中,用户连接处理模块,用于在负载均衡设备中维护连接状态信息表记录用户终端发起的连接;复制用户终端发起的第一次请求报文,并将复制的请求报文发送给连接迁移模块;这里,所述连接状态信息表经过一定的时长后会自动删除信息表中的记录,对连接状态进行重新记录;所述对连接状态重新记录是由于网络连接的状况是随时变化的,所以经过一定时间就需要根据当前的网络连接状况重新由负载均衡模块将用户终端的请求报文进行连接迁移;所述连接状态信息表中包括TCP连接的四元组信息、以及迁移状态等,所述TCP连接的四元组信息是指连接的源地址、目的地址、源端口和目的端口 ;所述复制用户终端发起的第一次请求报文,是用于将复制的请求报文提供给连接迁移模块,由连接迁移模块将复制的请求报文中的目的地址修改为负载调度模块处理后的请求报文中的目的地址,然后发送给服务器。负载调度模块,用于根据一定的负载均衡软件中的调度算法从服务器集群中选择一台服务器来响应用户终端的请求,并将所选服务器的地址写到请求报文的目的地址中发送给连接迁移模块;实际应用中,该模块可利用任意开源负载均衡应用软件来实现;所述一定的负载均衡软件可以是任意开源负载均衡应用软件,如可采用Nginx软件、Haproxy软件等;所述的调度算法是所用负载均衡软件中提供的调度算法,如=Nginx软件或Naproxy软件所提供的 URL Hashing 算法、Consistent Hashing 算法等; 连接迁移模块,用于截获负载调度模块处理后的请求报文,从中提取出目的地址后丢弃所截获的请求报文;将用户连接处理模块中复制的用户终端请求报文中的目的地址修改为提取出的目的地址后封装报文,发送给服务器。服务器13,用于接收负载均衡设备12迁移来的请求,完成连接的迁移,并向负载均衡设备12发送迁移成功的信息;还用于将对内容的响应直接发送给用户终端11 ;这里,所述迁移具体是服务器接收到负载均衡设备迁移来的请求后,根据其中的源地址虚拟的与用户进行三次握手后建立连接,之后向负载均衡设备发送迁移成功的信
肩、O所述服务器13进一步包括连接建立模块、应用服务器模块和目的端修改模块;其中,连接建立模块,用于解封报文后,虚拟完成用户终端与服务器之间的三次握手过程,完成连接的迁移;并将完成连接迁移的通知返回给负载均衡设备;应用服务器模块,用于针对用户终端的请求报文发送响应报文,将响应报文发送到目的端修改模块;目的端修改模块,用于截获应用服务器模块发出的响应报文,将响应报文中的源地址信息修改为负载均衡设备的地址信息。基于图I所示的TCP连接迁移系统,用户终端11与负载均衡设备12进行三次握手后建立连接;由负载均衡设备12中的用户连接处理模块判断用户终端发起的请求报文是否是第一次请求,如果不是第一次请求,则查看自身维护的连接状态信息表,如果连接状态为已经迁移,则直接将报文发送给服务器13,不需要经过协议栈继续处理,如果连接状态为处于迁移中,则丢弃当前的报文,等待重传;如果是第一次请求,则缓存用户终端请求报文,将用户终端的连接信息加入到连接状态信息表中,并将请求报文给协议栈继续处理;负载均衡设备12的负载均衡模块获得请求报文,根据自身配置的负载均衡调度算法,选择一台服务器,并将请求报文调度到所选择的服务器13 ;负载均衡设备12的连接迁移模块截获该请求报文,提取出目的端信息后丢弃报文,将缓存用户终端的第一次请求报文中的目的端信息修改为上述目的端信息,重新计算校验和,封装后发给服务器13 ;收到服务器迁移成功的响应后,将选定的服务器信息加入到连接状态信息表中,并将该连接标记为已迁移;
服务器13解封装传输的请求报文,将请求报文交由协议栈继续处理;连接建立模块判断用户终端的请求报文是否是第一次请求,若是则虚拟完成用户终端与服务器的三次握手,完成连接的建立,否则将报文交由协议栈继续处理;连接建立完成后,服务器13向负载均衡设备12发送连接已经成功迁移的信号,并将报文交由协议栈继续处理;负载均衡设备12收到服务器13迁移成功的响应后,将选定的服务器信息加入到连接状态信息表中,并将该连接标记为已迁移;服务器13的应用服务器模块响应用户终端的请求发出响应报文;目的端修改模块截获应用服务器模块发出的响应报文,因为用户终端认为连接是与负载均衡设备建立的,因此,需要将响应报文的源地址信息修改为负载均衡设备12的信息;将响应报文直接发送给用户终端11。基于上述系统,本发明实现TCP连接迁移的方法如图2所示,包括以下步骤步骤201 :用户终端与负载均衡设备建立连接,发送请求报文。
步骤202 :确定请求报文为第一次发送时,负载均衡设备选择服务器,并将该请求报文迁移到所选择的服务器。这里,如果请求报文不是第一次发送,则该用户终端的连接处于迁移状态中,直接丢弃该请求报文,等待重传;如果请求报文是第一次发送,则负载均衡设备需要进行服务器选择,并将请求报文的目的地址信息修改为所选择服务器的地址信息,将请求报文进行封装后发至所选服务器。步骤203 :服务器收到请求报文,对请求报文进行处理,并向用户终端直接发送响应报文。这里,服务器接收到请求报文之后,解封装负载均衡设备传输的已修改目的地址的请求报文,判断是否为用户发送的第一次请求报文,如果是第一次请求报文,服务器需要根据用户终端请求报文中信息,虚拟完成用户终端与服务器的三次握手,完成连接的建立;并且,服务器在向用户终端发送响应报文之前,向负载均衡设备发送迁移成功的信号,负载均衡设备接收到该信号后将连接状态信息表中的连接状态标记为已迁移;另外,服务器在向用户终端发送响应报文之前,修改响应报文中的源地址信息为负载均衡设备的地址信息,使用户终端认为该响应报文来自负载均衡设备。如果不是用户终端发送的第一次请求报文,则服务器经过协议栈处理后直接向用户终端返回响应报文。下面结合图3,对本发明的具体实现流程作进一步详细的说明步骤301 :用户终端与负载均衡设备建立连接。步骤302 :判断用户终端发起的请求报文是否是第一次请求报文,如果不是,则进入步骤303,如果是,则进入步骤304 ;这里,所述请求报文可以是所有使用TCP协议的报文,比如HTTP、FTP、TELNET等都可以,具体与应用层负载均衡软件的实现有关,可以根据需要来做调整。步骤303 :确定用户终端的请求是否已迁移,如果处于迁移中,则丢弃当前的报文,等待重传;如果已迁移,则不需要经过负载均衡设备的协议栈继续处理,直接将报文发送给服务器,进入步骤306;这里,所述确定用户终端的请求是否已迁移具体为在负载均衡设备中的连接状态信息表查看该用户终端发的请求报文是否已迁移到服务器;每个用户终端的连接信息在用户终端发送第一次请求报文时被加入到所述连接状态信息表中。步骤304 :缓存用户终端的第一次请求报文,更新连接状态,将用户终端的连接信息加入到连接状态信息表中,并将请求报文给负载均衡设备的协议栈继续处理。步骤305 :根据配置的负载均衡调度算法选择一台服务器,并将收到的请求报文迁移到所选择的服务器;这里,所述请求报文的发送端是负载均衡设备,目的端是服务器;所述将收到的请求报文迁移到所选择的服务器为在发送经由负载均衡调度算法确定目的地址的请求报文之前,负载均衡设备先提取出请求报文的目的地址信息,之后丢弃报文;再将步骤304中缓存的用户终端的第一次请求报文中的目的地址信息修改为提取出的目的地址信息;重新计算校验和,将请求报文进行封装,将封装后的请求报文发给服务器。
这里,报文发送的通道可以有多种,比如IP隧道和UDP协议。步骤306 :服务器解封装负载均衡设备传输的修改了目的地址的请求报文。步骤307 :将修改过目的地址的请求报文交由服务器自身协议栈继续处理。步骤308 :服务器响应用户终端的请求,并向用户终端返回响应报文。这里,服务器内部截获发出的响应报文,将响应报文的源地址信息修改为负载均衡设备的地址信息,之后将响应报文直接发送给用户终端。上述处理过程中,在步骤307之前,还包括以下步骤步骤a :判断用户终端的请求报文是否是第一次请求,若是,则进入步骤b,否则执行步骤307 ;这里,判断用户终端的请求报文是否是第一次发送,是为了确定服务器是否需要与用户终端完成虚拟的握手,当服务器第一次接收到请求报文的时候,服务器需要建立第一次接收报文的连接。步骤b :根据用户终端请求报文中信息,虚拟完成用户终端与服务器的三次握手,完成连接的建立。具体的,可根据用户终端的HTTP请求报文中的SEQ、ACK信息,进行虚拟握手。步骤c :连接建立完成后,向负载均衡设备发送连接已经成功迁移的信号,负载均衡设备将选定的服务器信息加入到连接状态信息表中,并将该连接标记为已迁移。可见,应用上述实现TCP连接迁移的方案,服务器就可以直接将响应报文发送给用户终端而不需要通过负载均衡设备,从而降低负载均衡设备成为瓶颈的可能,提高系统的稳定性;另外,还可以通过负载均衡设备的软件模块处理,提高系统的可扩展性。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
权利要求
1.一种传输控制协议TCP连接迁移方法,其特征在于,该方法包括 用户终端向负载均衡设备发送请求报文,负载均衡设备选择服务器,并将用户终端的请求报文迁移到所选择的服务器; 所述服务器对用户终端的请求报文处理后,直接向用户终端发送响应报文。
2.根据权利要求I所述的方法,其特征在于,所述将用户终端的请求报文迁移到所选择的服务器为负载均衡设备将请求报文的目的地址信息修改为所选择服务器的地址信息,之后将修改地址信息后的请求报文封装并发送至所选择服务器。
3.根据权利要求I或2所述的方法,其特征在于,所述服务器向用户终端发送响应报文之前,该方法还包括修改响应报文中的源地址信息为负载均衡设备的地址信息。
4.根据权利要求I或2所述的方法,其特征在于,所述服务器向用户终端发送响应报文之前,该方法还包括服务器向负载均衡设备发送迁移成功的信号。
5.根据权利要求I或2所述的方法,其特征在于,所述负载均衡设备选择服务器之前,该方法还包括负载均衡设备判断用户终端发起的请求报文是否是第一次请求,如果不是第一次请求,则确定用户终端的请求是否已迁移,确定已迁移时,直接将报文发送给服务器;确定处于迁移中时,直接将报文丢弃,等待重传;如果是第一次请求,则缓存用户终端的第一次请求报文,更新连接状态,将用户终端的连接信息加入到连接状态信息表中,并将请求报文给负载均衡设备的协议栈继续处理。
6.根据权利要求2所述的方法,其特征在于,所述服务器对用户终端的请求报文处理为服务器解封装负载均衡设备传输的已修改目的地址的请求报文,判断是否为用户第一次发送的修改过目的地址的请求报文,如果是第一次请求,服务器需要根据用户终端请求报文中信息,虚拟完成用户终端与服务器的三次握手,完成连接的建立,将修改过目的地址的请求报文交由服务器自身协议栈继续处理;如果不是用户终端发送的第一次请求报文,服务器直接交由协议栈继续处理。
7.—种TCP连接迁移系统,其特征在于,该系统包括用户终端、负载均衡设备、以及服务器;其中, 用户终端,用于将对内容的请求报文发送至负载均衡设备; 负载均衡设备,用于接收用户终端的请求报文,从服务器集群中选择服务器,并将用户终端的请求报文迁移到所选择的服务器; 服务器,用于对用户终端的请求报文处理,直接向用户终端发送响应报文。
8.根据权利要求7所述的系统,其特征在于,所述负载均衡设备包括用户连接处理模块、负载调度模块、以及连接迁移模块;其中, 用户连接处理模块,用于在负载均衡设备中维护连接状态信息表记录用户终端发起的连接;复制用户终端发起的第一次请求报文,并将复制的请求报文发送给连接迁移模块; 负载调度模块,用于从服务器集群中选择服务器,并将所选服务器的地址写到请求报文的目的地址中发送给连接迁移模块; 连接迁移模块,用于截获负载调度模块处理后的请求报文,从中提取出目的地址后丢弃所截获的请求报文;将用户连接处理模块中复制的用户终端请求报文中的目的地址修改为提取出的目的地址后封装报文,发送给服务器。
9.根据权利要求7或8所述的系统,其特征在于,所述服务器包括连接建立模块、应用服务器模块、以及目的端修改模块;其中, 连接建立模块,用于解封报文后,虚拟完成用户终端与服务器之间的三次握手过程,完成连接的迁移;并将完成连接迁移的通知返回给负载均衡设备; 应用服务器模块,用于针对用户终端的请求报文发送响应报文,将响应报文发送到目的端修改模块; 目的端修改模块,用于截获应用服务器模块发出的响应报文,将响应报文中的源地址信息修改为负载均衡设备的地址信息。
10.根据权利要求8所述的系统,其特征在于,所述负载调度模块,使用任意负载均衡应用软件提供的调度算法。
全文摘要
本发明公开了一种传输控制协议(TCP)连接迁移方法,包括用户终端向负载均衡设备发送请求报文,负载均衡设备选择服务器,并将用户终端的请求报文迁移到所选择的服务器;所述服务器对用户终端的请求报文处理后,直接向用户终端发送响应报文。本发明还同时公开了一种TCP连接迁移系统,采用本发明能在解决由于调度产生的网络吞吐量过大而导致的瓶颈问题的同时,提高服务器缓存命中率和系统可扩展性,且能避免采用单一的调度算法。
文档编号H04L29/06GK102752188SQ201110101298
公开日2012年10月24日 申请日期2011年4月21日 优先权日2011年4月21日
发明者李阳阳, 王洪波, 程时端, 董振江, 金怡爱 申请人:中兴通讯股份有限公司, 北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1