Nothing Special   »   [go: up one dir, main page]

CN101645851B - 一种ip分片报文的重组方法和装置 - Google Patents

一种ip分片报文的重组方法和装置 Download PDF

Info

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
Application number
CN2009101899540A
Other languages
English (en)
Other versions
CN101645851A (zh
Inventor
赵丰收
姚俊
郭树波
汪勇
单丽杰
谈青
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN2009101899540A priority Critical patent/CN101645851B/zh
Publication of CN101645851A publication Critical patent/CN101645851A/zh
Priority to PCT/CN2010/072814 priority patent/WO2011026344A1/zh
Application granted granted Critical
Publication of CN101645851B publication Critical patent/CN101645851B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/28Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
    • H04L12/46Interconnection of networks
    • H04L12/4641Virtual 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分片报文的重组方法和装置。
背景技术
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头信息进行比较;如果比较结果不匹配,路由器判断当前重组表项是否有冲突表项。
CN2009101899540A 2009-09-03 2009-09-03 一种ip分片报文的重组方法和装置 Active CN101645851B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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分片报文的重组方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
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