基于负载均衡技术的报文处理方法、***及设备
技术领域
本发明涉及一种通信技术,尤其涉及基于负载均衡技术的报文处理方法及***以及相应的负载均衡设备和路由转发设备。
背景技术
负载均衡技术是指采用一组服务器群代替单台服务器,该服务器群由多台服务器以对称方式组成,每台服务器都具有同等地位,均能单独对外提供服务,在该服务器群前增加负载均衡设备,客户端只需要访问负载均衡设备提供的虚拟IP(Virtual IP,简称VIP)地址,再由负载均衡设备按一定的规则选择一台服务器为客户端提供服务的技术。该技术可以平衡服务器群中所有服务器之间的通信负载,从而提高整个网站的性能和响应能力,提高服务器群的效率,节省投资。
如图1所示为具有负载均衡设备的网络通信***,该***包括客户端10等多个客户端,通过网络与负载均衡设备20及路由转发设备30相连接;负载均衡设备20与具有多个服务器的服务器池40相连。假设负载均衡设备20的VIP地址为2.1.1.10,预设的端口为80;其中包括服务器41、42及43等多个服务器,每个服务器有2个地址,一个是与负载均衡设备20相同的VIP地址2.1.1.10,另一个是与服务器MAC地址相对应的IP地址分别为2.1.1.1,2.1.1.2,及2.1.1.3;服务器池40中的服务器的缺省网关为路由转发设备30。假设由客户端10发送请求报文时,步骤如下:
1、客户端10向网络中发送报文1,源地址为客户端10的IP地址及端口1.1.1.1:1234,目的地址为负载均衡设备20的VIP地址及端口 2.1.1.10:80;
2、负载均衡设备20接收到报文1后,根据该报文的报文头中的目的地址2.1.1.10:80,从服务器池40中的服务器中选择一个,假设选择IP地址为2.1.1.2的服务器42,不修改报文头中的目的IP地址,而直接将报文1封装为以太报文,即报文2,该报文的目的MAC(Media AccessControl,媒体访问控制)地址为服务器42的MAC地址,源MAC地址为负载均衡设备20的MAC地址.将该以太报文直接发送给服务器42;
3、服务器42收到报文2后,因其目的MAC地址和目的IP地址均属于本服务器,因此能够成功接入,对客户端10的请求提供服务并回复应答报文,即报文3,该报文的源地址为负载均衡设备20的VIP地址及端口2.1.1.10:80,目的地址为客户端10的地址1.1.1.1:1234,具体地,服务器42查找缺省网关,即路由转发设备30,将报3发送给路由转发设备;
4、路由转发设备30接收到报文3后,查找路由表,生成报文4转发给客户报文4的源地址为2.1.1.10:80,目的地址为1.1.1.1:1234。
在现有技术中,某些通信过程中的端口需要进行动态配置,即由服务器通过控制连接通知客户端需要配置的端口,客户端根据该端口建立数据连接。如图2所示为FTP Passive(被动)方式的信令图,在建立控制连接时,服务器在固定端口21进行监听,客户端通过同步(syn)及确认(ack)等控制连接命令与服务器建立控制连接;客户端向服务器发送PASV(PASsiVe,被动)命令,通知服务器它处于被动模式;服务器选择一个空闲端口(如p1p2端口)作为数据端口,并将该端口通过应答报文(如图2中的“227EnteringPassive Mode(h1,h2,h3,h4,p1,p2)”命令)通知客户端进入被动模式;客户端收到应答后,根据其中携带的数据端口与服务器建立数据连接。可见数据端口的选择是动态的,对于客户端不能预先得知。
现有技术的缺陷在于:对于上述需要进行动态端口配置的通信过程,负载均衡设备只处理来自于客户端的请求报文而来自于服务器的应答报文不经过负载均衡设备,因此在某些需要进行动态端口配置的协议应用中,由于负载均衡设备不知道应答报文中配置了哪些端口,因此会将发往这些端口的请求报文判断为非法,造成通信无法继续进行。如图3所示为基于负载均衡技术的FTP Passive方式的信令图,从图中可以看出,服务器发往客户端的应答报文不经过负载均衡设备,重要地,“227Entering PassiveMode(h1,h2,h3,h4,p1,p2)”命令不经过负载均衡设备,因此该负载均衡设备不知道服务器为客户端指定了动态端口p1p2,客户端根据该端口发送的报文被负载均衡设备判断为非法,从而使数据链接无法创建。
发明内容
本发明要解决的问题是:现有基于负载均衡技术的通信***不能支持动态端口服务。
为了解决上述问题,本发明的一个实施例提供了一种基于负载均衡技术的报文处理方法,包括:预先在负载均衡设备中设置动态端口服务表,该动态端口服务表根据来自于路由转发设备的服务表更新消息进行更新;负载均衡设备接收到客户端的请求报文后,判断该请求报文的目的端口是否为本设备所配置的服务端口,是则将该请求报文转发给从相应的服务器池中选择的服务器;否则将该请求报文转发给根据动态端口服务表从所述服务器池中选择的服务器;其中所述服务表更新消息中携带有所述路由转发设备从来自于所述服务器的应答报文中获得的动态端口信息。
为了解决上述问题,本发明的另一个实施例提供了一种基于负载均衡技术的报文处理***,包括客户端,负载均衡设备,服务器池及路由转发设备,其中负载均衡设备和路由转发设备分别与通信网络和服务器池相连接,其中,
所述负载均衡设备包括,
端口模块,用于判断该请求报文的目的端口是否为本设备所配置的服务端口,并将判断结果发送给转发模块;其中所述服务表更新消息中携带有所述路由转发设备从来自于所述服务器的应答报文中获得的动态端口信息;
转发模块,用于根据判断结果及动态端口服务表选择服务器,转发请求报文;
服务表模块,用于保存动态端口服务表并根据来自于路由转发设备的服 务表更新消息对动态端口服务表进行更新;其中所述服务表更新消息中携带有所述路由转发设备从来自于所述服务器的应答报文中获得的动态端口信息;
所述路由转发设备包括:
消息模块,用于根据应答报文中的动态端口信息生成服务表更新消息发送给负载均衡设备。
为了解决上述问题,本发明的另一个实施例还提供了一种负载均衡设备,包括服务表模块,端口模块和转发模块,其中:
服务表模块,用于保存动态端口服务表并根据来自于路由转发设备的服务表更新消息对动态端口服务表进行更新;
端口模块,用于判断该请求报文的目的端口是否为本设备所配置的服务端口,并将判断结果发送给转发模块;
转发模块,用于根据判断结果及动态端口服务表从服务器池中选择服务器,转发请求报文;
为了解决上述问题,本发明的另一个实施例还提供了一种路由转发设备,包括消息模块,用于根据应答报文中的动态端口信息生成服务表更新消息发送给负载均衡设备,该服务表更新消息用于对预先设置在所述负载均衡设备中的动态端口服务表进行更新;其中所述服务表更新消息中携带有所述路由转发设备从来自于所述服务器的应答报文中获得的动态端口信息。
通过本发明,路由转发设备和负载均衡设备相互配合实现了对动态端口服务的支持,扩大了***的应用范围。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为现有技术中具有负载均衡设备的网络通信***的结构示意图;
图2为现有技术中FTP被动方式的信令图;
图3为在图1所示网络通信***上应用FTP被动方式的信令图;
图4为本发明所述方法实施例的流程图;
图5为本发明所述***实施例的结构示意图。
具体实施方式
本发明所述方法的具体实施例如下:
本实施例提供了一种能够实现动态端口配置的基于负载均衡技术的报文处理方法,如图4所示,
步骤101,客户端通过通信网络向负载均衡设备发送请求报文。具体地,客户端可以与负载均衡设备处于同一子网中,也可以处于不同子网中,如果处于不同子网可以根据现有技术通过通信网络中的转发设备进行转发。
步骤102,负载均衡设备接收请求报文后,判断该请求报文的目的端口是否为本设备所配置的服务端口,是则执行步骤110,否则执行步骤120。
此处需要特别指出的是,本步骤之前还可以首先判断该报文所属的连接是否已存在,是则将该请求报文直接转发给该连接所对应的服务器而不需要对端口的一致性进行判断。这是因为负载均衡设备可以对已转发过的服务器进行记录,当接收到属于同一连接的请求报文时,直接将这些请求报文均转发给服务器池中的同一个服务器,由该服务器统一对该连接提供服务,因此不需要对每个请求报文都重新选择服务器,有利于提高***工作效率。
步骤110,将该请求报文转发给从相应的服务器池中选择的服务器。请求报文中包括有目的IP地址和目的端口,具有相同VIP地址的服务器池与之对应,该服务器池中包括有多个服务器,如果负载均衡设备所配置的服务端口与该请求报文的目的端口一致则根据该请求报文的报文头中的目的地址从服务器池中选择一个服务器发送该请求报文。
步骤120,将该请求报文转发给根据动态端口服务表选择的服务器。动态端口服务表保存有动态端口的配置信息,每个服务表项的格式如表1所示,
表1
客户端的IP 地址 |
客户端的 数据端口 |
数据的协 议类型 |
目的服务器 的IP地址 |
目的服务器 的数据端口 |
如果负载均衡设备所配置的服务端口与该请求报文的目的端口不一致时根据动态端口服务表选择服务器,将该请求报文发往该服务器。例如,客户端发送的请求报文中,源地址为1.1.1.1:1234,目的地址为2.1.1.10:5678,假设此时负载均衡设备所配置的服务端口为80则说明目的端口与服务端口不一致。对动态端口服务表进行查找,找到一个服务表项如表2所示,
表2
客户端的IP 地址 |
客户端的 数据端口 |
数据的协 议类型 |
目的服务器 的IP地址 |
目的服务器 的数据端口 |
1.1.1.1 |
1234 |
TCP |
2.1.1.2 |
5678 |
该服务表项说明IP地址为2.1.1.2的服务器为该请求报文配置了相应的动态端口,负载均衡设备根据上述信息将该请求报文转发给VIP地址为2.1.1.10的服务器池中的IP地址为2.1.1.2的服务器。如果在动态端口服务表中未找到相应的服务表项,则说明该请求报文为非法请求,将其丢弃。另外,还可以对该请求报文的种类进行判断,如果该请求报文为断开连接报文,说明该请求报文所在的数据连接已经结束,则删除动态端口服务表中相应的服务表项,以节省存储空间。
步骤130,服务器接收到来自于负载均衡设备的请求报文后,对客户端的请求提供服务,并向路由转发设备发送应答报文。其中,路由转发设备可以是缺省的路由转发设备,即服务器只能通过该路由转发设备连接到外部网络;或者也可以有多个路由转发设备供服务器进行选择。本步骤中的路由转发设备可以是路由器或三层交换机等具有路由转发功能的设备。
步骤131,路由转发设备接收到该应答报文后,将该应答报文转发给相应的客户端,并判断该应答报文中是否携带有动态端口信息,是则向该应答报文所对应的负载均衡设备发送携带有该动态端口信息的服务表更新消息。其中,服务表更新消息具有表1中所述的各项内容,负载均衡设备接收到该服务表更新消息后对本设备的动态端口服务表进行更新。相应的客户端接收到由路由转发设备转发的应答报文后根据其中的动态端口信息再次向负载均
此处需要特别指出的是,现有技术中某些应答报文肯定不会携带动态端口信息,如FTP协议中的控制报文通常是固定地通过端口21进行传输而不会动态变化。基于此,本步骤中,在判断应答报文中是否携带有动态端口信息之前,也可以先判断是否需要检查该应答报文中的动态端口信息,如果不需要则直接将该应答报文转发给相应的客户端,而不需要再向负载均衡设备发送服务表更新消息。从而可以进一步***开销,提高传输效率。
通过本实施例所述方法,路由转发设备和负载均衡设备相互配合实现了对动态端口服务的支持,扩大了***的应用范围。
本发明所述***的具体实施例如下:
本实施例提供了一种基于负载均衡技术的报文处理***。如图5所示,包括客户端10等多个客户端,负载均衡设备20,包含有服务器41、42、43等多个服务器的服务器池40及路由转发设备30。其中负载均衡设备20和路由转发设备30分别与通信网络和服务器池40相连接。其中负载均衡设备20包括端口模块21,转发模块23及服务表模块22;路由转发设备30包括消息模块31。本实施例中的路由转发设备30可以为路由器或三层交换机等具有路由转发功能的设备。以下以客户端10发出请求报文为例说明本***的报文处理过程。
客户端10通过通信网络向负载均衡设备20发送请求报文。负载均衡设备20接收到请求报文后,端口模块21判断该报文所属的连接是否已存在,若存在则将判断结果发送转发模块23,转发模块23将该请求报文直接转发给该连接所对应的服务器,假设发送给服务器池40中的服务器42;若不存在则进一步判断该请求报文的目的端口是否为本设备所配置的服务端口,并将判断结果发送转发模块23。
转发模块23根据来自于端口模块21的判断结果选择服务器转发请求报文。具体地,如果目的端口与服务端口一致,则根据现有的负载均衡设备对服务器的选择方案从相应的服务器池中选择的服务器转发请求报文;如果目 的端口与服务端口不一致,则根据服务表模块22中保存的动态端口服务表选择服务器,假设选择的服务器是服务器42,将请求报文转发给服务器42。动态端口服务表中的服务表项的格式参见表1。如果在动态端口服务表中未找到相应的服务表项,则说明该请求报文为非法请求,将其丢弃。
另外,转发模块23还可以对该请求报文的种类进行判断,如果该请求报文为断开连接报文,说明该请求报文所在的数据连接已经结束,则向服务表模块22发送删除指令,服务表模块22接收到该指令后删除动态端口服务表中相应的服务表项,以节省存储空间。
服务器42接收到来自于负载均衡设备20的请求报文后,对客户端10的请求提供服务,并向路由转发设备30发送应答报文。路由转发设备30接收到该应答报文后,将该应答报文转发给相应的客户端10。并且消息模块31判断该应答报文中是否携带有动态端口信息,是则生成携带有该动态端口信息的服务表更新消息发送给该应答报文所对应的负载均衡设备20。其中服务表更新消息具有表1中所述的各项内容。
负载均衡设备20接收到该服务表更新消息后,服务表模块22对本模块中保存的动态端口服务表进行更新。
客户端10接收到由路由转发设备30转发的应答报文后根据其中的动态端口信息再次向负载均衡设备20发送请求报文,负载均衡设备20再次收到来自于客户端10的该请求报文时,转发模块23可以根据更新后的服务表项选择服务器池40中的服务器。
此处需要特别指出的是,现有技术中某些应答报文肯定不会携带动态端口信息,如FTP协议中的控制报文通常是固定地通过端口21进行传输而不会动态变化。基于此,本步骤中,消息模块31在判断应答报文中是否携带有动态端口信息之前,也可以先判断是否需要检查该应答报文中的动态端口信息,如果不需要则直接将该应答报文转发给相应的客户端10,而不需要再向负载均衡设备20发送服务表更新消息。从而可以进一步减少***开销, 提高传输效率。
通过本实施例所述***,路由转发设备30和负载均衡设备20相互配合实现了对动态端口服务的支持,扩大了***的应用范围。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。