CN115865816A - 一种网络负载均衡方法及装置 - Google Patents
一种网络负载均衡方法及装置 Download PDFInfo
- Publication number
- CN115865816A CN115865816A CN202211486108.7A CN202211486108A CN115865816A CN 115865816 A CN115865816 A CN 115865816A CN 202211486108 A CN202211486108 A CN 202211486108A CN 115865816 A CN115865816 A CN 115865816A
- Authority
- CN
- China
- Prior art keywords
- data message
- connection table
- connection
- network
- message
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供一种网络负载均衡方法及装置,该方法包括:接收客户端发送的数据报文;当数据报文为新建连接报文时,通过预设的负载均衡算法为数据报文对应的新建连接分配第一处理服务器;在预先配置的网络连接表中为新建连接建立新表项,并更新新表项的状态;根据网络连接表对数据报文进行改造,得到目标数据报文;将目标数据报文发送给第一处理服务器进行相应的处理。可见,该方法能够解决有状态网络负载均衡器中的连接到服务器映射表的存储问题,从而提高算法效能、减少对存储容量的要求,进而能够在保证PCC时解决现有的负载均衡问题。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种网络负载均衡方法及装置。
背景技术
目前,有状态网络负载均衡器的实现过程中存在着hash算法PCC保证有限的问题,还存在着不能将负载在服务器间均衡分配的问题,这使得复杂的负载均衡算法需要巨大的存储空间存储连接到服务器映射表。
发明内容
本申请实施例的目的在于提供一种网络负载均衡方法及装置,能够解决有状态网络负载均衡器中的连接到服务器映射表的存储问题,从而提高算法效能、减少对存储容量的要求,进而能够在保证PCC时解决现有的负载均衡问题。
本申请实施例第一方面提供了一种网络负载均衡方法,包括:
接收客户端发送的数据报文;
当所述数据报文为新建连接报文时,通过预设的负载均衡算法为所述数据报文对应的新建连接分配第一处理服务器;
在预先配置的网络连接表中为所述新建连接建立新表项,并更新所述新表项的状态;
根据所述网络连接表对所述数据报文进行改造,得到目标数据报文;
将所述目标数据报文发送给所述第一处理服务器进行相应的处理。
在上述实现过程中,该方法可以优先接收客户端发送的数据报文,以使该方法可以优先识别出数据报文的类型,以便于后续流程对指定类型的报文进行相应的处理;其中,当数据报文为新建连接报文时,通过预设的负载均衡算法为数据报文对应的新建连接分配第一处理服务器;可见,该方法可以在新建连接之前,根据负载均衡算法确定处理服务器,以使新建连接具有一定的指向性,并在此时实现负载均衡的效果,从而解决解决有状态网络负载均衡器中的连接到服务器映射表的存储问题。然后,该方法再在预先配置的网络连接表中为新建连接建立新表项,并更新新表项的状态;可见,该方法可以同步更新网络连接表中的表项,从而实现数据实时同步的效果。当网络连接表更新之后,该方法再根据网络连接表对数据报文进行改造,得到目标数据报文;可见,该方法可以根据更新后的网络连接表反向对报文进行改造,从而得到更适用的目标数据报文,进而适应于新建连接的报文通信。最后,该方法再将目标数据报文发送给第一处理服务器进行相应的处理,从而使得该方法在新建连接的过程中实现对数据报文的传输,进而在保证PCC时解决现有的负载均衡问题。
进一步地,所述根据所述网络连接表对所述数据报文进行改造,得到目标数据报文,包括:
确定所述新建连接在所述网络连接表的连接表项索引;
在所述数据报文的报文头中嵌入所述连接表项索引,得到目标数据报文。
在上述实现过程中,该方法在根据网络连接表对数据报文进行改造,得到目标数据报文的过程中,可以优先确定新建连接在网络连接表的连接表项索引;然后再在数据报文的报文头中嵌入连接表项索引,得到目标数据报文。可见,该方法可以基于连接表项索引来改造数据报文,从而得到适应于新建连接的目标数据报文,进而便于更好地进行后续通讯。
进一步地,在所述接收客户端发送的数据报文之后,所述方法还包括:
当所述数据报文为已建连接报文时,确定所述数据报文的发送端以及所述数据报文对应的已建立网络连接;
从所述数据报文的报文头中获取所述已建立网络连接的连接表索引;
根据所述连接表索引更新所述网络连接表中连接表项的状态;
根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端。
在上述实现过程中,在接收客户端发送的数据报文之后,该方法还可以在数据报文为已建连接报文时,确定数据报文的发送端以及数据报文对应的已建立网络连接;可见,该方法可以在识别出数据报文的时候找到已建立的网络连接,从而便于后续步骤基于该已建立的网络连接进行相应的处理。然后,该方法从数据报文的报文头中获取已建立网络连接的连接表索引,并根据连接表索引更新网络连接表中连接表项的状态;可见,该步骤可以自动更新网络连接表,从而便于该方法在后续根据连接表索引和网络连接表将数据报文发送至目标接收端。
进一步地,所述根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端,包括:
当所述发送端为服务端时,确定所述服务端的服务器IP地址;
将所述数据报文中的虚拟服务器IP地址替换为所述服务器IP地址,得到替换报文;
根据所述网络连接表和所述连接表索引确定与所述服务端建立网络连接的目标接收端;其中,所述目标接收端为客户端;
将所述替换报文发送至所述客户端。
在上述实现过程中,该方法在根据连接表索引和网络连接表将数据报文发送至目标接收端的过程中,可以优先判断发送端是否为服务端,并在发送端为服务端时,确定服务端的服务器IP地址;可见,该方法可以优先确定发送端是服务端还是客户端,然后再准确执行后续的步骤。然后,该方法将数据报文中的虚拟服务器IP地址替换为服务器IP地址,得到替换报文;并根据网络连接表和连接表索引确定与服务端建立网络连接的客户端;可见,该方法可以进一步确定客户端,以此来确保服务端和客户端的同时存在。最后,该方法再将替换报文发送至客户端,从而以此来实现报文的有效发送。
进一步地,所述根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端,包括:
当所述发送端为客户端时,根据所述网络连接表和所述连接表索引确定与所述客户端建立网络连接的目标接收端;其中,所述目标接收端为第二处理服务器;
将所述数据报文发送至所述第二处理服务器。
在上述实现过程中,该方法可以在所述根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端的过程中,优先判断发送端是否为客户端,并在所述发送端为客户端时,根据所述网络连接表和所述连接表索引确定与所述客户端建立网络连接的目标接收端;其中,所述目标接收端为第二处理服务器;然后,再将所述数据报文发送至所述第二处理服务器。可见,该方法在确定发送端是客户端时,只需要确定目标接收端,并进行报文传输,从而实现对报文的交互。
本申请实施例第二方面提供了一种网络负载均衡装置,所述网络负载均衡装置包括:
接收单元,用于接收客户端发送的数据报文;
均衡单元,用于当所述数据报文为新建连接报文时,通过预设的负载均衡算法为所述数据报文对应的新建连接分配第一处理服务器;
建立单元,用于在预先配置的网络连接表中为所述新建连接建立新表项;
更新单元,用于更新所述新表项的状态;
改造单元,用于根据所述网络连接表对所述数据报文进行改造,得到目标数据报文;
发送单元,用于将所述目标数据报文发送给所述第一处理服务器进行相应的处理。
在上述实现过程中,该装置能够解决有状态网络负载均衡器中的连接到服务器映射表的存储问题,从而提高算法效能、减少对存储容量的要求,进而能够在保证PCC时解决现有的负载均衡问题。
进一步地,所述改造单元包括:
第一确定子单元,用于确定所述新建连接在所述网络连接表的连接表项索引;
嵌入子单元,用于在所述数据报文的报文头中嵌入所述连接表项索引,得到目标数据报文。
进一步地,所述网络负载均衡装置还包括:
确定单元,用于在所述接收客户端发送的数据报文之后,当所述数据报文为已建连接报文时,确定所述数据报文的发送端以及所述数据报文对应的已建立网络连接;
获取单元,用于从所述数据报文的报文头中获取所述已建立网络连接的连接表索引;
所述更新单元,还用于根据所述连接表索引更新所述网络连接表中连接表项的状态;
所述发送单元,还用于根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端。
进一步地,所述发送单元包括:
第二确定子单元,用于当所述发送端为服务端时,确定所述服务端的服务器IP地址;
替换子单元,用于将所述数据报文中的虚拟服务器IP地址替换为所述服务器IP地址,得到替换报文;
所述第二确定子单元,还用于根据所述网络连接表和所述连接表索引确定与所述服务端建立网络连接的目标接收端;其中,所述目标接收端为客户端;
发送子单元,用于将所述替换报文发送至所述客户端。
进一步地,所述发送单元包括:
第二确定子单元,用于当所述发送端为客户端时,根据所述网络连接表和所述连接表索引确定与所述客户端建立网络连接的目标接收端;其中,所述目标接收端为第二处理服务器;
发送子单元,用于将所述数据报文发送至所述第二处理服务器。
本申请实施例第三方面提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本申请实施例第一方面中任一项所述的网络负载均衡方法。
本申请实施例第四方面提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本申请实施例第一方面中任一项所述的网络负载均衡方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种网络负载均衡方法的流程示意图;
图2为本申请实施例提供的一种网络负载均衡方法的流程示意图;
图3为本申请实施例提供的一种网络负载均衡装置的结构示意图;
图4为本申请实施例提供的一种有状态网络负载均衡器的系统框架图;
图5为本申请实施例提供的一种ConnStack的举例示意图;
图6为本申请实施例提供的一种在有状态网络负载均衡器上为新建连接建立表项的流程示意图;
图7为本申请实施例提供的一种在有状态网络负载均衡器上为查找数据报文所属的已建连接表项的流程示意图;
图8为本申请实施例提供的一种在有状态网络负载均衡器上删除已建连接表项的流程示意图;
图9为本申请实施例提供的一种应用网络负载均衡方法的设备框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
实施例1
请参看图1,图1为本实施例提供了一种网络负载均衡方法的流程示意图。其中,该网络负载均衡方法包括:
S101、接收客户端发送的数据报文。
S102、当数据报文为新建连接报文时,通过预设的负载均衡算法为数据报文对应的新建连接分配第一处理服务器。
S103、在预先配置的网络连接表中为新建连接建立新表项,并更新新表项的状态。
S104、确定新建连接在网络连接表的连接表项索引。
S105、在数据报文的报文头中嵌入连接表项索引,得到目标数据报文。
S106、将目标数据报文发送给第一处理服务器进行相应的处理。
请参看图4,图4示出了一种有状态网络负载均衡器的系统框架图。其中,该系统具有如下四个模块:新建连接判断模块,负责识别数据包是否是新建连接的数据包;均衡决策模块,负责按照负载均衡算法选择新建连接的处理服务器;PCC模块,负责将已建连接的报文转发给负载均衡决策模块所选择的处理服务器;连接表模块,存储设备已建连接的信息。
具体来说,图4示出了如下6个步骤:
①对于从客户端收到的数据包,确定是否是新建连接的报文和已建连接的报文;
②对于新建连接的报文,转发给负载均衡决策模块;负载均衡决策模块确定此新建连接的处理服务器;
③为新建连接在连接表中建立新的表项,更新表项的状态;对新建连接报文头进行修改,嵌入连接表项索引;将修改后的新建连接的报文转发给所选择的处理服务器;
④对于从服务器接收到的报文,发送给PCC模块处理;PCC模块从数据报文头中获得连接表的索引,更新连接表项的状态;
⑤PCC模块用VIP替换DIP,将替换后的数据包转发给客户端;
⑥对于从客户端收到的已建立的连接的数据报文,转发给PCC模块处理;PCC模块对数据报文中提取连接表项索引,查找连接表,更新连接表项的状态,获得此连接的处理服务器;PCC模块将数据报文转发给所选择的服务器。
本实施例中,该方法可以通过将负载均衡决策模块和PCC模块的分离,可以在有状态网络负载均衡器上采用复杂的网络复杂均衡算法,如WRR、Power of Two,最小负载。由于负载均衡决策模块只为新的连接选择处理服务器,其复杂算法不会影响无状态网络负载均衡器的性能;连接表项索引编码在数据报文中,PCC模块据此可以得到连接表项信息,获得处理此连接的处理服务器信息,将已建立的连接的流量正确的转发到均衡决策模块所分配的处理服务器上,服务器数量的变化,不会影响已经建立的连接的PCC,既已经建立的连接将由原有的处理服务器处理。PCC模块根据数据报文中编码便可快速的查找到连接在连接表中的表项信息,更新连接状态。
在本实施例中,有状态网络负载均衡器存储有三种表,分别是VIPServersMap、ConnTable、ConnStack。
在本实施例中,有状态网络负载均衡器中存在一个或多个VIPServersMap表,表中存储了VIP到Servers之间的映射关系,每个服务器在VIPServersMap表中有一个表项,表项的内容为:VIP(虚拟服务器IP地址),DIP(服务器IP地址)。具体的,请参阅下表,下表示出了一种VIP Servers Map。
本实施例中,有状态网络负载均衡器中存储一个或多个ConnTable表,这个表中存放了连接表项信息,表项的内容为:Conn-id(连接索引),hash、DIP(服务器IP地址)、以及其他关于连接状态的信息,如下表所示。
本实施例中,该方法中的Conn-id将以Conn-Cookie的形式存储在数据报文头中,其长度受到数据报文头可用存储域长度的限制。Conn-id的长度决定了单个ConnTable可存储的连接的数量,如Conn-id的长度为16位,则单个ConnTable存储容量为64K。通过在设备中使用多个ConnTable,可以扩大有状态负载均衡器支持的连接表的数量。
在本实施例中,在有状态负载均衡器中,对于每一个ConnTable,存在一个对应的ConnStack,ConnStack的大小与对应的ConnTable的大小相同。ConnStack中的每个表项存储了ConnTable中未使用的表项的Conn-id(连接索引)。如图5所示。
本实施例中,在有状态网络负载均衡器上为新建连接建立表项,包括图6示出的如下步骤:
①有状态网络负载均衡器收到客户端发送的数据报文,确定是新建连接的报文,如数据报文头中不存在Conn-Cookie。
②将数据报文发送给负载均衡决策模块,负载均衡决策模块使用VIPServersMap表,采用负载均衡算法,如WRR、Power of Two、Least Load或其他负载均衡算法,为新建连接选择处理服务器,输出为DIPnew。
③将数据报文头中的信息Head=(Src IP、VIP、Src Port、Dst Port)进行加盐哈希计算Hash(Salt,Head),输出结果为HASHnew。所选择哈希加盐算法常用哈希加盐算法。
④将数据报文头中的信息Head=(Src IP、VIP、Src Port、Dst Port)进行加盐哈希计算Hash(Salt,Head),对哈希加盐计算输出的结果进行模m运算,输出结果为STACKnew。这里的m是有状态负载均衡器中设置的ConnTable的数量。
⑤使用STACKnew选择第STACKnew ConnStack表,从STACKnew ConnStack表中弹出可用的连接表索引,输出结果为CONNnew。
⑥使用STACKnew选择第STACKnew ConnTable表,将(CONNnew、HASHnew、DIPnew)存储到第STACKnew ConnTable表、索引为CONNnew的表项。
⑦修改数据报文头,将CONNnew作为Conn-Cookie存入数据报文头中;将修改后的数据报文发送给处理服务器DIPnew。
本实施例中,该方法的执行主体可以为计算机、服务器等计算装置,对此本实施例中不作任何限定。
在本实施例中,该方法的执行主体还可以为智能手机、平板电脑等智能设备,对此本实施例中不作任何限定。
可见,实施本实施例所描述的网络负载均衡方法,能够解决有状态网络负载均衡器中的连接到服务器映射表的存储问题,从而提高算法效能、减少对存储容量的要求,进而能够在保证PCC时解决现有的负载均衡问题。
实施例2
请参看图2,图2为本实施例提供了一种网络负载均衡方法的流程示意图。其中,该网络负载均衡方法包括:
S201、接收客户端发送的数据报文。
S202、当数据报文为已建连接报文时,确定数据报文的发送端以及数据报文对应的已建立网络连接。
本实施例中,在有状态网络负载均衡器上为查找数据报文所属的已建连接表项的过程,包括图7示出的步骤:
①有状态网络负载均衡器从网络接口上收到数据报文,判定数据报文为已建立连接的报文,如数据报文中存在Conn-Cookie;将从服务器侧收到的数据报文中的DIP更换为对应的VIP。
②将数据报文头中的信息Head=(Src IP、VIP、Src Port、Dst Port)进行加盐哈希计算Hash(Salt,Head),输出结果为HASHconn。所选择哈希加盐算法常用哈希加盐算法。
③将数据报文头中的信息Head=(Src IP、VIP、Src Port、Dst Port)进行加盐哈希计算Hash(Salt,Head),对哈希加盐计算输出的结果进行模m运算,输出结果为TABLEconn。这里的m是有状态负载均衡器中设置的ConnTable的数量。
④将数据报文头中的Conn-Cookie,存入CONNid作为表项索引,使用TABLEconn选择第TABLEconn ConnTable表,得到索引为CONNid的表项;
⑤将HASHconn与第CONNid表项中存储的hash值进行比较,如果相同,则找到了数据报文所属的已建连接表项数据。
在上述算法中,ConnTable表项中存储的hash值,作为一种网络安全措施,可以对抗网络恶意攻击。
S203、从数据报文的报文头中获取已建立网络连接的连接表索引。
S204、根据连接表索引更新网络连接表中连接表项的状态,并触发步骤S205~S208或步骤S209~S210。
S205、当发送端为服务端时,确定服务端的服务器IP地址。
S206、将数据报文中的虚拟服务器IP地址替换为服务器IP地址,得到替换报文。
S207、根据网络连接表和连接表索引确定与服务端建立网络连接的目标接收端;其中,目标接收端为客户端。
S208、将替换报文发送至客户端。
S209、当发送端为客户端时,根据网络连接表和连接表索引确定与客户端建立网络连接的目标接收端;其中,目标接收端为第二处理服务器。
S210、将数据报文发送至第二处理服务器。
本实施例中,在有状态网络负载均衡器上删除已建连接表项,包括如下步骤,如图8所示:
①使用该方法中的在有状态网络负载均衡器上为查找数据报文所属的已建连接表项的方法,找到数据报文所属的已建连接表项,得到的结果为(TABLEconn、CONNid),既:第TABLEconn ConnTable中索引为第CONNid的表项;
②有状态负载均衡器根据数据报文的信息确定此数据报文为终结已建立连接的数据报文;
③将第TABLEconn ConnTable中索引为第CONNid的表项删除,既将表项中的内容复位成未占用状态,如将表项清零(Conn-id=0,hash=0,DIP=0);
④将CONNid压入第TABLEconn ConnStack中,既CONNid是一项ConnTable中未使用的表项,可以分配给新建连接使用。
其中,设备可以通过数据报文内容确定删除已建立的连接的表项,还可以通过配置命令确定删除已建立的连接的表项。
举例来说,该方法可以应用于有状态网络负载均衡器的设计中,通过使用该方法,可以在数据平面中高效的实现PCC;在控制平面中使用复杂的负载均衡决策算法,复杂的负载均衡决策算法只对首包进行处理,其复杂性不影响有状态网络负载均衡器的性能,实现服务器负载的均衡。其中,有状态网络负载均衡器基于P4Switch实现数据面的高速转发,基于CPU实现复杂的负载均衡决策算法。设备的框图如图9所示。具体地,该方法中所述的VIPServersMap、ConnTable、ConnStack表存储在P4Switch中,使用P4Switch的Register数组存储ConnTable和ConnStack,通过P4Switch的Exact-Match-Table存储VIPServersMap表。
在本实施例中,该方法中的VIPServersMap表也存储在CPU模块的存储器中。当服务器集群发生变化时,可以通过自动化的方法或手工的方法,更新VIPServersMap表的内容。
在本实施例中,该方法中的PCC模块运行在P4Switch中,新连接判断模块运行在P4Switch中,连接表存储在P4Switch的Register数组中,负载均衡决策模块以软件的方式运行在CPU模块中。P4Switch与CPU之间通过CPU接口进行通信,CPU接口可以是网络接口或PCIe接口。通过CPU接口,P4Switch可以发送报文到CPU或者将接收到的CPU发送的报文发送到网络接口。
本实施例中,该方法对于来自客户端的新建连接报文包括如下步骤:
①P4Switch对于收到的数据包,确定是否是新建连接的报文和已建连接的报文,如通过检查数据报文中是否存在Conn-Cookie。
②对于新建连接的报文,P4Switch将报文转发给CPU接口,运行在CPU上的负载均衡决策模块根据VIPServersMap表和负载均衡决策算法确定此新连接的处理服务器,使用处理服务器的DIP替换数据报文头中的VIP,将修改后的数据报文通过CPU接口发送给P4Switch。P4Switch将从CPU接口接收到的数据报文增加Conn-Cookie后转发到服务器侧的网络接口。
③P4Switch中的PCC模块,使用P4Switch内部的算子实现本发明中所述的加盐哈希计算和模m运算,使用本发明中的方法,通过P4Switch中存储的ConnStack和ConnTable为新建连接建立连接表项。
本实施例中,该方法对于从处理服务器所收到的数据报文包括如下步骤:
①P4Switch对于所收到的数据包,确定是否已建连接的报文,如通过检查数据报文中是否存在Conn-Cookie。如果不是已建连接的报文,则丢弃。
②P4Switch将数据报文提交给P4Switch中的PCC模块处理。
③P4Switch中的PCC模块使用本发明中的方法,查找P4Switch上的表,得到数据报文所属的连接表项。
④P4Switch中的PCC模块更新连接表项的状态。
⑤不改变数据报文中的Conn-Cookie内容,将数据报文做处理后转发给客户端。
本实施例中,该方法对于来自客户端的已建连接报文包括如下步骤:
①P4Switch收到客户端的,判断为已有连接的数据报文,既数据报文头中存在Conn-Cookie。
②将数据报文提交给P4Switch中的PCC模块处理。
③P4Switch中的PCC模块,使用P4Switch内部的算子实现本发明中所述的加盐哈希计算和模m运算;使用本发明中的方法,从数据报头中获得Conn-Cookie,从P4Switch中存储的ConnTable得到数据报文所属的已建连接表项。如果没有在P4Switch中存储的ConnTable中查到数据包所属的已建连接表项,丢弃此数据报文。
④P4Switch中的PCC模块对数据报文进行分析,对已建连接表项进行更新。将此数据报文转发给已建连接表项中指定的处理服务器。
本实施例中,该方法对于对于从客户端/处理服务器收到的终止已建连接的数据报文包括如下步骤:
①PCC模块确定所收到的数据报文将终止数据报文所属的已建连接;
②使用本发明所述的,在有状态网络负载均衡器上删除已建连接表项的方法,在P4Switch中存储的连接表中删除相应的已建连接表项;
③P4Switch将数据报文发送给目的处理服务器或客户端。
在本实施例中,该方法可以应用于有状态网络负载均衡器的设计中,通过使用本发明中的方法,可以在数据平面中高效的实现PCC;在控制平面中使用复杂的负载均衡决策算法,复杂的负载均衡决策算法只对首包进行处理,其复杂性不影响有状态网络负载均衡器的性能,实现服务器负载的均衡。其中,本实施例中的有状态网络负载均衡器基于FPGA实现数据面的高速转发,基于CPU实现复杂的负载均衡决策算法。其具体内容与上述举例相同,区别只是FPGA代替P4Switch。
本实施例中,该方法的执行主体可以为计算机、服务器等计算装置,对此本实施例中不作任何限定。
在本实施例中,该方法的执行主体还可以为智能手机、平板电脑等智能设备,对此本实施例中不作任何限定。
可见,实施本实施例所描述的网络负载均衡方法,能够在保证有状态网络负载均衡器的PCC,同时可以保证服务器之间的负载是均衡的。还能够通过在数据报文中嵌入Conn-Cookie,Conn-Cookie作为数据报文所属的已建连接的索引,实现高效的连接表查找。同时,该方法中PCC算法简单高效,可以在P4Switch或FPGA上实现。最后,还能够降低大容量、高性能有状态网络负载均衡器的实现成本。
实施例3
请参看图3,图3为本实施例提供的一种网络负载均衡装置的结构示意图。如图3所示,该网络负载均衡装置包括:
接收单元310,用于接收客户端发送的数据报文;
均衡单元320,用于当数据报文为新建连接报文时,通过预设的负载均衡算法为数据报文对应的新建连接分配第一处理服务器;
建立单元330,用于在预先配置的网络连接表中为新建连接建立新表项;
更新单元340,用于更新新表项的状态;
改造单元350,用于根据网络连接表对数据报文进行改造,得到目标数据报文;
发送单元360,用于将目标数据报文发送给第一处理服务器进行相应的处理。
作为一种可选的实施方式,改造单元350包括:
第一确定子单元351,用于确定新建连接在网络连接表的连接表项索引;
嵌入子单元352,用于在数据报文的报文头中嵌入连接表项索引,得到目标数据报文。
作为一种可选的实施方式,网络负载均衡装置还包括:
确定单元370,用于在接收客户端发送的数据报文之后,当数据报文为已建连接报文时,确定数据报文的发送端以及数据报文对应的已建立网络连接;
获取单元380,用于从数据报文的报文头中获取已建立网络连接的连接表索引;
更新单元340,还用于根据连接表索引更新网络连接表中连接表项的状态;
发送单元360,还用于根据连接表索引和网络连接表将数据报文发送至目标接收端。
作为一种可选的实施方式,发送单元360包括:
第二确定子单元361,用于当发送端为服务端时,确定服务端的服务器IP地址;
替换子单元362,用于将数据报文中的虚拟服务器IP地址替换为服务器IP地址,得到替换报文;
第二确定子单元361,还用于根据网络连接表和连接表索引确定与服务端建立网络连接的目标接收端;其中,目标接收端为客户端;
发送子单元363,用于将替换报文发送至客户端。
作为一种可选的实施方式,发送单元360包括:
第二确定子单元361,用于当发送端为客户端时,根据网络连接表和连接表索引确定与客户端建立网络连接的目标接收端;其中,目标接收端为第二处理服务器;
发送子单元363,用于将数据报文发送至第二处理服务器。
本实施例中,对于网络负载均衡装置的解释说明可以参照实施例1或实施例2中的描述,对此本实施例中不再多加赘述。
可见,实施本实施例所描述的网络负载均衡装置,能够解决有状态网络负载均衡器中的连接到服务器映射表的存储问题,从而提高算法效能、减少对存储容量的要求,进而能够在保证PCC时解决现有的负载均衡问题。
本申请实施例提供了一种电子设备,包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行本申请实施例1或实施例2中的网络负载均衡方法。
本申请实施例提供了一种计算机可读存储介质,其存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行本申请实施例1或实施例2中的网络负载均衡方法。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (10)
1.一种网络负载均衡方法,其特征在于,包括:
接收客户端发送的数据报文;
当所述数据报文为新建连接报文时,通过预设的负载均衡算法为所述数据报文对应的新建连接分配第一处理服务器;
在预先配置的网络连接表中为所述新建连接建立新表项,并更新所述新表项的状态;
根据所述网络连接表对所述数据报文进行改造,得到目标数据报文;
将所述目标数据报文发送给所述第一处理服务器进行相应的处理。
2.根据权利要求1所述的网络负载均衡方法,其特征在于,所述根据所述网络连接表对所述数据报文进行改造,得到目标数据报文,包括:
确定所述新建连接在所述网络连接表的连接表项索引;
在所述数据报文的报文头中嵌入所述连接表项索引,得到目标数据报文。
3.根据权利要求1所述的网络负载均衡方法,其特征在于,在所述接收客户端发送的数据报文之后,所述方法还包括:
当所述数据报文为已建连接报文时,确定所述数据报文的发送端以及所述数据报文对应的已建立网络连接;
从所述数据报文的报文头中获取所述已建立网络连接的连接表索引;
根据所述连接表索引更新所述网络连接表中连接表项的状态;
根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端。
4.根据权利要求3所述的网络负载均衡方法,其特征在于,所述根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端,包括:
当所述发送端为服务端时,确定所述服务端的服务器IP地址;
将所述数据报文中的虚拟服务器IP地址替换为所述服务器IP地址,得到替换报文;
根据所述网络连接表和所述连接表索引确定与所述服务端建立网络连接的目标接收端;其中,所述目标接收端为客户端;
将所述替换报文发送至所述客户端。
5.根据权利要求3所述的网络负载均衡方法,其特征在于,所述根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端,包括:
当所述发送端为客户端时,根据所述网络连接表和所述连接表索引确定与所述客户端建立网络连接的目标接收端;其中,所述目标接收端为第二处理服务器;
将所述数据报文发送至所述第二处理服务器。
6.一种网络负载均衡装置,其特征在于,所述网络负载均衡装置包括:
接收单元,用于接收客户端发送的数据报文;
均衡单元,用于当所述数据报文为新建连接报文时,通过预设的负载均衡算法为所述数据报文对应的新建连接分配第一处理服务器;
建立单元,用于在预先配置的网络连接表中为所述新建连接建立新表项;
更新单元,用于更新所述新表项的状态;
改造单元,用于根据所述网络连接表对所述数据报文进行改造,得到目标数据报文;
发送单元,用于将所述目标数据报文发送给所述第一处理服务器进行相应的处理。
7.根据权利要求6所述的网络负载均衡装置,其特征在于,所述改造单元包括:
第一确定子单元,用于确定所述新建连接在所述网络连接表的连接表项索引;
嵌入子单元,用于在所述数据报文的报文头中嵌入所述连接表项索引,得到目标数据报文。
8.根据权利要求6所述的网络负载均衡装置,其特征在于,所述网络负载均衡装置还包括:
确定单元,用于在所述接收客户端发送的数据报文之后,当所述数据报文为已建连接报文时,确定所述数据报文的发送端以及所述数据报文对应的已建立网络连接;
获取单元,用于从所述数据报文的报文头中获取所述已建立网络连接的连接表索引;
所述更新单元,还用于根据所述连接表索引更新所述网络连接表中连接表项的状态;
所述发送单元,还用于根据所述连接表索引和所述网络连接表将所述数据报文发送至目标接收端。
9.一种电子设备,其特征在于,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行所述计算机程序以使所述电子设备执行权利要求1至5中任一项所述的网络负载均衡方法。
10.一种可读存储介质,其特征在于,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行权利要求1至5任一项所述的网络负载均衡方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211486108.7A CN115865816A (zh) | 2022-11-24 | 2022-11-24 | 一种网络负载均衡方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211486108.7A CN115865816A (zh) | 2022-11-24 | 2022-11-24 | 一种网络负载均衡方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115865816A true CN115865816A (zh) | 2023-03-28 |
Family
ID=85666145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211486108.7A Pending CN115865816A (zh) | 2022-11-24 | 2022-11-24 | 一种网络负载均衡方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115865816A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117997834A (zh) * | 2024-04-03 | 2024-05-07 | 格创通信(浙江)有限公司 | 一种查找表更新、表项查找方法、装置、网络设备及介质 |
-
2022
- 2022-11-24 CN CN202211486108.7A patent/CN115865816A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117997834A (zh) * | 2024-04-03 | 2024-05-07 | 格创通信(浙江)有限公司 | 一种查找表更新、表项查找方法、装置、网络设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102052520B1 (ko) | 컨텐츠 중심 네트워크에서 컨텐츠의 이동성을 지원하기 위한 노드의 통신 방법 및 노드 | |
US10348646B2 (en) | Two-stage port-channel resolution in a multistage fabric switch | |
US20180241608A1 (en) | Forwarding ethernet packets | |
CN109525684B (zh) | 报文转发方法和装置 | |
US10587515B2 (en) | Stateless information centric forwarding using dynamic filters | |
US20130166680A1 (en) | Method, apparatus, and network system for acquiring content | |
US20210075640A1 (en) | Acceleration proxy device, acceleration proxy method, and content management system | |
CN103873602A (zh) | 一种网络资源命名方法与生成装置 | |
US11509567B2 (en) | IP-based matching system | |
CN102857547B (zh) | 分布式缓存的方法及设备 | |
US11843650B2 (en) | Two-level cache architecture for live video streaming through hybrid ICN | |
CN103179161B (zh) | 一种内容获取方法、装置及网络系统 | |
CN115865816A (zh) | 一种网络负载均衡方法及装置 | |
US10536368B2 (en) | Network-aware routing in information centric networking | |
CN111294285B (zh) | 一种网络数据的分发方法及负载均衡器 | |
CN109413224B (zh) | 报文转发方法和装置 | |
US10341292B2 (en) | Increased port address space | |
CN104252504B (zh) | 数据查询方法、设备和系统 | |
WO2017097092A1 (zh) | 缓存集群服务的处理方法及系统 | |
CN108111422B (zh) | 一种基于dpdk的数据高速多路转发方法及装置 | |
CN107612831B (zh) | 一种访问源站的数据报文的传输方法及装置 | |
CN105025042B (zh) | 一种确定数据信息的方法及系统、代理服务器 | |
WO2015143981A1 (zh) | 一种报文转发方法、系统及装置 | |
CN113329048B (zh) | 基于交换机的云负载均衡方法、装置及存储介质 | |
CN109525503A (zh) | 一种压缩方法及装置、计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |