一种数据和控制分离的TCP流漂移处理方法及其装置转让专利

申请号 : CN202010091987.8

文献号 : CN110913039B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 程行峰蓝维宇

申请人 : 杭州圆石网络安全技术有限公司

摘要 :

本发明提供了一种数据和控制分离的TCP流漂移处理方法及装置,在负载均衡集群中部署了控制设备,每台负载均衡设备各自存储的TCP NAT连接转换表信息同时也存储在控制设备上,当负载均衡设备接收到发生流漂移的TCP报文时,会把TCP报文发送给控制设备或向控制设备发送该报文所属的TCP连接信息的查询请求,收到TCP报文的控制设备或收到控制设备反馈信息后的负载均衡设备会再将该报文发送给对应的负载均衡设备,该对应的负载均衡设备将该报文进行NAT转换后转发到目的服务器。采用本发明的负载均衡集群,可以高效管理整个集群的NAT连接转换表,降低带宽压力,降低集群成本。

权利要求 :

1.一种数据和控制分离的TCP流漂移处理装置,包括负载均衡集群,所述负载均衡集群中设有若干负载均衡设备,其特征在于:所述负载均衡集群中还部署有至少一台控制设备;

所述每台负载均衡设备包括:连接转换表信息存储模块,用于存储本设备的TCP NAT连接转换表信息;连接转换表信息输出模块,用于根据本设备的TCP NAT连接转换表信息输出源IP/源端口、虚拟IP/虚拟端口、设备ID信息到控制设备;TCP报文处理模块,用于接收TCP报文并查找本地TCP NAT连接转换表,如果查找到相关连接信息,则根据该连接信息将报文进行NAT转换后转发到目的服务器去,如果查找不到相关连接信息,则将该报文转发到控制设备;

所述控制设备包括:连接转换表信息存储模块,用于接收并存储负载均衡设备输出的源IP/源端口、虚拟IP/虚拟端口、设备ID信息,所述控制设备依据所述源IP/源端口、虚拟IP/虚拟端口、设备ID信息建立全局TCP NAT连接转换表;所述控制设备还包括TCP报文处理模块,用于接收负载均衡设备转发的报文,依据所述全局TCP NAT连接转换表查找该报文所属的TCP连接信息,并将该报文转发到该连接信息对应的负载均衡设备。

2.根据权利要求1所述的数据和控制分离的TCP流漂移处理装置,其特征在于:所述负载均衡设备包括连接转换表信息更新提醒模块,用于当TCP连接发生变化时,该负载均衡设备连接转换表信息会做出更新,同时发送信息通知控制设备更新全局TCP NAT连接转换表信息。

3.一种数据和控制分离的TCP流漂移处理方法,其特征在于包括如下步骤:

1)TCP流首个报文经由负载均衡集群中对应的负载均衡设备处理后,所述负载均衡设备存储各自TCP NAT连接转换表信息,并分别根据该连接转换表信息发送源IP/源端口、虚拟IP/虚拟端口、设备ID信息到控制设备存储,所述控制设备依据所述源IP/源端口、虚拟IP/虚拟端口、设备ID信息建立全局TCP NAT连接转换表;

2)当负载均衡设备接收到TCP报文时,先查找本地TCP NAT连接转换表,如果查找到相关连接信息,则根据该连接信息将报文进行NAT转换后转发到目的服务器去,如果查找不到相关连接信息,且该报文非TCP流首个报文,则把该报文转发到控制设备;

3)控制设备接收到负载均衡设备转发的报文后,查询存储在本地的全局TCP NAT连接转换表,找到该报文所属的TCP连接信息,将该报文发送到该报文所属的TCP连接信息对应的负载均衡设备;

4)当负载均衡设备接收到控制设备发过来的报文后,查询本地TCP NAT连接转换表,根据该连接信息将报文进行NAT转换后转发到目的服务器。

4.根据权利要求3所述的数据和控制分离的TCP流漂移处理方法,其特征在于:当某负载均衡设备的TCP连接发生变化时,该负载均衡设备连接转换表信息会做出更新,同时发送信息通知控制设备更新全局TCP NAT连接转换表信息。

