控制数据传输的方法、装置和系统转让专利

申请号 : CN201280002537.0

文献号 : CN103201989B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 卢胜文

申请人 : 华为技术有限公司

摘要 :

本发明实施例提供了一种控制数据传输的方法、装置和系统,能够提高访问速度,减小负载均衡处理器的负担。该方法包括:向负载均衡处理器发送来自客户端设备的第一数据报文;接收该负载均衡处理器发送的控制信息,其中,该控制信息是该负载均衡处理器根据该第一数据报文的L3/4层信息和/或该第一数据报文的L7层信息确定的,该控制信息包括用于指示该第一数据报文的目的服务器的服务器信息;当接收到第二数据报文时,根据该控制信息,控制该第二数据报文的传输。通过负载均衡处理器根据第一数据报文确定控制信息,并向网卡设备下发该控制信息,网卡设备在接收到第二数据报文时能够根据该控制信息传输该第二数据报文,减少负载均衡处理器的处理,从而,能够提高访问速度,减小负载均衡处理器的负担。

权利要求 :

1.一种控制数据传输的方法,其特征在于,所述方法包括:

向负载均衡处理器发送来自客户端设备的第一数据报文;

接收所述负载均衡处理器发送的控制信息,其中,所述控制信息是所述负载均衡处理器根据所述第一数据报文的L3/4层信息确定的,所述控制信息包括用于指示所述第一数据报文的目的服务器的服务器信息;

当接收到第二数据报文时,根据所述控制信息,控制所述第二数据报文的传输;

其中,所述服务器信息用于指示所述第一数据报文的目的服务器的内部网际协议IP地址和内部端口,以及所述服务器信息是根据所述第一数据报文的L3/4层信息确定的,则

所述根据所述控制信息,控制所述第二数据报文的传输,具体为:

当所述第二数据报文的五元组与所述第一数据报文的五元组相同时,根据所述服务器信息,向所述第一数据报文的目的服务器发送所述第二数据报文,其中,所述五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。

2.根据权利要求1所述的方法,其特征在于,所述服务器信息是根据所述第一数据报文的L3/4层信息和第一数据报文的L7层信息确定的,且所述控制信息还包括L7层解析指示标识,则

所述根据所述控制信息,控制所述第二数据报文的传输,具体为:

当所述第二数据报文的五元组与所述第一数据报文的五元组相同时,根据所述L7层解析指示标识,对所述第二数据报文进行L7层信息解析,以获取用于指示所述第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,所述五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;

如果所述URL信息不为空,则向所述负载均衡处理器发送所述第二数据报文和所述URL信息,以便于所述负载均衡处理器根据所述URL信息,确定所述第二数据报文的目的服务器,并向所述第二数据报文的目的服务器发送所述第二数据报文;

如果所述URL信息为空,则根据所述服务器信息,向所述第一数据报文的目的服务器发送所述第二数据报文。

3.根据权利要求1所述的方法,其特征在于,所述服务器信息包括第一控制信息表项,所述第一控制信息表项用于指示所述第一数据报文的五元组与所述第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

在接收到所述第一控制信息表项后,启动定时器,并确定在所述定时器超时之前未接收到所述第二数据报文;或确定在所述客户端设备与所述第一数据报文的目的服务器之间建立的用于传输所述第一数据报文的通信连接结束;

删除所述第一控制信息表项。

5.根据权利要求1至4中任一项所述的方法,其特征在于,所述服务器信息还用于指示所述第一数据报文的目的服务器的外部IP地址和外部端口,则所述根据所述控制信息,控制所述第二数据报文的传输,具体为:

当所述第二数据报文的源IP地址与所述目的服务器的内部IP地址相同,且所述第二数据报文的源端口与所述目的服务器的内部端口信息相同,且所述第二数据报文的目的IP地址与所述第一数据报文的源IP地址相同,且所述第二数据报文的目的端口与所述第一数据报文的源端口相同,且所述第二数据报文的传输层协议号与所述第一数据报文的传输层协议号相同时,根据所述第一数据报文的目的服务器的外部IP地址和外部端口,向所述客户端设备发送所述第二数据报文。

6.根据权利要求5所述的方法,其特征在于,所述服务器信息包括第二控制信息表项,所述第二控制信息表项用于指示所述第一数据报文的目的服务器的内部IP地址、所述第一数据报文的目的服务器的内部端口、所述第一数据报文的源IP地址、所述第一数据报文的源端口以及所述第一数据报文的传输层协议号与所述第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。

7.根据权利要求6所述的方法,其特征在于,所述方法还包括:

在接收到所述第二控制信息表项后,启动定时器,并确定在所述定时器超时之前未接收到所述第二数据报文;或确定在所述客户端设备和所述第一数据报文的目的服务器之间建立的用于传输所述第一数据报文的通信连接结束;

删除所述第二控制信息表项。

8.一种控制数据传输的装置,其特征在于,所述装置包括:

发送单元,用于向负载均衡处理器发送来自客户端设备的第一数据报文;以及根据处理单元的控制,传输第二数据报文;

接收单元,用于接收所述负载均衡处理器发送的控制信息,其中,所述控制信息是所述负载均衡处理器根据所述第一数据报文的L3/4层信息确定的,所述控制信息包括用于指示所述第一数据报文的目的服务器的服务器信息;以及用于接收所述第二数据报文;

所述处理单元,用于当所述接收单元接收所述第二数据报文时,根据所述控制信息,控制所述发送单元传输所述第二数据报文;

其中,所述服务器信息用于指示所述第一数据报文的目的服务器的内部网际协议IP地址和内部端口,以及,所述服务器信息是根据所述第一数据报文的L3/4层信息确定的,则所述处理单元具体用于当所述第二数据报文的五元组与所述第一数据报文的五元组相同时,根据所述服务器信息,控制所述发送单元向所述第一数据报文的目的服务器发送所述第二数据报文,其中,所述五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。

9.根据权利要求8所述的装置,其特征在于,所述服务器信息是根据所述第一数据报文的L3/4层信息和L7层信息确定的,且所述控制信息还包括L7层解析指示标识,则

所述处理单元具体用于当所述第二数据报文的五元组与所述第一数据报文的五元组相同时,根据所述L7层解析指示标识,对所述第二数据报文进行L7层信息解析,以获取用于指示所述第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,所述五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;

用于如果所述URL信息不为空,则控制所述发送单元向所述负载均衡处理器发送所述第二数据报文和所述URL信息,以便于所述负载均衡处理器根据所述URL信息,确定所述第二数据报文的目的服务器,并向所述第二数据报文的目的服务器发送所述第二数据报文;

用于如果所述URL信息为空,则根据所述服务器信息,控制所述发送单元向所述第一数据报文的目的服务器发送所述第二数据报文。

10.根据权利要求8所述的装置,其特征在于,所述服务器信息包括第一控制信息表项,所述第一控制信息表项用于指示所述第一数据报文的五元组与所述第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。

11.根据权利要求10所述的装置,其特征在于,所述处理单元还用于在确定所述接收单元接收到所述第一控制信息表项后,启动定时器,并确定在所述定时器超时之前未接收到所述第二数据报文;或用于确定在所述客户端设备和所述第一数据报文的目的服务器之间建立的用于传输所述第一数据报文的通信连接结束;

用于删除所述第一控制信息表项。

12.根据权利要求8至11中任一项所述的装置,其特征在于,所述服务器信息还用于指示所述第一数据报文的目的服务器的外部IP地址和外部端口,则所述处理单元具体用于当所述第二数据报文的源IP地址与所述目的服务器的内部IP地址相同,且所述第二数据报文的源端口与所述目的服务器的内部端口信息相同,且所述第二数据报文的目的IP地址与所述第一数据报文的源IP地址相同,且所述第二数据报文的目的端口与所述第一数据报文的源端口相同,且所述第二数据报文的传输层协议号与所述第一数据报文的传输层协议号相同时,根据所述第一数据报文的目的服务器的外部IP地址和外部端口,控制所述发送单元向所述客户端设备发送所述第二数据报文。

13.根据权利要求12所述的装置,其特征在于,所述服务器信息包括第二控制信息表项,所述第二控制信息表项用于指示所述第一数据报文的目的服务器的内部IP地址、所述第一数据报文的目的服务器的内部端口、所述第一数据报文的源IP地址、所述第一数据报文的源端口以及所述第一数据报文的传输层协议号与所述第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。

14.根据权利要求13所述的装置,其特征在于,所述处理单元还用于在确定所述接收单元接收到所述第二控制信息表项后,启动定时器,并确定在所述定时器超时之前未接收到所述第二数据报文;或用于确定在所述客户端设备和所述第一数据报文的目的服务器之间建立的用于传输所述第一数据报文的通信连接结束;

用于删除所述第二控制信息表项。

15.一种控制数据传输的系统,其特征在于,所述系统包括:

负载均衡处理模块,用于从网卡模块获取第一数据报文,并根据所述第一数据报文的L3/4层信息,确定用于指示所述第一数据报文的目的服务器的服务器信息,向所述网卡模块发送包括所述服务器信息的控制信息;

网卡模块,用于向负载均衡处理模块发送来自客户端设备的所述第一数据报文,以及从所述负载均衡处理模块获取所述控制信息,当接收到第二数据报文时,根据所述控制信息,控制所述第二数据报文的传输;

其中,所述服务器信息用于指示所述第一数据报文的目的服务器的内部网际协议IP地址和内部端口,以及,所述服务器信息是所述负载均衡处理模块根据所述第一数据报文的L3/4层信息确定的,则所述网卡模块具体用于当所述第二数据报文的五元组与所述第一数据报文的五元组相同时,根据所述服务器信息,向所述第一数据报文的目的服务器发送所述第二数据报文,其中,所述五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。

16.根据权利要求15所述的系统,其特征在于,所述服务器信息是所述负载均衡处理模块根据所述第一数据报文的L3/4层信息和L7层信息确定的,且所述控制信息还包括L7层解析指示标识,则

所述网卡模块具体用于当所述第二数据报文的五元组与所述第一数据报文的五元组相同时,根据所述L7层解析指示标识,对所述第二数据报文进行L7层信息解析,以获取用于指示所述第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,所述五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;

如果所述URL信息不为空,则向所述负载均衡处理器发送所述第二数据报文和所述URL信息,以便于所述负载均衡处理器根据所述URL信息,确定所述第二数据报文的目的服务器,并向所述第二数据报文的目的服务器发送所述第二数据报文;或如果所述URL信息为空,则根据所述服务器信息,向所述第一数据报文的目的服务器发送所述第二数据报文。

