报文处理的方法和装置的制作方法

文档序号:7923570阅读:274来源:国知局
专利名称:报文处理的方法和装置的制作方法
技术领域
本发明涉及通信技术领域,尤其涉及一种报文处理的方法和装置。
背景技术
目前,随着数据通信技术的飞速发展,分布式的路由器设备已经逐渐取代 集中式的路由器设备,分布式的概念也已经扩展到软件领域。IP协议栈的分布 式可以很大程度上提高路由器的处理性能,I P协议栈可以根据路由器单板分布,
也可以根据APP (Application,基于协议的上层应用)分布,从而做到各个APP 独立收发报文,提高报文收发的性能。
所谓根据APP分布,即每个APP都有自己的协议栈。当源端APP发送报文时, 如果报文的长度大于网络的最大传输单元(MTU),则需要对报文进行分片,当 分片报文到达目的端时,需要对报文进行重组,组装成一个完整的报文上送给 目的端APP。目的端接收的报文包括分片报文和非分片报文,通常,目的端将接 收到的分片报文上送到独立的协议栈集中重组,重组后的报文直接由所述独立 的协议栈上送到目的端APP的协议栈;而对于非分片报文,目的端直接将其上送 到目的端APP的协议栈。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题 目的端接收到的分片报文需要先进行重组,再上送到目的端APP的协议栈, 而非分片报文直接上送到目的端APP的协议栈,由于处理方式不同,所走的路径
不同,可能导致分片报文在重组期间,后续的非分片报文已经被直接上送到目 的端APP的协议栈,目的端接收分片报文和非分片报文的顺序与上送到APP的协
议栈中的顺序不同,从而导致目的端分片报文和非分片报文出现乱序问题。 发明内容本发明的实施例提供一种报文处理的方法和装置,能够解决分布式系统中 目的端报文重组时出现的乱序问题。
为达到上述目的,本发明的实施例采用如下技术方案 一种报文处理的方法,包括 接收源端发送的分片报文和非分片报文;
将所述分片报文和非分片报文由同一路径依次上送到目的端APP的协议栈 进行处理。
一种报文处理的装置,包括
接收单元,用于接收源端发送的分片报文和非分片报文; 上送处理单元,用于将所述接收单元接收到的分片报文和非分片报文由同 一路径依次上送到目的端APP的协议栈进行处理。
本发明实施例提供的报文处理的方法和装置,目的端接收源端发送的分片 报文和非分片报文,将所述分片报文和非分片报文由同一路径依次上送到目的 端APP对应的协议栈进行处理。与现有技术相比,目的端接收分片报文和非分片 报文的顺序和上送到目的端APP的协议栈的顺序相同,能够避免非分片报文和分 片报文由于所走的路径不同而造成的乱序问题。