5.一种数据和控制分离的TCP流漂移处理装置,包括负载均衡集群,所述负载均衡集群中设有若干负载均衡设备,其特征在于:所述负载均衡集群中还部署有至少一台控制设备;

所述每台负载均衡设备包括:连接转换表信息存储模块,用于存储本设备的TCP NAT连接转换表信息;连接转换表信息输出模块,用于根据本设备的TCP NAT连接转换表信息输出源IP/源端口、虚拟IP/虚拟端口、设备ID信息到控制设备;TCP报文处理模块,用于接收TCP报文并查找本地TCP NAT连接转换表,如果查找到相关连接信息,则根据该连接信息将报文进行NAT转换后转发到目的服务器,如果查找不到相关连接信息,则向控制设备发送远程请求查询该报文所属的TCP连接信息,并接收来自控制设备返回的TCP连接信息;TCP报文转出模块,用于根据报文所属的TCP连接信息将报文转发到对应的负载均衡设备;

所述控制设备包括:连接转换表信息存储模块,用于接收并存储负载均衡设备输出的源IP/源端口、虚拟IP/虚拟端口、设备ID信息,所述控制设备依据所述源IP/源端口、虚拟IP/虚拟端口、设备ID信息建立全局TCP NAT连接转换表;所述控制设备还包括TCP连接信息处理模块,用于接收负载均衡设备发送的请求后,依据所述全局TCP NAT连接转换表查找该报文所属的TCP连接信息,并将查询信息返回到发送请求的负载均衡设备。

6.根据权利要求5所述的数据和控制分离的TCP流漂移处理装置,其特征在于:所述负载均衡设备包括连接转换表信息更新提醒模块,用于当TCP连接发生变化时,该负载均衡设备连接转换表信息会做出更新,同时发送信息通知控制设备更新全局TCP NAT连接转换表信息。

7.一种数据和控制分离的TCP流漂移处理方法,其特征在于包括如下步骤:

1)TCP流首个报文经由负载均衡集群中对应的负载均衡设备处理后,所述负载均衡设备存储各自TCP NAT连接转换表信息,并分别根据该连接转换表信息发送源IP/源端口、虚拟IP/虚拟端口、设备ID信息到控制设备存储,所述控制设备依据所述源IP/源端口、虚拟IP/虚拟端口、设备ID信息建立全局TCP NAT连接转换表;

2)当负载均衡设备接收到TCP报文时,先查找本地TCP NAT连接转换表,如果查找到相关连接信息,则根据该连接信息将报文进行NAT转换后转发到目的服务器去,如果查找不到相关连接信息,且该报文非TCP流首个报文,则向控制设备发送远程请求查询该TCP连接信息;

3)控制设备接收到负载均衡设备发送的请求后,查询存储在本地的全局TCP NAT连接转换表,找到该报文所属的TCP连接信息,并将查询信息返回到发送请求的负载均衡设备;

4)负载均衡设备根据控制设备返回的查询信息,将报文转发到该报文所属的TCP连接信息对应的负载均衡设备;

5)负载均衡设备接收到其他负载均衡设备转发的报文后,查询本地TCP NAT连接转换表,根据连接信息将报文进行NAT转换后转发到目的服务器。

8.根据权利要求7所述的数据和控制分离的TCP流漂移处理方法,其特征在于:当某负载均衡设备的TCP连接发生变化时,该负载均衡设备连接转换表信息会做出更新,同时发送信息通知控制设备更新全局TCP NAT连接转换表信息。

说明书 :

一种数据和控制分离的TCP流漂移处理方法及其装置

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种负载均衡处理方法及装置。

背景技术

[0002] 关键术语定义
[0003] 负载均衡集群
[0004] 负载均衡技术是搭建多个具有相同业务功能的处理设备,并通过特定算法将同一个VIP(Virtual IP Address,虚拟IP地址,是一个不与特定计算机或一个计算机中的网卡相连的IP地址)的网络流量进行平衡、分发到多个处理设备上同时进行运行,从而协同完成工作任务。负载均衡集群将流量转发到目的服务器时使用的源IP/端口称为Local IP/Port(也称为回源IP/Port)。负责将流量通过一定算法进行平均分发的设备即负载均衡设备,大规模应用场景中由于单台负载均衡设备性能以及可靠性无法满足需求,将多台负载均衡设备组建成集群并对外表现为一个负载均衡设备即负载均衡集群。
[0005] 流漂移同一个源地址/端口到同一个目的地址/端口并且相同协议的报文为同一条流。在负载均衡集群中,一条TCP流的所有报文需要通过负载均衡分配到同一个处理设备上处理,但是由于互联网中网络变更、硬件失效等各种原因,一条TCP流中的某些报文可能会被分配到负载均衡集中其它处理设备,我们把这种现象称为流漂移。当发生流漂移时如果不进行处理,则会引起TCP长连接中断,影响上层业务稳定。
[0006] 架构
[0007] 客户机-服务器,即Client-Server(C/S)结构。C/S结构通常采取两层结构,客户机通过局域网与服务器相连,通常客户机与服务器是多对一的形式,客户机负责完成与用户的交互任务,并向服务器发送请求,服务器负责数据的管理并向客户机返回应答数据。
[0008] 网络地址转换(Network Address Translation),最初是在专用网内部的一些主机本来已经分配到了本地IP地址,但现在又想和因特网上的主机通信时使用的方法,具备NAT功能的设备用来将内网地址和端口号转换成合法的公网地址和端口号后与外部通信。目前NAT已经不局限于内网和公网的通信,在公网中,也可以将IP地址进行映射转换,用于在需要隐藏IP地址,提高安全性的场景。
[0009] 大型负载均衡集群在互联网产品中得到广泛应用,例如网易新闻等大型门户网站、王者荣耀等游戏、京东商城等电商平台等都采用了负载均衡集群来分发处理大量的并发连接。TCP长连接业务在互联网产品中得到广泛应用,例如斗地主等在线实时游戏、旺旺等在线聊天等业务。
[0010] 当企业网络设备、元器件的故障以及网络维护变更,容易导致流发生漂移。通常情况下,发生漂移的流量比例并不高,大约1%左右。但发生特定事件时,例如个别交换机端口Down、个别服务器Crash,可能有80%以上的TCP长连接流量会发生漂移,严重时会造成长连接业务的大规模集体中断(即用户掉线),如图1所示。
[0011] 交换机支持TCP逐流负载均衡,算法一般为根据流的五元组等信息进行哈希计算(如使用[源IP、源端口、目的IP、目的端口等]%端口数量,根据余数确定转发端口,其中,%为取余计算符号)。客户端的TCP流(见图中实线箭头)被交换机转发到设备1进行处理,当交换机该端口因故障Down时,该TCP流(见图中虚线箭头)被交换机转到设备3处理;且因为端口数量变化导致交换机负载均衡算法中哈希计算结果变化,原有转发到设备2、设备3、设备4的TCP流也可能会发送变化。
[0012] 基于NAT的负载均衡技术架构,常见的如LVS(Linux VirtualServer,Linux虚拟服务器)的NAT模式。该技术通过一组负载均衡服务器将客户端的连接转换为不同的内部服务器上,因此外部网络中的计算机就各自与自己转换得到的地址上的服务器进行通信,从而达到负载均衡的目的。其中负责网络地址转换的负载均衡设备位于外部客户机和内部服务器之间,不仅可以实现当外部客户机访问负载均衡的外部地址时转发到某一映射的内部服务器的地址上,还可使内部服务器能访问外部网络。
[0013] 在大型互联网应用场景,由于流量处理能力以及高可靠性的要求,多台负载均衡可组成集群统一对外提供服务,架构图如图2所示:
[0014] 1)负载均衡设备1-4组成负载均衡集群,对客户端提供VIP 100.1.1.1,对服务器端提供VIP192.168.1.1;
[0015] 2)客户端200.1.1.1访问100.1.1.1的TCP流量被负载均衡设备4进行处理,进行NAT转换,通过负载均衡算法发送给服务器192.168.2.1,在此过程中,客户端200.1.1.1与负载均衡建立TCP连接,负载均衡与服务器192.168.2.1建立TCP连接;
[0016] 3)客户端200.1.1.2访问100.1.1.1的TCP流量被负载均衡设备2进行处理,进行NAT转换,通过负载均衡算法发送给服务器192.168.2.3,在此过程中,客户端200.1.1.2与负载均衡建立TCP连接,负载均衡与服务器192.168.2.3建立TCP连接。
[0017] 由于TCP是在连接建立完以后传输业务报文,在TCP流发生漂移时,新的负载均衡设备并没有和业务服务器建立TCP连接,也不知道原来负载均衡设备和业务服务器建立的TCP NAT连接转换表信息,无法处理该报文NAT转换而丢弃,从而导致TCP连接中断,影响上层业务。具体流程如图3所示。
[0018] 假设客户端IP地址为200.1.1.1,负载均衡设备1与设备2组成集群对外暴露两个VIP(连接表中对应VIP与Local IP),其中,100.1.1.1对外与客户端通信,192.168.1.1对内与业务服务器通信,两台业务服务器的IP为192.168.2.1和192.168.2.2,业务端口80。
[0019] 1)客户端200.1.1.1与100.1.1.1的80端口建立TCP连接,该TCP连接被分配到负载均衡设备1上处理,TCP信息为:源IP=200.1.1.1,源端口=4800,目的IP=100.1.1.1,目的端口=80;
[0020] 2)负载均衡设备1通过算法将连接分配到业务服务器1,并建立TCP连接:源IP=192.168.1.1,源端口=5800,目的IP=192.168.2.1,目的端口80;负载均衡设备1记录与客户端以及业务服务器的两条TCP NAT连接转换表信息;
[0021] 3)客户端200.1.1.1将业务报文A发送到负载均衡集群,该连接经过设备1处理,设备1通过查询本地记录的TCP NAT连接转换表信息,找到需要转发的业务服务器地址、本地端口号、TCP序列号等相关信息,通过该数据将报文A进行NAT处理后转发到业务服务器1;
[0022] 4)当TCP流发生漂移后,客户端的报文B被转发到负载均衡设备2上,设备2由于本地没有该TCP NAT连接转换表信息(包括本地端口号5800、TCP序列号、业务服务器IP等信息),无法将报文进行NAT转换后转发,报文只能丢弃。
[0023] 开源LVS(Linux VirtualServer,Linux虚拟服务器)NAT模式服务集群在流漂移时未做特殊处理。针对当TCP流发生漂移后,客户端报文由于无法进行NAT转换后转发而只能丢弃的问题,某企业私有LVS版本NAT模式做了改造,其解决思路为:在集群中每一台设备上都保存了详细的TCP NAT连接转换表信息,并且在每一台设备新建TCP连接时都会将NAT连接转换表信息同步给集群内的其它设备;任何一台设备收到TCP报文后都会查询NAT连接转换表信息,根据表信息处理报文转发。如图4所示。
[0024] 下表为图4中设备1、设备2、设备3的NAT连接转换连接表(其中,设备2和3因为没有TCP流量,所以没有连接表):
[0025]
[0026] 以TCP为例,LVS集群中设备1处理客户端200.1.1.1的TCP流量,并将其流量负载均衡转发到业务服务器192.168.10.1时,会同时将TCP NAT连接转换信息“Src:200.1.1.1/4800Dst:100.1.1.10/80->Src:192.168.1.1/5800Dst:192.168.10.1/80,TCP序列号,连接状态”等完整的TCP连接信息实时同步到集群中所有其它设备。
[0027] 以上的连接转换信息含义为:
[0028] 源IP:200.1.1.1,源端口号:4800,集群虚拟地址:100.1.1.1,集群虚拟端口:80的TCP NAT转换为本地源地址:192.168.1.1,本地源端口号:5800,目的IP地址:192.168.10.1,目的端口号:80,TCP序列号:50001,TCP状态为Established。
[0029] 当设备1中该TCP连接发生变化时,也会将其同步给集群中的所有其它设备。
[0030] 当网络拓扑等发生变化导致客户端200.1.1.1的流量被LVS设备2处理时,其也可以通过该完整连接转换表信息准确处理该报文。
[0031] 该现有技术主要有以下几个缺点:
[0032] 1)每一台设备的NAT连接转换完整信息都需要同步到集群中每一台设备,且TCP连接中的序列号等信息会随着每个报文而不断变化,连接表同步数据量非常大,随着集群数量增加对内网的带宽压力越来越大。
[0033] 2)每一台设备都需要存储整个集群的所有TCP连接转换表信息,对单台设备的性能、存储空间要求比较高。
[0034] 3)当业务量增加集群设备需要扩容时,由于有单台设备的连接表瓶颈限制,整个集群无法做到直接增加新设备线性扩容。