17.根据权利要求15所述的系统,其特征在于,所述服务器信息包括第一控制信息表项,所述第一控制信息表项用于指示所述第一数据报文的五元组与所述第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。

18.根据权利要求17所述的系统,其特征在于,所述网卡模块还用于在接收到所述第一控制信息表项后,启动定时器,并确定在所述定时器超时之前未接收到所述第二数据报文;或用于确定在所述客户端设备和所述第一数据报文的目的服务器之间建立的用于传输所述第一数据报文的通信连接结束;

用于删除所述第一控制信息表项。

19.根据权利要求15至18中任一项所述的系统,其特征在于,所述服务器信息还用于指示所述第一数据报文的目的服务器的外部IP地址和外部端口,则所述网卡模块具体用于当所述第二数据报文的源IP地址与所述目的服务器的内部IP地址相同,且所述第二数据报文的源端口与所述目的服务器的内部端口信息相同,且所述第二数据报文的目的IP地址与所述第一数据报文的源IP地址相同,且所述第二数据报文的目的端口与所述第一数据报文的源端口相同,且所述第二数据报文的传输层协议号与所述第一数据报文的传输层协议号相同时,根据所述第一数据报文的目的服务器的外部IP地址和外部端口,向所述客户端设备发送所述第二数据报文。

20.根据权利要求19所述的系统,其特征在于,所述服务器信息包括第二控制信息表项,所述第二控制信息表项用于指示所述第一数据报文的目的服务器的内部IP地址、所述第一数据报文的目的服务器的内部端口、所述第一数据报文的源IP地址、所述第一数据报文的源端口以及所述第一数据报文的传输层协议号与所述第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。

21.根据权利要求20所述的系统,其特征在于,所述网卡模块还用于在接收到所述第二控制信息表项后,启动定时器,并确定在所述定时器超时之前未接收到所述第二数据报文;或用于确定在所述客户端设备和所述第一数据报文的目的服务器之间建立的用于传输所述第一数据报文的通信连接结束;

用于删除所述第二控制信息表项。

说明书 :

控制数据传输的方法、装置和系统

技术领域

[0001] 本发明涉及通信领域,并且更具体地,涉及一种控制数据传输的方法、装置和系统。

背景技术

[0002] 目前,可以将一组服务器构成一个提供可伸缩的、高可用网络服务的服务器集群(也称为虚拟服务器集群)。具体地说,一组服务器通过高速的局域网或者地理分布的广域网相互连接,在它们的前端有一个负载均衡器(Load Balancer)。负载均衡器能无缝地将来自客户端设备的数据报文调度到真实服务器上,从而,对于客户端设备,服务器集群的结构是透明的,客户端设备访问服务器集群提供的网络服务就像访问一台高性能、高可用的服务器一样。作为负载均衡器将数据报文调度到真实服务器(目的服务器)的方式,已知有基于数据报文的地址信息(L3/4层)和基于内容请求(L7层)分发的负载平衡调度解决方法。
[0003] 负载均衡器包括用于接收业务的数据报文的网关设备,以及用于通过执行各种程序以对该数据报文进行负载均衡的负载均衡处理器,在该技术中,为了将数据报文调度到规定的服务器,对于每一个数据报文,均需要负载均衡处理器解析出其L3/4层信息(例如,网际协议(IP,Internet Protocol)地址和端口)或L7层信息(统一资源定位器(URL,Uniform Resource Locator)地址),这样,例如,对于发往同一目的服务器的多个数据报文(例如,同一通信连接的多个数据报文),尽管各数据报文的负载调度结果相同(发往同一目的服务器),负载均衡处理器仍然需要对每个数据报文进行解析,增加了负载均衡处理器的负担,并影响访问速度。

发明内容

[0004] 本发明实施例提供一种控制数据传输的方法、装置和系统,能够提高访问速度,减小负载均衡处理器的负担。
[0005] 第一方面,提供了一种控制数据传输的方法,该方法包括:向负载均衡处理器发送来自客户端设备的第一数据报文;接收该负载均衡处理器发送的控制信息,其中,该控制信息是该负载均衡处理器根据该第一数据报文的L3/4层信息和/或该第一数据报文的L7层信息确定的,该控制信息包括用于指示该第一数据报文的目的服务器的服务器信息;当接收到第二数据报文时,根据该控制信息,控制该第二数据报文的传输。
[0006] 在一种可能的实施方式中,该服务器信息用于指示该第一数据报文的目的服务器的内部网际协议IP地址和内部端口。
[0007] 结合第一方面和第一种可能的实施方式,在第二种可能的实施方式中,,该服务器信息是根据该第一数据报文的L3/4层信息确定的,则该根据该控制信息,控制该第二数据报文的传输,具体为:当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该服务器信息,向该第一数据报文的目的服务器发送该第二数据报文,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。
[0008] 结合第一方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该服务器信息是根据该第一数据报文的L3/4层信息和L7层信息确定的,或该服务器信息是根据该第一数据报文的L7层信息确定的,且该控制信息还包括L7层解析指示标识,则该根据该控制信息,控制该第二数据报文的传输,具体为:当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该L7层解析指示标识,对该第二数据报文进行L7层信息解析,以获取用于指示该第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;如果该URL信息不为空,则向该负载均衡处理器发送该第二数据报文和该URL信息,以便于该负载均衡处理器根据该URL信息,确定该第二数据报文的目的服务器,并向该第二数据报文的目的服务器发送该第二数据报文;或如果该URL信息为空,则根据该服务器信息,向该第一数据报文的目的服务器发送该第二数据报文。
[0009] 结合第一方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0010] 结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该方法还包括:在接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或确定在该客户端设备与该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;删除该第一控制信息表项。
[0011] 结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式和第五种可能的实施方式,在第六种可能的实施方式中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,则该根据该控制信息,控制该第二数据报文的传输,具体为:当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,向该客户端设备发送该第二数据报文。
[0012] 结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式和第六种可能的实施方式,在第七种可能的实施方式中,该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0013] 结合第一方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式、第六种可能的实施方式和第七种可能的实施方式,在第八种可能的实施方式中,该方法还包括:在接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;删除该第二控制信息表项。
[0014] 第二方面,提供了一种控制数据传输的装置,该装置包括:发送单元,用于向负载均衡处理器发送来自客户端设备的第一数据报文;接收单元,用于接收该负载均衡处理器发送的控制信息,以及向处理单元传输该控制信息,其中,该控制信息是该负载均衡处理器根据该第一数据报文的L3/4层信息和/或该第一数据报文的L7层信息确定的,该控制信息包括用于指示该第一数据报文的目的服务器的服务器信息;用于当接收到第二数据报文时,向处理单元传输该第二数据报文;处理单元,用于从该接收单元获取该控制信息和该第二数据报文,并根据该控制信息,控制该发送单元传输该第二数据报文。
[0015] 在一种可能的实施方式中,该服务器信息用于指示该第一数据报文的目的服务器的内部网际协议IP地址和内部端口。
[0016] 结合第二方面和第一种可能的实施方式,在第二种可能的实施方式中,该服务器信息是根据该第一数据报文的L3/4层信息确定的,则该处理单元具体用于当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该服务器信息,控制该发送单元向该第一数据报文的目的服务器发送该第二数据报文,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。
[0017] 结合第二方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该服务器信息是根据该第一数据报文的L3/4层信息和L7层信息确定的,或该服务器信息是根据该第一数据报文的L7层信息确定的,且该控制信息还包括L7层解析指示标识,则该处理单元具体用于当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该L7层解析指示标识,对该第二数据报文进行L7层信息解析,以获取用于指示该第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;用于如果该URL信息不为空,则控制该发送单元向该负载均衡处理器发送该第二数据报文和该URL信息,以便于该负载均衡处理器根据该URL信息,确定该第二数据报文的目的服务器,并向该第二数据报文的目的服务器发送该第二数据报文;或用于如果该URL信息为空,则根据该服务器信息,控制该发送单元向该第一数据报文的目的服务器发送该第二数据报文。
[0018] 结合第二方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0019] 结合第二方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该处理单元还用于在确定该接收单元接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;用于删除该第一控制信息表项。
[0020] 结合第二方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式和第五种可能的实施方式,在第六种可能的实施方式中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,则该处理单元具体用于当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,控制该发送单元向该客户端设备发送该第二数据报文。
[0021] 结合第二方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式和第六种可能的实施方式,在第七种可能的实施方式中,该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0022] 结合第二方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式、第六种可能的实施方式和第七种可能的实施方式,在第八种可能的实施方式中,该处理单元还用于在确定该接收单元接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;用于删除该第二控制信息表项。
[0023] 第三方面,提供了一种控制数据传输的系统,该系统包括:负载均衡处理模块,用于从网卡模块获取第一数据报文,并根据该第一数据报文的L3/4层信息和/或该第一数据报文的L7层信息,确定用于指示该第一数据报文的目的服务器的服务器信息,向该网卡模块发送包括该服务器信息的控制信息;网卡模块,用于向负载均衡处理模块发送来自用户设备的该第一数据报文,以及从该负载均衡处理模块获取该控制信息,当接收到第二数据报文时,根据该控制信息,控制该第二数据报文的传输。
[0024] 在一种可能的实施方式中,该服务器信息用于指示该第一数据报文的目的服务器的内部网际协议IP地址和内部端口。
[0025] 结合第三方面和第一种可能的实施方式,在第二种可能的实施方式中,该服务器信息是该负载均衡处理模块根据该第一数据报文的L3/4层信息确定的,则该网卡模块具体用于当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该服务器信息,向该第一数据报文的目的服务器发送该第二数据报文,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。
[0026] 结合第三方面、第一种可能的实施方式和第二种可能的实施方式,在第三种可能的实施方式中,该服务器信息是该负载均衡处理模块根据该第一数据报文的L3/4层信息和L7层信息确定的,或该服务器信息是该负载均衡处理模块根据该第一数据报文的L7层信息确定的,且该控制信息还包括L7层解析指示标识,则该网卡模块具体用于当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该L7层解析指示标识,对该第二数据报文进行L7层信息解析,以获取用于指示该第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;如果如果该URL信息不为空,则向该负载均衡处理器发送该第二数据报文和该URL信息,以便于该负载均衡处理器根据该URL信息,确定该第二数据报文的目的服务器,并向该第二数据报文的目的服务器发送该第二数据报文;或如果该URL信息为空,则根据该服务器信息,向该第一数据报文的目的服务器发送该第二数据报文。
[0027] 结合第一方面、第一种可能的实施方式、第二种可能的实施方式和第三种可能的实施方式,在第四种可能的实施方式中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0028] 结合第三方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式和第四种可能的实施方式,在第五种可能的实施方式中,该网卡模块还用于在接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;用于删除该第一控制信息表项。
[0029] 结合第三方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式和第五种可能的实施方式,在第六种可能的实施方式中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,以及该网卡模块具体用于当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,发送该第二数据报文。
[0030] 结合第三方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式和第六种可能的实施方式,在第七种可能的实施方式中,该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0031] 结合第三方面、第一种可能的实施方式、第二种可能的实施方式、第三种可能的实施方式、第四种可能的实施方式、第五种可能的实施方式、第六种可能的实施方式和第七种可能的实施方式,在第八种可能的实施方式中,该网卡模块还用于在接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;用于删除该第二控制信息表项。
[0032] 根据本发明实施例的控制数据传输的方法、装置和系统,通过负载均衡处理器根据第一数据报文确定控制信息,并向网卡设备下发该控制信息,网卡设备在接收到第二数据报文时能够根据该控制信息传输该第二数据报文,减少负载均衡处理器的处理,从而,能够提高访问速度,减小负载均衡处理器的负担。

附图说明

[0033] 为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0034] 图1是根据本发明实施例的控制数据传输的方法的示意性流程图。
[0035] 图2是根据本发明实施例的控制数据传输的装置的示意性框图。
[0036] 图3是根据本发明实施例的控制数据传输的系统的示意性框图。

具体实施方式

[0037] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0038] 图1示出了从网卡设备角度描述的,根据本发明实施例的控制数据传输的方法100的示意性流程图。如图1所示,该方法100包括:
[0039] S110,向负载均衡处理器发送来自客户端设备的第一数据报文;
[0040] S120,接收该负载均衡处理器发送的控制信息,其中,该控制信息是该负载均衡处理器根据该第一数据报文的L3/4层信息和/或该第一数据报文的L7层信息确定的,该控制信息包括用于指示该第一数据报文的目的服务器的服务器信息;
[0041] S130,当接收到第二数据报文时,根据该控制信息,控制该第二数据报文的传输;
[0042] 具体地说,在本发明实施例中,客户端设备可以是计算机、智能手机等通信设备,用户在通过该客户端设备访问业务时,客户端设备向提供该业务的服务器(以下,称为目的服务器)发送数据报文。
[0043] 服务器(包括上述目的服务器)可以是,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等。在本发明实施例中,该目的服务器与其他服务器构成服务器集群,以扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。在服务器集群内部,各服务器拥有不同的IP地址(后述内部IP地址)和端口(后述内部端口)。并且,该服务器集群具有一个或多个统一的面向外部(例如,面向客户端设备)的IP地址(后述外部IP地址)和端口(后述外部端口)。
[0044] 负载均衡器(包括用于接收业务的数据报文的网关设备,以及用于通过执行各种程序以对该数据报文进行负载均衡的负载均衡处理器)设置在该服务器集群与客户端设备之间,可以将大量的并发访问或数据流量分担到多个服务器上分别处理,减少客户端设备等待响应的时间,还可以将单个重负载的运算分担到多个服务器上做并行处理,每个节点设备处理结束后,将结果汇总,返回给客户端设备,使系统处理能力得到大幅度提高。并且,负载均衡器的面向外部的IP地址和与其连接的服务器集群的面向外部的IP地址相同。
[0045] 在本发明实施例中,例如,可以通过软件负载均衡解决方案实现负载均衡,该软件负载均衡解决方案是指在一个或多个服务器的操作系统上安装一个或多个附加应用程序来实现负载均衡,如域名系统负载均衡(DNS(Domain Name System)Load Balance)等,从而,该服务器的处理器通过执行该软件,实现负载均衡,相当于负载均衡处理器。
[0046] 并且,在本发明实施例中,该负载均衡器也可以直接安装在服务器和外部网络间之间,独立于服务器的操作系统。
[0047] 在本发明实施例中,作为负载均衡器的负载均衡方式,可以列举,例如:
[0048] 1.网络地址转换(NAT,Network Address Translation)式负载均衡,即,负载均衡器重写来自客户端设备的数据报文的目标地址/源地址,根据预设的负载均衡算法,将该修改后的数据报文发送给各服务器;并且,来自服务器的响应数据报文经过负载均衡器时,负载均衡器重写该响应数据报文的源地址/目的地址,再返回给客户,完成整个负载调度过程。
[0049] 2.直接路由(DR,Direct Rout)式负载均衡,即,负载均衡器通过改写来自客户端设备数据报文的媒体接入控制层(MAC,Media Access Control)地址,将数据报文发送到服务器,而服务器将响应数据报文根据客户端设备的MAC地址直接返回给客户端设备。
[0050] 3.IP隧道(TUN,TUNNEL)式负载均衡,即,负载均衡器将来自客户端设备数据报文通过IP隧道转发给服务器,而服务器将响应数据报文直接返回给客户端设备。
[0051] 在以上列举的各负载均衡方式中,负载均衡器可以将一个外部地址映射为多个内部地址(对应各服务器),对每次通信连接动态地使用其中一个内部地址,达到负载均衡的目的。应理解,以上列举的各负载均衡方式仅为示例性说明,本发明并不限定于此,其他用于负载均衡的方式均落入本发明的保护范围。
[0052] 因此,在用户需要访问由服务器集群提供的业务时,客户端设备可以根据该服务器集群对外统一的IP地址和端口(即,外部IP地址和外部端口),发送该业务的首个数据报文(第一数据报文),首先到达负载均衡器(由网卡设备接收)。
[0053] 在S110中,负载均衡器的网卡设备接收到该第一数据报文,并且,该网卡设备可以将该第一数据报文发送给负载均衡器的负载均衡处理器(以下,为了便于说明,简称处理器),从而,该处理器可以采用预先设置的负载均衡算法,通过上述任意负载均衡方式,从服务器集群中,确定该数据报文的目的服务器。
[0054] 在本发明实施例中,处理器可以根据网络的不同层次(网络七层)来进行负载均衡,具体地说,可以根据数据报文的L3/4层信息进行负载均衡(即,下文所述的情况1),也可以根据数据报文的L7层,或者,L3/4层信息和L7层信息(即,下文所述的情况2)进行负载均衡。
[0055] 其中,在本发明实施例中,L3/4层可以包括L3层,或L4层,或L3层和L4层。L3层信息可以包括开放式系统互联(OSI,Open System Interconnect)网络模型中的网络层的IP地址信息,L4层信息可以包括OSI网络模型中的传输层的传输控制协议/用户数据报协议(TCP/UDP,Transfer Control Protocol/User Datagram Protocol)端口信息。因此,L3/4层信息可以包括传输该业务的业务服务器的外部IP地址(与数据报文的目的IP地址相同)、外部端口(与数据报文的目的端口相同)等信息。L7层信息可以包括应用层信息,具体地说,是数据报文携带的URL地址。
[0056] 下面,首先对处理器用于根据数据报文的L3/4层信息进行负载均衡的情况(情况1)进行说明。
[0057] 情况1
[0058] 处理器接收到网卡设备发送的第一数据报文后,通过对数据报文的L3/4层进行解析,例如,对数据报文进行浅层报文探测(SPI,Shallow Packet Inspection),从而获取该数据报文的L3/4层信息(例如,源IP地址、目的IP地址、源端口和目的端口等),在本发明实施例中,处理器根据L3/4层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。在本发明实施例中,控制信息作为该负载均衡处理的结果,例如,可以是指示目的服务器的服务器信息。并且,在本发明实施例中,处理器可以根据负载均衡处理的结果,直接控制发送设备(例如,可以是该网卡设备)将该第一数据报文发送给与该负载均衡处理的结果相对应的目的服务器。并将该服务器信息发送给网卡设备。
[0059] 可选地,在本发明实施例中,该服务器信息可以用于指示该第一数据报文的目的服务器的内部网际协议IP地址和内部端口。
[0060] 具体地说,处理器可以将第一数据报文的目的服务器的内部IP地址和内部端口下发给网卡设备。
[0061] 在S120中,网卡设备可以从处理器获取该目的服务器的内部IP地址和内部端口。并且,网卡设备可以接收发送端发送的第二数据报文,这里,发送端可以是上述客户端设备,也可以是服务器,本发明并未特别限定,例如,在负载均衡器采用DR式负载均衡或IP TUN式负载均衡时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备;例如,在负载均衡器采用NAT式负载均衡时,由于服务器(目的服务器)返回给客户端设备的报文需要通过负载均衡器,因此,该第二数据报文的发送端可以为客户端设备,也可以为服务器(目的服务器)。以下,以负载均衡器采用NAT式负载均衡的情况为例进行说明。
[0062] 在S130,在接收到第二数据报文后,网卡设备可以根据该控制信息控制该第二数据报文的传输。
[0063] 可选地,在本发明实施例中,该服务器信息是根据该第一数据报文的L3/4层信息确定的,则
[0064] 该根据该控制信息,控制该第二数据报文的传输,具体为:
[0065] 当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该服务器信息,向该第一数据报文的目的服务器发送该第二数据报文,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。
[0066] 具体地说,一方面,在发送端为客户端设备时,如果该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)与该第一数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,对于第二数据报文的处理依据即L3/4层信息(包括该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号)与对于第一数据报文的处理依据相同,可以确定该第二数据报文的目的服务器与第一数据报文的目的服务器相同(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0067] 从而,网卡设备可以将该第二数据报文的目的IP地址修改为该(第一数据报文的)目的服务器的内部IP地址,并将该第二数据报文的目的端口修改为该(第一数据报文的)目的服务器的内部端口,以向该(第一数据报文的)目的服务器发送该第二数据报文。
[0068] 以上,列举了根据数据报文的五元组来确定第一数据报文的目标服务器与第二数据报文是否属于该客户端设备与该目的服务器之间的同一次通信连接的实施例,但本发明并不限定于此,例如,如果负载均衡器仅与一个服务器集群相连接,且该服务器集群仅有一个统一的外部IP地址,则对于到达该负载均衡器的数据报文,目的IP地址和目的端口相同,因此,可以仅判定源IP地址、源端口和传输层协议号是否相同即可。以下,省略对相同或相似情况的说明。
[0069] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0070] 具体地说,处理器在根据第一数据报文的L3/4层信息进行负载均衡处理(对应DR式负载均衡或IP TUN式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,仅生成正方向的控制信息表项。
[0071] 这里,正方向是指从客户端设备到服务器的方向,具体地说,正方向控制信息表项可以包括,例如,第一数据报文的源IP地址、源端口、目的IP地址、目的端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第一五元组)与目的服务器信息(例如,包括该目的服务器的IP地址和端口)的对应关系,从而在S130,网卡设备可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(以下,为了便于说明,简称第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第一五元组相同的情况下,可以确定,指示该第二数据报文的目的服务器的目的服务器信息为与该第一五元组相对应的服务器信息。从而,网卡设备可以将该第二数据报文的目的IP地址修改为该(与第一五元组相对应的控制信息指示的)目的服务器的IP地址,并将该第二数据报文的目的端口修改为该(与第一五元组相对应的控制信息指示的)目的服务器的端口,能够向该(与第一五元组相对应的控制信息指示的)目的服务器发送该第二数据报文。
[0072] 可选地,在本发明实施例中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,则
[0073] 该根据该控制信息,控制该第二数据报文的传输,具体为:
[0074] 当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,控制该发送单元向该客户端设备发送该第二数据报文。
[0075] 具体地说,在发送端为服务器时(对应NAT式负载均衡),如果该第二数据报文的目的IP地址与第一数据报文的源IP地址相同,该第二数据报文的源IP地址与处理器在对第一数据进行均衡处理后确定的目的服务器的内部IP地址相同,该第二数据报文的目的端口与第一数据报文的源IP地址相同,该第二数据报文的源端口与处理器在对第一数据进行均衡处理后确定的目的服务器的内部端口相同,以及第二数据报文传输层协议号与该第一数据报文的传输层协议号相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,可以确定该第二数据报文是目的服务器生成的与该第一数据报文相对应的响应数据报文(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0076] 从而,网卡设备可以将该第二数据报文的源IP地址修改为目的服务器的外部IP地址(与该第一数据报文的目的IP地址相同),并将该第二数据报文的源端口修改为目的服务器的外部端口(与该第一数据报文的目的端口相同),以向该(发送第一数据报文的)客户端设备发送该第二数据报文。
[0077] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0078] 该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0079] 具体地说,处理器在根据第一数据报文的L3/4层信息进行负载均衡处理(NAT式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,生成正反两个方向的控制信息表项。
[0080] 这里,正方向是指从客户端设备到服务器的方向,具体地说,正方向控制信息表项可以包括,例如,第一数据报文的源IP地址、源端口、目的IP地址、目的端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第一五元组)与目的服务器信息(例如,包括该目的服务器的IP地址和端口)的对应关系,从而网卡设备可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(以下,为了便于说明,简称第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第一五元组相同的情况下,可以确定,指示该第二数据报文的目的服务器的目的服务器信息为与该第一五元组相对应的服务器信息。从而,网卡设备可以将该第二数据报文的目的IP地址修改为该(与第一五元组相对应的控制信息指示的)目的服务器的IP地址,并将该第二数据报文的目的端口修改为该(与第一五元组相对应的控制信息指示的)目的服务器的端口,能够向该(与第一五元组相对应的控制信息指示的)目的服务器发送该第二数据报文。
[0081] 这里,反方向是指从服务器到客户端设备的方向,具体地说,反方向控制信息表项可以包括,例如,目的服务器的内部IP地址、目的服务器的内部端口、第一数据报文的源IP地址、第一数据报文的源端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第三五元组)与第一数据报文的目的IP地址(与目的服务器的外部IP地址相同)、第一数据报文的目的端口(与目的服务器的外部端口相同)的对应关系,从而,网卡设备可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(上述第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第三五元组相同的情况下,可以确定,发送该第二数据报文的服务器为与该第一五元组相对应的第一数据报文的目的服务器。从而,网卡设备可以将该第二数据报文的源IP地址修改为该控制信息表项指示的与第三五元组相对应的第一数据报文的目的IP地址(与目的服务器的外部IP地址相同),并将该第二数据报文的目的端口修改为该控制信息表项指示的与第一五元组相对应的第一数据报文的目的端口(与目的服务器的外部端口相同),从而能够向该(发送第一数据报文的)客户端设备发送该第二数据报文。
[0082] 以上列举了根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号,确定能够根据该控制信息控制该第二数据报文的传输,应理解,本发明并不限定于此,其他判定是否能够根据该控制信息控制该第二数据报文的传输的方法(例如,确定第一数据报文与第二数据报文属于同一客户端设备与同一服务器之间的同一次通信连接的方法),均落入本发明的保护范围内。以下,省略对相同或相似情况的说明。
[0083] 可选地,在本发明实施例中,在接收到该控制信息表项后,该方法还包括:
[0084] 在接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或
[0085] 确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0086] 删除该第一控制信息表项。
[0087] 并且,该方法还包括:
[0088] 在接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或
[0089] 确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0090] 删除该第二控制信息表项。
[0091] 具体地说,网卡设备在从处理器获取控制信息表项(包括第一控制信息表项和第二控制信息表项)后,在长时间(定时器超时后,例如,30分钟)未接收到能够根据该控制信息表项包括的控制信息进行传输的数据报文(例如,上述第二数据报文),可以认为第一数据报文所属通信连接已结束,从而可以删除该控制信息表项(包括第一控制信息表项和第二控制信息表项)。
[0092] 并且,网卡设备在从处理器获取控制信息表项(包括第一控制信息表项和第二控制信息表项)后,检测到指示通信连接结束的数据报文后,可以认为第一数据报文所属通信连接已结束,从而可以删除该控制信息表项(包括第一控制信息表项和第二控制信息表项)。以下,省略对相同或相似情况的说明。
[0093] 下面,对处理器根据数据报文的L7层信息,或者,L3/4层信息和L7层信息进行负载均衡的情况(情况2)进行说明。
[0094] 情况2
[0095] 处理器接收到网卡设备发送的第一数据报文后,通过对数据报文的L3/4层进行解析,例如,对数据报文进行浅层报文探测(SPI,Shallow Packet Inspection),从而获取该数据报文的L3/4层信息(例如,源IP地址、目的IP地址、源端口和目的端口等),并且,通过对数据报文的L7层进行解析,例如,对数据报文进行深层报文探测(DPI,Deep Packet Inspection),从而获取该数据报文的L7层信息(例如,该数据报文的URL等)。
[0096] 在本发明实施例中,可能存在第一数据报文的L7层信息为空(即,不存在URL等)的情况,此时,处理器仅根据L3/4层信息进行负载均衡处理,并且该根据L3/4层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。
[0097] 并且,在第一数据报文的L7层信息不为空(即,存在URL等)的情况下,处理器可以根据L7层信息进行负载均衡处理,并且该根据L7层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。
[0098] 在本发明实施例中,控制信息作为该负载均衡处理的结果,例如,可以包括指示目的服务器的服务器信息,以及指示网卡设备需要对后续数据报文(主要是客户端设备发送给服务器的数据报文)进行L7层解析的L7层解析指示标识。并且,在本发明实施例中,处理器可以根据负载均衡处理的结果,直接控制发送设备(例如,可以是该网卡设备)将该第一数据报文发送给与该负载均衡处理的结果相对应的目的服务器。并将该控制信息发送给网卡设备。
[0099] 可选地,在本发明实施例中,该服务器信息可以用于指示该目的服务器的内部IP地址和内部端口。
[0100] 具体地说,处理器可以将第一数据报文的目的服务器的内部IP地址和内部端口下发给网卡设备。
[0101] 在S120’中,网卡设备可以从处理器获取该目的服务器的IP地址、端口以及L7层解析指示标识。并且,网卡设备可以接收发送端发送的第二数据报文,这里,发送端可以是上述客户端设备,也可以是服务器,本发明并未特别限定,例如,在负载均衡器采用DR式负载均衡或IP TUN式负载均衡时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备;例如,在负载均衡器采用NAT式负载均衡时,由于服务器(目的服务器)返回给客户端设备的报文需要通过负载均衡器,因此,该第二数据报文的发送端可以为客户端设备,也可以为服务器(目的服务器)。以下,以负载均衡器采用NAT式负载均衡的情况为例进行说明。
[0102] 在S130’中,在接收到第二数据报文后,网卡设备可以根据该控制信息控制控制该第二数据报文的传输。
[0103] 可选地,在本发明实施例中,该服务器信息是根据该第一数据报文的L3/4层信息和L7层信息确定的,或
[0104] 且该控制信息还包括L7层解析指示标识,则
[0105] 该根据该控制信息,控制该第二数据报文的传输,具体为:
[0106] 当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该L7层解析指示标识,对该第二数据报文进行L7层信息解析,以获取用于指示该第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;
[0107] 如果该URL信息不为空,则向该负载均衡处理器发送该第二数据报文和该URL信息,以便于该负载均衡处理器根据该URL信息,确定该第二数据报文的目的服务器,并向该第二数据报文的目的服务器发送该第二数据报文;或
[0108] 如果该URL信息为空,则根据该服务器信息,向该第一数据报文的目的服务器发送该第二数据报文。
[0109] 具体地说,一方面,在发送端为客户端设备时,如果该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)与该第一数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,对于第二数据报文的处理依据即L3/4层信息(包括该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号)与对于第一数据报文的处理依据相同,可以确定该第二数据报文的目的服务器与第一数据报文的目的服务器相同(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0110] 从而,网卡设备可以根据L7层解析指示标识,获取第二数据报文的L7层信息,即,第二数据报文的URL地址。如果能够获取第二数据报文的URL地址,则向处理器发送该第二数据报文以及该URL地址,从而,处理器无需对该第二数据报文进行L7层解析,可以直接根据该URL地址进行负载均衡处理,在本发明实施例中,由于解析URL的过程由网卡设备进行,即通过硬件解析,与通过处理器利用软件解析的方式相比,提高了解析速度,并降低了对处理器的负担。处理器在根据URL确定该第二数据报文的目的服务器后(可能与第一数据报文的目的服务器相同,也可能与第一数据报文的目的服务器相异),可以通过发送设备(例如,该网关设备),发送该第二数据报文。
[0111] 另外,如果不能获取第二数据报文的URL地址(第二数据报文的L7层信息为空),则可以根据该服务器信息,发送该第二数据报文,该过程与网卡设备S130中执行的过程相同,这里省略其说明。
[0112] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0113] 具体地说,处理器在根据第一数据报文的L3/4层信息进行负载均衡处理(对应DR式负载均衡或IP TUN式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,仅生成上述正方向的控制信息表项。
[0114] 可选地,在本发明实施例中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,则
[0115] 该根据该控制信息,控制该第二数据报文的传输,具体为:
[0116] 当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,控制该发送单元发送该第二数据报文。
[0117] 具体地说,在发送端为服务器时(对应NAT式负载均衡),如果该第二数据报文的目的IP地址与第一数据报文的源IP地址相同,该第二数据报文的源IP地址与处理器在对第一数据进行均衡处理后确定的目的服务器的内部IP地址相同,该第二数据报文的目的端口与第一数据报文的源IP地址相同,该第二数据报文的源端口与处理器在对第一数据进行均衡处理后确定的目的服务器的内部端口相同,以及第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,可以确定该第二数据报文是目的服务器生成的与该第一数据报文相对应的响应数据报文(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0118] 从而,网卡设备可以将该第二数据报文的源IP地址修改为目的服务器的外部IP地址(与该第一数据报文的目的IP地址相同),并将该第二数据报文的源端口修改为目的服务器的外部端口(与该第一数据报文的目的端口相同),以向该(发送第一数据报文的)客户端设备发送该第二数据报文。
[0119] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0120] 该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0121] 具体地说,处理器在根据第一数据报文的L3/4层信息进行负载均衡处理(NAT式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,生成上述正反两个方向的控制信息表项。
[0122] 可选地,如上所述,在本发明实施例中,在接收到该控制信息表项后,该方法还包括:
[0123] 在接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或
[0124] 确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0125] 删除该第一控制信息表项。
[0126] 并且,该方法还包括:
[0127] 在接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或
[0128] 确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0129] 删除该第二控制信息表项。
[0130] 应理解,在以上实施例中,已对负载均衡器采用NAT式负载均衡的实施例进行了说明,但本发明并不在于此,例如,负载均衡器还可以采用DR式负载均衡或IP TUN式负载均衡,此时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备。
[0131] 根据本发明实施例的控制数据传输的方法,通过负载均衡处理器根据第一数据报文确定控制信息,并向网卡设备下发该控制信息,网卡设备在接收到第二数据报文并确定能够根据该控制信息传输该第二数据报文后,可以根据该控制信息直接向目的服务器发送该第二数据报文,或者,可以获取该第二数据报文中URL信息并通知负载均衡处理器以使负载均衡处理器无需对第二数据报文进行解析,从而,减少负载均衡处理器的处理,提高访问速度,减小负载均衡处理器的负担。
[0132] 上文中,结合图1,详细描述了根据本发明实施例的控制数据传输的方法,下面将结合图2,详细描述根据本发明实施例的控制数据传输的装置。
[0133] 图2示出了根据本发明实施例的控制数据传输的装置200的示意性框图。如图2所示,该装置200包括:
[0134] 发送单元210,用于向负载均衡处理器发送来自客户端设备的第一数据报文;
[0135] 接收单元220,用于接收该负载均衡处理器发送的控制信息,以及向处理单元230传输该控制信息,其中,该控制信息是该负载均衡处理器根据该第一数据报文的L3/4层信息和/或该第一数据报文的L7层信息确定的,该控制信息包括用于指示该第一数据报文的目的服务器的服务器信息;
[0136] 用于当接收到第二数据报文时,向处理单元230传输该第二数据报文;
[0137] 处理单元230,用于从该接收单元220获取该控制信息和该第二数据报文,并根据该控制信息,控制该发送单元传输该第二数据报文;
[0138] 用于根据该控制信息,控制该发送单元210传输该第二数据报文。
[0139] 具体地说,在用户需要访问由服务器集群提供的业务时,客户端设备可以根据该服务器集群对外统一的IP地址和端口(即,外部IP地址和外部端口),发送该业务的首个数据报文(第一数据报文),该数据报文首先到达负载均衡器(由网卡设备接收)。网卡设备的接收单元220可以接收该第一数据报文,并且,该网卡设备的发送单元210可以将该第一数据报文发送给负载均衡器的负载均衡处理器(以下,为了便于说明,简称处理器),从而,该处理器可以采用预先设置的算法,通过上述任意负载均衡方式,从服务器集群中,确定该数据报文的目的服务器。
[0140] 处理器可以根据网络的不同层次(网络七层)来进行负载均衡,具体地说,可以根据数据报文的L3/4层进行负载均衡,也可以根据数据报文的L7层进行负载均衡。
[0141] 其中,在本发明实施例中,L3/4层可以包括L3层,或L4层,或L3层和L4层。L3层信息可以包括OSI网络模型中的网络层的IP地址信息,L4层信息可以包括OSI网络模型中的TCP/UDP端口信息。因此,L3/4层信息可以包括传输该业务的业务服务器的IP地址、端口等信息。L7层信息可以包括应用层信息,具体地说,是数据报文携带的URL地址。
[0142] 下面,首先对处理器用于根据数据报文的L3/4层信息进行负载均衡的情况进行说明。
[0143] 处理器接收到网卡设备发送的第一数据报文后,通过对数据报文的L3/4层进行解析,例如,对数据报文进行SPI,从而获取该数据报文的L3/4层信息(例如,源IP地址、目的IP地址、源端口和目的端口等),在本发明实施例中,处理器根据L3/4层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。在本发明实施例中,作为该负载均衡处理的结果,例如,控制信息可以是指示目的服务器的服务器信息。并且,在本发明实施例中,处理器可以根据负载均衡处理的结果,直接控制发送设备(例如,可以是该网卡设备)将该第一数据报文发送给与该负载均衡处理的结果相对应的目的服务器。并将该服务器信息发送给网卡设备。
[0144] 在本发明实施例中,该服务器信息用于指示该第一数据报文的目的服务器的内部网际协议IP地址和内部端口。
[0145] 并且,可选地,在本发明实施例中,该服务器信息是根据该第一数据报文的L3/4层信息确定的则
[0146] 该处理单元230具体用于当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该服务器信息,控制该发送单元向该第一数据报文的目的服务器发送该第二数据报文,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。
[0147] 具体地说,处理器可以将目的服务器的内部IP地址和内部端口下发给网卡设备。
[0148] 网卡设备的发送单元210可以从处理器获取目的服务器的在服务器集群内部的内部IP地址和内部端口。其后,网卡设备的接收单元220可以接收发送端发送的第二数据报文,这里,发送端可以是上述客户端设备,也可以是服务器,本发明并未特别限定,例如,在负载均衡器采用DR式负载均衡或IP TUN式负载均衡时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备;例如,在负载均衡器采用NAT式负载均衡时,由于服务器(目的服务器)返回给客户端设备的报文需要通过负载均衡器,因此,该第二数据报文的发送端可以为客户端设备,也可以为服务器(目的服务器)。以下,以负载均衡器采用NAT式负载均衡的情况为例进行说明。
[0149] 其后,网卡设备的处理单元230根据从处理器获取的服务器信息,控制该第二数据报文的传输。
[0150] 具体地说,一方面,如果该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)与该第一数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,对于第二数据报文的处理依据即L3/4层信息(包括该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号)与对于第一数据报文的处理依据相同,可以确定该第二数据报文的目的服务器与第一数据报文的目的服务器相同(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0151] 从而,网卡设备的处理单元230可以控制发送单元210将该第二数据报文的目的IP地址修改为该(第一数据报文的)目的服务器的IP地址,并将该第二数据报文的目的端口修改为该(第一数据报文的)目的服务器的端口,能够向该(第一数据报文的)目的服务器发送该第二数据报文。
[0152] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0153] 具体地说,处理器在根据第一数据报文的L3/4层信息进行负载均衡处理(对应DR式负载均衡或IP TUN式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,仅生成正方向的控制信息表项。
[0154] 这里,正方向是指从客户端设备到服务器的方向,具体地说,正方向控制信息表项可以包括,例如,第一数据报文的源IP地址、源端口、目的IP地址、目的端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第一五元组)与目的服务器信息(例如,包括该目的服务器的IP地址和端口)的对应关系,从而处理单元230可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(以下,为了便于说明,简称第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第一五元组相同的情况下,可以确定,指示该第二数据报文的目的服务器的目的服务器信息为与该第一五元组相对应的服务器信息。从而处理单元230可以将该第二数据报文的目的IP地址修改为该(与第一五元组相对应的控制信息指示的)目的服务器的IP地址,并将该第二数据报文的目的端口修改为该(与第一五元组相对应的控制信息指示的)目的服务器的端口,能够向该(与第一五元组相对应的控制信息指示的)目的服务器发送该第二数据报文。
[0155] 可选地,在本发明实施例中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,则
[0156] 该处理单元具体用于当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,控制该发送单元向该客户端设备发送该第二数据报文。
[0157] 具体地说,在发送端为服务器时(对应NAT式负载均衡),如果该第二数据报文的目的IP地址与第一数据报文的源IP地址相同,该第二数据报文的源IP地址与处理器在对第一数据进行均衡处理后确定的目的服务器的内部IP地址相同,该第二数据报文的目的端口与第一数据报文的源IP地址相同,该第二数据报文的源端口与处理器在对第一数据进行均衡处理后确定的目的服务器的内部端口相同,以及第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,可以确定该第二数据报文是目的服务器生成的与该第一数据报文相对应的响应数据报文(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0158] 从而,发送单元220可以将该第二数据报文的源IP地址修改为第一数据报文的目的服务器的外部IP地址(与该第一数据报文的目的IP地址相同),并将该第二数据报文的源端口修改为第一数据报文的目的服务器的外部端口(与该第一数据报文的目的端口相同),从而能够向该(发送第一数据报文的)客户端设备发送该第二数据报文。
[0159] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0160] 并且,该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0161] 具体地说,处理器在根据第一数据报文的L3/4层信息进行负载均衡处理(NAT式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,生成正反两个方向的控制信息表项。
[0162] 这里,正方向是指从客户端设备到服务器的方向,具体地说,正方向控制信息表项可以包括,例如,第一数据报文的源IP地址、源端口、目的IP地址、目的端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第一五元组)与目的服务器信息(例如,包括该目的服务器的IP地址和端口)的对应关系,从而处理单元230可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(以下,为了便于说明,简称第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第一五元组相同的情况下,可以确定,指示该第二数据报文的目的服务器的目的服务器信息为与该第一五元组相对应的服务器信息。从而发送单元210可以将该第二数据报文的目的IP地址修改为该(与第一五元组相对应的控制信息指示的)目的服务器的IP地址,并将该第二数据报文的目的端口修改为该(与第一五元组相对应的控制信息指示的)目的服务器的端口,能够向该(与第一五元组相对应的控制信息指示的)目的服务器发送该第二数据报文。
[0163] 这里,反方向是指从服务器到客户端设备的方向,具体地说,反方向控制信息表项可以包括,例如,目的服务器的内部IP地址、目的服务器的内部端口、第一数据报文的源IP地址、第一数据报文的源端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第三五元组)与第一数据报文的目的IP地址(与目的服务器的外部IP地址相同)、第一数据报文的目的端口(与目的服务器的外部端口相同)的对应关系,从而处理单元230可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(上述第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第三五元组相同的情况下,可以确定,发送该第二数据报文的服务器为与该第一五元组相对应的第一数据报文的目的服务器。从而发送单元210可以将该第二数据报文的源IP地址修改为该控制信息表项指示的与第三五元组相对应的第一数据报文的目的IP地址(与目的服务器的外部IP地址相同),并将该第二数据报文的目的端口修改为该控制信息表项指示的与第一五元组相对应的第一数据报文的目的端口(与目的服务器的外部端口相同),从而能够向该(发送第一数据报文的)客户端设备发送该第二数据报文。
[0164] 可选地,在本发明实施例中,该处理单元230还用于在确定该接收单元220接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或
[0165] 用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0166] 用于删除该第一控制信息表项。
[0167] 并且,该处理单元230还用于在确定该接收单元220接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或[0168] 用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0169] 用于删除该第二控制信息表项。
[0170] 具体地说,处理单元230在通过接收单元220从处理器获取控制信息表项(包括第一控制信息表项和第二控制信息表项)后,在长时间(定时器超时后,例如,30分钟)未接收到能够根据该控制信息表项包括的控制信息进行传输的数据报文(例如,上述第二数据报文),可以认为第一数据报文所属通信连接已结束,从而可以删除该控制信息表项(包括第一控制信息表项和第二控制信息表项)。
[0171] 并且,处理单元230在通过接收单元220从处理器获取控制信息表项(包括第一控制信息表项和第二控制信息表项)后,检测到指示通信连接结束的数据报文后,可以认为第一数据报文所属通信连接已结束,从而可以删除该控制信息表项(包括第一控制信息表项和第二控制信息表项)。以下,省略对相同或相似情况的说明。
[0172] 以上列举了根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号,确定能够根据该控制信息控制该第二数据报文的传输,应理解,本发明并不限定于此,其他判定是否能够根据该控制信息控制该第二数据报文的传输的方法(例如,确定第一数据报文与第二数据报文属于同一客户端设备与同一服务器之间的同一次通信连接的方法),均落入本发明的保护范围内。
[0173] 下面,对处理器用于根据数据报文的L7层信息,或者,L3/4层信息和L7层信息进行负载均衡的情况进行说明。
[0174] 处理器接收到网卡设备的发送单元210发送的第一数据报文后,通过对数据报文的L3/4层进行解析,例如,对数据报文进行SPI,从而获取该数据报文的L3/4层信息(例如,源IP地址、目的IP地址、源端口和目的端口等),并且,通过对数据报文的L7层进行解析,例如,对数据报文进行DPI,从而获取该数据报文的L7层信息(例如,该数据报文的URL等)。
[0175] 在本发明实施例中,可能存在第一数据报文的L7层信息为空(即,不存在URL等)的情况,此时,处理器仅根据L3/4层信息进行负载均衡处理,并且该根据L3/4层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。
[0176] 并且,在第一数据报文的L7层信息不为空(即,存在URL等)的情况下,处理器可以根据L7层信息进行负载均衡处理,并且该根据L7层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。
[0177] 在本发明实施例中,作为该负载均衡处理的结果,例如,控制信息可以是指示目的服务器的服务器信息,以及指示网卡设备需要对后续数据报文(主要是客户端设备发送给服务器的数据报文)进行L7层解析的L7层解析指示标识。并且,在本发明实施例中,处理器可以根据负载均衡处理的结果,直接控制发送设备(例如,可以是该网卡设备)将该第一数据报文发送给与该负载均衡处理的结果相对应的目的服务器。并将该控制信息发送给网卡设备。
[0178] 在本发明实施例中,该服务器信息用于指示该目的服务器的内部地址和内部端口。
[0179] 具体地说处理器可以将目的服务器的内部IP地址和内部端口以及L7层解析指示标识下发给网卡设备。
[0180] 网卡设备的发送单元210可以从处理器获取该目的服务器的在服务器集群内部的内部IP地址、内部端口以及L7层解析指示标识。
[0181] 网卡设备的发送单元210可以接收发送端发送的第二数据报文,这里,发送端可以是上述客户端设备,也可以是服务器,本发明并未特别限定,例如,在负载均衡器采用DR式负载均衡或IP TUN式负载均衡时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备;例如,在负载均衡器采用NAT式负载均衡时,由于服务器(目的服务器)返回给客户端设备的报文需要通过负载均衡器,因此,该第二数据报文的发送端可以为客户端设备,也可以为服务器(目的服务器)。以下,以负载均衡器采用NAT式负载均衡的情况为例进行说明。
[0182] 网卡设备的处理单元230判定是否能够根据从处理器获取的服务器信息,发送该第二数据报文的传输。
[0183] 可选地,在本发明实施例中,该服务器信息是根据该第一数据报文的L3/4层信息和L7层信息确定的,或
[0184] 该服务器信息是根据该第一数据报文的L7层信息确定的,
[0185] 该服务器信息用于指示该第一数据报文的目的服务器的内部网际协议IP地址和内部端口,该控制信息还包括L7层解析指示标识,则
[0186] 该处理单元具体用于当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该L7层解析指示标识,对该第二数据报文进行L7层信息解析,以获取用于指示该第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;
[0187] 用于如果该URL信息不为空,则控制该发送单元向该负载均衡处理器发送该第二数据报文和该URL信息,以便于该负载均衡处理器根据该URL信息,确定该第二数据报文的目的服务器,并向该第二数据报文的目的服务器发送该第二数据报文;或
[0188] 用于如果该URL信息为空,则根据该服务器信息,控制该发送单元向该第一数据报文的目的服务器发送该第二数据报文。
[0189] 具体地说,一方面,在发送端为客户端设备时,如果该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)与该第一数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)相同,由于处理器基于L3/4层信息进行负载均衡处理,对于第二数据报文的处理依据即L3/4层信息(包括该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号)与对于第一数据报文的处理依据相同,处理单元230可以确定该第二数据报文的目的服务器与第一数据报文的目的服务器相同(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0190] 其后,网卡设备的处理单元230可以根据L7层解析指示标识,获取第二数据报文的L7层信息,即,第二数据报文的URL地址。
[0191] 如果处理单元230能够获取第二数据报文的URL地址,则发送单元210向处理器发送该第二数据报文以及该URL地址,从而,处理器无需对该第二数据报文进行L7层解析,可以直接根据该URL地址进行负载均衡处理,在本发明实施例中,由于解析URL的过程由网卡设备进行,即通过硬件解析,与通过处理器利用软件解析的方式相比,提高了解析速度,并降低了对处理器的负担。处理器在根据URL确定该第二数据报文的目的服务器后(可能与第一数据报文的目的服务器相同,也可能与第一数据报文的目的服务器相异),可以通过发送设备(例如,该网关设备),发送该第二数据报文。
[0192] 另外,如果处理单元230不能获取第二数据报文的URL地址(第二数据报文的L7层信息为空),则可以根据该服务器信息,控制发送单元210发送该第二数据报文。
[0193] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0194] 具体地说,处理器在根据第一数据报文的L7层信息进行负载均衡处理(对应DR式负载均衡或IP TUN式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,仅生成上述正方向的控制信息表项。
[0195] 可选地,在本发明实施例中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,则
[0196] 该处理单元230具体用于当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,控制该发送单元向该客户端设备发送该第二数据报文。
[0197] 具体地说,在发送端为服务器时(对应NAT式负载均衡),如果该第二数据报文的目的IP地址与第一数据报文的源IP地址相同,该第二数据报文的源IP地址与处理器在对第一数据进行均衡处理后确定的目的服务器的内部IP地址相同,该第二数据报文的目的端口与第一数据报文的源IP地址相同,该第二数据报文的源端口与处理器在对第一数据进行均衡处理后确定的目的服务器的内部端口相同,以及第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,可以确定该第二数据报文是目的服务器生成的与该第一数据报文相对应的响应数据报文(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0198] 从而,发送单元220可以将该第二数据报文的源IP地址修改为第一数据报文的目的服务器的外部IP地址(与该第一数据报文的目的IP地址相同),并将该第二数据报文的源端口修改为第一数据报文的目的服务器的外部端口(与该第一数据报文的目的端口相同),从而能够向该(发送第一数据报文的)客户端设备发送该第二数据报文。
[0199] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0200] 并且,该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0201] 具体地说,处理器在根据第一数据报文的L3/4层信息进行负载均衡处理(NAT式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,生成上述正反两个方向的控制信息表项。
[0202] 可选地,如上所述,在本发明实施例中,该处理单元230还用于在确定该接收单元220接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或
[0203] 用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0204] 用于删除该第一控制信息表项。
[0205] 并且,该处理单元230还用于在确定该接收单元220接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或[0206] 用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0207] 用于删除该第二控制信息表项。
[0208] 应理解,在以上实施例中,已对负载均衡器采用NAT式负载均衡的实施例进行了说明,但本发明并不在于此,例如,负载均衡器还可以采用DR式负载均衡或IP TUN式负载均衡,此时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备。
[0209] 上述装置200可对应于本发明实施例的方法中的网卡设备,并且,该装置200中的各单元和上述其他操作和/或功能分别为了实现图1中的方法100的相应流程。
[0210] 根据本发明实施例的控制数据传输的装置,通过负载均衡处理器根据第一数据报文确定控制信息,并向网卡设备下发该控制信息,网卡设备在接收到第二数据报文并确定能够根据该控制信息传输该第二数据报文后,可以根据该控制信息直接向目的服务器发送该第二数据报文,或者,可以获取该第二数据报文中URL信息并通知负载均衡处理器以使负载均衡处理器无需对第二数据报文进行解析,从而,减少负载均衡处理器的处理,提高访问速度,减小负载均衡处理器的负担。
[0211] 上文中,结合图1,详细描述了根据本发明实施例的控制数据传输的方法,并结合图2详细描述了根据本发明实施例的控制数据传输的装置,下面将结合图3,详细描述根据本发明实施例的控制数据传输的系统。
[0212] 图3示出了根据本发明实施例的控制数据传输的系统300的示意性框图。如图3所示,该系统包括:
[0213] 负载均衡处理模块310,用于从网卡模块320获取第一数据报文,并根据该第一数据报文的L3/4层信息和/或该第一数据报文的L7层信息,确定用于指示该第一数据报文的目的服务器的服务器信息,向该网卡模块发送包括该服务器信息的控制信息;
[0214] 网卡模块320,用于向负载均衡处理模块310发送来自用户设备的该第一数据报文,以及从该负载均衡处理模块310获取该控制信息,当接收到第二数据报文时,根据该控制信息,控制该第二数据报文的传输。
[0215] 具体地说,在用户需要访问由服务器集群提供的业务时,客户端设备可以根据该服务器集群对外统一的IP地址和端口(即,外部IP地址和外部端口),发送该业务的首个数据报文(第一数据报文),该数据报文首先到达负载均衡器(由网卡设备接收)。该网卡模块320可以将该第一数据报文发送给负载均衡器的负载均衡处理模块310,从而,该均衡处理模块310可以采用预先设置的算法,通过上述任意负载均衡方式,从服务器集群中,确定该数据报文的目的服务器。
[0216] 在本发明实施例中,均衡处理模块310可以根据网络的不同层次(网络七层)来进行负载均衡,具体地说,可以根据数据报文的L3/4层进行负载均衡,也可以根据数据报文的L7层进行负载均衡。
[0217] 其中,在本发明实施例中,L3/4层可以包括L3层,或L4层,或L3层和L4层。L3层信息可以包括OSI网络模型中的网络层的IP地址信息,L4层信息可以包括OSI网络模型中的TCP/UDP端口信息。因此,L3/4层信息可以包括传输该业务的业务服务器的IP地址、端口等信息。L7层信息可以包括应用层信息,具体地说,是数据报文携带的URL地址。
[0218] 下面,首先对均衡处理模块310用于根据数据报文的L3/4层信息进行负载均衡的情况进行说明。
[0219] 均衡处理模块310接收到网卡模块320发送的第一数据报文后,通过对数据报文的L3/4层进行解析,例如,对数据报文进行SPI,从而获取该数据报文的L3/4层信息(例如,源IP地址、目的IP地址、源端口和目的端口等),在本发明实施例中,均衡处理模块310根据L3/4层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。在本发明实施例中,作为该负载均衡处理的结果,例如,控制信息可以是指示目的服务器的服务器信息。并且,在本发明实施例中,均衡处理模块310可以根据负载均衡处理的结果,直接控制发送设备(例如,可以是该网卡模块320)将该第一数据报文发送给与该负载均衡处理的结果相对应的目的服务器。并将该服务器信息发送给网卡模块320。
[0220] 在本发明实施例中,该服务器信息用于指示该第一数据报文的目的服务器的内部网际协议IP地址和内部端口。
[0221] 可选地,在本发明实施例中,该服务器信息是该负载均衡处理模块310根据该第一数据报文的L3/4层信息确定的,则
[0222] 该网卡模块320具体用于当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该服务器信息,向该第一数据报文的目的服务器发送该第二数据报文,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号。
[0223] 具体地说,均衡处理模块310可以将目的服务器的在服务器集群内部的内部IP地址和内部端口下发给网卡模块320。
[0224] 其后,网卡模块320可以从均衡处理模块310获取该目的服务器的在服务器集群内部的内部IP地址和内部端口。
[0225] 其后,网卡模块320可以接收发送端发送的第二数据报文,这里,发送端可以是上述客户端设备,也可以是服务器,本发明并未特别限定,例如,在负载均衡器采用DR式负载均衡或IP TUN式负载均衡时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备;例如,在负载均衡器采用NAT式负载均衡时,由于服务器(目的服务器)返回给客户端设备的报文需要通过负载均衡器,因此,该第二数据报文的发送端可以为客户端设备,也可以为服务器(目的服务器)。以下,以负载均衡器采用NAT式负载均衡的情况为例进行说明。
[0226] 其后,网卡模块320根据从均衡处理模块310获取的服务器信息,控制该第二数据报文的传输。
[0227] 具体地说,一方面,在发送端为客户端设备时,如果该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)与该第一数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,对于第二数据报文的处理依据即L3/4层信息(包括该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号)与对于第一数据报文的处理依据相同,可以确定该第二数据报文的目的服务器与第一数据报文的目的服务器相同(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0228] 从而,网卡模块320可以将该第二数据报文的目的IP地址修改为该(第一数据报文的)目的服务器的IP地址,并将该第二数据报文的目的端口修改为该(第一数据报文的)目的服务器的端口,以向该(第一数据报文的)目的服务器发送该第二数据报文。
[0229] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0230] 具体地说,负载均衡处理模块310在根据第一数据报文的L3/4层信息进行负载均衡处理(对应DR式负载均衡或IP TUN式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,仅生成正方向的控制信息表项。
[0231] 这里,正方向是指从客户端设备到服务器的方向,具体地说,正方向控制信息表项可以包括,例如,第一数据报文的源IP地址、源端口、目的IP地址、目的端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第一五元组)与目的服务器信息(例如,包括该目的服务器的IP地址和端口)的对应关系,从而网卡模块320可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(以下,为了便于说明,简称第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第一五元组相同的情况下,可以确定,指示该第二数据报文的目的服务器的目的服务器信息为与该第一五元组相对应的服务器信息。从而,网卡模块320可以将该第二数据报文的目的IP地址修改为该(与第一五元组相对应的控制信息指示的)目的服务器的IP地址,并将该第二数据报文的目的端口修改为该(与第一五元组相对应的控制信息指示的)目的服务器的端口,能够向该(与第一五元组相对应的控制信息指示的)目的服务器发送该第二数据报文。
[0232] 可选地,在本发明实施例中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,则
[0233] 该网卡模块具体用于当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,发送该第二数据报文。
[0234] 具体地说,在发送端为服务器时(对应NAT式负载均衡),如果该第二数据报文的目的IP地址与第一数据报文的源IP地址相同,该第二数据报文的源IP地址与处理器在对第一数据进行均衡处理后确定的目的服务器的内部IP地址相同,该第二数据报文的目的端口与第一数据报文的源IP地址相同,该第二数据报文的源端口与处理器在对第一数据进行均衡处理后确定的目的服务器的内部端口相同,以及第二数据报文传输层协议号与该第一数据报文的传输层协议号相同,由于负载均衡处理器基于L3/4层信息进行负载均衡处理,可以确定该第二数据报文是目的服务器生成的与该第一数据报文相对应的响应数据报文(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0235] 从而,网卡模块320可以将该第二数据报文的源IP地址修改为该第一数据报文的目的服务器的外部IP地址的目的IP地址(与第一数据报文的目的IP相同),并将该第二数据报文的源端口修改为该第一数据报文的目的服务器的外部端口(与第一数据报文的目的端口相同),从而能够向该(发送第一数据报文的)客户端设备发送该第二数据报文。
[0236] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0237] 并且,该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0238] 具体地说,负载均衡处理模块310在根据第一数据报文的L3/4层信息进行负载均衡处理(NAT式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,生成正反两个方向的控制信息表项。
[0239] 这里,正方向是指从客户端设备到服务器的方向,具体地说,正方向控制信息表项可以包括,例如,第一数据报文的源IP地址、源端口、目的IP地址、目的端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第一五元组)与目的服务器信息(例如,包括该目的服务器的IP地址和端口)的对应关系,从而网卡模块320可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(以下,为了便于说明,简称第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第一五元组相同的情况下,可以确定,指示该第二数据报文的目的服务器的目的服务器信息为与该第一五元组相对应的服务器信息。从而,网卡模块320可以将该第二数据报文的目的IP地址修改为该(与第一五元组相对应的控制信息指示的)目的服务器的IP地址,并将该第二数据报文的目的端口修改为该(与第一五元组相对应的控制信息指示的)目的服务器的端口,能够向该(与第一五元组相对应的控制信息指示的)目的服务器发送该第二数据报文。
[0240] 这里,反方向是指从服务器到客户端设备的方向,具体地说,反方向控制信息表项可以包括,例如,目的服务器的内部IP地址、目的服务器的内部端口、第一数据报文的源IP地址、第一数据报文的源端口以及第一数据报文的传输层协议号(以下,为了便于说明,简称第三五元组)与第一数据报文的目的IP地址(与目的服务器的外部IP地址相同)、第一数据报文的目的端口(与目的服务器的外部端口相同)的对应关系,从而网卡模块320可以根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号(上述第二五元组),查找该控制信息表项,在该第二五元组与控制信息表项中记载的第三五元组相同的情况下,可以确定,发送该第二数据报文的服务器为与该第一五元组相对应的第一数据报文的目的服务器。从而,网卡模块320可以将该第二数据报文的源IP地址修改为该控制信息表项指示的与第三五元组相对应的第一数据报文的目的IP地址(与目的服务器的外部IP地址相同),并将该第二数据报文的目的端口修改为该控制信息表项指示的与第一五元组相对应的第一数据报文的目的端口(与目的服务器的外部端口相同),从而能够向该(发送第一数据报文的)客户端设备发送该第二数据报文。以下,省略对相同或相似情况的说明。
[0241] 可选地,在本发明实施例中,该网卡模块320还用于在接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或[0242] 用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0243] 用于删除该第一控制信息表项。
[0244] 并且,该网卡模块320还用于在接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或
[0245] 用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0246] 用于删除该第二控制信息表项。
[0247] 具体地说,网卡模块320在从负载均衡处理模块310获取控制信息表项(包括第一控制信息表项和第二控制信息表项)后,在长时间(定时器超时后,例如,30分钟)未接收到能够根据该控制信息表项包括的控制信息进行传输的数据报文(例如,上述第二数据报文),可以认为第一数据报文所属通信连接已结束,从而可以删除该控制信息表项(包括第一控制信息表项和第二控制信息表项)。
[0248] 并且,网卡模块320在从负载均衡处理模块310获取控制信息表项(包括第一控制信息表项和第二控制信息表项)后,检测到指示通信连接结束的数据报文后,可以认为第一数据报文所属通信连接已结束,从而可以删除该控制信息表项(包括第一控制信息表项和第二控制信息表项)。以下,省略对相同或相似情况的说明。
[0249] 以上列举了根据第二数据报文的源IP地址、源端口、目的IP地址、目的端口以及第二数据报文的传输层协议号,确定能够根据该控制信息控制该第二数据报文的传输,应理解,本发明并不限定于此,其他判定是否能够根据该控制信息控制该第二数据报文的传输的方法(例如,确定第一数据报文与第二数据报文属于同一客户端设备与同一服务器之间的同一次通信连接的方法),均落入本发明的保护范围内。
[0250] 下面,对处理器用于根据数据报文的L7层信息,或者,L3/4层信息和L7层信息进行负载均衡的情况进行说明。
[0251] 负载均衡处理模块310接收到网卡模块320发送的第一数据报文后,通过对数据报文的L3/4层进行解析,例如,对数据报文进行SPI,从而获取该数据报文的L3/4层信息(例如,源IP地址、目的IP地址、源端口和目的端口等),并且,通过对数据报文的L7层进行解析,例如,对数据报文进行DPI,从而获取该数据报文的L7层信息(例如,该数据报文的URL等)。
[0252] 在本发明实施例中,可能存在第一数据报文的L7层信息为空(即,不存在URL等)的情况,此时,负载均衡处理模块310仅根据L3/4层信息进行负载均衡处理,并且该根据L3/4层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。
[0253] 并且,在第一数据报文的L7层信息不为空(即,存在URL等)的情况下,负载均衡处理模块310可以根据L7层信息进行负载均衡处理,并且该根据L7层信息进行负载均衡处理的方法与现有技术相同,这里,为避免赘述,省略其说明。
[0254] 在本发明实施例中,控制信息作为该负载均衡处理的结果,例如,可以包括指示目的服务器的服务器信息,以及指示网卡模块320需要对后续数据报文(主要是客户端设备发送给服务器的数据报文)进行L7层解析的L7层解析指示标识。并且,在本发明实施例中,负载均衡处理模块310可以根据负载均衡处理的结果,直接控制发送设备(例如,可以是该网卡模块320)将该第一数据报文发送给与该负载均衡处理的结果相对应的目的服务器。并将该控制信息发送给网卡模块320。
[0255] 在本发明实施例中,该服务器信息用于指示该第一数据报文的目的服务器的内部网际协议IP地址和内部端口。
[0256] 可选地,在本发明实施例中,该服务器信息是该负载均衡处理模块根据该第一数据报文的L3/4层信息和L7层信息确定的,或
[0257] 该服务器信息是该负载均衡处理模块根据该第一数据报文的L7层信息确定的,该控制信息还包括L7层解析指示标识,则
[0258] 该网卡模块具体用于当该第二数据报文的五元组与该第一数据报文的五元组相同时,根据该L7层解析指示标识,对该第二数据报文进行L7层信息解析,以获取用于指示该第二数据报文的目的服务器的统一资源定位器URL地址的URL信息,其中,该五元组为源IP地址、源端口、目的IP地址、目的端口和传输层协议号;
[0259] 如果该URL信息不为空,则向该负载均衡处理器发送该第二数据报文和该URL信息,以便于该负载均衡处理器根据该URL信息,确定该第二数据报文的目的服务器,并向该第二数据报文的目的服务器发送该第二数据报文;或
[0260] 如果该URL信息为空,则根据该服务器信息,向该第一数据报文的目的服务器发送该第二数据报文。
[0261] 具体地说负载均衡处理模块310可以将目的服务器的在服务器集群内部的内部IP地址和内部端口下发给网卡模块320。
[0262] 网卡模块320可以从负载均衡处理模块310获取该目的服务器的在服务器集群内部的内部IP地址、内部端口以及L7层解析指示标识,并且,负载均衡处理模块310可以为该目的服务器的IP地址、端口以及L7层解析指示标识。
[0263] 网卡模块320可以接收发送端发送的第二数据报文,这里,发送端可以是上述客户端设备,也可以是服务器,本发明并未特别限定,例如,在负载均衡器采用DR式负载均衡或IP TUN式负载均衡时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备;例如,在负载均衡器采用NAT式负载均衡时,由于服务器(目的服务器)返回给客户端设备的报文需要通过负载均衡器,因此,该第二数据报文的发送端可以为客户端设备,也可以为服务器(目的服务器)。以下,以负载均衡器采用NAT式负载均衡的情况为例进行说明。
[0264] 网卡模块320根据从负载均衡处理模块310获取的服务器信息,发送该第二数据报文的传输。
[0265] 具体地说,一方面,在发送端为客户端设备时,如果该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)与该第一数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号(TCP连接或UDP连接)相同,由于负载均衡处理模块310基于L3/4层信息进行负载均衡处理,对于第二数据报文的处理依据即L3/4层信息(包括该第二数据报文的目的IP地址、源IP地址、目的端口、源端口以及传输层协议号)与对于第一数据报文的处理依据相同,网卡模块320可以确定该第二数据报文的目的服务器与第一数据报文的目的服务器相同(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0266] 其后,网卡模块320可以根据L7层解析指示标识,获取第二数据报文的L7层信息,即,第二数据报文的URL地址。
[0267] 如果网卡模块320能够获取第二数据报文的URL地址,则向负载均衡处理模块310发送该第二数据报文以及该URL地址,从而,负载均衡处理模块310无需对该第二数据报文进行L7层解析,可以直接根据该URL地址进行负载均衡处理,在本发明实施例中,由于解析URL的过程由网卡模块320进行,即通过硬件解析,与通过负载均衡处理模块310利用软件解析的方式相比,提高了解析速度,并降低了对负载均衡处理模块310的负担。负载均衡处理模块310在根据URL确定该第二数据报文的目的服务器后(可能与第一数据报文的目的服务器相同,也可能与第一数据报文的目的服务器相异),可以通过发送设备(例如,该网关设备),发送该第二数据报文。。
[0268] 另外,如果网卡模块320不能获取第二数据报文的URL地址(第二数据报文的L7层信息为空),则可以根据该服务器信息,发送该第二数据报文。
[0269] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0270] 具体地说,负载均衡处理模块310在根据第一数据报文的L7层信息进行负载均衡处理(对应DR式负载均衡或IP TUN式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,仅生成上述正方向的控制信息表项。
[0271] 可选地,在本发明实施例中,该服务器信息还用于指示该第一数据报文的目的服务器的外部IP地址和外部端口,则
[0272] 该网卡模块具体用于当该第二数据报文的源IP地址与该目的服务器的内部IP地址相同,且该第二数据报文的源端口与该目的服务器的内部端口信息相同,且该第二数据报文的目的IP地址与该第一数据报文的源IP地址相同,且该第二数据报文的目的端口与该第一数据报文的源端口相同,且该第二数据报文的传输层协议号与该第一数据报文的传输层协议号相同时,根据该第一数据报文的目的服务器的外部IP地址和外部端口,发送该第二数据报文。
[0273] 具体地说,在发送端为服务器时(对应NAT式负载均衡),如果该第二数据报文的目的IP地址与第一数据报文的源IP地址相同,该第二数据报文的源IP地址与负载均衡处理模块310在对第一数据进行均衡处理后确定的目的服务器的内部IP地址相同,该第二数据报文的目的端口与第一数据报文的源IP地址相同,该第二数据报文的源端口与负载均衡处理模块310在对第一数据进行均衡处理后确定的目的服务器的内部端口相同,以及第二数据报文传输层协议号与该第一数据报文的传输层协议号相同,由于负载均衡处理模块310基于L3/4层信息进行负载均衡处理,可以确定该第二数据报文是目的服务器生成的与该第一数据报文相对应的响应数据报文(即,第二数据报文与第一数据报文属于该客户端设备与该目的服务器之间的同一次通信连接)。
[0274] 从而,网卡模块320可以将该第二数据报文的源IP地址修改为该第一数据报文的目的服务器的外部IP地址的目的IP地址(与第一数据报文的目的IP相同),并将该第二数据报文的源端口修改为该第一数据报文的目的服务器的外部端口(与第一数据报文的目的端口相同),从而能够向该(发送第一数据报文的)客户端设备发送该第二数据报文。
[0275] 可选地,在本发明实施例中,该服务器信息包括第一控制信息表项,该第一控制信息表项用于指示该第一数据报文的五元组与该第一数据报文的目的服务器的内部IP地址和内部端口的对应关系。
[0276] 并且,该服务器信息包括第二控制信息表项,该第二控制信息表项用于指示该第一数据报文的目的服务器的内部IP地址、该第一数据报文的目的服务器的内部端口、该第一数据报文的源IP地址、该第一数据报文的源端口以及该第一数据报文的传输层协议号与该第一数据报文的目的服务器的外部IP地址和外部端口的对应关系。
[0277] 具体地说,负载均衡处理模块310在根据第一数据报文的L3/4层信息进行负载均衡处理(NAT式负载均衡)并确定目的服务器后,可以根据该第一数据报文的L3/4层信息,生成上述正反两个方向的控制信息表项。
[0278] 可选地,如上所述,在本发明实施例中,该网卡模块320还用于在接收到该第一控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或[0279] 用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0280] 用于删除该第一控制信息表项。
[0281] 并且,该网卡模块320还用于在接收到该第二控制信息表项后,启动定时器,并确定在该定时器超时之前未接收到该第二数据报文;或
[0282] 用于确定在该客户端设备和该第一数据报文的目的服务器之间建立的用于传输该第一数据报文的通信连接结束;
[0283] 用于删除该第二控制信息表项。
[0284] 应理解,在以上实施例中,已对负载均衡器采用NAT式负载均衡的实施例进行了说明,但本发明并不在于此,例如,负载均衡器还可以采用DR式负载均衡或IP TUN式负载均衡,此时,服务器(目的服务器)返回给客户端设备的报文不通过负载均衡器,因此,该第二数据报文的发送端为客户端设备。
[0285] 上述系统300可对应于本发明实施例的方法中的网卡设备,并且,该系统300中的各单元和上述其他操作和/或功能分别为了实现图1中的方法100的相应流程。
[0286] 根据本发明实施例的控制数据传输的装置,通过负载均衡处理器根据第一数据报文确定控制信息,并向网卡设备下发该控制信息,网卡设备在接收到第二数据报文并确定能够根据该控制信息传输该第二数据报文后,可以根据该控制信息直接向目的服务器发送该第二数据报文,或者,可以获取该第二数据报文中URL信息并通知负载均衡处理器以使负载均衡处理器无需对第二数据报文进行解析,从而,减少负载均衡处理器的处理,提高访问速度,减小负载均衡处理器的负担。
[0287] 应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0288] 应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
[0289] 本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0290] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0291] 在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0292] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0293] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0294] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0295] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。