为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施 例或现有技术描述中所需要使用的附图作简单地介绍,显而易见的,下面描述 中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付 出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图l为本发明实施例一提供的报文处理的方法流程图2为本发明实施例二提供的报文处理的方法流程图;图3为本发明实施例三提供的报文处理的方法流程图; 图4为本发明实施例四提供的报文处理的装置结构示意图; 图5为本发明实施例五提供的报文处理的装置结构示意图。
具体实施例方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清 楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是 全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造 性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的实施例提供一种报文处理的方法和装置。为使本发明技术方案的 优点更加清楚,下面结合附图和实施例对本发明作详细说明。
本发明的实施例提供一种报文处理的方法,能够解决分布式系统中目的端 报文重组时出现的乱序问题。
实施例一
如图1所示,所述报文处理的方法包括
5101、 目的端链路层接收源端发送的分片报文和非分片报文;
5102、 目的端链路层将所述分片报文和非分片报文由同一路径依次上送到 目的端APP的协议栈;
5103、 目的端APP的协议栈对所述接收到的报文进行处理,并将处理后的报 文发送到目的端APP。
本发明实施例提供的报文处理的方法,目的端链路层接收源端发送的分片 报文和非分片报文,将所述分片报文和非分片报文由同一路径依次上送到目的 端APP的协议栈,由目的端APP的协议栈对所述接收到的报文进行处理,并将处 理后的报文发送到目的端APP。与现有技术相比,目的端链路层接收分片报文和非分片报文的顺序,与上送到目的端APP的协议栈的顺序相同,能够避免非分片
报文和分片报文由于所走的路径不同而造成的乱序问题。 实施例二
在本实施例中,所述报文为原始IP报文,目的端链路层将接收到的分片报
文和非分片报文经同一路径依次上送到目的端APP的协议栈,分片报文在上送到 目的端APP的协议栈之后进行重组。
如图2所示,所述报文处理的方法包括
S201、目的端链路层接收源端发送的分片报文和非分片报文。
其中,源端的APP发送报文时,如果报文的长度大于网络的最大传输单元 (MTU),则需要对报文进行分片,当分片报文到达目的端时,需要对报文进行 重组,组装成一个完整的报文上送给目的端的APP。
对于TCP (Transmission Control Protocol,传输控制协议)和證(User DatagramProtocol,用户数据报协议)的报文来说,才艮文的分片到达目的端时, 根据报文的协议号、源IP地址、目的IP地址和IP ID (IP Identification)来 区分该报文的分片是哪一个报文的分片。其中,同一个分片报文的报文分片具 有相同协议号、源IP地址、目的IP地址和IPID,在对分片报文进行重组时,将 所有具有相同协议号、源IP地址、目的IP地址和IP ID的报文分片集中到一起进 行重组,组成一个完整的报文。为了防止不同分片报文的报文分片出现协议号、 源IP地址、目的IP地址和IP ID完全相同的情况,避免分片报文重组失败,在源 端为可能具有相同协议号、源IP地址和目的IP地址的报文分配不同的IP ID。为 达到上述目的,可以采用如下方法中任意一种
方法一将报文分为四种类型指定协议号的第一报文,指定协议号和源 I P地址的第二报文,指定协议号和目的I P地址的第三报文,以及指定协议号、源IP地址和目的IP地址的第四报文。
由于报文重组时是根据协议号、源IP地址、目的IP地址和IP ID来区分报文
的分片的,APP发送报文时需要根据协议号、源IP地址、目的IP地址、源端口号 和目的端口号创建一个Socket,因此需要保证协议号、源IP地址和目的IP地址 可能相同的Socket所分配的IP ID范围不能相同。
根据上述"^艮文的四种分类,将Socket分为四种类型指定协议号的第一 Socket,指定协议号和源IP地址的第二Socket,指定协议号和目的IP地址的第 三Socket,以及指定协议号、源IP地址和目的IP地址的第四Socket。
为了保证可能具有相同协议号、源IP地址和目的IP地址的报文分配不同的 IP ID,只需要保证可能具有相同协议号、源IP地址和目的IP地址的Socket不使 用同一段IP ID。具体的分配规则为
对于指定协议号的第一Socket,分配IP ID时遵循如下MJ'j:
规则一为所有具有相同协议号的第一Socket分配不同的IP ID,为与第二 Socket、第三Socket和第四Socket具有相同协议号的第一Socket分配不同的IP ID。
对于指定协议号和源IP地址的第二Socket,分配IP ID时遵循如下规则 规则二为所有具有相同协议号和源IP地址的第二Socket分配不同的IP ID, 为与第一Socket和第三Socket具有相同协议号的第二Socket分配不同的IP ID, 为与第四Socket具有相同协议号和源IP地址的第二Socket分配不同的IP ID。 对于指定协议号和目的IP地址的第三Socket,分配IP ID时遵循如下规则 规则三为所有具有相同协议号和目的IP地址的第三Socket分配不同的IP ID,为与第一Socket和第二Socket具有相同协议号的第三Socket分配不同的IP ID,为与第四Socket具有相同协议号和目的IP地址的第三Socket分配不同的IPID。
对于指定协议号、源IP地址和目的IP地址的第三Socket,分配IP ID时遵循 如下规则
规则四为所有具有相同协议号、源IP地址和目的IP地址的第四Socket分 配不同的IP ID,为与第一Socket具有相同协议号的第四Socket分配不同的IP ID,为与第二Socket具有相同协议号和源IP地址的第四Socket分配不同的IP ID, 为与第三Socket具有相同协议号和目的IP地址的第四Socket分配不同的IP ID。
其中,当Socket删除后,将该Socket占用的IP ID资源进^亍回收,分配症会其 他Socket使用。当IP ID资源耗尽时,重新调整所有协议栈的IP ID范围。
方法二
除了根据Socket分配IP ID外,还可以根据协议栈来分配IP ID。对于每个 分布的协议栈,具备一个唯一的标识,不同的协议栈之间都使用不同的IP ID范 围,从而避免重复的可能,同样采取集中管理、动态分配的方式。相对于根据 Socket分配IP ID来讲,根据协议栈来分配IP ID,实现简单,不需要考虑多种 Socket的复杂情况。但是,不同的协议栈中的IP ID不能复用,例如,对于重组 的分片报文,即使协议号、源IP地址和目的IP地址不完全相同,也不能复用同 一段IP ID。
方法三当进行报文流的转发时,还可以根据报文流来分配IP ID,根据报 文流釆用的协议号、源地址、目的地址和VPN索引等标识,在创建报文流的发送 路径时,为可能具有相同协议号、源地址、目的地址和VPN索引的报文流分配不 同的IP ID。具体实现过程与方法一类似,在此不再阐述。
S202、目的端链路层将接收到的分片报文和非分片报文由同一路径依次上 送到目的端APP的协议栈。S203、目的端APP的协议栈对所述接收到的分片报文进行重组,并对所述重
封装完的报文依次发送至目的端APP。
当分片报文到达目的端时,需要进行重组,并上送至目的端APP。由于网络 状况不同,分片报文在发送途中可能会出现逐包的负载分担或者路由跳变等情 况,导致分片报文可能从不同的接口接收上来。要保证正常完成重组,就必须 把所有的分片报文都集中到一起进行重组,分布式的协议栈下也是如此,要有 一个独立的IP协议栈来处理重组的分片#Jl。
在分布式协议栈的环境下,每个协议栈都具备完整功能,可以实现报文重 组。因此,将原始IP的分片报文直接上送到目的端APP的协议栈中进行重组,这 样就可以保证原始IP的分片报文和非分片报文所经过的是同 一个协议栈,走同 一路径,从而避免乱序问题的发生。
实施例三
在本实施例中,所述^JL包括原始IP报文、TCP^t艮文和UDP^t艮文等,与实施 例二不同,目的端链路层首先将接收到的分片报文上送到集中的协议栈进行重 组,然后将所述重组完毕的报文,以及非分片报文经同一路径依次上送到目的 端APP的协议栈进行处理。
如图3所示,所述报文处理的方法包括
S301、目的端链路层接收源端发送的分片报文和非分片报文。 同样,为了防止不同分片报文的报文分片出现协议号、源IP地址、目的IP 地址和IP ID完全相同的情况,避免分片报文重组失败,在源端为可能具有相同 协议号、源IP地址和目的IP地址的报文分配不同的IP ID。具体实现过程同步骤 S201,在此不再阐述。
ii5302、 目的端链路层将接收到的分片报文上送到目的端内的集中协议栈进 行重组。
当目的端链路层接收到分片报文时,记录该分片报文的信息,然后将该分 片报文上送到目的端内的集中协议栈进行重组。
5303、 目的端链路层接收所述重组完毕的报文。
其中,所述分片报文和非分片报文的处理按照目的端链路层接收到的顺序 依次进行。当所述分片报文在重组期间,目的端链路层接收到后续的分片报文 或非分片报文,则目的端链路层将对所述后续报文进行緩存,等待前面的分片 报文重组完毕后才能上送。其中,系统为后续报文在目的端链路层的存储设定 一个预设时间,如果后续报文的緩存时间超过所述预设时间,则目的端将丢弃 前面的未重组完毕的报文,继续进行后续报文的上送。
5304、 目的端链路层将所述重组完毕的报文,以及所述非分片报文由同一 路径依次上送到目的端APP的协议栈。进而可以保证目的端链路层上送所述重组 完毕的报文,以及所述非分片报文到目的端APP的协议栈的顺序,与目的端链路 层接收分片报文和非分片报文的顺序相同,避免由于分片报文重组而造成的乱 序问题。
5305、 目的端APP的协议栈对所述重组完毕的报文、以及所述非分片报文进 行报文解封装,并将所述解封装完毕的报文发送至目的端APP。
因而,利用本发明实施例提供的报文处理的方法,能够解决分布式系统中 目的端报文重组时出现的乱序问题。
本发明的实施例提供一种报文处理的装置,能够解决分布式系统中目的端 报文重组时出现的乱序问题。
实施例四如图4所示,所述报文处理的装置,包括 接收单元401,用于接收源端发送的分片报文和非分片报文。 上送处理单元402,用于将所述接收单元401接收到的分片报文和非分片报 文由同一路径依次上送到目的端APP对应的协议栈进行处理。
本发明实施例提供的报文处理的装置,目的端接收源端发送的分片报文和 非分片报文,将所述分片报文和非分片报文由同一路径依次上送到目的端APP对 应的协议栈进行处理。与现有技术相比,目的端接收分片报文和非分片报文的 顺序和上送到APP的协议栈的顺序相同,能够避免非分片报文和分片报文由于所 走的路径不同而造成的乱序问题。 实施例五
如图5所示,所述报文处理的装置,包括 接收单元501,用于接收源端发送的分片报文和非分片报文。 上送处理单元502,用于将所述接收单元501接收到的分片报文和非分片报 文由同一路径依次上送到目的端APP的协议栈进行处理。 其中,所述上送处理单元502包括
链路层单元5021 ,用于将所述接收单元501接收到的分片报文和非分片报文 由同一路径依次上送到目的端APP的协议栈;
重组单元5022,用于对所述链路层单元5021发送过来的分片报文进行重组;
APP协议栈单元5023,用于对所述重组完毕的报文以及所述接收到的非分片 报文进行报文解封装,并将所述解封装完的报文依次发送至目的端APP。
若所述报文为原始IP报文,目的端链路层接收到的分片报文和非分片报文 经同一路径依次上送到目的端APP的协议栈,分片报文在上送到目的端APP的协 议栈之后进行重组。贝,J:所述重组单元5022位于所述APP协议栈单元5023内。
在分布式协议栈的环境下,每个协议栈都具备完整功能,可以实现报文重 组。因此,将原始IP的分片报文直接上送到目的端对应的协议栈中进行重组,
同一路径,从而避免乱序问题的发生。
若所述报文包括原始IP报文、TCP报文和UDP报文等,目的端链路层首先将 接收到的分片报文上送到集中的协议栈进行重组,然后将所述重组完毕的报文, 以及非分片报文经同一路径依次上送到目的端APP的协议栈进行处理。贝'J:
所述重组单元5022,还用于将所述重组完毕的报文返回给链路层单元5021, 此时,所述重组单元5022位于目的端内的集中协议栈。
则所述链路层单元5021,还用于将所述分片报文上送至重组单元5022进行 重组,并接收重组完毕的报文,然后将所述重组完毕的报文,以及所述非分片 报文由同一路径依次上送到目的端APP的协议栈。
进一步地,所述链路层单元5021,还用于在接收所述重组单元5022发送的 重组完毕的报文之前,緩存所述接收单元501接收的后续报文。
其中,所述分片报文和非分片报文的处理按照目的端链路层接收到的顺序 依次进行。当所述分片报文在重组期间,目的端链路层接收到后续的分片报文 或非分片报文,则后续报文将被緩存,等待前面的分片报文重组完毕后才能上 送。
其中,所述链路层单元5021,还用于在緩存后续报文的时间超出预设时间 时,丢弃所述重组单元5022未重组完毕的报文,继续进行后续报文的上送,其 中,所述预设时间由系统设定,为后续报文在所述链路层单元5021中存储的最 长时间。因而,利用本发明实施例提供的报文处理的装置,能够解决分布式系统中 目的端报文重组时出现的乱序问题。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算 机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。
其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(Random Access Memory, RAM)等。
以上所述,仅为本发明实施例的具体实施方式
,但本发明实施例的保护范 围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内, 可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 实施例的保护范围应该以权利要求的保护范围为准。
权利要求
1、一种报文处理的方法,其特征在于,包括接收源端发送的分片报文和非分片报文;将所述分片报文和非分片报文由同一路径依次上送到目的端APP的协议栈进行处理。
2、 根据权利要求l所述的报文处理的方法,其特征在于,所述将所述分片 报文和非分片报文由同一路径依次上送到目的端APP的协议栈进行处理的步骤 包括将所述分片报文和非分片报文直接由同一路径依次上送到目的端APP的协 议栈;对所述分片报文进行重组,对所述重组完毕的报文以及非分片报文进行解 封装。
3、 根据权利要求l所述的报文处理的方法,其特征在于,所述将所述分片 报文和非分片报文由同 一路径依次上送到对应的协议栈进行处理的步骤包括将所述分片报文上送到目的端内的集中协议栈进行重组; 接收所述重組完毕的报文;将所述重组完毕的报文,以及所述非分片报文由同一路径依次上送到目的 端APP的协议栈进行解封装。
4、 根据权利要求3所述的报文处理的方法,其特征在于,在所述接收所述 重组完毕的报文的步骤之前,还包括将接收到的后续报文进行緩存;相应地,所述报文处理的方法,还包括当所述后续报文的緩存时间超过预 设时间时,丢弃所述未重组完毕的报文。
5、 一种报文处理的装置,其特征在于,包括接收单元,用于接收源端发送的分片报文和非分片报文; 上送处理单元,用于将所述接收单元接收到的分片报文和非分片报文由同 一路径依次上送到目的端APP的协议栈进行处理。
6、 根据权利要求5所述的报文处理的装置,其特征在于,所述上送处理单 元包括链路层单元,用于将所述接收单元接收到的分片报文和非分片报文由同一路径依次上送到目的端APP的协议栈;重组单元,用于对所述链路层单元发送过来的分片报文进行重组; APP协议栈单元,用于对所述重组完毕的报文以及所述接收到的非分片报文进行报文解封装,并将所述解封装完的报文依次发送至目的端APP。
7、 根据权利要求6所述的报文处理的装置,其特征在于 所述重组单元位于所述APP协议栈单元内。
8、 根据权利要求6所述的报文处理的装置,其特征在于 所述重组单元,还用于将所述重组完毕的报文返回给链路层单元,此时,所述重组单元位于目的端内的集中协议栈;则所述链路层单元,还用于将所述分片报文上送至重组单元进行重组,并 接收重组完毕的报文,然后将所述重组完毕的报文,以及所述非分片报文由同 一路径依次上送到目的端APP的协议栈。
9、 根据权利要求8所述的报文处理的装置,其特征在于 所述链路层单元,还用于在接收所述重组单元发送的重组完毕的报文之前,緩存所述接收单元接收的后续报文。
10、 根据权利要求9所述的报文处理的装置,其特征在于 所述链路层单元,还用于在緩存后续报文的时间超出预设时间时,丟弃所述重组单元未重组完毕的报文,继续进行后续报文的上送,其中,所述预设时 间由系统设定,为后续报文在所述链路层单元中存储的最长时间。
全文摘要
本发明实施例公开了一种报文处理的方法,所述报文处理的方法,包括接收源端发送的分片报文和非分片报文;将所述分片报文和非分片报文由同一路径依次上送到目的端APP的协议栈进行处理。本发明实施例还公开了一种报文处理的装置,本发明适用于在分布式系统中目的端对分片报文和非分片报文的处理。
文档编号H04L12/56GK101447930SQ20081018910
公开日2009年6月3日 申请日期2008年12月25日 优先权日2008年12月25日
发明者张丽军, 朱丽君, 怡 熊, 王艳春, 郭英辉 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1