发明内容

[0035] 本发明目的旨在解决现有方案中如下问题:
[0036] 1)减少集群中连接转换表信息的同步数据量,降低带宽压力;
[0037] 2)降低集群中单台设备的性能、存储等规格要求,降低集群成本;
[0038] 3)解决业务增加、集群需要扩容时无法直接采用增加新设备线性扩容的问题。
[0039] 为此,本发明采用控制数据与业务数据分离,并采用了C/S架构进行控制数据的管理,提供了一种数据和控制分离的TCP流漂移处理方法及其装置。
[0040] 本发明的第一目的在于提供一种数据和控制分离的TCP流漂移处理装置,包括负载均衡集群,所述负载均衡集群中设有若干负载均衡设备,所述负载均衡集群中还部署有至少一台控制设备;
[0041] 所述每台负载均衡设备包括:连接转换表信息存储模块,用于存储本设备的TCP NAT连接转换表信息;连接转换表信息输出模块,用于将本设备的TCP NAT连接转换表信息输出到控制设备;TCP报文处理模块,用于接收TCP报文并查找本地TCP NAT连接转换表,如果查找到相关连接信息,则根据该连接信息将报文进行NAT转换后转发到目的服务器去,如果查找不到相关连接信息,则将该报文转发到控制设备;
[0042] 所述控制设备包括:连接转换表信息存储模块,用于接收并存储负载均衡设备输出的TCP NAT连接转换表信息;TCP报文处理模块,用于接收负载均衡设备转发的报文,查找该报文所属的TCP连接信息,并将该报文转发到该连接信息对应的负载均衡设备。
[0043] 本发明的第二目的在于提供一种数据和控制分离的TCP流漂移处理装置,包括负载均衡集群,所述负载均衡集群中设有若干负载均衡设备,所述负载均衡集群中还部署有至少一台控制设备;
[0044] 所述每台负载均衡设备包括:连接转换表信息存储模块,用于存储本设备的TCP NAT连接转换表信息;连接转换表信息输出模块,用于将本设备的TCP NAT连接转换表信息输出到控制设备;TCP报文处理模块,用于接收TCP报文并查找本地TCP NAT连接转换表,如果查找到相关连接信息,则根据该连接信息将报文进行NAT转换后转发到目的服务器,如果查找不到相关连接信息,则向控制设备发送远程请求查询该报文所属的TCP连接信息,并接收来自控制设备返回的TCP连接信息;TCP报文转出模块,用于根据报文所属的TCP连接信息将报文转发到对应的负载均衡设备;
[0045] 进一步的,所述控制设备包括:连接转换表信息存储模块,用于接收并存储负载均衡设备输出的TCP NAT连接转换表信息;TCP连接信息处理模块,用于接收负载均衡设备发送的请求后,查找该报文所属的TCP连接信息,并将查询信息返回到发送请求的负载均衡设备。
[0046] 本发明的第三目的在于提供一种数据和控制分离的TCP流漂移处理方法,其包括如下步骤:
[0047] 1)TCP流首个报文经由负载均衡集群中对应的负载均衡设备处理后,所述负载均衡设备存储各自TCP NAT连接转换表信息,并分别将该连接转换表信息发送到控制设备存储;
[0048] 2)当负载均衡设备接收到TCP报文时,先查找本地TCP NAT连接转换表,如果查找到相关连接信息,则根据该连接信息将报文进行NAT转换后转发到目的服务器去,如果查找不到相关连接信息,且该报文非TCP流首个报文,则把该报文转发到控制设备;
[0049] 3)控制设备接收到负载均衡设备转发的报文后,查询存储在本地的所有TCP NAT连接转换表,找到该报文所属的TCP连接信息,将该报文发送到该报文所属的TCP连接信息对应的负载均衡设备;
[0050] 4)当负载均衡设备接收到控制设备发过来的报文后,查询本地TCP NAT连接转换表,根据该连接信息将报文进行NAT转换后转发到目的服务器。
[0051] 本发明的第四目的在于提供一种数据和控制分离的TCP流漂移处理方法,其包括如下步骤:
[0052] 1)TCP流首个报文经由负载均衡集群中对应的负载均衡设备处理后,所述负载均衡设备存储各自TCP NAT连接转换表信息,并分别将该连接转换表信息发送到控制设备存储;
[0053] 2)当负载均衡设备接收到TCP报文时,先查找本地TCP NAT连接转换表,如果查找到相关连接信息,则根据该连接信息将报文进行NAT转换后转发到目的服务器去,如果查找不到相关连接信息,且该报文非TCP流首个报文,则向控制设备发送远程请求查询该TCP连接信息;
[0054] 3)控制设备接收到负载均衡设备发送的请求后,查询存储在本地的所有TCP NAT连接转换表,找到该报文所属的TCP连接信息,并将查询信息返回到发送请求的负载均衡设备;
[0055] 4)负载均衡设备根据控制设备返回的查询信息,将报文转发到该报文所属的TCP连接信息对应的负载均衡设备;
[0056] 5)负载均衡设备接收到其他负载均衡设备转发的报文后,查询本地TCP NAT连接转换表,根据该连接信息将报文进行NAT转换后转发到目的服务器。
[0057] 进一步的,当某负载均衡设备的TCP连接发生变化时,该负载均衡设备连接转换表信息会做出更新,同时发送信息通知控制设备更新连接转换表信息。
[0058] 本发明的有益效果是:
[0059] 1)负载均衡集群中,使用C/S架构,高效管理整个集群的TCP NAT连接转换表,减少集群中连接转换表信息的同步数据量,降低带宽压力,降低集群成本;
[0060] 2)负载均衡集群中,发生网络变更导致转发路径变化时,TCP长连接保持不断。

附图说明

[0061] 结合附图,本发明的其他特点和优点可从下面通过举例来对本发明的原理进行解释的优选实施方式的说明中变得更清楚。
[0062] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。
[0063] 在附图中:
[0064] 图1为负载均衡集群流漂移示意图;
[0065] 图2为负载均衡集群NAT模式示意图;
[0066] 图3为负载均衡集群TCP流漂移导致连接中断示意图;
[0067] 图4为现有方案NAT连接转换表(控制数据)存储流程示意图;
[0068] 图5为本发明实施例NAT连接转换表(控制数据)存储流程示意图;
[0069] 图6为本发明实施例一发生流漂移时业务数据处理流程示意图;
[0070] 图7为本发明实施例二发生流漂移时业务数据处理流程示意图;
[0071] 图8为本发明应用实施例:故障发生前后负责均衡集群报文速率图;
[0072] 图9为本发明应用实施例:故障发生前后发生流漂移报文速率图;
[0073] 图10为本发明应用实施例:故障发生前后成功处理漂移报文的速率图;
[0074] 图11为本发明应用实施例:故障发生前后集群中TCP并发连接数量图。
[0075] 图中各参数的定义如下:
[0076] in_Pkt:入方向报文速率,单位PPS(包/秒);
[0077] fw_Pkt:转发出方向报文速率,单位PPS(包/秒);
[0078] Adjusting:发生漂移的报文速率,单位PPS(包/秒);
[0079] AdjustOK:成功处理漂移报文的速率,单位PPS(包/秒);
[0080] tcpConn:TCP并发连接总数;
[0081] tcpEsb:处于Established状态的TCP连接数;
[0082] Max:最大值;
[0083] Avg:平均值;
[0084] Last:最新值。

具体实施方式

[0085] 实施例1
[0086] 本实施例为本发明数据和控制分离的TCP流漂移处理装置的控制数据处理流程。负载均衡集群中每台设备作为客户端,单独管理本设备的TCP NAT连接转换表信息,负载均衡集群中额外部署一台控制设备,用于集中存储整个集群的TCP NAT连接转换表信息。控制设备也可以为两台,一台为主控制设备,另一台作为备份,如果主控制设备出现故障,可以切换到备份的控制设备继续工作。
[0087] 本实施例架构如图5所示,控制数据处理流程如下:
[0088] 1)TCP流1经由负载均衡设备1处理,设备1处理后本地存储TCP流1的NAT连接转换表信息;
[0089] 2)相同的,TCP流2经由负载均衡设备2处理,设备2处理后本地存储TCP流2的NAT连接转换表信息;
[0090] 3)负载均衡设备1和2在存储本地TCP NAT连接转换信息时,都分别将该信息发送到控制设备存储;
[0091] 4)当负载均衡设备1和2本地的某条TCP连接信息超时老化删除或更新时,也会发送信息通知控制设备删除或更新。
[0092] 以下是图5的TCP NAT连接转换表:
[0093] 设备1控制数据(TCP NAT连接转换表)
[0094] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态200.1.1.1 4800 100.1.1.1 80 192.168.1.1 5800 192.168.10.180 ICP 50001 established[0095] 设备2控制数据(TCP NAT连接转换表)
[0096] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态200.1.1.2 4900 100.1.1.1 80 192.168.1.1 5900 192.168.10.180 TCP 60001 established[0097] 设备3控制数据(TCP NAT连接转换表)
[0098] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态                   
[0099] 控制设备控制数据(TCP NAT连接转换表)
[0100] 源IP 源端口 VIP VPort 设备ID200.1.1.1 4800 100.1.1.1 80 设备1
200.1.1.2 4900 100.1.1.1 80 设备2
[0101] 实施例2
[0102] 本实施例为本发明数据和控制分离的TCP流漂移处理装置的业务数据处理流程。
[0103] 当TCP流发生漂移时,如图6所示,业务数据处理流程如下:
[0104] 1)TCP流未发生漂移时在负载均衡集群中设备1处理,当因各种原因导致该TCP流发生漂移,部分报文被转发到设备3处理(虚线线条1);
[0105] 2)设备3接收到该TCP报文时,查找本地TCP NAT连接转换表,由于该TCP连接在设备1上建立,设备3中查找不到相关连接信息,设备3将该报文通过内部通道转发到控制设备处理(虚线线条2);
[0106] 3)控制设备接收到该报文后,查询全局TCP NAT连接转换表找到该TCP连接由设备1建立,通过内部通道将报文发送到设备1处理(虚线线条3);
[0107] 4)设备1接收到该报文后,通过后查询本地TCP NAT连接转换表,根据连接表信息将报文正确NAT处理后发送给业务服务器192.168.10.1处理(虚线线条4)。
[0108] 以下是图6的TCP NAT连接转换表:
[0109] 设备1控制数据(TCP NAT连接转换表)
[0110] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态200.1.1.1 4800 100.1.1.1 80 192.168.1.1 5800 192.168.10.180 TCP 50001 established[0111] 设备2控制数据(TCP NAT连接转换表)
[0112] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态200.1.1.2 4900 100.1.1.1 80 192.168.1.1 5900 192.168.10.180 TCP 60001 established[0113] 设备3控制数据(TCP NAT连接转换表)
[0114] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态                     
[0115] 控制设备控制数据(TCP NAT连接转换表)
[0116] 源IP 源端口 VIP VPort 设备ID200.1.1.1 4800 100.1.1.1 80 设备1
200.1.1.2 4900 100.1.1.1 80 设备2
[0117] 实施例3
[0118] 本实施例为本发明数据和控制分离的TCP流漂移处理装置的业务数据处理流程。
[0119] 当TCP流发生漂移时,如图7所示,业务数据处理流程如下:
[0120] 1)TCP流未发生漂移时在负载均衡集群中设备1处理,当因各种原因导致该TCP流发生漂移,部分报文被转发到设备3处理(见图中虚线1);
[0121] 2)设备3接收到该TCP报文时,查找本地TCP NAT连接转换表,由于该TCP连接在设备1上建立,设备3中查找不到相关连接信息,设备3通过内部通道向控制设备发送RPC(Remote Procedure Call,远程过程调用)查询流归属设备(见图中点划线2);
[0122] 3)控制设备查询连接表后向设备3返回查询结果为设备1(见图中点划线3);
[0123] 4)设备3获取结果后,通过内部通道将报文发送到设备1处理(虚线4);
[0124] 5)设备1接收到该报文后,通过后查询本地TCP NAT连接转换表,根据连接表信息将报文正确NAT处理后发送给业务服务器192.168.10.1处理(虚线5)。
[0125] 图7中,点划线2、3为发生漂移时控制流转发路径,虚线1、4、5为发生漂移时数据流转发路径。
[0126] 以下是图7的TCP NAT连接转换表:
[0127] 设备1控制数据(TCP NAT连接转换表)
[0128] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态200.1.1.1 4800 100.1.1.1 80 192.168.1.1 5800 192.168.10.180 TCP 50001 established[0129] 设备2控制数据(TCP NAT连接转换表)
[0130] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态200.1.1.2 4900 100.1.1.1 80 192.168.1.1 5900 192.168.10.180 TCP 60001 established[0131] 设备3控制数据(TCP NAT连接转换表)
[0132] 源IP 源端口 VIP VPort LocalIP LocalPort 目的IP 目的端口 协议 序列号 状态                     
[0133] 控制设备控制数据(TCP NAT连接转换表)
[0134]源IP 源端口 VIP VPort 设备ID
200.1.1.1 4800 100.1.1.1 80 设备1
200.1.1.2 4900 100.1.1.1 80 设备2
[0135] 实施例4
[0136] 参见图8-11,本实施例为本发明技术方案在线上业务环境中的成功应用。
[0137] 以下为当华为CE6870交换机端口故障导致TCP流漂移时TCP连接不中断的例子:线上业务为16台负载均衡设备组成的负载均衡集群,2019年9月24日10:55:22分集群中华为CE6870交换机100GE1/0/4端口因故障变为Down,并于11:00:26分恢复为UP,交换机输出日志信息如下:
[0138]
[0139] 图8为故障发生前后集群报文速率图,在故障发生前后集群入方向(in_Pkt)与转发出方向(fw_Pkt)的报文速率大约为1000pps。:
[0140] 图9为故障发生前后发生漂移的报文速率图,在10:55分故障时发生漂移的报文速率最高约200pps,整个统计周期发生漂移的报文平均速率为67.45pps。
[0141] 图10为成功处理漂移报文的速率图,整个统计周期成功处理漂移报文的速率为67.42pps,与上图中数据计算,成功率超过99.95%+。
[0142] 图11为故障发生前后集群中TCP并发连接数量图,在这个过程中,网络故障导致集群中TCP报文漂移被成功处理,TCP并发连接总数(tcpConn)维持200左右,未发生明显变化,处于Established状态的TCP连接(tcpEsb)也未发生明显变化,上层业务不受影响。
[0143] 本发明实施例为负载均衡集群处理TCP流漂移时提供了一套新的C/S架构,有效解决了如下问题:
[0144] 1)集群内对TCP NAT连接转换表的同步数据量极大的减少,原有方案中一个TCP连接数据需要向集群内所有设备同步,复杂度为O(n),新方案只需要向一个控制服务器同步,复杂度为O(1);且原方案中对每一个TCP连接都需要同步源IP/端口、VIP/端口、Local IP/端口、目的IP/端口、TCP序列号(只对于TCP连接)、状态等完整的连接信息,新方案只需要同步源IP/端口、VIP/端口、设备ID,单次同步的数据量极大减少;原方案中TCP的任何序列号变化等都需要同步,同步频率极大,新方案只在TCP建立和老化删除时同步,同步频率很小,内网的同步压力大大缓解。
[0145] 以10000个客户端建立10000个TCP连接,8台负载均衡设备组成的一个负载均衡集群来计算,连接建立时现有方案至少需要同步10000*7=7万份连接数据,而新方案只需要同步10000*1=10000份连接数据,且新方案每份连接数据更小。
[0146] 2)原方案负载均衡集群中每一台设备都需要记录并处理集群中所有TCP NAT连接转换的完整信息,对设备性能、内存规格的要求很高,而新方案每一台设备只记录自己的TCP NAT连接转换表信息,大大的降低设备要求,减少硬件成本。
[0147] 3)原有方案中如果业务增加达到性能瓶颈时,由于单台设备要处理整个集群的TCP NAT连接转换信息而具有能力上限,无法通过直接增加处理设备节点来实现线下扩展;新方案中由于单台设备只需要处理自己的TCP NAT连接转换信息,只要控制设备具有较高性能,整个集群就可以根据业务规模增加处理设备节点来实现横向线性扩容。