CN110581812A - 一种数据报文的处理方法和装置 - Google Patents
一种数据报文的处理方法和装置 Download PDFInfo
- Publication number
- CN110581812A CN110581812A CN201810587646.2A CN201810587646A CN110581812A CN 110581812 A CN110581812 A CN 110581812A CN 201810587646 A CN201810587646 A CN 201810587646A CN 110581812 A CN110581812 A CN 110581812A
- Authority
- CN
- China
- Prior art keywords
- fragment
- field
- message
- identification field
- messages
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
-
- 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]
- H04L69/166—IP fragmentation; TCP segmentation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
Abstract
本发明公开了一种数据报文的处理方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:接收客户端发来的各数据报文,每一数据报文包括标识字段和标志字段;根据所述标志字段从所述各数据报文中识别出分片报文;对于任一所述标识字段,当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文;根据网络最大传输单元值切分所述完整数据报文,并将切分后的所述完整数据报文转发到对应的后端服务,其中,按照预设模型选取所述完整数据报文对应的后端服务。该实施方式能够使超过MTU的UDP大包经过负载均衡器后,所有的数据报文仍然转发到同一个后端服务上,保障UDP大包负载均衡正常运作。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种数据报文的处理方法和装置。
背景技术
负载均衡是通过负载均衡分担技术,将外部发送过来的请求均匀分配到一个应用服务器集合的每台服务器上,从而实现外部请求流量均分以及分布式响应,解决大量并发访问服务的问题。
现有的负载均衡方案,基于常用的软件LVS(Linux虚拟服务器),LVS作为四层负载均衡在FULLNAT(网络地址转换)模型下不支持UDP协议(用户数据报协议)。传统TCP(传输控制协议)或者HTTP协议(超文本传输协议)的负载均衡,由于TCP有协议栈保障,保证报文传输的MSS(网络最大传输数据量)基本协商在一个MTU(最大传输单元)内,而导致不会产生IP(互联网协议地址)分片,而当UDP的长度大于1500(1500为常见以太网的MTU(最大传输单元)值)时,会产生多个IP分片,主UDP报文携带IP+Port信息(即源IP端口信息),但分片报文不携带端口相关信息,所以在FULLNAT的IP+Port Hash(哈希)模型下,与主UDP报文Hash后计算的后端服务器不是一个,从而导致负载均衡异常。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有的负载均衡器不支持这种超过MTU的UDP报文(即UDP大包)负载均衡技术。
发明内容
有鉴于此,本发明实施例提供一种数据报文的处理方法和装置,能够使超过MTU的UDP大包经过负载均衡器后,所有的数据报文仍然转发到同一个后端服务上,保障UDP大包负载均衡正常运作。
为实现上述目的,根据本发明实施例的一个方面,提供了一种数据报文的处理方法。
一种数据报文的处理方法,包括:接收客户端发来的各数据报文,每一数据报文包括标识字段和标志字段;根据所述标志字段从所述各数据报文中识别出分片报文;对于任一所述标识字段,当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文;根据网络最大传输单元值切分所述完整数据报文,并将切分后的所述完整数据报文转发到对应的后端服务,其中,按照预设模型选取所述完整数据报文对应的后端服务。
可选地,根据所述标志字段从所述各数据报文中识别出分片报文的步骤之后,包括:分别以各分片报文的标识字段作为主键,将所述各分片报文存储于预设内存区域。
可选地,所述当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文的步骤,包括:当具有该标识字段的所有分片报文均接收完成,将所述预设内存区域中所有以该标识字段作为主键的分片报文,重组为完整数据报文。
可选地,所述数据报文还包括片偏移字段,通过如下方法确定具有一标识字段的所有分片报文均接收完成:确定具有该标识字段的最后一个分片报文接收完成,并获取所述最后一个分片报文的片偏移字段值;获取具有该标识字段的已接收分片报文的数量,所述已接收分片报文为以该标识字段为主键的预设内存区域中的所有分片报文;根据所述最后一个分片报文的片偏移字段值,得到具有该标识字段的分片报文总数量;如果所述已接收分片报文的数量与所述分片报文总数量一致,则确定具有该标识字段的所有分片报文均接收完成。
可选地,所述标志字段包括MF字段,所述MF字段用于指示所在的分片报文是否有后续分片,通过如下方法确定具有一标识字段的最后一个分片报文接收完成:如果接收到具有该标识字段的某一分片报文,该分片报文的所述MF字段值指示该分片报文没有后续分片,则确定具有该标识字段的最后一个分片报文接收完成。
可选地,如果所述已接收分片报文的数量与所述分片报文总数量不一致,则:设置定时时间,以在达到所述定时时间时,重试所述确定具有该标识字段的所有分片报文均接收完成的操作;如果重试次数达到预设阈值时,所述已接收分片报文的数量与所述分片报文总数量仍不一致,则删除所述预设内存区域中具有该标识字段的全部分片报文,以丢弃所述全部分片报文。
可选地,所述预设模型为源IP端口哈希模型或轮询哈希模型。
可选地,所述数据报文为UDP/IP报文。
根据本发明实施例的另一方面,提供了一种数据报文的处理装置。
一种数据报文的处理装置,包括:接收模块,用于接收客户端发来的各数据报文,每一数据报文包括标识字段和标志字段;识别模块,用于根据所述标志字段从所述各数据报文中识别出分片报文;重组模块,用于对于任一所述标识字段,当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文;选取模块,用于按照预设模型选取所述完整数据报文对应的后端服务;转发模块,用于根据网络最大传输单元值切分所述完整数据报文,并将切分后的所述完整数据报文转发到所述后端服务。
可选地,还包括存储模块,用于:分别以各分片报文的标识字段作为主键,将所述各分片报文存储于预设内存区域。
可选地,所述重组模块还用于:当具有一标识字段的所有分片报文均接收完成,将所述预设内存区域中所有以该标识字段作为主键的分片报文,重组为完整数据报文。
可选地,所述数据报文还包括片偏移字段,所述装置还包括检查模块,用于:确定具有一标识字段的最后一个分片报文接收完成,并获取所述最后一个分片报文的片偏移字段值;获取具有该标识字段的已接收分片报文的数量,所述已接收分片报文为以该标识字段为主键的预设内存区域中的所有分片报文;根据所述最后一个分片报文的片偏移字段值,得到具有该标识字段的分片报文总数量;如果所述已接收分片报文的数量与所述分片报文总数量一致,则确定具有该标识字段的所有分片报文均接收完成。
可选地,所述标志字段包括MF字段,所述MF字段用于指示所在的分片报文是否有后续分片,所述检查模块包括报文检查子模块,用于:如果接收到具有一标识字段的某一分片报文,该分片报文的所述MF字段值指示该分片报文没有后续分片,则确定具有该标识字段的最后一个分片报文接收完成。
可选地,还包括重试模块,用于:如果具有一标识字段的已接收分片报文的数量与具有该标识字段的分片报文总数量不一致,则:设置定时时间,以在达到所述定时时间时,重试所述确定具有该标识字段的所有分片报文均接收完成的操作;如果重试次数达到预设阈值时,该已接收分片报文的数量与该分片报文总数量仍不一致,则删除所述预设内存区域中具有该标识字段的全部分片报文,以丢弃所述全部分片报文。
可选地,所述选取模块还用于:按照源IP端口哈希模型或轮询哈希模型,选取所述完整数据报文对应的后端服务。
可选地,所述数据报文为UDP/IP报文。
根据本发明实施例的又一方面,提供了一种电子设备。
一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现本发明提供的数据报文的处理方法。
根据本发明实施例的又一方面,提供了一种计算机可读介质。
一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的数据报文的处理方法。
上述发明中的一个实施例具有如下优点或有益效果:根据数据报文的标志字段从各数据报文中识别出分片报文;对于任一标识字段,当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文;根据网络最大传输单元值切分完整数据报文,并将切分后的完整数据报文转发到对应的后端服务,其中,按照预设模型选取所述完整数据报文对应的后端服务。能够使超过MTU的UDP大包经过负载均衡器后,所有的数据报文仍然转发到同一个后端服务上,保障UDP大包负载均衡正常运作。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的数据报文的处理方法的主要步骤示意图;
图2是根据本发明实施例的IP报文格式的关键字段示意图;
图3是根据本发明实施例的数据报文处理的优选执行流程示意图;
图4是根据本发明实施例的数据报文的处理装置的主要模块示意图;
图5是本发明实施例可以应用于其中的示例性系统架构图;
图6是适于用来实现本发明实施例的服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
图1是根据本发明实施例的数据报文的处理方法的主要步骤示意图
如图1所示,本发明实施例的数据报文的处理方法主要包括如下的步骤S101至步骤S105。本发明的数据报文的处理方法应用于四层负载均衡器,本实施例可以基于DPDK来实现,DPDK,即数据平面开发套件,即Data Plane Development Kit,是一种快速收发包工具,旨在快速数据包处理,可以极大的提升数据处理性能和吞吐量。除DPDK之外,本发明实施例还可使用其他快速收发包工具。本发明实施例的数据报文为UDP/IP报文,本发明实施例也可称为UDP报文。
步骤S101:接收客户端发来的各数据报文。
每一数据报文包括标识字段和标志字段。
步骤S102:根据标志字段从接收的各数据报文中识别出分片报文。
分片报文即分片形式的数据报文。分片即IP分片,IP分片是网络上传输IP报文的一种技术手段。IP协议在传输数据包时,将数据报文分为若干分片进行传输,并在接收报文的系统中进行重组。不同的链路类型规定有不同最大长度的链路层数据帧,称为链路层MTU(最大传输单元)。常见以太网的MTU为1500,若IP协议在传输数据包时,IP报文长度大于转发接口的MTU,则将数据报文分为若干分片进行传输,分片报文到达接收方时,由接收方完成重组。
从客户端接收的数据报文本身可以是分片形式,也可以不是分片形式。IP报文格式中有32位是本发明实施例中用来处理UDP负载均衡标识的关键字段,具体如图2所示。图2中,标识(identification)为16位,它是一个计数器,用来产生数据报文的标识字段。标志(flag)为3位,目前只有前两位有意义,其中,标志字段的最低位是MF(More Fragment),MF字段用于指示所在的分片报文是否有后续分片,MF=1表示所在的分片报文后续“还有分片”,MF=0表示所在的分片报文为最后一个分片,即没有后续分片;标志字段中间的一位是DF(Don't Fragment),用于指示所在的数据报文是否允许分片,只有当DF=0时才允许分片。片偏移(offset)为13位,片偏移字段指示本数据报文的偏移长度,相同标识字段的多个分片报文中,第一个分片报文的offset=0,第二个分片报文的offset=1,逐一累加,假设共有5个分片报文,则第五个分片报文的offset=4。
根据接收的数据报文的标志字段的DF字段值,可以识别出分片报文。即DF=0,表示该数据报文本身为分片形式;DF=1,表示该数据报文本身不为分片形式。
对于不是分片形式的数据报文(即DF=1),本发明实施例则按照现有的DPDKFULLNAT转发流程,根据源IP端口哈希模型或轮询哈希模型选择一个后端服务,并将该数据报文转发到选择的后端服务。源IP端口信息为发送数据报文的客户端的端口信息,其由其中一个分片报文携带,该分片报文称为主UDP报文。
步骤S102之后,可分别以各分片报文的标识字段作为主键,将各分片报文存储于预设内存区域。预设内存区域是申请的一块专用于IP分片报文存储的内存,当有IP分片报文到达时,便存储在该内存区域内。即,如果DF=0,说明该数据报文为分片报文,则将该分片报文中的identification位(即标识字段)作为该分片报文的主Key(键),将数据报文的偏移(片偏移字段)以及长度,暂时存储到预设内存区域中,DF=0的同时,MF为0或1两种情况。
步骤S103:对于任一标识字段,当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文。
具有某一标识字段的所有分片报文指客户端发送的所有具有该标识字段的分片报文,这些分片报文不一定同时接收完成。
具体地,当具有某一标识字段的所有分片报文均接收完成,将预设内存区域中所有以该标识字段作为主键的分片报文,重组为完整数据报文。该标识字段也是重组得到的完整数据报文的标识字段。
其中,可以通过如下方法确定具有一标识字段的所有分片报文均接收完成:确定具有该标识字段的最后一个分片报文接收完成,并获取该最后一个分片报文的片偏移字段值;获取具有该标识字段的已接收分片报文的数量,其中,已接收分片报文为以该标识字段为主键的预设内存区域中的所有分片报文;根据该最后一个分片报文的片偏移字段值,得到具有该标识字段的分片报文总数量;如果该已接收分片报文的数量与该分片报文总数量一致,则确定具有该标识字段的所有分片报文均接收完成。。
例如,具有某一标识字段的已接收分片报文的数量为7,且最后一个分片报文的片偏移字段值为6,则根据片偏移字段值(offset)可知,客户端发来的具有该标识字段的分片报文总计有7个,已接收分片报文的数量与客户端发来的具有该标识字段的分片报文总数量一致,则确定具有该标识字段的最后一个分片报文接收完成。如果不一致,则具有该标识字段的最后一个分片报文未接收完成。
需要说明的是,本发明实施例中具有某一标识字段的最后一个分片报文,是指客户端发送的具有该标识字段的所有分片报文中的最后一个分片报文,而不是最后一个到达本发明实施例的负载均衡器的分片报文,最后一个分片报文是在进行IP分片时确定的,而客户端向负载均衡器发送各分片报文时,由于网络延时等原因,最后一个分片报文并不一定最后一个到达负载均衡器。
可以通过如下方法确定具有一标识字段的最后一个分片报文接收完成:
如果接收到具有该标识字段的某一分片报文,该分片报文的MF字段值指示该分片报文没有后续分片,则确定具有该标识字段的最后一个分片报文接收完成。例如,接收到具有某一标识字段的某一分片报文的MF字段的值为0(MF=0),则,表明该分片报文没有后续分片,即该分片报文为客户端发送的具有该标识字段的最后一个分片报文。
如果具有某一标识字段的已接收分片报文的数量,与客户端发送的具有该标识字段的分片报文总数量不一致,则说明客户端发来的具有该标识字段的所有分片报文尚没有接收完全,则:设置定时时间,以便等待接收网络传输过程中延时接收(即延时到达负载均衡器)的分片报文,设置定时时间具体可以通过DPDK设置定时器来实现。在达到该定时时间(即定时器超时)时,重试确定具有该标识字段的所有分片报文均接收完成的操作,如果执行该次重试之后,仍有该标识字段的分片报文未接收完成(即具有该标识字段的已接收分片报文的数量与该分片报文总数量仍不一致),则重新设置定时时间,以便再次进行上述重试的操作,如果重试次数达到预设阈值时,仍有该标识字段的分片报文未接收完成,则删除预设内存区域中具有该标识字段的全部分片报文,以丢弃具有该标识字段的全部分片报文。
步骤S104:按照预设模型选取完整数据报文对应的后端服务。
预设模型可以为源IP端口哈希(IP+Port Hash)模型或轮询哈希(Round RobinHash)模型。其中,轮询即依次把客户端的数据报文轮询分发到不同的后端服务器(也可称后端服务)。IP+Port Hash即将客户端发来的数据报文(此处指主UDP报文)中的IP与Port(端口)计算出一个Hash(哈希)值,负载均衡器将与主UDP报文具有相同标识字段的分片报文发送到同一个后端服务。
步骤S105:根据网络最大传输单元值切分完整数据报文,并将切分后的完整数据报文转发到选取的后端服务。
即根据网络MTU值,将重组得到的完整数据报文进行切分,切分方法可以采用通用的IP报文切分方法,设置IP头字节的identification(标识),flag(标志)和offset(片偏移)。将切分得到的多个数据报文通过网卡发送出去,同时将预设内存区域中该完整数据报文的所有IP分片报文所在的内存清空(即清空以该完整数据报文的标识字段作为主键的预设内存区域)。
需要说明的是,本发明实施例的步骤S104和步骤S105,也可以先根据网络最大传输单元值切分完整数据报文,然后按照预设模型选取完整数据报文对应的后端服务,再将切分后的完整数据报文转发到选取的后端服务。
本发明主要按照RFC标准(RFC收录互联网协议标准的一系列文件),在保证UDP/IP报文在分片的情况下,在负载均衡端对于数据报文进行处理的一种技术方法和手段,将分片报文重组后,实施报文转发策略,然后再根据IP分片规范将要转发的数据报文拆分包后转发到同一个后端服务。
图3是根据本发明实施例的数据报文处理的优选执行流程示意图。
如图3所示,本发明实施例的数据报文处理的优选执行流程包括如下的步骤S301至步骤S312。对于客户端发来的每一数据报文,均执行如下的流程。
步骤S301:接收客户端发来的一数据报文。
该数据报文包括标志字段、标识字段和片偏移字段,以下为了便于表述,将该报文的标识字段称为目标标识字段。标志字段包括MF字段和DF字段。这些字段在上文已详细介绍,此处不再赘述。
步骤S302:根据该数据报文的标志字段判断该数据报文是否为分片报文,若是,则执行步骤S303,否则,执行步骤S312。
根据该数据报文的标志字段的DF字段值判断该数据报文是否为分片报文。即DF=0,表示该数据报文为分片报文;DF=1,表示该数据报文不为分片报文。
步骤S303:根据该分片报文的MF字段值,判断该分片报文是否为客户端发送的具有该目标标识字段的最后一个分片报文,若是,则执行步骤S304,否则,执行步骤S305。
MF=0表示该分片报文为最后一个分片,即没有后续分片。
步骤S304:将该分片报文存入以目标标识字段作为主键的预设内存区域,并判断该预设内存区域中是否已存了客户端发送的具有该目标标识字段的所有分片报文,若是,则执行步骤S306,否则,执行步骤S307。
具体地,判断该预设内存区域中是否已存了客户端发送的具有该目标标识字段的所有分片报文的方法为:获取具有该目标标识字段的已接收分片报文的数量,该已接收分片报文为以该目标标识字段为主键的预设内存区域中的所有分片报文;根据该分片报文的片偏移字段值,得到具有该目标标识字段的分片报文总数量,如果该已接收分片报文的数量与该分片报文总数量一致,则已存了客户端发送的具有该目标标识字段的所有分片报文,否则,客户端发送的具有该目标标识字段的分片报文中,还有分片报文尚未存入该预设内存区域。
步骤S305:将该分片报文存入以目标标识字段作为主键的预设内存区域。
步骤S306:将该预设内存区域中已存的具有该目标标识字段的所有分片报文重组为完整数据报文。
执行完步骤S306之后,执行步骤S311。
步骤S307:设置定时时间,以便等待延时接收的该目标标识字段的其他分片报文存入该预设内存区域。
步骤S308:在达到定时时间时,重试判断该预设内存区域中是否已存了客户端发送的具有该目标标识字段的所有分片报文,若是,则执行步骤S306,否则,执行步骤S309。
步骤S309:判断是否已达到最大重试次数,若是,则执行步骤S310,否则,返回步骤S307,以重新设置定时时间。
步骤S310:删除预设内存区域中具有该目标标识字段的全部分片报文,以丢弃该全部分片报文。
步骤S311:按照预设模型选取完整数据报文对应的后端服务,并将该完整数据报文转发到该后端服务,并删除预设内存区域中具有该目标标识字段的全部分片报文。
步骤S312:按照预设模型选取该数据报文对应的后端服务,并将该数据报文转发到该后端服务。
本发明实施例提出了在负载均衡应用场景下,对于大于一个UDP分片的数据报文进行负载均衡的处理流程。通过本发明实施例,UDP大包可以通过负载均衡器再分包后转发到对应的后端服务。
图4是根据本发明实施例的数据报文的处理装置的主要模块示意图。
如图4所示,本发明实施例的数据报文的处理装置400主要包括:接收模块401、识别模块402、重组模块403、选取模块404、转发模块405。数据报文的处理装置400应用于四层负载均衡器,本实施例可以基于DPDK(一种快速收发包工具)来实现,除DPDK之外,本发明实施例还可使用其他快速收发包工具。
接收模块401用于接收客户端发来的各数据报文,每一数据报文包括标识字段和标志字段,还可包括片偏移字段。标志字段可以包括MF字段,该MF字段可以用于指示所在的分片报文是否有后续分片。
识别模块402用于根据标志字段从各数据报文中识别出分片报文,分片报文为分片形式的数据报文。
重组模块403,用于对于任一标识字段,当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文。
重组模块403具体可以用于:当具有一标识字段的所有分片报文均接收完成,将预设内存区域中所有以该标识字段作为主键的分片报文,重组为完整数据报文。
选取模块404,用于按照预设模型选取完整数据报文对应的后端服务。
选取模块具体可以用于:按照源IP端口哈希模型或轮询哈希模型,选取完整数据报文对应的后端服务。
转发模块405,用于根据网络最大传输单元值切分完整数据报文,并将切分后的完整数据报文转发到后端服务。
数据报文的处理装置400还可以包括存储模块,用于:分别以各分片报文的标识字段作为主键,将各分片报文存储于预设内存区域。
数据报文的处理装置400还可以包括检查模块,用于:确定具有一标识字段(可以是接收的数据报文的标识字段中的任一标识字段)的最后一个分片报文接收完成,并获取该最后一个分片报文的片偏移字段值;获取具有该标识字段的已接收分片报文的数量,所述已接收分片报文为以该标识字段为主键的预设内存区域中的所有分片报文;根据该最后一个分片报文的片偏移字段值,得到具有该标识字段的分片报文总数量;如果该已接收分片报文的数量与该分片报文总数量一致,则确定具有该标识字段的所有分片报文均接收完成。
检查模块可以包括报文检查子模块,用于:如果接收到具有一标识字段(可以是接收的数据报文的标识字段中的任一标识字段)的某一分片报文,该分片报文的MF字段值指示该分片报文没有后续分片,则确定具有该标识字段的最后一个分片报文接收完成。
数据报文的处理装置400还可以包括重试模块,用于:如果具有一标识字段(可以是接收的数据报文的标识字段中的任一标识字段)的已接收分片报文的数量与具有该标识字段的分片报文总数量不一致,则:设置定时时间,以在达到该定时时间时,重试确定具有该标识字段的所有分片报文均接收完成的操作;如果重试次数达到预设阈值时,该已接收分片报文的数量与该分片报文总数量仍不一致,则删除预设内存区域中具有该标识字段的全部分片报文,以丢弃该全部分片报文。
另外,在本发明实施例中数据报文的处理装置的具体实施内容,在上面所述数据报文的处理方法中已经详细说明了,故在此重复内容不再说明。
图5示出了可以应用本发明实施例的数据报文的处理方法或数据报文的处理装置的示例性系统架构500。
如图5所示,系统架构500可以包括终端设备501、502、503,网络504和服务器505。网络504用以在终端设备501、502、503和服务器505之间提供通信链路的介质。网络504可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备501、502、503通过网络504与服务器505交互,以接收或发送消息等。终端设备501、502、503上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备501、502、503可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器505可以是提供各种服务的服务器,例如对用户利用终端设备501、502、503所浏览的购物类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息)反馈给终端设备。
需要说明的是,本发明实施例所提供的数据报文的处理方法一般由服务器505执行,相应地,数据报文的处理装置一般设置于服务器505中。
应该理解,图5中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图6,其示出了适于用来实现本申请实施例的服务器的计算机系统600的结构示意图。图6示出的服务器仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图6所示,计算机系统600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM)603中的程序而执行各种适当的动作和处理。在RAM 603中,还存储有系统600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM 603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。在该计算机程序被中央处理单元(CPU)601执行时,执行本申请的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块401、识别模块402、重组模块403、选取模块404、转发模块405。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,接收模块401还可以被描述为“用于接收客户端发来的各数据报文的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:接收客户端发来的各数据报文,每一数据报文包括标识字段和标志字段;根据所述标志字段从所述各数据报文中识别出分片报文;对于任一所述标识字段,当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文;根据网络最大传输单元值切分所述完整数据报文,并将切分后的所述完整数据报文转发到对应的后端服务,其中,按照预设模型选取所述完整数据报文对应的后端服务。
根据本发明实施例的技术方案,根据数据报文的标志字段从各数据报文中识别出分片报文;对于任一标识字段,当具有该标识字段的所有分片报文均接收完成,将该标识字段的所有分片报文重组为完整数据报文;根据网络最大传输单元值切分完整数据报文,并将切分后的完整数据报文转发到对应的后端服务,其中,按照预设模型选取所述完整数据报文对应的后端服务。能够使超过MTU的UDP大包经过负载均衡器后,所有的数据报文仍然转发到同一个后端服务上,保障UDP大包负载均衡正常运作。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。