CN112565381B - 一种数据包转发方法、装置及设备 - Google Patents
一种数据包转发方法、装置及设备 Download PDFInfo
- Publication number
- CN112565381B CN112565381B CN202011373543.XA CN202011373543A CN112565381B CN 112565381 B CN112565381 B CN 112565381B CN 202011373543 A CN202011373543 A CN 202011373543A CN 112565381 B CN112565381 B CN 112565381B
- Authority
- CN
- China
- Prior art keywords
- message data
- data
- tcp
- length
- current
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/146—Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请实施例公开了一种数据包转发方法、装置和设备。在本申请中,可以在通过与客户端之间已建立的TCP长连接接收到TCP数据包时,从TCP数据包中的TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,最后将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,其中不同消息数据对应的目标服务器相同或不同,最终通过将一个TCP数据包中的各个消息数据转发到多个目标服务器,实现了对TCP长连接进行负载均衡。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种数据包转发方法、装置及设备。
背景技术
互联网中多个用户可以在客户端上通过统一的访问入口进入一个大型开放的平台上,并在这个平台上请求不同的服务。当用户量过大时,如果将为用户提供的所有服务搭建在一台服务器上,一台服务器承受不了这么多服务的压力,所以为了减轻单台服务器压力,将部署多台服务器为用户提供服务。
在部署多台服务器为用户提供服务的情况下,客户端和服务器之间如果通过TCP长连接通讯,TCP长连接一旦分配完成后,相关技术中客户端和服务器之间的对应关系是固定的。如果某些客户端的基于TCP协议的请求的TCP数据包特别多,由于中间的负载均衡设备无法干预TCP数据包的传输,所以这些TCP数据包也只会传输到和与它对应的服务器,这时会出现该服务器繁忙,但其他服务器空闲的情况。
所以为了解决上述负载不均衡的情况,亟需一种能够针对TCP长连接进行负载均衡的TCP数据包转发方法。
发明内容
本申请公开了一种数据包转发方法、装置及设备,以实现针对TCP长连接进行负载均衡。
根据本申请实施例的第一方面,提供一种数据包转发方法,该方法应用于负载均衡设备,包括:
通过与客户端之间已建立的TCP长连接接收TCP数据包,所述TCP数据包包括TCP头部和TCP数据字段,所述TCP数据字段包括至少一个消息数据的指示信息;所述指示信息包括长度标识;
从所述TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,所述N为所述长度标识位置上用于表示长度的长度值;
将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,不同消息数据对应的目标服务器相同或不同。
可选的,所述长度标识位置占用所述指定长度标识起始位置之后的K个bit,K大于1。
可选的,所述指定长度标识起始位置和对应的所述长度标识位置处于同一个字节;
所述将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据包括:
将指定长度标识起始位置所处字节之后的N个bit的数据确定为一个消息数据。
可选的,所述将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,包括:
轮询确定出的各个消息数据;
将轮询到的消息数据确定为当前消息数据,从已有的各目标服务器中选择负载低的一个目标服务器作为当前消息数据对应的当前目标服务器,将当前消息数据转发至当前目标服务器;
若确定出的各个消息数据中还存在未被轮询的消息数据,则继续轮询未被轮询的消息数据,返回将轮询到的消息数据确定为当前消息数据的步骤。
可选的,将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,包括:
按照已获得的各目标服务器的负载比例对确定出的各个消息数据进行划分得到对应的M个消息数据组,所述M为目标服务器的数量;
将每一消息数据组中的每一消息数据作为当前消息数据,将当前消息数据所在的消息数据组对应的目标服务器确定为当前目标服务器,将当前消息数据转发至当前目标服务器。
可选的,所述将当前消息数据转发至当前目标服务器包括:
按照TCP协议为当前消息数据封装源地址、目的地址;所述源地址对应负载均衡设备,所述目的地址对应所述当前目标服务器;
通过所述目的地址将封装当前消息数据后得到的消息报文转发至当前目标服务器。
根据本申请实施例的第二方面,一种数据包转发装置,该装置应用于负载均衡设备,包括:
接收单元,用于通过与客户端之间已建立的TCP长连接接收TCP数据包,所述TCP数据包包括TCP头部和TCP数据字段,所述TCP数据字段包括至少一个消息数据的指示信息;所述指示信息包括长度标识;
确定单元,用于从所述TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,所述N为所述长度标识位置上用于表示长度的长度值;
转发单元,用于将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,不同消息数据对应的目标服务器相同或不同。
可选的,所述长度标识位置占用所述指定长度标识起始位置之后的K个bit,K大于1。
可选的,所述指定长度标识起始位置和对应的所述长度标识位置处于同一个字节;
所述确定单元将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据包括:
将指定长度标识起始位置所处字节之后的N个bit的数据确定为一个消息数据。
根据本申请实施例的第三方面,提供一种电子设备,该电子设备包括:处理器和存储器;
所述存储器,用于存储机器可执行指令;
所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如上所述的数据包转发方法。
本申请的实施例提供的技术方案可以包括以下有益效果:
由以上技术方案可知,本申请提供的方案可以在通过与客户端之间已建立的TCP长连接接收到TCP数据包时,从TCP数据包中的TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,最后将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,其中不同消息数据对应的目标服务器相同或不同,最终通过将一个TCP数据包中的各个消息数据转发到多个目标服务器,实现了针对TCP长连接进行负载均衡。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本申请实施例提供的实现数据包转发方法流程图;
图2是本申请实施例提供的一种转发消息数据的方法流程图;
图3是本申请实施例提供的另一种转发消息数据的方法流程图;
图4是本申请实施例提供的实现数据包转发的装置示意图;
图5是本申请实施例提供的一种用于实现数据包转发方法的硬件结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
为了使本领域技术人员更好地理解本申请实施例提供的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
参见图1,图1为本申请实施例提供的方法流程图,以实现对TCP长连接进行负载均衡。作为一个实施例,图1所示的流程可以应用于负载均衡设备。
如图1所示,该流程可以包括以下步骤:
步骤101,通过与客户端之间已建立的TCP长连接接收TCP数据包。
可选的,本申请实施例中负载均衡设备通过消息边界规则,从TCP长连接上持续流动的数据流中取出相互独立的TCP数据包。客户端通过TCP长连接向负载均衡设备发送TCP数据包是采用的流式传输,负载均衡设备可以在一次接受动作中接收多个数据包到TCP长连接接收端的缓存区,容易发生粘包现象,所以需要通过消息边界规则确定进行处理的TCP数据包是一个完整的数据包。
作为一个实施例,TCP协议可以确保客户端发送的数据不会丢失完整性。比如本申请实施例在接收到一个独立的TCP数据包后,可以对该TCP数据包的完整性进行校验:当该TCP数据包通过校验时,确定该TCP数据包是完整的,则继续对该TCP数据包执行接下来的步骤102;当该TCP数据包未通过校验时,则确定该TCP数据包不完整,丢弃该TCP数据包,并通知客户端重传该TCP数据包。这里对接收到的TCP数据包进行校验的具体过程可以参见现有相关方案中的相关描述,本申请实施例在此不做赘述。
在接收到完整的TCP数据包之后,可以知道,客户端发送的TCP数据包中包括TCP头部和TCP数据字段,其中TCP数据字段包括至少一个消息数据的指示信息,所述指示信息包括长度标识。这里一个消息数据表示客户端发出的一个业务请求,长度标识用于指示负载均衡设备将TCP数据字段中的消息数据拆分出来,同时,通过长度标识也将TCP数据字段中的一个个消息数据分隔开。
步骤102,从所述TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据。
可选的,本步骤102中的指定长度标识起始位置为预先在字节连接拆分策略配置的,负载均衡设备在实现本申请实施例之前会将配置好的字节连接拆分策略下发给客户端,以使客户端在发送TCP数据包时,在TCP数据字段中添加至少一个消息数据的指示信息。如下所示为负载均衡设备配置的一条字节连接拆分策略:
名称:字节连接拆分策略1
长度标识起始位置:0
长度标识长度:1(单位:字节)
其中,该字节连接拆分策略1中的长度标识起始位置用于确定本步骤102中的指定长度标识起始位置,这里的长度标识长度表示长度标识在TCP数据字段中所占的位置长度。在字节连接拆分策略1中,规定长度标识的第一个bit的位置(即长度标识起始位置)为一段TCP数据字段中的首个bit所在的位置,且长度标识所占的位置的长度为一个字节。
通过指定长度标识起始位置可以从所述TCP数据字段中按照顺序查找到对应的长度标识位置,具体查找过程会在下面描述确定TCP数据字段中的各个消息数据的过程中进行举例描述。
本申请实施例中将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,其中的N为所述长度标识位置上用于表示长度的长度值。这里表示长度的长度值是根据长度标识位置上的数据的数值确定的。比如当所述长度标识位置上的数据为09时,若设置长度标识位置上的表示长度值的数据的单位为字节,则所述长度标识位置上的长度值的数值为9字节,则长度值N为72;若设置长度标识位置上的表示长度值的数据的单位为bit时,则所述长度标识位置上的长度值N为9。
作为一个实施例,本步骤102中的长度标识位置占用所述指定长度标识起始位置之后的K个bit,其中K大于1。并且,可选的,本步骤102中指定长度标识起始位置和对应的所述长度标识位置处于同一个字节,此时确定消息数据是将指定长度标识起始位置所处字节之后的N个bit的数据确定为一个消息数据。
需要说明的是,在上述实施例中,所述指定长度标识起始位置实际上是长度标识位置中的首个位置,以长度标识位置的长度为一个字节为例,此时长度标识除了指定长度标识起始位置还占用了其之后的7个bit位置。
步骤103,将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,不同消息数据对应的目标服务器相同或不同。
本申请实施例中,要实现将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器之后,不同的消息数据对应的目标服务器相同或不同有多种实现方式,具体实现方式会在介绍完如图1所示的流程后详细描述,这里暂不赘述。
可选的,在本步骤103之后,若在指定时间内未接受到目标服务器返回的接收到消息数据的确定消息,则需要为该消息数据重新确定对应的目标服务器,并将该消息数据转发到新确定的目标服务器。
至此,完成图1所示流程。
通过图1所示的流程可以看出,本实施例可以在通过与客户端之间已建立的TCP长连接接收到TCP数据包时,从TCP数据包中的TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,最后将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,其中不同消息数据对应的目标服务器相同或不同。最终通过将一个TCP数据包中的各个消息数据转发到多个目标服务器,实现了对TCP长连接进行负载均衡。
下面对确定TCP数据字段中的各个消息数据的具体过程进行举例描述:
以负载均衡设备配置的字节连接拆分策略为字节连接拆分策略1为例,若负载均衡设备接收到一个TCP数据包的TCP数据字段如下:
09 01 02 03 04 05 06 07 08 09 08 11 12 13 14 15 16 17 18
上述TCP数据字段为十六进制数据,该TCP数据包为负载均衡设备通过与客户端之间已建立的TCP长连接接收的。依据字节连接拆分策略1,将对来自客户端的数据做出如下处理:
首先,将上述TCP数据字段作为当前TCP数据字段,根据长度标识起始位置为0和长度标识长度为1个字节确定长度标识,得到09为当前TCP数据字段中一个消息数据的长度标识,09的长度为一个字节,其在TCP数据字段中占用了8个bit的位置,这8个bit所占的位置即长度标识位置,其中第一个bit所在的位置为长度标识位置对应的指定长度标识起始位置,若设置长度标识位置上的数据的单位为字节,则09所代表的数值9代表的含义是:截取从长度标识09之后的9个字节即72个bit的数据,在本实施例中,将09后的01 02 03 04 050607 08 09这72个bit的数据作为一个消息数据。
以此类推,将根据长度标识09确定的消息数据后的TCP数据字段作为当前TCP数据字段,此时当前TCP数据字段为08 11 12 13 14 15 16 17 18,返回根据长度标识起始位置为0和长度标识长度为1个字节确定长度标识。在本实施例中,将得到当前TCP数据字段中的一个消息数据的长度标识08,08为其代表的数字8本身的含义是:截取从长度标识08之后的8个字节即64个bit的数据,将11 12 13 14 15 16 17 18这64个bit的数据作为一个消息数据。
进一步的,若根据长度标识08确定一个消息数据后,该消息数据之后还存在未被确定为消息数据的TCP数据字段,则将该消息数据之后的TCP数据字段作为当前TCP数据字段,查找下一个长度标识所在的长度标识位置。以此类推,按照上述方法依次查找长度标识位置,直至读取完本负载均衡设备接收到的该TCP数据包中的TCP数据字段中的所有数据。
以上描述了如何按照顺序查找到指定长度标识起始位置对应的长度标识位置,并将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,最终实现了将TCP数据字段拆分成消息数据。
需要说明的是,本申请实施例中,如果存在跨TCP数据包传输的消息数据,则需要根据TCP数据包的唯一标识,比如序列号,将同一序列号的TCP数据包中的TCP数据字段当作一个TCP数据包中的TCP数据字段来处理。
下面将描述实现将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器的多种方式。
作为一个实施例,可以通过轮询调度算法将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,具体步骤如图2所示:
步骤201,轮询确定出的各个消息数据。
可选的,首先需要通过轮询统计需要被转发的消息数据,防止消息数据被漏转。
步骤202,将轮询到的消息数据确定为当前消息数据。
步骤203,从已有的各目标服务器中选择负载低的一个目标服务器作为当前消息数据对应的当前目标服务器。
步骤204,将当前消息数据转发至当前目标服务器。
在将当前消息数据转发至当前目标服务器之后,需要等待当前目标服务器返回接收到当前消息数据的确认值,如果在指定时间内没有接收到当前目标服务器返回的确认值,则重新确定当前目标服务器,并重新转发当前目标数据到重新确定的当前目标服务器。
步骤205,确定出的各个消息数据中是否还存在未被轮询的消息数据。
如果是,则执行步骤206继续轮询未被轮询的消息数据;如果否,则表示确定出的消息数据都已经被转发到了对应的目标服务器,可以结束转发消息数据的流程。
步骤206,继续轮询未被轮询的消息数据,并返回将轮询到的消息数据确定为当前消息数据的步骤202。
作为另一个实施例,可以通过如图3所示的方法流程实现将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,图3所示的步骤如下:
步骤301,按照已获得的各目标服务器的负载比例对确定出的各个消息数据进行划分得到对应的M个消息数据组,所述M为目标服务器的数量。
在本申请实施例之前,可以预先为负载均衡设备配置各目标服务器的负载比例转发消息数据到目标服务器。比如当负载均衡设备中配置的目标服务器为server1、server2这两台服务器,且按照服务器server1和服务器server2处理业务的能力,配置这两台目标服务器的负载比例为server1:server2=1:2时,将得到的消息数据划分为2个消息数据组,其中对应服务器server1的消息数据组中消息数据的数量:对应服务器server2的消息数据组中消息数据的数量=1:2。
步骤302,将每一消息数据组中的每一消息数据作为当前消息数据,将当前消息数据所在的消息数据组对应的目标服务器确定为当前目标服务器,将当前消息数据转发至当前目标服务器。
通过图2或图3所示流程,实现了将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,并且不同消息数据对应的目标服务器相同或不同。需要说明的是,图2或图3所示流程只是实现转发各个消息数据到对应的目标服务器的一个举例,并非用于限定。比如还可以根据目标服务器承担的业务类型不同,来实现转发消息数据。
需要说明的是,通过图2或图3所示的流程实现转发各个消息数据到对应的目标服务器时,其中将当前消息数据转发至当前目标服务器是通过按照TCP协议为当前消息数据封装源地址、目的地址,然后根据所述目的地址将封装当前消息数据后得到的消息报文转发至当前目标服务器的。这里为当前消息数据封装的源地址为负载均衡设备的地址,封装的目的地址为当前目标服务器的地址,封装后得到的消息报文为七层协议报文。可选的,具体封装当前消息数据时可以根据实际情况选择在二层协议封装源MAC地址、目的MAC地址,或在三层协议封装源IP地址、目的IP地址。
以上对本申请实施例提供的方法进行了描述。下面对本申请实施例提供的装置进行描述:
参见图4,图4为本申请实施例提供的一种实现数据包转发的装置示意图。该装置包括:
接收单元401,用于通过与客户端之间已建立的TCP长连接接收TCP数据包,所述TCP数据包包括TCP头部和TCP数据字段,所述TCP数据字段包括至少一个消息数据的指示信息;所述指示信息包括长度标识。
确定单元402,用于从所述TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,所述N为所述长度标识位置上用于表示长度的长度值。
可选的,确定单元402中的所述长度标识位置占用所述指定长度标识起始位置之后的K个bit,K大于1。
可选的,在确定单元402中,若所述指定长度标识起始位置和对应的所述长度标识位置处于同一个字节,则所述确定单元将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据包括:将指定长度标识起始位置所处字节之后的N个bit的数据确定为一个消息数据。
转发单元403,用于将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,不同消息数据对应的目标服务器相同或不同。
至此,完成图4所示装置实施例的结构图。
对应地,本申请实施例还提供了一种用于实现数据包转发方法的实施例的硬件结构图,具体如图5所示。如图5所示,该硬件结构包括:处理器和存储器。
其中,所述存储器,用于存储机器可执行指令;
所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如上所述的数据包转发方法的实施例。
作为一个实施例,存储器可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,存储器可以是:易失存储器、非易失性存储器或者类似的存储介质。具体地,存储器可以是RAM(Radom Access Memory,随机存取存储器)、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、DVD等),或者类似的存储介质,或者它们的组合。
至此,完成图5所示设备的描述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (10)
1.一种数据包转发方法,其特征在于,该方法应用于负载均衡设备,包括:
通过与客户端之间已建立的TCP长连接接收TCP数据包,所述TCP数据包包括TCP头部和TCP数据字段,所述TCP数据字段包括至少一个消息数据的指示信息;所述指示信息包括长度标识;
从所述TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,所述N为所述长度标识位置上用于表示长度的长度值;
将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,不同消息数据对应的目标服务器相同或不同。
2.根据权利要求1所述的方法,其特征在于,所述长度标识位置占用所述指定长度标识起始位置之后的K个bit,K大于1。
3.根据权利要求2所述的方法,其特征在于,所述指定长度标识起始位置和对应的所述长度标识位置处于同一个字节;
所述将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据包括:
将指定长度标识起始位置所处字节之后的N个bit的数据确定为一个消息数据。
4.根据权利要求1所述的方法,其特征在于,所述将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,包括:
轮询确定出的各个消息数据;
将轮询到的消息数据确定为当前消息数据,从已有的各目标服务器中选择负载低的一个目标服务器作为当前消息数据对应的当前目标服务器,将当前消息数据转发至当前目标服务器;
若确定出的各个消息数据中还存在未被轮询的消息数据,则继续轮询未被轮询的消息数据,返回将轮询到的消息数据确定为当前消息数据的步骤。
5.根据权利要求1所述的方法,其特征在于,将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,包括:
按照已获得的各目标服务器的负载比例对确定出的各个消息数据进行划分得到对应的M个消息数据组,所述M为目标服务器的数量;
将每一消息数据组中的每一消息数据作为当前消息数据,将当前消息数据所在的消息数据组对应的目标服务器确定为当前目标服务器,将当前消息数据转发至当前目标服务器。
6.根据权利要求4或5所述的方法,其特征在于,所述将当前消息数据转发至当前目标服务器包括:
按照TCP协议为当前消息数据封装源地址、目的地址;所述源地址对应负载均衡设备,所述目的地址对应所述当前目标服务器;
通过所述目的地址将封装当前消息数据后得到的消息报文转发至当前目标服务器。
7.一种数据包转发装置,其特征在于,该装置应用于负载均衡设备,包括:
接收单元,用于通过与客户端之间已建立的TCP长连接接收TCP数据包,所述TCP数据包包括TCP头部和TCP数据字段,所述TCP数据字段包括至少一个消息数据的指示信息;所述指示信息包括长度标识;
确定单元,用于从所述TCP数据字段中按照顺序查找到指定长度标识起始位置对应的长度标识位置,将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据,所述N为所述长度标识位置上用于表示长度的长度值;
转发单元,用于将确定出的各个消息数据分别转发到各个消息数据对应的目标服务器,不同消息数据对应的目标服务器相同或不同。
8.根据权利要求7所述的装置,其特征在于,所述长度标识位置占用所述指定长度标识起始位置之后的K个bit,K大于1。
9.根据权利要求8所述的装置,其特征在于,所述指定长度标识起始位置和对应的所述长度标识位置处于同一个字节;
所述确定单元将查找到的长度标识位置之后的N个bit的数据确定为一个消息数据包括:
将指定长度标识起始位置所处字节之后的N个bit的数据确定为一个消息数据。
10.一种电子设备,其特征在于,该电子设备包括:处理器和存储器;
所述存储器,用于存储机器可执行指令;
所述处理器,用于读取并执行所述存储器存储的机器可执行指令,以实现如权利要求1至6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011373543.XA CN112565381B (zh) | 2020-11-30 | 2020-11-30 | 一种数据包转发方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011373543.XA CN112565381B (zh) | 2020-11-30 | 2020-11-30 | 一种数据包转发方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112565381A CN112565381A (zh) | 2021-03-26 |
CN112565381B true CN112565381B (zh) | 2022-05-31 |
Family
ID=75045429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011373543.XA Active CN112565381B (zh) | 2020-11-30 | 2020-11-30 | 一种数据包转发方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112565381B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114785462A (zh) * | 2022-04-13 | 2022-07-22 | 广州国巡机器人科技有限公司 | 一种防丢包的通信方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1626183A1 (en) * | 2004-08-10 | 2006-02-15 | Walvoil S.p.A. | Inlet section for load sensing directional control valves |
CN105808373A (zh) * | 2014-12-30 | 2016-07-27 | 中兴通讯股份有限公司 | 数据增量备份方法、装置及nas设备 |
CN106649328A (zh) * | 2015-10-30 | 2017-05-10 | 宁波轩悦行电动汽车服务有限公司 | 分时租赁系统数据访问层接口构建方法 |
CN106686129A (zh) * | 2017-01-23 | 2017-05-17 | 天地融科技股份有限公司 | 一种负载均衡方法及系统 |
CN107948293A (zh) * | 2017-11-29 | 2018-04-20 | 重庆邮电大学 | 一种基于MongoDB负载均衡优化系统及方法 |
CN109089174A (zh) * | 2018-08-16 | 2018-12-25 | 咪咕视讯科技有限公司 | 一种多媒体数据流的处理方法及装置、计算机存储介质 |
CN110581812A (zh) * | 2018-06-08 | 2019-12-17 | 北京京东尚科信息技术有限公司 | 一种数据报文的处理方法和装置 |
CN111726415A (zh) * | 2020-06-30 | 2020-09-29 | 国电南瑞科技股份有限公司 | 一种基于负反馈机制的tcp长连接负载均衡调度方法及系统 |
CN111988154A (zh) * | 2019-05-21 | 2020-11-24 | 中移(苏州)软件技术有限公司 | 一种网络传输加速的方法、装置及计算机可读存储介质 |
-
2020
- 2020-11-30 CN CN202011373543.XA patent/CN112565381B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1626183A1 (en) * | 2004-08-10 | 2006-02-15 | Walvoil S.p.A. | Inlet section for load sensing directional control valves |
CN105808373A (zh) * | 2014-12-30 | 2016-07-27 | 中兴通讯股份有限公司 | 数据增量备份方法、装置及nas设备 |
CN106649328A (zh) * | 2015-10-30 | 2017-05-10 | 宁波轩悦行电动汽车服务有限公司 | 分时租赁系统数据访问层接口构建方法 |
CN106686129A (zh) * | 2017-01-23 | 2017-05-17 | 天地融科技股份有限公司 | 一种负载均衡方法及系统 |
CN107948293A (zh) * | 2017-11-29 | 2018-04-20 | 重庆邮电大学 | 一种基于MongoDB负载均衡优化系统及方法 |
CN110581812A (zh) * | 2018-06-08 | 2019-12-17 | 北京京东尚科信息技术有限公司 | 一种数据报文的处理方法和装置 |
CN109089174A (zh) * | 2018-08-16 | 2018-12-25 | 咪咕视讯科技有限公司 | 一种多媒体数据流的处理方法及装置、计算机存储介质 |
CN111988154A (zh) * | 2019-05-21 | 2020-11-24 | 中移(苏州)软件技术有限公司 | 一种网络传输加速的方法、装置及计算机可读存储介质 |
CN111726415A (zh) * | 2020-06-30 | 2020-09-29 | 国电南瑞科技股份有限公司 | 一种基于负反馈机制的tcp长连接负载均衡调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112565381A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108377671B (zh) | 处理报文的方法和计算机设备 | |
JP3717836B2 (ja) | ダイナミック・ロード・バランサ | |
CN109391560B (zh) | 网络拥塞的通告方法、代理节点及计算机设备 | |
US7461128B2 (en) | Method, apparatus and system for processing message bundles on a network | |
US10469532B2 (en) | Preventing DNS cache poisoning | |
US9277006B2 (en) | Peer-to-peer communication of non-common data | |
CN105763618B (zh) | 数据传输的方法和装置 | |
CN107580079B (zh) | 一种报文传输方法和装置 | |
KR20130008325A (ko) | 컨텐츠 중심 네트워크에서 컨텐츠 요청자, 중간 노드 및 컨텐츠 소유자의 통신 방법 | |
CN109196842B (zh) | 一种会话保持方法、设备及存储介质 | |
CN107682470B (zh) | 一种检测nat地址池中公网ip可用性的方法及装置 | |
CN110601990A (zh) | 一种报文分流方法和装置 | |
CN111431871B (zh) | Tcp半透明代理的处理方法和装置 | |
CN111786905A (zh) | 报文重组方法及装置、处理器、存储介质及网络设备 | |
CN112422435A (zh) | 报文转发控制方法、装置和电子设备 | |
GB2592315A (en) | Methods and systems for sending packets through a plurality of tunnels | |
CN112436998B (zh) | 一种数据传输方法及电子设备 | |
CN112565381B (zh) | 一种数据包转发方法、装置及设备 | |
CN111901317B (zh) | 一种访问控制策略处理方法、系统和设备 | |
CN110417632B (zh) | 一种网络通信方法、系统及服务器 | |
CN110401513B (zh) | 一种数据传输方法和装置 | |
CN108111422B (zh) | 一种基于dpdk的数据高速多路转发方法及装置 | |
CN106506641A (zh) | 一种客户端设备的标识值提取方法及装置 | |
US10834179B2 (en) | Load balancing | |
CN108390822B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |