CN101645851B - 一种ip分片报文的重组方法和装置 - Google Patents
一种ip分片报文的重组方法和装置 Download PDFInfo
- Publication number
- CN101645851B CN101645851B CN2009101899540A CN200910189954A CN101645851B CN 101645851 B CN101645851 B CN 101645851B CN 2009101899540 A CN2009101899540 A CN 2009101899540A CN 200910189954 A CN200910189954 A CN 200910189954A CN 101645851 B CN101645851 B CN 101645851B
- Authority
- CN
- China
- Prior art keywords
- message
- list item
- reorganization
- header
- vpn
- 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
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/46—Interconnection of networks
- H04L12/4641—Virtual LANs, VLANs, e.g. virtual private networks [VPN]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种完善现有IP重组过程的方法和系统,通过为现有的重组模块增加报文所属VPN的判断,实现属于不同VPN的IP分片报文在进行重组时,相互不受影响。采用本发明能够避免不同VPN内的IP分片报文在重组时相互影响的可能,补充了RFC协议关于IP重组过程的描述,完善了现有的IP重组流程,能够提高网络设备的稳定性,提高IP网络的传输质量。该发明适用于IPv4重组和IPv6重组,且与VPN的实现方式无关。
Description
技术领域
本发明涉及网络通信技术领域,尤其涉及一种IP分片报文的重组方法和装置。
背景技术
IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输,用IP协议封装的数据单元叫做IP报文。IP协议的下层协议是链路层协议,对于大多数链路层协议来说,所能传输的数据帧长度都有一个上限,比如以太网和802.3对所能传输的长度其最大值分别为1500和1492字节,链路层的这个特性称作MTU,即最大传输单元。
如果IP层有一个数据报文需要传递,而且数据的长度比链路的MTU还大,那么IP层就需要对IP报文进行分片,使每个报文的长度都不大于链路层的MTU,然后才能在链路上发送报文。
在接收端,为了还原发送端发出来的原始报文,必须将收到的属于同一个原始报文的各个IP分片进行重组,重组成一个完整的报文之后再交由上层协议处理。重组一般由目的主机完成,但是对于一般特殊的情况,比如说NAT(网络地址转换)过程需要重新计算整个报文的校验和,路由器等中间节点也需要对分片报文进行重组。
RFC791描述了对IP报文进行分片和重组的过程。该协议指出,IP头中的IP_ID、源IP地址、目的IP地址以及协议号四个字段用于标识属于同一原始IP报文的各个分片。如果这些字段相同,则认为它们是由同一个报文分片成的多个报文,需要将其重组成一个报文。
图1是重组表的基本结构图
在系统初始化阶段,重组模块首先在内存中分配两片内存,其中一片内存用于重组表,另外一片内存用于重组表对应的冲突表。重组表用于保存在后续的重组过程中每个分片报文的必要信息,需要保存的信息包括IP_ID、协议号、源IP地址、目的IP地址。这样一个数据结构叫做重组表,除了能够保存以上信息之外,每个重组表的表项还需要保存两个指针,分别指向重组表的冲突表项,以及一个叫做“分片报文链表”的数据结构。在重组模块寻找每个分片报文对应的重组表项时,对IP_ID、协议号、源IP地址、目的IP地址这四个值进行哈希,当不同报文的哈希结果相同时,就需要使用冲突表项(冲突的重组表项)。冲突表项与重组表表项一样,都保存在内存中,其结构与重组表表项结构完全相同,在某些系统实现中,并不区分重组表表项和冲突表项,因此在后面的描述中,可能会将冲突表项直接描述为重组表表项。所谓“分片报文链表”,是指网络设备所接收到的一串相同特征的IP分片报文,所谓相同特征是指IP_ID、协议号、源IP地址、目的IP地址这四个字段完全相同。事实上,当IP分片报文被接收到网络设备之中时,它已经保存在了网络设备的内存中,重组模块只是使用“分片报文链表”将属于同一原始IP报文的多个分片报文链接起来,以完成对报文的重组。图中分别画出了前面所提到的重组表项、冲突表项、分片报文链表。在这个重组表中,重组表项2和表项n被使用,并且每个表项后面还链接有冲突表项,每个表项还有一个指针指向分片报文链表。
在IP网络运行了多年之后,VPN出现了,VPN的出现改变了一个事实,互联网由原来平面结构变成了立体结构,由于VPN之间相互隔绝,不同VPN内的主机可以具有相同的IP地址。
由于IPv4报文的IP头内没有携带VPN信息,而且IPv4的出现远远早于VPN,因此IPv4报文的重组流程没有考虑到VPN因素,这样一来,IPv4报文的重组过程就不再具有完备性。如果分别属于VPN1和VPN2的主机A1和主机A2发出去的IP分片报文的源IP地址、目的IP地址、IP_ID、协议号相同,报文到达路由器R之后,由于路由器R的重组模块不区分VPN信息,因此在其重组时就会认为来自主机A1和主机A2的分片报文属于同一个原始IP报文,就可能会将来自主机A1和主机A2的分片报文重组到一起,显然这样重组出来的是一个错误的报文。虽然IPv6协议出现时间要晚于IPv4协议,但是IPv6报文的重组流程依然是只考虑了IP头本身的内容,并未考虑VPN,因此IPv6报文的重组流程也有与IPv4重组流程相同的问题。
发明内容
本发明的目的是,针对上述IP重组方法的现状,改进IP重组流程,使不同VPN内需要重组的IP报文相互之间不受影响。
为解决上述技术问题,本发明提出了一种IP分片报文的重组方法,具体包括:
重组模块获取分片报文的VPN标识,并结合从分片报文中获取的IP头信息,计算出一个哈希索引以确定本分片报文所对应的重组表项,重组模块根据重组表项、VPN标识和IP头信息完成分片报文的比较、重组。
进一步地,当确定本分片报文所对应的重组表项未被使用时,则将VPN标识和IP头信息保存到重组表表项中,并将本分片报文挂到当前重组表项的“分片报文链表”上,其中,“分片报文链表”用于保存同一原始报文中的分片。
进一步地,当确定本分片报文所对应的重组表项已被使用时,所述比较是将收到的VPN标识和IP头信息与已使用重组表项中保存的VPN标识和IP头信息进行比较。
进一步地,如果比较结果为全部匹配,将本分片报文挂到对应的重组表项的“分片报文链表”上。
进一步地,所述重组具体包括:当原始报文的所有分片都挂到对应的重组表项的“分片报文链表”上时,将当前重组表项的“分片报文链表”上的所有分片报文按顺序拼装到一起,完成原始报文的重组。
进一步地,如果比较结果不匹配,路由器判断当前重组表项是否有冲突表项。
进一步地,如果还没有冲突表项,则说明当前报文是同一原始报文中第一个到达重组模块的分片,重组模块新分配一个冲突表项,将该冲突表项链接到当前所查重组表项的后面,并将当前分片报文的VPN标识和IP头信息保存到该冲突表项中。
进一步地,如果已经有冲突表项,则重新将报文的VPN标识和IP头信息与冲突表项中保存的VPN标识和IP头信息进行比较,如果能够匹配,就将当前分片报文保存在匹配到的冲突表项的“分片报文链表”中;否则,就新分配一个冲突表项,并保存VPN标识和IP头信息到新分配的冲突表项中。
进一步地,所述VPN标识为VPN_ID,所述IP头信息为IP_ID、源IP地址、目的IP地址以及协议号。
本发明还提出一种IP分片报文的重组装置,包括:获取单元,用于获取分片报文的VPN标识和IP头信息;计算确定单元,用于根据获取单元获取的VPN标识和IP头信息计算出哈希索引以确定分片报文所对应的重组表项;比较重组单元,用于根据计算确定单元确定的重组表项与VPN标识、IP头信息进行分片报文的比较、拼装,完成原始报文的重组。
本发明具有以下有益效果:避免了不同VPN内的IP分片报文在重组时错误和相互影响的可能,补充了RFC协议关于IP分片报文重组过程的描述,完善了现有的IP重组流程,能够提高网络设备的稳定性,提高IP网络的传输质量。
附图说明
图1是重组表的基本结构图。
图2为使用本发明改进后,不同VPN内分片报文在路由器上的转发处理示意图。
图3为实施例中用于实现本发明的算法流程图。
图4为实施本方法的重组模块结构图。
具体实施方式
以下结合附图和具体实施例对本发明作进一步详细的描述。
图2示出了使用本发明的IP重组流程之后,路由器设备在处理不同VPN内分片报文的情况。从示意图中可以看出,重组模块也跟VRF一样,在逻辑上每个VPN存在一个,而事实上重组模块在整个路由器设备中只有一个,只是对原来的重组模块进行了稍微的变动,在判断分片报文是否属于同一个原始报文时,除比较IP_ID、源IP地址、目的IP地址和协议号IP头内的4个字段之外,还比较报文的VPN_ID,只有同一个VPN下的报文,才有可能来源于同一个原始报文,才能够重组到一起。
对于每一个分片报文,在将其送到重组模块处理之前,路由器必须获取其所属VPN,获取报文的VPN_ID之后,将VPN_ID带给重组模块使用。重组模块在对报文进行重组时,首先使用传给重组模块的VPN_ID以及报文IP头中的IP_ID、源IP地址、目的IP地址、协议号字段计算报文在重组表中的索引,再根据索引定位到相应的重组表项。然后,使用报文的VPN_ID、IP_ID、源IP地址、目的IP地址以及协议号与缓存在重组表项中的相应的5个值进行比较,只有所有5个值都相同时,才认为找到了自己所属的重组表项。找到自己所属的重组表项之后,对分片报文进行排序、复制等实际的报文内容重组操作,与此前的重组过程相同。VPN_ID是本发明的关键,相比之前的重组过程,本发明中新增了VPN_ID的比较,保证了不同VPN下的分片报文相互不影响。
下面将以一个实施例来描述本发明的具体实施方式。
图3是本实施例的算法流程图,下面将对算法中的每一个步骤进行详细说明。
在步骤410,重组模块收到一个IP分片报文。
在步骤411,路由器通过当前分片报文的描述信息,获取报文所属的VPN,即报文的VPN_ID,并从当前分片报文的IP头中获取报文的IP_ID、源IP地址、目的IP地址和协议号。并使用这5个值计算出一个哈希索引,以确定本分片报文所对应的重组表表项。
在步骤412,通过步骤411计算出的哈希索引,定位到重组表的对应表项,判断该表项是否还处于未被使用的状态。如果该重组表项还未被使用,则说明当前报文为同一原始报文中第一个到达的分片,转入步骤420;否则,说明已经有同一原始报文的分片到达,转入步骤430。
在步骤420,将当前报文的VPN_ID、IP_ID、源IP地址、目的IP地址以及协议号这5个值保存到重组表项中,并将当前报文挂到当前重组表项的“分片报文链表”上,重组模块对当前分片报文的处理流程结束。其中,重组表项的“分片报文链表”用于保存同一原始报文中已经收到的分片。
在步骤430,将报文的VPN_ID、IP_ID、源IP地址、目的IP地址以及协议号分别与重组表项中保存的这5个值进行比较,然后进入步骤431。
在步骤431,判断步骤430的比较结果,如果比较结果为全部匹配,则说明已经找到了当前报文所属的重组表项,转入步骤440;否则,说明有报文的哈希索引与当前报文的哈希索引相同,重组表项相冲突,转入步骤460查找冲突表项。
在步骤440,将当前报文挂到当前重组表项的“分片报文链表”上,然后进入步骤441。
在步骤441,判断同一原始报文的所有分片是否全部到齐,如果未全部到齐,则重组模块对当前报文的处理流程结束;否则,转入步骤450。
在步骤450,将当前重组表项的“分片报文链表”上的所有分片报文按顺序拼装到一起,完成对当前报文所属原始报文的重组过程,重组模块对当前报文的处理流程结束。
在步骤460,判断当前重组表项的冲突表项指针是否为空。如果该指针为空,则说明当前报文是同一原始报文中第一个到达重组模块的分片,转入步骤470;否则,说明已经有同一原始报文的分片到达,转入步骤480。
在步骤470,新分配一个冲突表项,并将该冲突表项接到步骤460所查重组表项的后面,进入步骤471。
在步骤471,将当前报文的VPN_ID、IP_ID、源IP地址、目的IP地址以及协议号这5个值保存到步骤470分配的冲突表项中,重组模块对当前报文的处理流程结束。
在步骤480,根据步骤460中所查的重组表项的冲突表项指针,定位到下一个的冲突表项,然后进入步骤430,开始对当前报文与冲突表项内容的新一轮比较操作。
以上即为本实施例的实现算法描述,该算法对IPv4报文和IPv6报文都适用。
图4为实施本方法的重组装置结构图
获取单元,用于获取分片报文的VPN标识和IP头信息;
计算确定单元,用于根据获取单元获取的VPN标识和IP头信息计算出哈希索引以确定分片报文所对应的重组表项;
比较重组单元,用于根据计算确定单元确定的重组表项与VPN标识、IP头信息进行分片报文的比较、拼装,完成原始报文的重组。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种IP分片报文的重组方法,其特征在于:重组模块获取分片报文的VPN标识,并结合从分片报文中获取的IP头信息,计算出一个哈希索引以确定本分片报文所对应的重组表项,重组模块根据重组表项、VPN标识和IP头信息完成分片报文的比较、重组;其中,当确定本分片报文所对应的重组表项已被使用时,所述比较是将收到的VPN标识和IP头信息与已使用重组表项中保存的VPN标识和IP头信息进行比较;如果比较结果不匹配,路由器判断当前重组表项是否有冲突表项。
2.如权利要求1所述的方法,其特征在于:当确定本分片报文所对应的重组表项未被使用时,则将VPN标识和IP头信息保存到重组表表项中,并将本分片报文挂到当前重组表项的“分片报文链表”上,其中,“分片报文链表”用于保存同一原始报文中的分片。
3.如权利要求1所述的方法,其特征在于:如果比较结果为全部匹配,将本分片报文挂到对应的重组表项的“分片报文链表”上。
4.如权利要求1所述的方法,其特征在于,所述重组具体包括:当原始报文的所有分片都挂到对应的重组表项的“分片报文链表”上时,将当前重组表项的“分片报文链表”上的所有分片报文按顺序拼装到一起,完成原始报文的重组。
5.如权利要求1所述的方法,其特征在于:如果还没有冲突表项,则说明当前报文是同一原始报文中第一个到达重组模块的分片,重组模块新分配一个冲突表项,将该冲突表项链接到当前所查重组表项的后面,并将当前分片报文的VPN标识和IP头信息保存到该冲突表项中。
6.如权利要求1所述的方法,其特征在于:如果已经有冲突表项,则重新将报文的VPN标识和IP头信息与冲突表项中保存的VPN标识和IP头信息进行比较,如果能够匹配,就将当前分片报文保存在匹配到的冲突表项的“分片报文链表”中;否则,就新分配一个冲突表项,并保存VPN标识和IP头信息到新分配的冲突表项中。
7.如权利要求1至6中任一项的方法,其特征在于:所述VPN标识为VPN_ID,所述IP头信息为IP_ID、源IP地址、目的IP地址以及协议号。
8.一种IP分片报文的重组装置,其特征在于,包括:获取单元,用于获取分片报文的VPN标识和IP头信息;计算确定单元,用于根据获取单元获取的VPN标识和IP头信息计算出哈希索引以确定分片报文所对应的重组表项;比较重组单元,用于根据计算确定单元确定的重组表项与VPN标识、IP头信息进行分片报文的比较、拼装,完成原始报文的重组;其中,当所述计算确定单元确定本分片报文所对应的重组表项已被使用时,所述比较重组单元将收到的VPN标识和IP头信息与已使用重组表项中保存的VPN标识和IP头信息进行比较;如果比较结果不匹配,路由器判断当前重组表项是否有冲突表项。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101899540A CN101645851B (zh) | 2009-09-03 | 2009-09-03 | 一种ip分片报文的重组方法和装置 |
PCT/CN2010/072814 WO2011026344A1 (zh) | 2009-09-03 | 2010-05-14 | 一种ip分片报文的重组方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101899540A CN101645851B (zh) | 2009-09-03 | 2009-09-03 | 一种ip分片报文的重组方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101645851A CN101645851A (zh) | 2010-02-10 |
CN101645851B true CN101645851B (zh) | 2012-07-18 |
Family
ID=41657573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101899540A Active CN101645851B (zh) | 2009-09-03 | 2009-09-03 | 一种ip分片报文的重组方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101645851B (zh) |
WO (1) | WO2011026344A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645851B (zh) * | 2009-09-03 | 2012-07-18 | 中兴通讯股份有限公司 | 一种ip分片报文的重组方法和装置 |
CN102811158A (zh) * | 2011-06-02 | 2012-12-05 | 中兴通讯股份有限公司 | 一种数据定位、重组方法及相应装置 |
CN102256182A (zh) * | 2011-07-26 | 2011-11-23 | 重庆大唐科技股份有限公司 | 一种基于rtp协议的视频流分片组帧方法 |
CN103023808B (zh) * | 2012-12-28 | 2015-06-03 | 南京邮电大学 | 基于块状链表结构的6lowpan数据包重装缓存方法 |
CN104348760B (zh) * | 2014-10-11 | 2017-12-26 | 北京中创腾锐技术有限公司 | 一种实现ip分片按序逐片发送的方法 |
CN106941457B (zh) * | 2016-01-04 | 2019-09-06 | 普天信息技术有限公司 | 基于多核处理器的ip报文分片重组的方法及装置 |
CN106411791A (zh) * | 2016-09-05 | 2017-02-15 | 上海斐讯数据通信技术有限公司 | Icmp分片报文重组方法及转发方法、控制器及交换机 |
CN113098780B (zh) * | 2021-02-22 | 2023-04-28 | 网宿科技股份有限公司 | 虚拟网络的报文处理方法、电子设备及存储介质 |
CN114448976B (zh) * | 2022-03-11 | 2024-02-06 | 中国工商银行股份有限公司 | 网络报文的组装方法、装置、设备、介质和程序产品 |
CN115225593B (zh) * | 2022-06-30 | 2023-11-28 | 中科驭数(北京)科技有限公司 | 分片报文重组方法、装置、设备和介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1494274A (zh) * | 2002-10-31 | 2004-05-05 | ����ͨѶ�ɷ�����˾ | 基于网络处理器实现ip报文分片重组的方法 |
CN1921440A (zh) * | 2006-09-15 | 2007-02-28 | 华为数字技术有限公司 | 检测路径最大传输单元的方法和系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6714985B1 (en) * | 2000-04-28 | 2004-03-30 | Cisco Technology, Inc. | Method and apparatus for efficiently reassembling fragments received at an intermediate station in a computer network |
CN100423512C (zh) * | 2005-06-17 | 2008-10-01 | 杭州华三通信技术有限公司 | 虚拟专用网的网络地址转换设备资源使用的控制方法 |
CN100571197C (zh) * | 2005-11-03 | 2009-12-16 | 中兴通讯股份有限公司 | 一种结合网络地址转换的提供商边缘设备及其使用方法 |
CN101645851B (zh) * | 2009-09-03 | 2012-07-18 | 中兴通讯股份有限公司 | 一种ip分片报文的重组方法和装置 |
-
2009
- 2009-09-03 CN CN2009101899540A patent/CN101645851B/zh active Active
-
2010
- 2010-05-14 WO PCT/CN2010/072814 patent/WO2011026344A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1494274A (zh) * | 2002-10-31 | 2004-05-05 | ����ͨѶ�ɷ�����˾ | 基于网络处理器实现ip报文分片重组的方法 |
CN1921440A (zh) * | 2006-09-15 | 2007-02-28 | 华为数字技术有限公司 | 检测路径最大传输单元的方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2011026344A1 (zh) | 2011-03-10 |
CN101645851A (zh) | 2010-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101645851B (zh) | 一种ip分片报文的重组方法和装置 | |
US20190007316A1 (en) | Controller for software defined network | |
CN106612224B (zh) | 应用于vxlan的报文转发方法和装置 | |
CN102970227B (zh) | 在asic中实现vxlan报文转发的方法和装置 | |
CN104348716B (zh) | 一种报文处理方法及设备 | |
EP2100406B1 (en) | Method and apparatus for implementing multicast routing | |
US10608866B2 (en) | Forwarding Ethernet packets | |
US8532107B1 (en) | Accepting packets with incomplete tunnel-header information on a tunnel interface | |
US10530692B2 (en) | Software FIB ARP FEC encoding | |
US7373412B2 (en) | Apparatus for selecting and sorting packets from a packet data transmission network | |
WO2020063338A1 (zh) | 一种实现数据传输的方法、装置和系统 | |
CN106713144A (zh) | 一种报文出口信息的读写方法及转发引擎 | |
CN110730143B (zh) | 一种分片数据包处理方法及装置 | |
CN103685032B (zh) | 报文转发方法及网络地址转换服务器 | |
CN102546308A (zh) | 基于重复地址检测实现邻居发现代理的方法和系统 | |
CN103685007A (zh) | 一种边缘设备报文转发时的mac学习方法及边缘设备 | |
WO2023076113A1 (en) | Mac-based routing | |
CN104158743B (zh) | 分布式路由器的报文跨卡转发方法及装置 | |
CN103458060A (zh) | 一种多级网络地址转换下主机标识符的传递方法及装置 | |
CN110391984B (zh) | 一种报文转发方法及装置 | |
CN101447930B (zh) | 报文处理的方法和装置 | |
CN102868642A (zh) | 在asic中实现nvgre报文转发的方法和装置 | |
CN117480744A (zh) | 用于转发报文的方法、交换机以及网络接口卡 | |
WO2015184979A1 (zh) | 处理报文、发送信息、接收信息的方法及装置 | |
WO2021042446A1 (zh) | 一种二层隧道的切换方法、系统及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |