一种分片报文的重组方法

文档序号:7595450阅读:193来源:国知局
专利名称:一种分片报文的重组方法
技术领域
本发明涉及数据通讯领域的网间协议(Internet Protocol,IP)层报文的处理,具体涉及IP分片报文的重组方法。
背景技术
在数据通信网络中,IP报文要通过物理层才可以发送出去。物理层一般要限制一次发送的数据帧的最大长度(Maximum Transfer Data)。因此,在IP层将一份IP报文提交物理层之前,需要知道物理层的MTU(MaximumTransmission Unit)大小,并决定是否需要将该IP报文分成多片,以保证物理层报文的大小不会超过MTU。相应的,在IP报文的接收端,需要判断收到的IP报文是否是一个完整的报文,或者仅仅是IP报文的一个分片。如果接收到的是IP报文的分片,则需要将多个IP分片重组起来,最终恢复成一个完整的IP报文。
在IP报文的首部,包含了与IP分片相关的信息。这些信息主要有32位的源IP地址,16位的标识、8位的IP协议类型和13位的分片偏移,如图1所示。
在图1中,16位的标识字段是为了使各个IP分片报文最后能准确地重组成为一个完整的IP报文而设计的。同一个IP报文的多个分片具有相同的源IP地址、相同的IP协议类型和相同的16位标识。只有这三者都完全匹配的分片才属于同一IP报文,接收端设备据此判断出多个分片是否属于同一IP报文,并将它们重组起来。
标志字段占3比特(bit),目前只有前两个比特有意义。标志字段中的最低位为MF(More Fragment),表示“更多的片”。MF=1即表示后面还有后续的IP分片,MF=0表示这是属于同一完整IP报文的多个分片中的最后一个。除了最后一个分片外,其它各个分片报文都要将MF置1。标志字段中间的一位记为DF(Don’t Fragment),表示“不分片”。只有当DF=0时才允许分段。如果将这一比特置1,IP将不对数据报文进行分片。
在图1中,13位的分片偏移字段指的是该分片偏移原始IP报文开始处的位置。另外,当IP报文被分片后,每个分片在IP首部的总长度值是该IP分片报文本身的长度值。
在IP报文的发送端,IP报文的分片过程是首先将一个长度较大的IP报文的数据部分拆成多个分片,要保证每个分片的物理帧长度的不超过MTU的大小。然后再根据上面描述的16位的标识、3位的标志及13位的分片偏移地址等字段的含义,封装IP首部信息。最后通过物理层,将报文发送出去。
在IP报文的接收端,IP分片报文的重组过程是根据接收到的分片的源IP地址,标识及协议类型的值,判断接收到的多个分片是否属于同一个完整的IP报文,并为属于同一个IP报文的分片保存状态信息。如果是,则根据IP报文首部13位的分片偏移字段,将这些分片的数据部分逐一取出,并按顺序重组起来。直到同一IP报文的所有分片被接收后,就可以完成多个IP分片的重组,最终恢复成一个完整的IP报文。
在进行分片报文的重组时,需要建立一个重组信息表,用于保存与重组相关的状态信息以及各分片报文的地址、长度等信息。接收端设备接收到一个IP分片后,要根据源IP地址、IP协议类型和IP头中的标识找到对应的重组信息表。作为重组信息表索引的源IP地址、IP头标识和IP协议类型各占32、16和8比特,索引值的范围很广,因此IP分片重组的难点就在于重组信息表的组织和查找。尤其在语音或视频通信等实时业务中,要同时完成IP分片的重组并保证足够小的延时,很难用现有的方式实现。
目前查找重组信息表主要有两种方案第一种是为每一个可能出现的源IP地址、IP协议类型和16位标识的组合建立一个重组信息表。对接收到的每一个分片,可以根据源IP地址、IP协议类型和16位的标识直接查找到一个重组信息表,然后在这个表中记录当前接收到的所有分片的信息并更新重组的状态,比如各分片在内存中的地址、报文长度等。接收到已分片IP报文的最后一个分片后,将所有分片的数据部分重组起来,重新恢复成一个完整的IP报文。这种为每一个可能出现的源IP地址、IP协议类型和16位标识的组合建立一个重组信息表,所需要的表项数目非常巨大,需要的内存太多,只有理论上的可行性。
第二种方案与第一种方案有所不同。在这个方案中,接收端设备用一个队列动态地保存着当前时刻已收到但未重组完毕的所有已分片IP报文的源IP地址、IP协议类型和标识组合,并为每个组合建立一个重组信息表。队列中没有重复的源IP地址、IP协议类型和标识组合,且每当完成一个IP报文的重组后,对应的组合要从队列中删除。对接收到的每一个分片,将其源IP地址、IP协议类型和16位标识与队列中保存的源IP地址、IP协议类型和标识的组合逐一匹配。如果没有找到完全匹配的项,则为该组合建立一个重组信息表,并将这个组合增加到这个队列中。如果可以找到完全匹配的项,则表示对应重组信息表已经建立。这样,接收到的每一个IP分片都可以找到一个重组信息表。通过重组信息表,可以找到同一已分片IP报文的所有分片的信息,并将它们重组起来,重新恢复成一个完整的IP报文。第二种重组方案的缺点在于分片重组的时间不可控。当同一时刻有较多不同IP报文的分片时,需要进行多次源IP地址、IP协议类型和标识的匹配。在实时性要求较高的语音和视频通讯中,实时性无法保证。
从以上两种现有技术方案可以看出,现有技术方案在IP报文重组过程中,没能提供一种内存需求小而且实时性好的IP报文重组方法。第一种技术方案需要消耗较多内存资源,而且实时性差,第二种虽然对第一种技术方案有所改进,在内存要求上大大降低,但同样无法满足实时性要求。

发明内容
鉴于上述现有技术所存在的缺点,本发明的目的是提供一种内存需求小而且实时性好的IP报文重组方法。
本发明的目的是通过以下技术方案实现的一种网间协议(IP)分片报文的重组方法,应用于IP层的IP报文接收端,包括步骤1)在所述IP报文接收端中建立三个级别索引表和重组信息表,一级索引表是以所述IP分片报文的IP协议类型为索引的索引表,一级索引表指向以所述IP分片报文的标识字段为索引的二级索引表,二级索引表指向以所述IP分片报文的源IP地址为索引的三级索引表,三级索引表指向所述IP分片报文的所述重组信息表;
2)所述IP报文接收端接收到所述IP分片报文后根据所述三个级别索引表查找到对应的所述重组信息表,然后根据所述重组信息表完成所述IP分片报文的重组。
其中,所述步骤1)中所述的一级索引表的表项数目为所述IP报文接收端需要支持的所述IP协议类型的数目,所述的二级索引表的数目为所述一级索引表的表项数目。
其中,所述步骤1)中的三级索引表是动态建立的,当所述IP分片报文根据所述源IP地址索引没有对应的所述三级索引表时,则为所述IP分片报文建立对应的所述三级索引表,当所述三级索引表对应的所述IP分片报文都重组完后,则删除对应的所述三级索引表。
其中,所述步骤1)中所述的三级索引表中的表项是动态建立的,当所述IP分片报文没有对应的三级索引表的表项时,则为其建立对应的所述三级索引表的表项,当所述三级索引表表项对应的所述IP分片报文都重组完后,则删除对应的所述三级索引表的表项。
其中,所述步骤1)还包括,为所述IP分片报文建立对应的所述三级索引表的表项之后,也为所述IP分片报文建立对应的所述重组信息表;删除所述三级索引表的表项,也删除三级索引表项对应的所述IP分片报文的重组信息表。
其中,所述的二级索引表的表项包括表示正在处理的IP分片报文数目的字段。
由上述本发明提供的技术方案可以看出,本发明可以达到如下技术效果首先,本发明只需要较小的内存。
从现有技术分析,我们可以知道现有IP分片报文的重组方法实际上采用的是一级索引表的方法查找IP分片报文的重组信息表,即以源IP地址、IP协议类型和16位标识的组合为索引的索引表,因此上述技术方案一就由于源IP地址、IP协议类型和16位标识的组合数目庞大、需要内存太多而不具有可行性。本发明采用三个级别索引表的方法,因此,只需要保存三个级别的索引表的索引值就可以,而不是三个级别索引表中的索引值的随机组合,从而大大降低内存的占用。并且,本发明进一步可以对三个级别索引表进行限定,使内存使用更加优化如第一级别索引表的表项数目为IP报文接收端需要支持的IP协议类型的数目,从而避免不必要的协议类型作为索引占用内存,又比如把第三级别索引表或索引表项设置为动态建立,甚至把第三级别索引表和索引表项都设置为动态建立,从而可以大大地降低内存的使用,因为,IP分片报文经过第一和第二级别索引表进行索引后,接收端同时接收到具有不同源IP地址但标识和协议类型相同的IP分片报文的概率很小,采用动态建立第三级别索引表或索引表表项完全可行,而且利用动态三级索引表就可以避免不必要的源IP地址作为索引占用内存,因此大大减少内存占用。
其次,本发明能够保证重组的实时性。
现有技术中只设置以源IP地址、IP协议类型和标识的组合为一级索引,因此,查找范围没有限定,而且由于索引是以源IP地址、IP协议类型和标识的捆绑组合,会出现对不需要的索引值进行反复比较查找,从而不能保证实时性。本发明采用三个级别索引表的方法,第一级别的索引限定了第二级别索引的查找范围,第二级别的索引限定了第三级别索引的查找范围,这种限定能很好地缩小查找范围,避免对不需要的索引值进行反复比较查找,而且三次索引查找最大比较次数为三个级别的索引表的表项数,最大处理时间可以预测,保证了实时性。并且,本发明进一步可以对三个级别索引表进行限定,如第一级别索引表的表项数目为IP报文接收端需要支持的IP协议类型的数目,并且用IP报文标识作为二级索引表索引,之所以用IP报文标识作为二级索引表索引,是因为IP分片报文经过第一和第二级别索引表进行索引后,接收端同时接收到具有不同源IP地址但标识和协议类型相同的IP分片报文的概率很小,把第三级别索引表或索引表项设置为动态建立,甚至把第三级别索引表和索引表项都设置为动态建立,进一步降低三级索引表中的表项从而减少比较次数,这些都能进一步地优化本发明,从而缩短IP报文重组信息表的查找时间,保证实时性。


图1是IP报文首部示意图;图2是IP分片报文重组流程图;图3是IP分片报文三个级别索引关系图。
具体实施例方式
本发明采用三个级别索引的方式,建立三个索引表来进行IP分片报文重组信息表的查找,然后根据查找到的IP分片报文重组信息表进行IP分片报文重组。下面结合图2的IP分片报文重组流程图来具体解释本发明
首先建立一个一级索引表,其表项的数目可以为设备需要支持的IP协议类型。因为实际上设备需要支持的IP协议类型数目有限,因此需要的表项较少。对需要重组的IP分片报文用IP协议类型查找一级索引表,得到的一级索引将指向一个二级索引表。
每个一级索引都指向一个二级索引表,每个二级索引表是由16位标识为字段的65536个表项组成。用IP分片报文的16位标识查找二级索引表,得到的二级索引将指向一个三级索引表。
用IP分片报文的源IP地址查找三级索引表,得到的三级索引指向一个重组信息表,每个重组信息表对应一个正在重组中的分片IP报文。接收端同时接收到具有不同源IP地址但16位标识和协议类型相同的IP分片的概率很小,所以三级索引表包含的三级索引最大数目可以较小,一般设置为4就可以了,就能够满足实际需要。这样可以大大地减少IP分片重组需要的内存空间,并提高重组的速度。
本发明鉴于三级索引表中的表项数目十分少,因此采用动态地建立三级索引表或索引表项的方法。具体如下当前IP分片报文的二级索引没有对应的三级索引表时,则为当前分片建立一个三级索引表、三级索引表中的一个表项和一个重组信息表,表示有一个新的IP分片报文的重组正在进行,同时在三级索引表的表项中记录这一新的IP分片报文的源IP地址,在重组信息表中记录该IP分片报文的重组信息;如果可以找到对应的三级索引表,但没有对应的三级索引表的表项时,则为当前分片建立对应的三级索引表的一个表项和一个重组信息表,表示有一个新的分片IP报文的重组正在进行,同时在三级索引表的表项中记录这一新的IP分片报文的源IP地址,在重组信息表中记录该IP分片报文的重组信息;如果可以找到对应的三级索引表,也可以找到对应的三级索引表的表项,则表示对应重组信息表已经建立,可以利用已有的三级索引找到对应的重组信息表。
重组信息表项中记录着当前接收到的、属于同一已分片的完整IP报文的所有分片的信息,包括各分片在内存中的地址、分片的长度及片偏移等信息。接收到同一已分片IP报文的最后一个分片后,通过这些信息,可以将一个完整的IP报文重新恢复出来。当一个完整的IP报文重组完毕后,则删除此IP报文对应的重组信息表和对应的三级索引表的对应表项。当三级索引表中所有表项对应IP分片报文都完成重组后,则删除此三级索引表。
由于各个接收端设备的处理能力不一样,因此在实现上述发明的过程当中,可以根据具体的设备情况在上述描述的一级索引表,二级索引表或三级索引表中,在表格中增加其它信息,但实现本发明目的的技术方案只是上述描述的发明方法。这种索引表中附加的信息可以相当灵活,完全根据实际需要设计,在下面实施例中将具体描述。
下面举例说明本发明的一个优选的实施过程。因为在具体设备实现过程中,设备有其自身的处理能力,假设接收端设备处理IP分片报文的能力为最多同时支持10种具有不同的IP协议类型的分片报文,最多同时支持256个具有不同标识的已分片IP报文的重组;最多同时支持4个具有不同源IP地址,但具有相同标识和协议的已分片IP报文的重组;对于同一个已分片IP报文,可以支持的最大分片数目为128个。理论分析和实践均表明,接收端这种处理分片的能力完全能满足实际需要。三个级别索引关系详见图3。
建立一个一级索引表。一级索引表共有10个表项,每个表项均包含一个8比特的IP协议类型值和另一个8比特的一级索引值。一级索引用于二级索引表的查找。
为每个一级索引建立一个二级索引表。一个二级索引表有65536个表项,每个表项均包含一个16比特的IP标识字段值和一个8比特的二级索引值和另一个8比特的字段,这另一个8比特的字段表示当前正在处理的已分片IP报文的数目。二级索引值用于三级索引表到查找。
然后再建立256个动态的三级索引表。这些三级索引表被接收到所有IP分片共享,无论它们是否具有相同的协议类型、源IP地址,或16位的标识。每个三级索引表最多可以包含4个三级索引值及对应的源IP地址等信息。三级索引占8个比特,指向一个重组信息表。
为每个三级索引建立一个IP分片重组信息表,一共需要256×4=1024个。每个重组信息表最多可以包含128个IP分片信息,IP分片信息包括该分片的在内存中的存储地址,段偏移等信息。
当接收到一个IP分片后,首先根据其IP协议类型一级索引表进行查找。如果一级索引表中,没有任何一个IP协议类型与当前报文的IP协议类型相匹配,则说明当前分片不是一个合法的报文,并将其丢弃,处理结束。否则,继续下面步骤。
用得到的一级索引查找到二级索引表。查找到二级索引表的一个表项后,如果表项当中8比特的表示当前正在处理的已分片IP报文的数目的字段不为零,则表示在这之前已有若干个分片具有与目前刚接收到的分片具有相同的16位标识的,而且这若干个分片都还没有重组成一个完整的IP报文,而且此标识的IP分片已经建立了三级索引。用二级索引值查找到该三级索引表,并将当前报文的源IP地址与三级索引中包含的若干个源IP地址逐一进行比较。如果当前报文的源IP地址与三级索引中的任何一个源IP地址均不同,则为当前分片建立对应的三级索引表的一个表项和一个重组信息表,表示有一个新的分片IP报文的重组正在进行,同时在三级索引表的表项中记录这一新的IP分片报文的源IP地址,在对应的重组信息表中记录该分片的内存中的地址、段偏移及报文长度等信息。否则,如果当前分片的源IP地址与三级索引表中的某一个相同,则认为在这之前已接收到同一已分片IP报文的其它分片,并将当前分片的相关信息,比如在内存中的地址、段偏移及报文长度等记录在对应的重组信息表中。当一个已分片IP报文的所有分片都接收到后,就可以把所有分片的数据部分取出来,重组成一个完整的IP报文。
前面描述了二级索引表中当前正在处理的已分片IP报文的数目不为零的处理过程。如果当前正在处理的已分片IP报文的数目为零,则意味着当前分片是接收端此刻接收到的具有这个16位标识的唯一分片。那么就应该为该分片分配一个三级索引表,将索引值写到第二级索引表相应表项中,并将表项中的“当前正在处理的已分片IP报文的数目”设为1。
由此可见,三级索引表是动态建立的,三级索引表与二级索引表之间并不是一一对应的关系。三级索引表作为一种资源,只在需要时,才建立三级索引与二级索引之间的关联。三级索引表在分配出去之后、在没有回收之前不能再次分配。当完成一个已分片IP报文的重组后,要将二级索引表中的“当前正在处理的已分片IP报文的数目”减1,并将记录在三级索引表中的源IP地址删除,相应的重组信息表中的信息亦删除。当“当前正在处理的已分片IP报文的数目”减少到0后,相应的三级索引表被回收,可以再次分配使用。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种网间协议(IP)分片报文的重组方法,应用于IP层的IP报文接收端,其特征在于,包括步骤1)在所述IP报文接收端中建立三个级别索引表和重组信息表,一级索引表是以所述IP分片报文的IP协议类型为索引的索引表,一级索引表指向以所述IP分片报文的标识字段为索引的二级索引表,二级索引表指向以所述IP分片报文的源IP地址为索引的三级索引表,三级索引表指向所述IP分片报文的所述重组信息表;2)所述IP报文接收端接收到所述IP分片报文后根据所述三个级别索引表查找到对应的所述重组信息表,然后根据所述重组信息表完成所述IP分片报文的重组。
2.根据权利要求1所述的IP分片报文的重组方法,其特征在于,所述步骤1)中所述的一级索引表的表项数目为所述IP报文接收端需要支持的所述IP协议类型的数目,所述的二级索引表的数目为所述一级索引表的表项数目。
3.根据权利要求1所述的IP分片报文的重组方法,其特征在于,所述步骤1)中的三级索引表是动态建立的,当所述IP分片报文没有对应的所述三级索引表时,则为所述IP分片报文建立对应的所述三级索引表,当所述三级索引表对应的所述IP分片报文都重组完后,则删除对应的所述三级索引表。
4.根据权利要求1或3所述的IP分片报文的重组方法,其特征在于,所述步骤1)中所述的三级索引表中的表项是动态建立的,当所述IP分片报文没有对应的三级索引表的表项时,则为其建立对应的所述三级索引表的表项,当所述三级索引表表项对应的所述IP分片报文都重组完后,则删除对应的所述三级索引表的表项。
5.根据权利要求4所述的IP分片报文的重组方法,其特征在于,所述步骤1)还包括,为所述IP分片报文建立对应的所述三级索引表的表项之后,也为所述IP分片报文建立对应的所述重组信息表;删除所述三级索引表的表项,也删除三级索引表项对应的所述IP分片报文的重组信息表。
6.根据权利要求1或2所述的IP分片报文的重组方法,其特征在于,所述的二级索引表的表项包括表示正在处理的IP分片报文数目的字段。
全文摘要
本发明提供一种网间协议IP分片报文的重组方法,应用于IP层的IP报文接收端。该方法为在IP报文接收端中建立三个级别索引表和重组信息表,一级索引表是以IP分片报文的IP协议类型为索引的索引表,一级索引表指向以IP分片报文的标识字段为索引的二级索引表,二级索引表指向以IP分片报文的源IP地址为索引的三级索引表,三级索引表指向IP分片报文的重组信息表;IP报文接收端接收到IP分片报文后根据三个级别索引表查找到对应的重组信息表,然后根据重组信息表完成IP分片报文的重组。本发明提供的IP分片报文的重组方法有内存需求小而且实时性好的优点。
文档编号H04L29/06GK1713637SQ20041006299
公开日2005年12月28日 申请日期2004年6月27日 优先权日2004年6月27日
发明者黄伟才 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1