一种负载均衡系统、方法及装置与流程

文档序号:15684001发布日期:2018-10-16 20:52阅读:215来源:国知局

本申请涉及计算机技术领域,尤其涉及一种负载均衡系统、方法及装置。



背景技术:

多路径传输控制协议(multipathtransportcontrolprotocol,mptcp),是一种利用多条路径并发传输的传输层协议,可以提高端到端的吞吐率,增加网络利用率。

如图1所示,mptcp工作在传输控制协议/因特网互联协议(transmissioncontrolprotocol/internetprotocol,tcp/ip)的第四层。并在传统的第四层中,tcp协议栈和应用层(application)接口当前套接字(existingsocket)之间,新增加多路径处理模块(multipathtcp)。从而实现多路径tcp处理能力,并且能够避免应用层程序(application)改动。

负载均衡(loadbalance)是一种集群技术,它将特定的业务如网络服务、网络流量等分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。

传统的四层负载均衡技术都是依靠tcp流的五元组(发送端ip地址,发送端端口,接收端ip地址,接收端端口,和传输层协议)来进行tcp连接建立的消息转发,从而保证同一条tcp连接的建链消息都会被转发到相同的服务器上。

但是在mptcp场景下,一个mptcp连接是由多个tcp连接组成的,而且每个tcp连接的五元组之间都是没有任何关系的。如果按照传统的负载均衡机制,在第一个tcp连接建立完成之后,由于之后的第二个tcp连接的五元组与第一个tcp连接的五元组不同,第二个tcp连接的建链消息会被转发到与第一个tcp连接不同的服务器,这样就造成接收到第二个tcp连接的服务器由于无法获取到第一个tcp连接的相关信息,从而无法成功建立第二个tcp连接,导致mptcp机制不起作用,使得通信效率低下。



技术实现要素:

本申请实施例提供一种负载均衡系统、方法及装置,以解决现有的负载均衡机制下无法识别同一mptcp连接的tcp连接,导致mptcp机制不起作用,使得通信效率低下的问题。

本申请实施例提供的具体技术方案如下:

第一方面,提供一种负载均衡系统,包括:

客户端设备,用于通过负载均衡设备向服务器设备发送用于请求建立第一tcp连接的第一消息;接收所述服务器设备发送的所述第一消息的响应消息,向所述负载均衡设备发送用于请求建立第二tcp连接的第二消息,其中,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于根据所述服务器设备的密钥计算所述服务器设备的令牌;所述第二消息包括所述客户端设备利用所述第一函数根据所述服务器设备的密钥计算出的所述服务器设备的令牌,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话;

所述服务器设备,用于接收客户端设备通过负载均衡设备发送的用于请求建立第一tcp连接的第一消息;向所述客户端设备发送所述第一消息的响应消息;

所述负载均衡设备,用于接收所述客户端设备发送的用于请求建立第一tcp连接的第一消息;将所述第一消息发送至服务器设备;接收所述客户端设备发送的用于请求建立第二tcp连接的第二消息;根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,将所述第二消息发送给所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接。

采用上述负载均衡系统,在完成第一tcp连接建立之后,对第二tcp连接,通过识别出建立第二tcp连接的第二消息的服务器设备的令牌字段,确定出与第一tcp连接相同的服务器设备,把第二tcp连接转发到与第一tcp连接相同的服务器设备上,能够实现mptcp场景下的负载均衡,这样既能够实现业务的负载均衡,提高业务处理能力,还能够发挥多路径传输控制的优势,提高端到端的吞吐率,增加网络利用率,从而提高通信效率。

结合第一方面,一种可能的设计中,所述服务器设备还用于:

利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌,利用所述第一函数根据所述服务器设备的令牌计算所述服务器设备的密钥。

这种设计中,因为每台服务器设备的编号都不同,使用不同的编号来计算服务器设备的令牌,所以能够确保不会发生不同服务器设备产生相同的令牌从而出现冲突的问题。

结合第一方面,一种可能的设计中,所述服务器设备具体用于:

利用所述第二函数根据所述服务器设备的编号和第一密钥计算所述服务器设备的令牌;所述第一密钥为所述服务器设备和所述负载均衡设备之间协商的密钥。

这种设计中,因为每台服务器设备的编号都不同,使用不同的编号、第一密钥和第二函数来加密来生成服务器设备的令牌,所以能够确保不会发生不同服务器设备产生相同的令牌从而出现冲突的问题,进一步的,由于利用了第一密钥来生成令牌,能够确保令牌信息的安全性。

结合第一方面,一种可能的设计中,所述负载均衡设备具体用于:

根据所述服务器设备的令牌计算所述服务器设备的编号,确定所述第二消息的目的设备为所述编号对应的服务器设备。

结合第一方面,一种可能的设计中,;所述第二函数为所述服务器设备和所述负载均衡设备之间协商的函数。

第二方面,提供一种负载均衡方法,包括:

服务器设备接收客户端设备通过负载均衡设备发送的用于请求建立第一tcp连接的第一消息;

所述服务器设备向所述客户端设备发送所述第一消息的响应消息,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于所述客户端根据所述服务器设备的密钥计算所述服务器设备的令牌,以根据所述服务器设备的令牌建立与所述服务器之间的与所述第一tcp连接属于同一个mptcp会话的第二tcp连接。

这种设计中,因为服务器设备采用特殊的令牌和密钥的生成方式,保证负载均衡设备可以实现mptcp流的不同tcp子流之间统一的负载均衡。

结合第二方面,一种可能的设计中,所述服务器设备向所述客户端设备发送所述第一消息的响应消息之前,所述方法还包括:

所述服务器设备利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌,利用所述第一函数根据所述服务器设备的令牌计算所述服务器设备的密钥;所述第二函数为所述服务器设备和所述负载均衡设备之间协商的函数。

这种设计中,因为每台服务器设备的编号都不同,使用不同的编号来计算服务器设备的令牌,所以能够确保不会发生不同服务器设备产生相同的令牌从而出现冲突的问题。

结合第二方面,一种可能的设计中,所述服务器设备利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌,包括:

所述服务器设备利用所述第二函数根据所述服务器设备的编号和第一密钥计算所述服务器设备的令牌;所述第一密钥为所述服务器设备和所述负载均衡设备之间协商的密钥。

这种设计中,因为每台服务器设备的编号都不同,使用不同的编号、第一密钥和第二函数来加密来生成服务器设备的令牌,所以能够确保不会发生不同服务器设备产生相同的令牌从而出现冲突的问题,进一步的,由于利用了第一密钥来生成令牌,能够确保令牌信息的安全性。

第三方面,提供一种负载均衡方法,包括:

客户端设备通过负载均衡设备向服务器设备发送用于请求建立第一tcp连接的第一消息;

所述客户端设备接收所述服务器设备发送的所述第一消息的响应消息,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于根据所述服务器设备的密钥计算所述服务器设备的令牌;

所述客户端设备利用所述第一函数根据所述服务器设备的密钥计算出所述服务器设备的令牌,并向所述负载均衡设备发送用于请求建立第二tcp连接的第二消息,所述第二消息包括所述服务器设备的令牌,所述服务器设备的令牌用于所述负载均衡设备确定所述第二消息的目的设备为所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话。

这种设计中,在成功建立第一tcp连接后,对第二tcp连接,通过计算出建立第二tcp连接的第二消息的服务器设备的令牌字段,向负载均衡设备发送携带所述令牌的用于建立第二tcp连接的第二消息,从而实现将第二tcp连接转发到与第一tcp连接相同的服务器设备上,能够实现mptcp场景下的负载均衡,提高通信效率,从而增加网络利用率。

第四方面,提供一种负载均衡方法,包括:

负载均衡设备接收客户端设备发送的用于请求建立第一tcp连接的第一消息;

所述负载均衡设备将所述第一消息发送至服务器设备;

所述负载均衡设备接收所述客户端设备发送的用于请求建立第二tcp连接的第二消息,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话,所述第二消息包括所述服务器设备的令牌;

所述负载均衡设备根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,将所述第二消息发送给所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接。

这种设计中,负载均衡设备对第一tcp连接,保持传统的负载均衡方式,对第二tcp连接,通过识别出建立第二tcp连接的第二消息的服务器设备的令牌字段,确定出与第一tcp连接相同的服务器设备,把第二tcp连接转发到与第一tcp连接相同的服务器设备上,能够实现mptcp场景下的负载均衡,这样既能够实现业务的负载均衡,提高业务处理能力,还能够发挥多路径传输控制的优势,提高端到端的吞吐率,提高通信效率,从而增加网络利用率。

结合第四方面,一种可能的设计中,所述负载均衡设备根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,包括:

所述负载均衡设备根据所述服务器设备的令牌计算所述服务器设备的编号,确定所述第二消息的目的设备为所述编号对应的服务器设备。

这种设计中,通过识别出服务器设备的令牌,计算出第一tcp连接所在的服务器编号,从而根据计算得到的服务器设备编号,把第二tcp连接转发到与第一tcp连接相同的服务器设备上,实现不同tcp流之间的负载均衡。

结合第四方面,一种可能的设计中,所述负载均衡设备根据所述服务器设备的令牌计算所述服务器设备的编号,具体包括:

所述负载均衡设备利用所述负载均衡设备与所述服务器设备之间协商的函数根据所述服务器设备的令牌计算所述服务器设备的编号。

第五方面,提供一种负载均衡装置,应用于服务器设备,包括:

接收单元,用于接收客户端设备通过负载均衡设备发送的用于请求建立第一tcp连接的第一消息;

处理单元,用于根据所述第一消息生成第一消息的响应消息;

发送单元,用于向所述客户端设备发送所述第一消息的响应消息,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于所述客户端根据所述服务器设备的密钥计算所述服务器设备的令牌,以根据所述服务器设备的令牌建立与所述服务器之间的与所述第一tcp连接属于同一个mptcp会话的第二tcp连接。

结合第五方面,一种可能的设计中,所述处理单元还用于:

利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌,利用所述第一函数根据所述服务器设备的令牌计算所述服务器设备的密钥;所述第二函数为所述服务器设备和所述负载均衡设备之间协商的函数。

结合第五方面,一种可能的设计中,所述处理单元在利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌时,具体用于:

利用所述第二函数根据所述服务器设备的编号和第一密钥计算所述服务器设备的令牌;所述第一密钥为所述服务器设备和所述负载均衡设备之间协商的密钥。

第六方面,提供一种负载均衡装置,应用于客户端设备,包括:

发送单元,用于通过负载均衡设备向服务器设备发送用于请求建立第一tcp连接的第一消息;

接收单元,用于接收所述服务器设备发送的所述第一消息的响应消息,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于根据所述服务器设备的密钥计算所述服务器设备的令牌;

处理单元,用于利用所述第一函数根据所述服务器设备的密钥计算出所述服务器设备的令牌,并向所述负载均衡设备发送用于请求建立第二tcp连接的第二消息,所述第二消息包括所述服务器设备的令牌,所述服务器设备的令牌用于所述负载均衡设备确定所述第二消息的目的设备为所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话。

第七方面,提供一种负载均衡装置,包括:

接收单元,用于接收客户端设备发送的用于请求建立第一tcp连接的第一消息;

发送单元,用于将所述第一消息发送至服务器设备;

所述接收单元,还用于接收所述客户端设备发送的用于请求建立第二tcp连接的第二消息,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话,所述第二消息包括所述服务器设备的令牌;

处理单元,用于根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,将所述第二消息发送给所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接。

结合第七方面,一种可能的设计中,所述处理单元在根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备时,具体用于:

根据所述服务器设备的令牌计算所述服务器设备的编号,确定所述第二消息的目的设备为所述编号对应的服务器设备。

结合第七方面,一种可能的设计中,所述处理单元在根据所述服务器设备的令牌计算所述服务器设备的编号时,具体用于:

利用所述负载均衡设备与所述服务器设备之间协商的函数根据所述服务器设备的令牌计算所述服务器设备的编号。

第八方面,提供一种服务器设备,该服务器设备包括处理器、存储器、接收器和发射器,其中,所述存储器中存有计算机可读程序,所述处理器通过运行所述存储器中的程序,控制所述接收器和所述发射器,实现第二方面涉及的负载均衡方法。

由于该服务器设备设备解决问题的原理以及有益效果可以参见上述第二方面和第二方面的各可能的负载均衡的方法的实施方式以及所带来的有益效果,因此该第一设备的实施可以参见上述第二方面和第二方面的各可能的负载均衡的方法的实施,重复之处不再赘述。

第九方面,提供一种客户端设备,该客户端设备包括处理器、存储器、接收器和发射器,其中,所述存储器中存有计算机可读程序,所述处理器通过运行所述存储器中的程序,控制所述接收器和所述发射器,实现第三方面涉及的负载均衡方法。

由于该客户端设备设备解决问题的原理以及有益效果可以参见上述第三方面和第三方面的各可能的负载均衡的方法的实施方式以及所带来的有益效果,因此该客户端设备的实施可以参见上述第三方面和第三方面的各可能的负载均衡的方法的实施,重复之处不再赘述。

第十方面,提供一种负载均衡设备,该负载均衡设备包括处理器、存储器、接收器和发射器,其中,所述存储器中存有计算机可读程序,所述处理器通过运行所述存储器中的程序,控制所述接收器和所述发射器,实现第四方面涉及的负载均衡方法。

由于该负载均衡设备设备解决问题的原理以及有益效果可以参见上述第四方面和第四方面的各可能的负载均衡的方法的实施方式以及所带来的有益效果,因此该负载均衡设备的实施可以参见上述第四方面和第四方面的各可能的负载均衡的方法的实施,重复之处不再赘述。

第十一方面,提供一种计算机存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质存储有程序,程序包括指令,所述指令当被具有处理器的电子设备执行时使所述电子设备执行上述第二方面和第二方面的各可能实现方式的上行传输的方法。

第十二方面,提供一种计算机存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质存储有程序,程序包括指令,所述指令当被具有处理器的电子设备执行时使所述电子设备执行上述第三方面和第三方面的各可能实现方式的上行传输的方法。

第十三方面,提供一种计算机存储介质,所述存储介质为计算机可读存储介质,所述计算机可读存储介质存储有程序,程序包括指令,所述指令当被具有处理器的电子设备执行时使所述电子设备执行上述第四方面和第四方面的各可能实现方式的上行传输的方法。

附图说明

图1为mptcp的工作层次示意图;

图2为mptcp的连接建立消息的交互流程示意图;

图3为建立mptcp主连接消息交互过程示意图;

图4为建立mptcp子连接消息交互过程示意图;

图5为负载均衡设备工作示意图;

图6为四层负载均衡中的dr流程示意图;

图7为本申请实施例的负载均衡系统架构示意图;

图8为本申请实施例的负载均衡方法流程示意图;

图9为负载均衡方法实现mptcp的连接建立的消息的交互流程示意图;

图10和图11为本申请中负载均衡方法的应用场景示意图;

图12为本申请实施例的负载均衡装置结构示意图;

图13为本申请实施例的客户端设备结构示意图;

图14为本申请实施例的负载均衡装置结构示意图;

图15为本申请实施例的服务器设备结构示意图;

图16为本申请实施例的负载均衡装置结构示意图;

图17为本申请实施例的负载均衡设备结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

本申请中所涉及的多个,是指两个或两个以上。

图2所示,为mptcp的连接建立消息的交互流程示意图,如图2所示,该流程主要涉及两个设备,分别是客户端设备(client)和服务器设备(server),其中客户端设备包括两个网络接口,分别是网络接口(networkinterface)a和网络接口b,可选的,网络接口a可以是无线保真(wireless-fidelit,wifi)网络接口,网络接口b可以是长期演进(longtermevolution,lte)网络接口,这里仅作为举例说明,不作具体限定。需要说明的是,这里以客户端设备包括两个网络接口仅作为举例说明,网络接口的数量不具体限定,可选的,可以是一个,也可以是多个。本申请中以包括两个网络接口作为举例说明。如果只包括一个网络接口的话,可以通过该仅有的一个网络端口建立多个tcp连接。如果包括三个网络接口,第三个tcp连接的建立过程和第二个网络接口类似,本申请中对此不再赘述。

具体的,消息交互步骤如下所示:

1:建立从客户端设备的网络接口a(如wifi网络接口)到服务器设备之间的mptcp主连接。这是一段消息范围,包含消息2,3,4,这部分和tcp建链的三次握手过程非常类似。

2:tcp/ip握手信号(syn)。该消息2中需要携带多路径能力(mp_capable)字段,用于表示客户端设备支持mptcp连接,该mp_capable字段内包含客户端设备的密钥(key)。

3:tcp/ip握手信号确认(tcp/ipsynack)。该消息3中需要携带mp_capable字段,用于表示服务器设备支持mptcp连接,该mp_capable字段内包含服务器设备的key,。

4:tcp/ip确认(tcp/ipack)。该消息4中需要携带mp_capable字段,该mp_capable字段内包含客户端设备的key和服务器设备的key,该mp_capable字段用于表示客户端设备和服务器设备均支持mptcp连接。至此,三次握手过程建立完成,mptcp主连接建立成功。

5:基于mptcp主连接的正常tcp数据传输过程。这是一段消息范围,包含消息6,7。

6:tcp/ip数据(data)。该消息6表示从客户端设备发往服务器设备的数据。

7:tcp/ipack。该消息7报文表示服务器设备回复客户端设备,已经接收到刚才客户端设备发来的数据。

8:采用四次握手的方式建立一条从客户端设备的网络接口b(如lte网络接口)到服务器设备之间的mptcp子连接。这是一段消息范围,包含消息9,10,11a,11b,这部分和tcp建链的三次握手过程非常类似。

9:tcp/ipsyn。该消息9报文中需要携带多路径加入(mp_join字段),该mp_join字段用于表示客户端设备支持mptcp连接,该mp_join字段内包含服务器设备的令牌(token-s),用于表示该子连接和第一部分建立的主连接同属于一个mptcp会话(session)。

10:tcp/ipsynack。消息10中需要携带mp_join字段,该mp_join字段内包含服务器设备的鉴权信息。

11a:tcp/ipack。消息11a报文中需要携带mp_join字段该mp_join字段内包含客户端设备的鉴权信息。

11b:tcp/ipack。该消息11b是tcp标准的ack消息,对消息11a做收到确认。至此,四次握手后,mptcp子连接建立成功。

12:基于mptcp子连接的数据传输过程。这是一段消息范围,包含步骤13,14,15。

13:mptcp层在发送数据前先进行调度,然后再决定采用主连接和子连接中的哪一条tcp流作为数据发送链路。

14:tcp/ipdata。该消息14表示从客户端设备经过子连接(subflow)发送一段数据给服务器设备。

15:tcp/ipack。消息15表示对消息14的确认。

需要说明的是,图2中只是举了一个例子说明一条mptcp子连接(图2步骤8-11b)的建立过程。mptcp支持任意条子连接,新的子连接建立方式和图2中步骤8,9,10,11a,11b流程相同。

具体的,图3是针对图2中步骤2,3,4,建立mptcp主连接过程的详细说明,其中图3中的客户端设备(client)表示图2中客户端设备的网络接口a(networkinterfacea),服务器设备(server)表示图2中的服务器设备。

具体的,建立mptcp主连接的详细过程如下所示:

消息2,客户端设备告诉服务器设备自身的key(如图3中的key-c),和加密认证能力(flags)信息。

消息3,服务器设备告诉客户端设备端自身的key(如图3中的key-s),和加密认证能力信息。

消息4,客户端设备基于两边的flags信息,选定最终的加密认证能力信息,并再发一遍双方的key,从而避免服务器设备维护状态,防止分布式拒绝服务(distributeddenialofservice,ddos)攻击。

具体的,图4是针对图2中步骤9,10,11a,11b,建立mptcp子连接过程的详细说明,其中客户端设备(client)表示图2中客户端设备设备的网络接口b(networkinterfaceb),服务器设备(server)表示图2中的服务器设备。

具体的,建立mptcp第二条流(子连接)的详细过程如下所示:

消息9,客户端设备告诉服务器设备要在哪个主连接上建立新的子连接,此时,该消息中需要携带服务器设备的令牌(如图4中的token-s)。本申请中token-s和key-s的关系利用下述计算式:

token-s={sha1(key-s)后20字节的计算结果中取高32bit},其中,sha1为安全哈希算法(securehashalgorithm),是现有的增加tcp子流时计算服务器的token的算法。

消息10,服务器设备将自身的鉴权信息(如图4中的hmac-s)发给客户端设备,该鉴权信息用于客户端设备对服务器设备的鉴权,从而验证服务器设备是否拥有客户端设备的密钥(key-c)和服务器设备的密钥(key-s)。其中,hmac-s=hmac(key=(key-s+key-c,msg=(nonce-s+nonce-c)),其中,hmac是现有的增加tcp子流时的认证算法,nonce是一个随机数,使用随机数的目的是为了使每次生成的鉴权信息都不一样,nonce-s表示服务器设备的随机数,nonce-c表示客户端设备的随机数,上述表达式的含义为:密钥以服务器设备的密钥作为高位、客户端设备的密钥作为低位,消息以服务器设备的随机数作为高位,客户端设备的随机数作为低位进行输入后,执行hmac计算得到服务器设备的鉴权信息。

消息11a,客户端设备将自身的鉴权信息(如图4中的hmac-c)发送给服务器设备,类似消息10中的鉴权,这里不再赘述。

其中:hmac-c=hmac(key=(key-c+key-s),msg=(nonce-c+nonce-s))

消息11b,服务器设备对11a消息的确认。

如图5所示,负载均衡(loadbalance,lb)作为一种集群技术,它将特定的业务(网络服务、网络流量等)分担给多台网络设备(包括服务器、防火墙等)或多条链路,从而提高了业务处理能力,保证了业务的高可靠性。

在数据中心(datacenter,dc)等组网环境中采用服务设备实现负载均衡,将网络服务分担给多台服务器进行处理,提高数据中心的业务处理能力。四层服务器在第4层工作,就是tcp层。四层负载均衡技术分为网络地址转换(networkaddresstranslation,nat)、隧道和直接路由(directrouting,dr)三种模式,其中dr模式最为常用。

具体的,图6所示为四层负载均衡最常用的dr流程,如图6所示,4层负载均衡架构中涉及的设备包括客户端设备、通用设备(generaldevice)可以是路由器、负载均衡设备(lbdevice)和服务器设备。

以下为dr流程中用到的术语含义。

vsip:(virtualserviceip),服务器集群对外提供的虚拟服务ip地址,供用户请求服务时使用。除了需要在负载均衡设备上配置,还要在服务器设备的回环(loopback)接口上配置vsip。

serverip:服务器的ip地址,供lbproduct分发服务请求时使用。

值得一提的是,负载均衡设备在封装报文时,目的ip地址为vsip,目的媒体接入控制(mediumaccesscontrol,mac)地址为服务器设备的mac地址,这里的目的mac地址通过利用地址解析协议(addressresolutionprotocol,arp)解析serverip获得,这样就能保证请求报文能顺利转发给服务器设备。

具体的,图6所示为,dr负载均衡的消息交互流程示意图。

(1)客户端设备以vsip为目的地址发送服务请求报文。

(2)通用设备收到服务请求报文后转发给负载均衡设备。需要注意的是,服务器设备上的vsip不能发送和响应arp请求,因此通用设备只会将请求转发给负载均衡设备。

(3)负载均衡设备收到服务请求报文后,借助调度算法计算出应该将该服务请求报文分发给哪台服务器设备。

需要注意的是,目前的负载均衡设备在做调度时,判断依据都是流的五元组(发送端ip地址,发送端端口,接收端ip地址,接收端端口,和传输层协议)。比如针对流的五元组做哈希(hash)运算得到hash值,然后根据hash值,把不同的流转发到针对该流计算的到哈希值对应的服务器上。

(4)负载均衡设备分发报文。

需要注意的是,负载均衡设备在封装报文时,目的ip地址为vsip,目的mac地址为server的mac地址,(目的mac地址通过利用arp协议,解析serverip获得),这样就能保证服务请求报文能顺利转发给server。

(5)服务器设备接收并处理服务请求报文,返回响应报文给通用设备。

需要注意的是,响应报文的目的ip地址为客户端设备ip。

(6)通用设备收到响应报文后,直接将响应报文转发给客户端设备。

需要说明的是,上述图6中的负载均衡方法在mptcp场景时,将不再适用,因为在mptcp场景下,一个mptcp连接是由多个tcp连接组成的,而且每个tcp连接的五元组之间都是没有任何关系的。如果按照传统的负载均衡机制,在第一个tcp连接建立完成之后,由于之后的第二个tcp连接的五元组与第一个tcp连接的五元组不同,第二个tcp连接会被转发到与第一个tcp连接不同的服务器,这样就造成接收到第二个tcp连接的服务器由于无法获取到第一个tcp连接的相关信息,从而无法成功建立第二个tcp连接,导致mptcp机制不起作用,使得通信效率低下。。

鉴于此,本申请实施例提供一种负载均衡系统、方法及装置,以解决现有的负载均衡机制下无法识别同一mptcp连接的tcp连接,导致mptcp机制不起作用,使得通信效率低下的问题。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。

图7示出了本申请实施例提供的负载均衡系统架构示意图,如图7所示,包括客户端设备、服务器设备和负载均衡设备,其中:

客户端设备,用于通过负载均衡设备向服务器设备发送用于请求建立第一tcp连接的第一消息;接收所述服务器设备发送的所述第一消息的响应消息,向所述负载均衡设备发送用于请求建立第二tcp连接的第二消息,其中,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于根据所述服务器设备的密钥计算所述服务器设备的令牌;所述第二消息包括所述客户端设备利用所述第一函数根据所述服务器设备的密钥计算出的所述服务器设备的令牌,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话。

所述服务器设备,用于接收客户端设备通过负载均衡设备发送的用于请求建立第一tcp连接的第一消息;向所述客户端设备发送所述第一消息的响应消息。

所述负载均衡设备,用于接收所述客户端设备发送的用于请求建立第一tcp连接的第一消息;将所述第一消息发送至服务器设备;接收所述客户端设备发送的用于请求建立第二tcp连接的第二消息;根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,将所述第二消息发送给所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接。

基于图7所示的系统架构,图8示出了本申请实施例提供的负载均衡方法流程示意图,该流程具体可通过硬件、软件编程或软硬件的结合来实现。

如图8所示,该流程具体包括有以下处理过程:

步骤80:服务器设备接收客户端设备通过负载均衡设备发送的用于请求建立第一tcp连接的第一消息。

需要说明的是,本申请中的第一tcp连接指的是mptcp主连接,第二tcp连接指的是mptcp子连接;所述第一消息可以为建立mptcp主连接的syn,所述第一消息中携带所述客户端设备的密钥。

进一步的,服务器设备在执行步骤80之后,执行步骤81之前,还需要执行以下过程:

所述服务器设备利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌,利用所述第一函数根据所述服务器设备的令牌计算所述服务器设备的密钥;所述第二函数为所述服务器设备和所述负载均衡设备之间协商的函数。

具体的,所述服务器设备利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌,可以通过以下过程实现:

所述服务器设备利用所述第二函数根据所述服务器设备的编号和第一密钥计算所述服务器设备的令牌;所述第一密钥为所述服务器设备和所述负载均衡设备之间协商的密钥。

步骤81:所述服务器设备向所述客户端设备发送所述第一消息的响应消息。

其中,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于根据所述服务器设备的密钥计算所述服务器设备的令牌。

可选的,在步骤81执行完毕之后,所述服务器设备接收所述客户端设备发送的建立第一tcp连接的确认消息,所述确认消息中携带所述客户端设备的密钥、以及所述服务器设备的密钥以及双方的加密认证能力消息。

步骤82:所述客户端设备向所述负载均衡设备发送用于请求建立第二tcp连接的第二消息。

其中,所述第二消息包括所述客户端设备利用所述第一函数根据所述服务器设备的密钥计算出的所述服务器设备的令牌,用于表示该第二tcp连接和第一部分建立的第一连接同属于一个mptcp会话,可选的,所述第二消息可以为建立mptcp子连接的syn。

步骤83:所述负载均衡设备根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,将所述第二消息发送给所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接。

具体的,所述负载均衡设备根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,可以通过以下过程实现:

所述负载均衡设备利用所述第二函数根据所述服务器设备的令牌计算所述服务器设备的编号,确定所述第二消息的目的设备为所述编号对应的服务器设备,所述第二函数为所述服务器设备和所述负载均衡设备之间协商的函数。

需要说明是,所述负载均衡设备计算得到所述服务器设备的编号之后,可选的,所述服务器设备的编号包括所述服务器设备的标识和所述mptcp会话的标识,所述负载均衡设备根据所述服务器设备的编号中包括的所述服务器设备的标识将第二tcp连接的建立消息转发至所述服务器设备。

通过上述流程可知,本申请采用新的负载均衡机制,对mptcp主连接,保持传统的负载均衡方式,如五元组hash等。对mptcp子连接,通过识别出建立第二tcp连接的第二消息的服务器设备的令牌字段,计算出mptcp主连接所在的服务器编号,从而根据计算得到的服务器设备编号,把mptcp子连接转发到与mptcp主连接相同的服务器设备上。

具体的,图9所示,为采用图8所示的负载均衡方法实现mptcp的连接建立的消息的交互流程示意图,如图9所示,该流程主要涉及三个设备,分别是客户端设备、服务器设备和负载均衡设备,其中客户端设备包括两个网络接口,分别是网络接口a和网络接口b,可选的,网络接口a可以是wifi网络接口,网络接口b可以是lte网络接口,这里仅作为举例说明,不作具体限定。需要说明的是,这里以客户端设备包括两个网络接口仅作为举例说明,网络接口的数量不具体限定,可选的,可以是一个,也可以是多个。本申请中以包括两个网络接口作为举例说明。如果只包括一个网络接口的话,可以通过该仅有的一个网络端口建立多个tcp连接。如果包括三个网络接口,第三个tcp连接的建立过程和第二个网络接口类似,本申请中对此不再赘述。

和图2中的消息流程类似,这里把mptcp主连接和mptcp子连接中的每一个消息行为都做了详细解释,而且和图2相比,该网络架构增加了介于客户端设备和服务器设备中间的负载均衡设备,用来做负载均衡。具体的,消息交互步骤如下所示:

预协商步骤:如图9中所示,负载均衡设备和服务器设备之间的双向箭头所示,本申请需要在负载均衡设备和服务器设备之间,预先协商共享第一密钥和一种加密函数,这里的块加密函数本申请中前述的第二函数,可选的,这里的第一密钥为一个32位秘钥值k。可选的,协商的加密函数可以为块加密函数,用block_cipher1表示,可选的,本申请中明中采用rc5_32位加密算法。需要说明的是,秘钥值k的具体生成和共享方法,以及块加密函数block_cipher1的协商方法,本申请不做任何规定,可以采取预先配置,或者其他现有方法协议。另外,rc532位加密算法,只是从可行性角度做的验证,满足这种条件的函数可能有多个,本申请中只作举例说明,不作具体限定。

91:建立从客户端设备的网络接口a(如wifi网络接口)到服务器设备之间的mptcp主连接。这是一段消息范围,包含消息92,93,94,消息格式和图2中对应消息没有区别。

92:tcp/ipsyn。该消息92本身和图2中的消息2没有任何区别。负载均衡设备收到该消息92后,按照传统的负载均衡模式,把tcp流分配到某台服务器设备上。

该服务器设备收到消息92后,需要按照本申请规定的步骤计算出自己的令牌(token-s)和密钥(key-s)。具体的生成步骤如下:

1)对每个服务器设备进行编号(32位):n。(注意,这里的n将会是一段连续的整数。整数的某几位(如10bit)表示server标识(id),剩余位数为(如22bit)为每个mptcp会话的id)

2)生成token-s,token-s=block_cipher1(n,k),其中k和block_cipher1是前面预协商步骤中定义的,这里的k就是本申请前述的第一密钥。按照这种方法计算出的token-s,因为每台服务器设备的编号n都不同,使用不同的编号和rc5_32加密来生成token-s,所以能够确保不会发生不同服务器设备产生相同的令牌从而出现冲突的问题。

3)服务器设备生成密钥。

具体的,服务器设备生成32位随机数l,作为key-s的低32位。

服务器设备侧,根据公式token-s=block_cipher2(h,l),算出key-s的高32位,用h表示。可选的,block_cipher2也是rc5_32块加密函数,就是本申请前述的第一函数。

这里规定服务器设备的key-s为(h,l)(64位)。并在图9消息93中把该key-s发送给客户端设备,且在服务器设备的flags字段中用某一位来表示采用的block_cipher2函数类型。

93:tcp/ipsynack。消息93和图2中的消息3的消息格式一样。区别在于图9消息93中的密钥,是用的上一步中服务器设备算出来的密钥。而不是原来标准rfc6824中不做任何规定,或者linux内核中采用的是64位随机数。

94:tcp/ipack。消息94报文本身和图2消息4没有任何区别。

95:基于mptcp主连接的正常tcp数据传输过程,这部分是一段消息范围,包含消息96,97,和图2中的消息6,7没有区别。

96:tcp/ipdata。消息96报文和图2消息6没有区别。

97:tcp/ipack。消息97报文和图2消息7没有区别。

98:采用四次握手的方式建立一条从客户端设备的网络接口b(如lte网络接口)到服务器设备之间的mptcp子连接。这是一段消息范围,包含消息99,910,911a,911b。消息格式和图2中的消息8没有区别。

但是客户端设备需要在该步骤开始前,根据图9的消息93中,收到的服务器设备的密钥,和flags字段规定的加密函数,根据公式token-s=block_cipher2(h,l),自行计算出服务器设备的令牌,即token-s。并在建立mptcp子连接(subflow)的syn报文(图9消息99)中携带上该token-s。

99:tcp/ipsyn。消息99报文的格式图2的消息9格式一样。区别在于图9消息99中携带的服务器设备的令牌需要用步骤98中算出的token-s。

另外,负载均衡设备收到消息99后,解析出服务器设备的令牌。再根据k(前面预先协商好的),block_cipher1,及公式token-s=block_cipher1(n,k),计算出服务器设备编号n。从而知道该把该消息转发到哪个正确的服务器设备地址,即正确转发到mptcp主连接所在的服务器设备。至此就已经实现了mptcp流的不同tcp子流之间,统一的负载均衡,即主流和子流都会被转发到相同的服务器上。

需要说明的是,负载均衡设备在计算出服务器设备编号n之后,可以通过获取n中的server标识,来确定所述server标识对应的服务器设备。相应地,所述服务器设备收到所述负载均衡设备发送的所述消息99后,可以根据所述消息99中包括的token计算出n,并根据从n中获取的所述mptcp会话的标识确定与所述消息99请求建立的tcp连接所属的mptcp会话。

因为服务器设备采用特殊的令牌和密钥的生成方式,保证负载均衡设备可以实现mptcp流的不同tcp子流之间统一的负载均衡。即,同一mptcp会话的所有tcp子流都能够被转发到相同的服务器设备上。

910:tcp/ipsynack。消息910报文和图2消息10没有区别。

911a:tcp/ipack。消息911a报文和图2消息11a没有区别。

911b:tcp/ipack。消息911b报文和图2消息11b没有区别。

912:基于mptcp子连接的数据传输过程。这是一段消息范围,包含步骤913,914,915,和图2中的步骤13,14,15没有区别。

913:mptcp层在发送数据前先进行调度,然后再决定采用主连接和子连接中的哪一条tcp流作为数据发送链路。和图2中步骤13没有区别。

914:tcp/ipdata。消息914报文和图2中消息14没有区别。

915:tcp/ipack。消息915报文和图2中消息15没有区别。

下面通过两个应用场景来介绍图8和图9的负载均衡方法应用示意。

如图10所示,为混合接入(bondingaccess,ba)场景下的负载均衡方法应用示意图。该应用场景下涉及的设备包括:

客户端设备(client):比如家庭用户家里的电脑(pc),可以用来访问外部的某些服务器上的应用,比如看视频,同时该pc支持mptcp协议。

家庭网关(homegateway,hg):是运营商安装在用户家里的网络接入设备。这种接入设备在广域网(wideareanetwork,wan)端可能会有多种接口,如非对称数字用户线路(asymmetricaldigitalsubscriberloop,adsl),wifi,lte等。这些多接口可以被用来作为mptcp多路径传输的不同出口,从而实现混合接入。

路由器1/路由器2:传输链路上的路由设备。

负载均衡设备:用来对混合接入汇聚节点(hybridaccessaggregationpoint,haap)设备做负载均衡。

haap集群,包括多个haap设备,负责终结来自不同hg设备的混合接入请求,图10示出了两个haap设备,分别是haap1和haap2。

服务器设备:指运行某种应用的服务器。

ba场景下:

负载均衡设备为tcp流1确定haap设备编号n,编号n对应的haap设备把相应的token发给hg,图10以n为1为例进行示意。

hg在建tcp流2时,把haap1发来的token带上发送给负载均衡设备,负载均衡设备根据token再计算出haap设备编号n,负载均衡设备根据编号n把tcp流2转到相同的haap设备上。

这样,负载均衡设备可以实现mptcp流的不同tcp子流之间统一的负载均衡。即,同一mptcpsession的所有tcp子流都能够被转发到相同的haap设备上。

如图11所示,为数据中心场景下的负载均衡方法应用示意图。该应用场景下涉及的设备包括:

客户端设备(client):比如家庭用户家里的电脑(pc),可以用来访问外部的某些服务器上的应用,比如看视频,同时该pc支持mptcp协议。

路由器1/路由器2:传输链路上的路由设备。

等价多路径负载均衡设备(equal-costmultipathrouting,ecmp):通过对流的五元组计算hash值,实现等价多路径的负载均衡。

负载均衡设备,这里为lb1/lb2:用来对服务器设备做负载均衡。

服务器设备,这里为server1/server2,该服务器设备支持mptcp协议。

dc场景下:

lb1为tcp流1确定服务器设备编号n,对应编号n的服务器设备把相应的token发给客户端设备,图11以n为1为例进行示意。

客户端设备在建tcp流2时,把服务器设备发来的token带上,lb2再计算出服务器设备编号n,lb2根据服务器设备编号n把tcp流2转到编号为n的相同的服务器设备上。

这样,lb1/lb2可以实现mptcp流的不同tcp流之间统一的负载均衡。即,同一mptcp会话的所有tcp子流都能够被转发到相同的服务器上。

基于上述实施例提供的负载均衡方法,请参见图12所示,本申请实施例提供一种负载均衡装置1200,该装置1200应用于服务器设备,图12所示为本申请实施例提供的装置1200的结构示意图,如图12所示,该装置1200包括接收单元1201、处理单元1202和发送单元1203,其中:

接收单元1201,用于接收客户端设备通过负载均衡设备发送的用于请求建立第一tcp连接的第一消息;

处理单元1202,用于根据所述第一消息生成第一消息的响应消息;

发送单元1203,用于向所述客户端设备发送所述第一消息的响应消息,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于所述客户端根据所述服务器设备的密钥计算所述服务器设备的令牌,以根据所述服务器设备的令牌建立与所述服务器之间的与所述第一tcp连接属于同一个mptcp会话的第二tcp连接。

可选的,所述处理单元1202还用于:

利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌,利用所述第一函数根据所述服务器设备的令牌计算所述服务器设备的密钥;所述第二函数为所述服务器设备和所述负载均衡设备之间协商的函数。

可选的,所述处理单元1202在利用第二函数根据所述服务器设备的编号计算所述服务器设备的令牌时,具体用于:

利用所述第二函数根据所述服务器设备的编号和第一密钥计算所述服务器设备的令牌;所述第一密钥为所述服务器设备和所述负载均衡设备之间协商的密钥。

应理解以上装置1200中的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。例如,以上各个单元可以为单独设立的处理元件,也可以集成在服务器的某一个芯片中实现,此外,也可以以程序代码的形式存储于服务器的存储元件中,由服务器的某一个处理元件调用并执行以上各个单元的功能。此外各个单元可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,asic),或,一个或多个微处理器(digitalsingnalprocessor,dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,fpga)等。

需要说明的是,本申请实施例中的装置1200的各个单元的功能实现以及交互方式可以进一步参照相关方法实施例的描述,在此不再赘述。

本申请实施例还提供一种服务器设备1300,图13所示为本申请实施例提供的服务器设备1300的结构示意图,如图13所示,该服务器设备1300包括处理器1301,存储器1302、发射器1303和接收器1304,执行本发明方案的程序代码保存在存储器1302中,并由处理器1301来控制执行。

存储器1302中存储的程序用于指令处理器1301执行负载均衡方法,包括:接收客户端设备通过负载均衡设备发送的用于请求建立第一tcp连接的第一消息;根据所述第一消息生成第一消息的响应消息;向所述客户端设备发送所述第一消息的响应消息,所述第一消息的响应消息包括所述服务器设备1300的密钥和第一函数,所述第一函数用于所述客户端根据所述服务器设备1300的密钥计算所述服务器设备1300的令牌,以根据所述服务器设备1300的令牌建立与所述服务器之间的与所述第一tcp连接属于同一个mptcp会话的第二tcp连接。

可选的,所述处理器1301还用于:

利用第二函数根据所述服务器设备1300的编号计算所述服务器设备1300的令牌,利用所述第一函数根据所述服务器设备1300的令牌计算所述服务器设备1300的密钥;所述第二函数为所述服务器设备1300和所述负载均衡设备之间协商的函数。

可选的,所述处理器1301在利用第二函数根据所述服务器设备1300的编号计算所述服务器设备1300的令牌时,具体用于:

利用所述第二函数根据所述服务器设备1300的编号和第一密钥计算所述服务器设备1300的令牌;所述第一密钥为所述服务器设备1300和所述负载均衡设备之间协商的密钥。

可以理解的是,本实施例的服务器设备1300可用于实现上述方法实施例中涉及服务器设备的所有功能,其具体实现过程可以参照上述方法实施例服务器设备执行方法的相关描述,此处不再赘述。

可以理解的是,本申请实施例上述服务器设备1300中涉及的处理器1301可以是一个通用中央处理器(cpu),微处理器,特定应用集成电路application-specificintegratedcircuit(asic),或一个或多个用于控制本发明方案程序执行的集成电路。计算机系统中包括的一个或多个存储器,可以是只读存储器read-onlymemory(rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器randomaccessmemory(ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存储器。这些存储器通过总线与处理器相连接。

接收器1304和发射器1303可以通过收发器实现其功能,所述收发器可以是能够实现收发功能的实体模块,以便与其他设备或通信网络通信。

存储器1302,如ram,保存有操作系统和执行本发明方案的程序。操作系统是用于控制其他程序运行,管理系统资源的程序。

这些存储器1302、发射器1303和接收器1304可以通过总线与处理器1301相连接,或者也可以通过专门的连接线分别与处理器1301连接。

通过对处理器1301进行设计编程,将上面所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图8~图11所示的方法中服务器设备的执行过程。

基于上述实施例提供的负载均衡方法,请参见图14所示,本申请实施例提供一种负载均衡装置1400,该装置1400应用于客户端设备,图14所示为本申请实施例提供的装置1400的结构示意图,如图14所示,该装置1400包括接收单元1401、处理单元1402和发送单元1403,其中:

发送单元1403,用于通过负载均衡设备向服务器设备发送用于请求建立第一tcp连接的第一消息;

接收单元1401,用于接收所述服务器设备发送的所述第一消息的响应消息,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于根据所述服务器设备的密钥计算所述服务器设备的令牌;

处理单元1402,用于利用所述第一函数根据所述服务器设备的密钥计算出所述服务器设备的令牌,并向所述负载均衡设备发送用于请求建立第二tcp连接的第二消息,所述第二消息包括所述服务器设备的令牌,所述服务器设备的令牌用于所述负载均衡设备确定所述第二消息的目的设备为所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话。

应理解以上装置1400中的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。例如,以上各个单元可以为单独设立的处理元件,也可以集成在客户端的某一个芯片中实现,此外,也可以以程序代码的形式存储于服务器的存储元件中,由客户端的某一个处理元件调用并执行以上各个单元的功能。此外各个单元可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(applicationspecificintegratedcircuit,asic),或,一个或多个微处理器(digitalsingnalprocessor,dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,fpga)等。

需要说明的是,本申请实施例中的装置1400的各个单元的功能实现以及交互方式可以进一步参照相关方法实施例的描述,在此不再赘述。

本申请实施例还提供一种客户端设备1500,图15所示为本申请实施例提供的客户端设备1500的结构示意图,如图15所示,该客户端设备1500包括处理器1501,存储器1502、发射器1503和接收器1504,执行本发明方案的程序代码保存在存储器1502中,并由处理器1501来控制执行。

存储器1502中存储的程序用于指令处理器1501执行负载均衡方法,包括:通过负载均衡设备向服务器设备发送用于请求建立第一tcp连接的第一消息;接收所述服务器设备发送的所述第一消息的响应消息,所述第一消息的响应消息包括所述服务器设备的密钥和第一函数,所述第一函数用于根据所述服务器设备的密钥计算所述服务器设备的令牌;利用所述第一函数根据所述服务器设备的密钥计算出所述服务器设备的令牌,并向所述负载均衡设备发送用于请求建立第二tcp连接的第二消息,所述第二消息包括所述服务器设备的令牌,所述服务器设备的令牌用于所述负载均衡设备确定所述第二消息的目的设备为所述服务器设备,以在所述客户端设备1500和所述服务器设备之间建立所述第二tcp连接,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话。

可以理解的是,本实施例的客户端设备1500可用于实现上述方法实施例中涉及客户端设备的所有功能,其具体实现过程可以参照上述方法实施例客户端设备执行方法的相关描述,此处不再赘述。

可以理解的是,本申请实施例上述客户端设备1500中涉及的处理器1501可以是一个通用中央处理器(cpu),微处理器,特定应用集成电路application-specificintegratedcircuit(asic),或一个或多个用于控制本发明方案程序执行的集成电路。计算机系统中包括的一个或多个存储器,可以是只读存储器read-onlymemory(rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器randomaccessmemory(ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存储器。这些存储器通过总线与处理器相连接。

接收器1504和发射器1503可以通过收发器实现其功能,所述收发器可以是能够实现收发功能的实体模块,以便与其他设备或通信网络通信。

存储器1502,如ram,保存有操作系统和执行本发明方案的程序。操作系统是用于控制其他程序运行,管理系统资源的程序。

这些存储器1502、发射器1503和接收器1504可以通过总线与处理器1501相连接,或者也可以通过专门的连接线分别与处理器1501连接。

通过对处理器1501进行设计编程,将上面所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图8~图11所示的方法中客户端设备的执行过程。

基于上述实施例提供的负载均衡方法,请参见图16所示,本申请实施例提供一种负载均衡装置1600,图16所示为本申请实施例提供的装置1600的结构示意图,如图16所示,该装置1600包括接收单元1601、处理单元1602和发送单元1603,其中:

接收单元1601,用于接收客户端设备发送的用于请求建立第一tcp连接的第一消息;

发送单元1603,用于将所述第一消息发送至服务器设备;

所述接收单元1601,还用于接收所述客户端设备发送的用于请求建立第二tcp连接的第二消息,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话,所述第二消息包括所述服务器设备的令牌;

处理单元1602,用于根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,将所述第二消息发送给所述服务器设备,以在所述客户端设备和所述服务器设备之间建立所述第二tcp连接。

可选的,所述处理单元1602在根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备时,具体用于:

根据所述服务器设备的令牌计算所述服务器设备的编号,确定所述第二消息的目的设备为所述编号对应的服务器设备。

可选的,所述处理单元1602在根据所述服务器设备的令牌计算所述服务器设备的编号时,具体用于:

利用所述负载均衡设备与所述服务器设备之间协商的函数根据所述服务器设备的令牌计算所述服务器设备的编号。

应理解以上装置1600中的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。例如,以上各个单元可以为单独设立的处理元件,也可以集成在负载均衡器的某一个芯片中实现,此外,也可以以程序代码的形式存储于负载均衡器的存储元件中,由负载均衡器的某一个处理元件调用并执行以上各个单元的功能。此外各个单元可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。该处理元件可以是通用处理器,例如中央处理器(centralprocessingunit,cpu),还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路

(applicationspecificintegratedcircuit,asic),或,一个或多个微处理器(digitalsingnalprocessor,dsp),或,一个或者多个现场可编程门阵列(fieldprogrammablegatearray,fpga)等。

需要说明的是,本申请实施例中的装置1600的各个单元的功能实现以及交互方式可以进一步参照相关方法实施例的描述,在此不再赘述。

本申请实施例还提供一种负载均衡设备1700,图17所示为本申请实施例提供的负载均衡设备1700的结构示意图,如图17所示,该负载均衡设备1700包括处理器1701,存储器1702、发射器1703和接收器1704,执行本发明方案的程序代码保存在存储器1702中,并由处理器1701来控制执行。

存储器1702中存储的程序用于指令处理器1701执行负载均衡方法,包括:接收客户端设备发送的用于请求建立第一tcp连接的第一消息;将所述第一消息发送至服务器设备;接收所述客户端设备发送的用于请求建立第二tcp连接的第二消息,所述第二tcp连接和所述第一tcp连接属于同一个mptcp会话,所述第二消息包括所述服务器设备的令牌;根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备,将所述第二消息发送给所述服务器设备,以在所述客户端设备和所述和所述服务器设备之间建立所述第二tcp连接。

可选的,所述处理器1701在根据所述第二消息包括的所述服务器设备的令牌确定所述第二消息的目的设备为所述服务器设备时,具体用于:

根据所述服务器设备的令牌计算所述服务器设备的编号,确定所述第二消息的目的设备为所述编号对应的服务器设备。

可选的,所述处理器1701在根据所述服务器设备的令牌计算所述服务器设备的编号时,具体用于:

利用所述负载均衡设备1700与所述服务器设备之间协商的函数根据所述服务器设备的令牌计算所述服务器设备的编号。

可以理解的是,本实施例的负载均衡设备1700可用于实现上述方法实施例中涉及负载均衡设备的所有功能,其具体实现过程可以参照上述方法实施例负载均衡设备执行方法的相关描述,此处不再赘述。

可以理解的是,本申请实施例上述负载均衡设备1700中涉及的处理器1701可以是一个通用中央处理器(cpu),微处理器,特定应用集成电路application-specificintegratedcircuit(asic),或一个或多个用于控制本发明方案程序执行的集成电路。计算机系统中包括的一个或多个存储器,可以是只读存储器read-onlymemory(rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器randomaccessmemory(ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存储器。这些存储器通过总线与处理器相连接。

接收器1704和发射器1703可以通过收发器实现其功能,所述收发器可以是能够实现收发功能的实体模块,以便与其他设备或通信网络通信。

存储器1702,如ram,保存有操作系统和执行本发明方案的程序。操作系统是用于控制其他程序运行,管理系统资源的程序。

这些存储器1702、发射器1703和接收器1704可以通过总线与处理器1701相连接,或者也可以通过专门的连接线分别与处理器1701连接。

通过对处理器1701进行设计编程,将上面所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图8~图11所示的方法中负载均衡设备的执行过程。

本领域内的技术人员应明白,本申请实施例可提供为方法、系统、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1