一种分片数据包处理方法及装置与流程

文档序号:11930233阅读:567来源:国知局
一种分片数据包处理方法及装置与流程

本发明涉及无线通信技术领域,尤其涉及一种分片数据包处理方法及装置。



背景技术:

随着LTE网络中数据下载等业务愈加频繁,网络中传输的数据流量以及数据包交换的业务快速增长。而由于每一种包交换网络技术对在一个物理帧上传输的数据量都有一个上限,即物理网络的最大传输单元MTU(Maximum Transmission Unit,最大传输单元值),不同的链路类型能够支持的MTU不同,具体由相关RFC文档规定,比如常见的以太网链路的MTU值为1500。在一个具有较大MTU值的网络转发IP报文到一个具有较小MTU值的网络之前,需要把大的IP报文分割成小的分片数据包,以便能装载到具有较小MTU值的网络的物理帧中,该过程即为IP报文的分片。接收方在所有的分片数据包到达后,将它们重新组合生成完整的IP报文,该过程即为IP报文的重组。

在LTE网络中,根据LTE协议规范3GPP TS 23.401 V10.5.0中的4.7.2.2章节描述的sgi(short guard interval,无线数据块短间隔)侧流模板数据映射到承载的流程,在接收到IP报文的多个分片数据包时,PGW(PDN GateWay,分组数据连接网关)需要在sgi接口完成对分片数据包的重组以保证sgi接口收到的IP报文的分片数据包映射到对应的承载。如果在sgi接口没有进行分片数据包的重组,则在业务流模板进行匹配时会导致匹配失败,使得走专用承载的数据走到默认承载上。由于重组需要占有系统资源,大量的重组工作会影响系统性能,对于同一硬件平台,有效提高重组的效率能够降低产品的硬件成本。

因此,如何提高分片数据包重组的效率,减轻系统负荷,提升网络质量是 亟待业界研究和解决的问题。



技术实现要素:

本发明实施例提供了一种分片数据包处理方法及装置,用以提高分片数据包重组的效率,减轻系统负荷,提升网络质量。

本发明的一个实施例提供的分片数据包处理方法,包括:

接收IP报文的分片数据包,所述分片数据包中包含IP报文的地址信息;

根据所述IP报文的地址信息,获取与所述IP报文对应的链表,所述链表中有N个节点,第n个节点对应Mn个顺序级联的分片数据包,第n个节点的第一偏移量为该节点对应的Mn个分片数据包中的第一个分片数据包的分片偏移量,第n个节点的第二偏移量为该节点对应的Mn个分片数据包中的最后一个分片数据包的分片偏移量与所述最后一个分片数据包的分片长度之和,N为大于等于1的整数,Mn为大于等于0的整数,1≤n≤N;

创建与所述分片数据包对应的新节点,并根据所述分片数据包的分片偏移量和分片长度设置所述新节点的第一偏移量和第二偏移量;

根据所述新节点的第一偏移量和/或第二偏移量以及所述链表中的节点的第一偏移量和/或第二偏移量,确定所述新节点在所述链表中的目标位置;

根据所述新节点在所述链表中的目标位置更新所述链表。

优选地,根据所述新节点的第一偏移量和第二偏移量以及所述链表中的节点的第一偏移量和第二偏移量,确定所述新节点在所述链表中的目标位置,包括:

若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第一偏移量小于所述新节点的第一偏移量,且第二节点的第一偏移量大于所述新节点的第一偏移量,则将第一节点与第二节点之间的位置确定为所述新节点的目标位置;或者

若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二 节点,且第一节点的第二偏移量小于所述新节点的第二偏移量,且第二节点的第二偏移量大于所述新节点的第二偏移量,则将第一节点与第二节点之间的位置确定为所述新节点的目标位置;或者

若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第二偏移量小于或等于所述新节点的第一偏移量,且第二节点的第二偏移量大于所述新节点的第一偏移量,则将第一节点与第二节点之间的位置确定为所述新节点的目标位置;或者

若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第一偏移量小于所述新节点的第二偏移量,且第二节点的第一偏移量大于或等于所述新节点的第二偏移量,则将第一节点与第二节点之间的位置确定为所述新节点的目标位置。

优选地,根据所述新节点在所述链表中的目标位置更新所述链表,包括:

根据所述新节点的第一偏移量和第二偏移量以及所述目标位置上所述新节点的相邻节点的第一偏移量和第二偏移量,判断所述新节点对应的分片数据包能否被级联到所述相邻节点,若判断能被级联到所述相邻节点,则将所述分片数据包级联到所述相邻节点并释放所述新节点;否则,将所述新节点插入所述目标位置。

其中,根据所述新节点的第一偏移量和第二偏移量以及所述目标位置上所述新节点的相邻节点的第一偏移量和第二偏移量,判断所述新节点对应的分片数据包能否被级联到所述相邻节点,包括:

比较所述新节点的第一偏移量和所述新节点的相邻节点中的前一个相邻节点的第二偏移量,若相等,则判断所述分片数据包能被级联到所述前一个相邻节点;

比较所述新节点的第二偏移量和所述新节点的相邻节点中的后一个相邻节点的第一偏移量,若相等,则判断所述分片数据包能被级联到所述后一个相邻节点。

其中,将所述分片数据包级联到所述相邻节点并释放所述新节点,包括:

若所述分片数据包仅能被级联到所述前一个相邻节点,则将所述分片数据包级联到所述前一个相邻节点对应的最后一个分片数据包之后并释放所述新节点;

若所述分片数据包仅能被级联到所述后一个相邻节点,则将所述分片数据包级联到所述后一个相邻节点对应的第一个分片数据包之前并释放所述新节点;

若所述分片数据包能被级联到所述前一个相邻节点以及所述后一个相邻节点,则将所述分片数据包级联到所述前一个相邻节点对应的最后一个分片数据包之后并释放所述新节点,将所述后一个相邻节点对应的分片数据包级联到所述分片数据包之后并释放所述后一个相邻节点。

进一步地,更新所述链表之后,还包括:

若所述链表中的所有分片数据包长度的累加和等于所述IP报文总长度,则根据所述链表中所有分片数据包的分片偏移量确定所述IP报文分片次数和每次分片的最大传输单元MTU值,得到MTU值集合;

建立所述MTU值集合与所述IP报文的地址信息之间的对应关系。

进一步地,接收IP报文的分片数据包之后还包括:根据IP报文的地址信息获取对应的MTU值集合;

所述根据所述IP报文的地址信息,获取与所述IP报文对应的链表的步骤,以及创建与所述分片数据包对应的新节点,并根据所述分片数据包的分片偏移量和分片长度设置所述新节点的第一偏移量和第二偏移量的步骤,是在未获取到对应的MTU值集合的情况下执行的。

具体地,若根据所述IP报文的地址信息获取到对应的MTU值集合,则还包括:

根据所述IP报文的地址信息,获取与所述IP报文对应的分片数据包集合,所述分片数据包集合中的一个元素对应于所述IP报文的一个分片数据包;

根据接收到的分片数据包的分片偏移量与所述MTU值集合,确定所述分片数据包在所述分片数据包集合中的目标位置;

根据所述分片数据包在所述分片数据包集合中的目标位置更新所述分片数据包集合。

本发明的一个实施例提供的分片数据包处理装置,包括:

接收模块,用于接收IP报文的分片数据包,所述分片数据包中包含IP报文的地址信息;

获取模块,用于根据所述IP报文的地址信息,获取与所述IP报文对应的链表,所述链表中有N个节点,第n个节点对应Mn个顺序级联的分片数据包,第n个节点的第一偏移量为该节点对应的Mn个分片数据包中的第一个分片数据包的分片偏移量,第n个节点的第二偏移量为该节点对应的Mn个分片数据包中的最后一个分片数据包的分片偏移量与所述最后一个分片数据包的分片长度之和,N为大于等于1的整数,Mn为大于等于0的整数,1≤n≤N;

创建模块,用于创建与所述分片数据包对应的新节点,并根据所述分片数据包的分片偏移量和分片长度设置所述新节点的第一偏移量和第二偏移量;

第一确定模块,用于根据所述新节点的第一偏移量和/或第二偏移量以及所述链表中的节点的第一偏移量和/或第二偏移量,确定所述新节点在所述链表中的目标位置;

更新模块,用于根据所述新节点在所述链表中的目标位置更新所述链表。

优选地,所述第一确定模块,具体用于:

若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第一偏移量小于所述新节点的第一偏移量,且第二节点的第一偏移量大于所述新节点的第一偏移量,则将第一节点与第二节点之间的位置确定为所述新节点的目标位置;或者

若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第二偏移量小于所述新节点的第二偏移量,且第二节点的 第二偏移量大于所述新节点的第二偏移量,则将第一节点与第二节点之间的位置确定为所述新节点的目标位置;或者

若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第二偏移量小于或等于所述新节点的第一偏移量,且第二节点的第二偏移量大于所述新节点的第一偏移量,则将第一节点与第二节点之间的位置确定为所述新节点的目标位置;或者

若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第一偏移量小于所述新节点的第二偏移量,且第二节点的第一偏移量大于或等于所述新节点的第二偏移量,则将第一节点与第二节点之间的位置确定为所述新节点的目标位置。

优选地,所述更新模块,具体用于:

根据所述新节点的第一偏移量和第二偏移量以及所述目标位置上所述新节点的相邻节点的第一偏移量和第二偏移量,判断所述新节点对应的分片数据包能否被级联到所述相邻节点,若判断能被级联到所述相邻节点,则将所述分片数据包级联到所述相邻节点并释放所述新节点;否则,将所述新节点插入所述目标位置。

其中,所述更新模块,具体用于:

比较所述新节点的第一偏移量和所述新节点的相邻节点中的前一个相邻节点的第二偏移量,若相等,则判断所述分片数据包能被级联到所述前一个相邻节点;

比较所述新节点的第二偏移量和所述新节点的相邻节点中的后一个相邻节点的第一偏移量,若相等,则判断所述分片数据包能被级联到所述后一个相邻节点。

其中,所述更新模块,具体用于:

若所述分片数据包仅能被级联到所述前一个相邻节点,则将所述分片数据包级联到所述前一个相邻节点对应的最后一个分片数据包之后并释放所述新 节点;

若所述分片数据包仅能被级联到所述后一个相邻节点,则将所述分片数据包级联到所述后一个相邻节点对应的第一个分片数据包之前并释放所述新节点;

若所述分片数据包能被级联到所述前一个相邻节点以及所述后一个相邻节点,则将所述分片数据包级联到所述前一个相邻节点对应的最后一个分片数据包之后并释放所述新节点,将所述后一个相邻节点对应的分片数据包级联到所述分片数据包之后并释放所述后一个相邻节点。

进一步地,所述的装置,还包括:

对应关系建立模块,用于若所述链表中的所有分片数据包长度的累加和等于所述IP报文总长度,则根据所述链表中所有分片数据包的分片偏移量确定所述IP报文分片次数和每次分片的最大传输单元MTU值,得到MTU值集合;以及用于建立所述MTU值集合与所述IP报文的地址信息之间的对应关系。

进一步地,所述获取模块还用于:根据IP报文的地址信息获取对应的MTU值集合;

所述根据所述分片数据包对应的IP报文的地址信息,获取与所述IP报文对应的链表的步骤,以及所述创建模块创建与所述分片数据包对应的新节点,并根据所述分片数据包的分片偏移量和分片长度设置所述新节点的第一偏移量和第二偏移量的步骤,是在所述获取模块未获取到对应的MTU值集合的情况下执行的。

其中,所述获取模块,具体用于:

若根据所述IP报文的地址信息获取到对应的MTU值集合,则根据所述IP报文的地址信息,获取与所述IP报文对应的分片数据包集合,所述分片数据包集合中的一个元素对应于所述IP报文的一个分片数据包;

所述装置还包括:第二确定模块,用于根据接收到的分片数据包的分片偏移量与所述MTU值集合,确定所述分片数据包在所述分片数据包集合中的目 标位置;

所述更新模块具体用于:根据所述第二确定模块确定的所述分片数据包在所述分片数据包集合中的目标位置更新所述分片数据包集合。

本发明的上述实施例中,在接收到IP报文的分片数据包之后,可以根据IP报文的地址信息获取对应的链表,该链表中的节点对应一个或多个顺序级联的分片数据包,该链表中的节点的第一偏移量为该节点对应的顺序级联的分片数据包中的第一个分片数据包的分片偏移量,第二偏移量为该节点对应的顺序级联的分片数据包中的最后一个分片数据包的分片偏移量与所述最后一个分片数据包的分片长度之和,通过对接收到的分片数据包创建新节点,并根据该分片数据包的分片偏移量和分片长度设置新节点的第一偏移量和第二偏移量,再根据新节点的第一偏移量和/或第二偏移量以及链表中的节点的第一偏移量和/或第二偏移量,确定出新节点在链表中的目标位置,从而更新链表。可以看出,本发明实施例中的节点对应一个或多个顺序级联的分片数据包,而非如现有技术中对应一个分片数据包,并结合设置节点的第一偏移量与第二偏移量来确定新创建的节点在链表中的位置,与现有技术相比,避免了对分片数据包查找位置时对每一个已存在的分片数据包的遍历查找,而是先找出节点的目标位置,进而判断分片数据包的目标位置,因此减少了寻找目标位置所需要的遍历次数,优化了已有的对分片数据包重组的方法,提高了重组过程的效率。

本发明的另一个实施例提供的分片数据包处理方法,包括:

接收IP报文的分片数据包,所述分片数据包中包含IP报文的地址信息;

根据所述IP报文的地址信息,获取与所述IP报文对应的分片数据包集合以及MTU值集合,所述分片数据包集合中的一个元素对应所述IP报文的一个分片数据包,所述MTU值集合中的元素对应所述IP报文在分片时每次分片的MTU值;

根据接收到的所述分片数据包的分片偏移量和所述MTU值集合,确定所述分片数据包在所述分片数据包集合中的目标位置;

根据所述分片数据包在所述分片数据包集合中的目标位置更新所述分片数据包集合。

具体地,根据所述IP报文的地址信息,获取与所述IP报文对应的分片数据包集合,包括:

根据所述IP报文的源IP地址、目的IP地址、IP标识、源介质访问控制MAC地址、目的MAC地址,计算分片数据包集合索引;

根据所述分片数据包集合索引获取与所述IP报文对应的分片数据包集合。

具体地,根据接收到的所述分片数据包的分片偏移量和所述MTU值集合,确定所述分片数据包在所述分片数据包集合中的目标位置,包括:

按照以下公式确定所述分片数据包在所述分片数据包集合中的目标位置:

offset0=OFFSET;i=0

offseti=offseti-1%mtuC+1-i;1≤i≤C-1

其中,OFFSET为所述分片数据包的分片偏移量,所述MTU值集合按照从小到大排序如下[mtu1,…,mtuc,…,mtuC],C为所述MTU值集合中元素的个数,表示了所述IP报文进行分片的分片次数,C为大于等于1的整数,K为所述分片数据包在所述分片数据包集合中对应的元素索引。

本发明的另一个实施例提供的装置,包括:

接收模块,用于接收IP报文的分片数据包,所述分片数据包中包含IP报文的地址信息;

获取模块,用于根据所述IP报文的地址信息,获取与所述IP报文对应的分片数据包集合以及MTU值集合,所述分片数据包集合中的一个元素对应所述IP报文的一个分片数据包,所述MTU值集合中的元素对应所述IP报文在分片时每次分片的MTU值;

确定模块,用于根据接收到的所述分片数据包的分片偏移量和所述MTU 值集合,确定所述分片数据包在所述分片数据包集合中的目标位置;

更新模块,用于根据所述分片数据包在所述分片数据包集合中的目标位置更新所述分片数据包集合。

其中,所述获取模块,具体用于:

根据所述IP报文的源IP地址、目的IP地址、IP标识、源MAC地址、目的MAC地址,计算分片数据包集合索引;根据所述分片数据包集合索引获取与所述IP报文对应的分片数据包集合。

其中,所述确定模块,具体用于:

按照以下公式确定所述分片数据包在所述分片数据包集合中的目标位置:

offset0=OFFSET;i=0

offseti=offseti-1%mtuC+1-i;1≤i≤C-1

其中,OFFSET为所述分片数据包的分片偏移量,所述MTU值集合按照从小到大排序如下[mtu1,…,mtuc,…,mtuC],C为所述MTU值集合中元素的个数,表示了所述IP报文进行分片的分片次数,C为大于等于1的整数,K为所述分片数据包在所述分片数据包集合中对应的元素索引。

本发明的上述实施例中,在接收到IP报文的分片数据包之后,可以通过根据IP报文的地址信息,获取与IP报文对应的分片数据包集合以及MTU值集合,再根据接收到的分片数据包的分片偏移量与MTU值集合,确定分片数据包在分片数据包集合中的目标位置,进而更新分片数据包集合。可以看出,在本发明的上述实施例中可以根据分片数据包的分片偏移量与MTU值集合,通过计算直接确定出分片数据包在分片数据包集合中的目标位置,与现有技术中需要对每一个已存在的分片数据包的遍历查找相比,减少了寻找分片数据包的目标位置所需要的遍历次数,从而提高了重组过程的效率。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为现有技术中分片数据包重组的流程示意图;

图2为现有技术中分片数据包重组的流程中链表的示意图;

图3为本发明的一个实施例提供的分片数据包处理方法的流程示意图;

图4为本发明的一个实施例提供的分片数据包处理方法中链表的结构示意图;

图5为本发明的一个实施例提供的分片数据包处理方法中创建新节点的示意图;

图6为本发明的一个实施例提供的分片数据包处理方法中更新链表后的链表结构示意图;

图7为现有技术中分片后的IP报文的所有分片数据包的示意图;

图8为本发明的另一个实施例提供的分片数据包处理方法的流程示意图;

图9为本发明的一个实施例提供的分片数据包处理装置的结构示意图;

图10为本发明的另一个实施例提供的分片数据包处理装置的结构示意图。

具体实施方式

为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

由于链路层对数据发送长度的限制,IP报文的长度如果超过链路层的限制,就需要将IP报文进行分片,使得分片后的IP报文的每一个分片数据包的 长度都在此限制之内,并且每一个分片数据包都包含有一个自己的IP报文头,IP报文头里面的16位的识别号唯一记录了一个IP报文的标识ID(IPID),具有同一个ID的分片数据包将会重组为一个IP报文;而IP报文头里面的13位的分片偏移量则记录了分片数据包相对整个IP报文中的位置;而IP报文头里面的还有IP标志字段能够标志着该分片数据包后面是否还有新的分片数据包。比如在以太网(Ethernet)环境中,由于以太网MTU的值为1500字节,而传输的报文大小要比1500字节(不包括以太协议的首部和尾部18个字节)大,这个时候就需要对IP报文进行分片,向接收段传输IP报文的分片数据包。其中,分片之后的分片数据包也可以根据传输时的需要再次进行分片,再次分片的过程与分片的过程基本一致。接收端在接收到分片数据包之后就可以利用报文头中的这些信息对分片数据包唯一的重组出原始的IP报文。

目前现有技术中对IP报文分片后的重组流程实现如图1所示,具体步骤如下:

步骤101:接收端口接收数据包。

步骤102:获取数据包的IP报文头信息。其中,IP报文头中包括了IP报文的IP标识、源IP地址、目的IP地址、IP标志字段以及数据包的长度、分片偏移量等信息,其中IP标志字段中第3位(MF)的取值表示是否还有后继分片数据包,在对IP报文进行分片时,除了最后一个分片数据包的MF位设置为0外,其他所有分片数据包的MF位均设置为1。

步骤103:根据IP报文头信息,如果IP标志字段中的MF位等于1,则肯定接收到的数据包为IP报文的分片数据包,且不是最后一个分片数据包,此时不能根据该分片数据包确定IP报文的总长度,转到步骤104;如果MF位等于0,则再判断分片偏移量是否为0,若不为0,则接收到的数据包为最后一个分片数据包,并可以确定IP报文总长度等于分片数据包的分片偏移量与分片数据包的长度之和,转到步骤104,若分片偏移量为0,则判断接收到的数据包不是IP报文的分片数据包,可按照正常数据报文处理。

步骤104:根据IP报文头中的源IP地址、目的IP地址、IP标识计算出哈希索引,取低12位得到重组表索引,根据索引可以获得重组表的地址,为接收到的数据包申请一个新的节点。

步骤105:判断该重组表是否已经使用,如果已经使用,需要进一步判断,到步骤107;否则,为第一个到达的IP报文的分片数据包,到步骤106。

步骤106:接收到的数据包为第一个到达的分片数据包。设置该重组表项中的各标志字段,把新节点挂在链表中,结束处理,返回步骤101,等待下一个分片数据包。

步骤107:接收到的数据包不是第一个到达的分片数据包。循环遍历链表中已有的节点,如果当前分片数据包的分片偏移量为0或者比链表中已有节点的第一个节点对应的分片数据包的分片偏移量还小,到步骤108;如果比链表中已有节点的第一个节点对应的分片数据包的分片偏移量大,则到步骤109;如果与链表中已有节点的第一个节点对应的分片数据包的分片偏移量相等,则丢弃接收到的分片数据包,结束处理,返回步骤101。

步骤108:把新节点插入链表中,其中新节点的插入位置为链表的表头位置,转到步骤112。

步骤109:比较当前分片数据包的分片偏移量比链表中已有节点的最后一个节点对应的分片数据包的分片偏移量,若比最后一个节点对应的分片数据包的分片偏移量大,则转到步骤110;如果小,则转到步骤111;如果相等,则丢弃接收到的分片数据包,转到步骤101。

步骤110:把新节点插入链表中,其中新节点的插入位置为链表的表尾位置。转到步骤112。

步骤111:该节点的插入位置为链表的中间位置:从链表的头部开始查找,直到找到这样两个相邻节点m和节点m+1,节点m和节点m+1满足:当前分片数据包的分片偏移量大于节点m对应的分片数据包的分片偏移量且小于节点m+1对应的分片数据包的分片偏移量。

步骤112:更新重组表中的各标志字段。

步骤113:判断IP报文的分片数据包是否全部接收到了,若IP报文的分片数据包未接收全,则返回步骤101;若都接收到了则到步骤114。

步骤114:复制后续分片数据包到第一个分片数据包的缓冲区,修改第一个分片数据包的IP报文头、包描述符,释放其他分片数据包的缓冲;发送重组好的IP报文。

其中,可以看到,在现有技术中,在对接收到的分片数据包进行重组的过程,步骤107到步骤111是为了确定新节点在链表中的位置,现有技术中采用的是单链表遍历的方式,如图2所示的链表,为了确定新节点在该链表中的位置,需要将新节点与该链表中的节点逐个进行比较。而每接收到一个分片数据包都需要遍历链表以找到链表中对应的位置,在IP报文的分片数据包数量较多时,会导致系统的效率不高,进而影响业务版的处理性能,以一个具有N个分片数据包的IP报文为例,以现有技术中采用的单链表遍历方式对该报文的重组将需要进行的循环遍历的次数为N2/2。

目前,物联网业务在LTE网络中的大量推广导致了海量的终端的出现,这些终端将产生大量用户数据传输,LTE网络中数据流量快速增长,一方面导致了IP报文的分片与重组流程的增多;另一方面如果接收端受到分片数据包的攻击,如果处理不当,会导致大量的分片数据包得不到及时处理,进而导致业务处理板的性能大幅降低。因此,需要对现有技术中对分片数据包的处理进行改进,使得在分片数据包重组过程中能够快速查找分片数据包的位置,提高重组的效率,以及有效的识别和丢弃非法的分片数据包。

为了提高分片数据包重组的效率,减轻系统负荷,提升网络质量,本发明实施例一提出一种分片数据包处理方法及装置。

下面结合附图对本发明实施例一进行详细描述。

图3示出了本发明实施例一提供的分片数据包处理方法的流程示意图,该流程可在网络设备上执行。以LTE系统为例,可在LET系统的核心网中的PGW 上执行,尤其在下行传输的过程中执行。

如图所示,该流程包括如下步骤:

步骤301:接收IP报文的分片数据包,所述分片数据包中包含IP报文的地址信息。该分片数据包可以是来自于PGW上游设备的数据包,比如来自于路由器、网关、防火墙等。

步骤302:根据所述IP报文的地址信息,获取与所述IP报文对应的链表。

所述链表中有N个节点,第n个节点对应Mn个顺序级联的分片数据包,第n个节点的第一偏移量为该节点对应的Mn个分片数据包中的第一个分片数据包的分片偏移量,第n个节点的第二偏移量为该节点对应的Mn个分片数据包中的最后一个分片数据包的分片偏移量与所述最后一个分片数据包的分片长度之和,N为大于等于1的整数,Mn为大于等于0的整数,1≤n≤N。

举例来说,所述链表可以如图4所示,该链表中已存在5个节点,以第3个节点(station3)为例,该节点目前对应了2个顺序级联的分片数据包frag8和frag9,该节点的第一偏移量为分片数据包frag8的分片偏移量,该节点的第二偏移量为分片数据包frag9的分片偏移量与frag9的长度相加后得到的值。

步骤303:创建与接收到的分片数据包对应的新节点,并根据所述分片数据包的分片偏移量和分片长度设置所述新节点的第一偏移量和第二偏移量。

具体地,新节点的第一偏移量为接收到的分片数据包的分片偏移量;新节点的第二偏移量为接收到的分片数据包的分片偏移量与接收到的分片数据包的长度之和。

步骤304:根据所述新节点的第一偏移量和/或第二偏移量以及所述链表中的节点的第一偏移量和/或第二偏移量,确定新节点在所述链表中的目标位置。

具体地,对步骤304可以有以下几种优选的实现方式,在具体应用时,可以从中择一进行处理:

1)若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第一偏移量小于新节点的第一偏移量,且第二节 点的第一偏移量大于新节点的第一偏移量,则将第一节点与第二节点之间的位置确定为新节点的目标位置;

2)若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第二偏移量小于新节点的第二偏移量,且第二节点的第二偏移量大于新节点的第二偏移量,则将第一节点与第二节点之间的位置确定为新节点的目标位置;

3)若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第二偏移量小于或等于新节点的第一偏移量,且第二节点的第二偏移量大于新节点的第一偏移量,则将第一节点与第二节点之间的位置确定为新节点的目标位置;

4)若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第一偏移量小于新节点的第二偏移量,且第二节点的第一偏移量大于或等于新节点的第二偏移量,则将第一节点与第二节点之间的位置确定为新节点的目标位置。

步骤305:根据新节点在所述链表中的目标位置更新链表。

具体地,更新链表时:可根据新节点的第一偏移量和第二偏移量以及目标位置上新节点的相邻节点的第一偏移量和第二偏移量,判断新节点对应的分片数据包能否被级联到相邻节点,若判断能被级联到相邻节点,则将接收到的分片数据包级联到相邻节点并释放新节点;否则,将新节点插入目标位置。

上述更新链表的过程中,判断新节点对应的分片数据包能否被级联到相邻节点的步骤可具体包括:比较新节点的第一偏移量和新节点的相邻节点中的前一个相邻节点的第二偏移量,若相等,则判断接收到的分片数据包能被级联到前一个相邻节点;比较新节点的第二偏移量和新节点的相邻节点中的后一个相邻节点的第一偏移量,若相等,则判断接收到的分片数据包能被级联到后一个相邻节点。

上述更新链表的过程中,将接收到的分片数据包级联到相邻节点并释放新 节点的步骤可具体包括以下情况中的一种:

-若所述分片数据包仅能被级联到前一个相邻节点,则将该分片数据包级联到前一个相邻节点对应的最后一个分片数据包之后并释放新节点;

-若所述分片数据包仅能被级联到后一个相邻节点,则将该分片数据包级联到后一个相邻节点对应的第一个分片数据包之前并释放新节点;

-若所述分片数据包能被级联到前一个相邻节点以及后一个相邻节点,则将该分片数据包级联到前一个相邻节点对应的最后一个分片数据包之后并释放新节点,将后一个相邻节点对应的分片数据包级联到该分片数据包之后并释放后一个相邻节点。

为了更清楚地理解上述步骤301至步骤305所述的流程,以目前链表中对应分片数据包的节点存放如图4所示的情形举例说明:

当新接收到一个分片数据包frag10后,根据分片数据包frag10中包含的IP报文的地址信息,获取对应的链表,以该链表即为图4所示的链表为例,即目前对应IP报文的分片数据包的节点存放如图4所示。为分片数据包frag10创建对应的新节点(new station),如图5所示,获取分片数据包frag10的分片偏移量和分片长度,设置新节点的第一偏移量与分片数据包frag10的分片偏移量为相同值,设置新节点的第二偏移量为分片数据包frag10的分片偏移量和分片数据包frag10的分片长度加和得到的值。对链表中已存在的节点(station)进行遍历,可以选择根据新节点的第一偏移量和链表中的节点的第一偏移量进行比较,假设对于frag10对应的新节点(new station)的第一偏移量要大于链表中第三个节点(station3)的第一偏移量并且小于第4个节点(station4)的第一偏移量,那么可以确定出新节点的目标位置即为第三个节点与第四个节点之间的位置.找到新节点的目标位置后,继续判断新节点与其相邻的节点(station3和station4)能否进行级联,即将新节点的第一偏移量与原链表中的第三个节点(station3)的第二偏移量进行比较,如果是相等的,那么表明新节点对应的分片数据包能够被级联到station3节点,则可以将新节点对应 的分片数据包frag10级联到station3节点对应的最后一个分片数据包之后,并释放新节点;以及将新节点的第二偏移量与原链表中的第四个节点(station4)的第一偏移量进行比较,如果是相等的,那么表明新节点对应的分片数据包frag10能够被级联到station4节点,则可以将新节点对应的分片数据包frag10级联到station4节点对应的第一个分片数据包之前,并释放新节点。在图4所示的链表中,可以看到新节点对应的分片数据包frag10既能够被级联到station3节点也能够被级联到station4节点,那么则将分片数据包frag10级联到station3节点中的最后一个分片数据包frag9之后,释放新节点,并将station4节点中的分片数据包frag11级联到frag10数据包之后,释放station4节点,更新链表后的结果如图6所示。

根据图6所示的结果,可以看到,如果再次接收到的分片数据包是frag12,那么根据已有的链表,现有技术需要循环遍历到第7次才能够找到对应的目标位置,而根据本发明实施例中的上述步骤仅需要遍历到第3次即可找到对应的目标位置。同时,对于本发明实施例的上述步骤后链表中的节点下挂的分片数据包会不断增加,而随着节点下挂分片数据包的增加,对于新的分片数据包进行目标位置查找的效率将会更高,对于一个有N个分片数据包的IP报文,以本发明实施例的上述步骤进行重组需要的循环查找遍历次数在[N,N2/2]范围内,因此,较之现有技术中所需要循环遍历的N2/2次,重组的效率得到了提高。

进一步地,在步骤305中更新链表之后,若所述链表中的所有分片数据包长度的累加和等于IP报文总长度,则该IP报文所有分片数据包都已接收到并在链表中为顺序级联,从而可以对所有分片数据包进行分析,根据链表中所有分片数据包的分片偏移量确定所述IP报文分片次数和每次分片的最大传输单元MTU值,即如果除了最后一个分片数据包,其他分片数据包的分片偏移量是以一个或多个值进行周期规律重复的情况,则可以确定该IP报文在传输链路上进行了几次分片以及每次分片对应的MTU值,得到MTU值集合,进而 建立该MTU值集合与该IP报文的地址信息之间的对应关系。

以报文长度为3500的IP报文举例说明,对于所有分片数据包进行分析,如果发现所有分片数据包是图7中a的情况,即除了最后一个分片数据包,其他分片数据包的分片偏移量是以一个值1500进行周期规律重复的情况,则可以确定IP报文在传输链路上进行了一次分片以及对应的MTU值为1500,得到MTU值集合[1500];如果发现所有分片数据包是图7中b的情况,即除了最后一个分片数据包,其他分片数据包的分片偏移量是以(1200,300)两个值进行周期规律重复的情况,则可以确定IP报文在传输链路上进行了两次分片,第一次分片对应的MTU值为1500(1200+300),第二次分片对应的MTU值为1200,得到MTU值集合[1200,1500]。建立得到的MTU值集合与所述IP报文的地址信息之间的对应关系,其中,该对应关系中的IP报文的地址信息可包括由源IP地址,目的IP地址,IP标识,源MAC地址和目的MAC地址组成的五元组信息。该对应关系可用于后续在接收到IP报文的分片数据包后进行IP报文重组的过程,根据IP报文对应的MTU值集合进行IP报文的重组过程,可参见后续实施例的描述。

本发明另一实施例提供了一种分片数据包处理方法。

图8示出了本发明实施例二提供的分片数据包处理方法的流程示意图,该流程可在网络设备上执行。以LTE系统为例,可在LET系统的核心网中的PGW上执行,尤其在下行传输的过程中执行。

如图所示,该流程包括如下步骤:

步骤801:接收IP报文的分片数据包,所述分片数据包中包含IP报文的地址信息。

步骤802:根据IP报文的地址信息,获取与IP报文对应的分片数据包集合以及MTU值集合,所述分片数据包集合中的一个元素对应IP报文的一个分片数据包,所述MTU值集合中的元素对应IP报文在分片时每次分片的MTU值。

具体地,在根据IP报文的地址信息,获取与IP报文对应的分片数据包集合时,PGW可根据IP报文的源IP地址、目的IP地址、IP标识、源MAC地址、目的MAC地址,计算分片数据包集合索引;根据该分片数据包集合索引获取与IP报文对应的分片数据包集合。其中,通过对现有技术中仅根据IP报文的源IP地址、目的IP地址、IP标识组成的三元组信息来计算哈希索引值的方式上引入IP报文的源MAC地址、目的MAC地址,并根据IP报文的源IP地址、目的IP地址、IP标识、源MAC地址、目的MAC地址组成的五元组信息来计算分片数据包集合索引,保证了所接收到的分片数据包是同一用户及同一承载在同一链路上传输的IP报文的分片数据包。

与IP报文对应的MTU值集合可以根据已建立得到的MTU值集合与IP报文的地址信息之间的对应关系来获取。

如果在步骤802中能够根据IP报文的地址信息获取到对应的MTU值集合,则根据该IP报文的地址信息,获取与该IP报文对应的分片数据包集合,进一步地执行步骤803。

进一步地,如果在步骤802中不能够根据IP报文的地址信息获取对应的MTU值集合,即找不到对应该IP报文地址信息的MTU值集合,意味着之前还未针对具有该IP报文地址信息的IP报文进行重组过,那么对于接收到的分片数据包可以采用其他方式进行处理,比如采用图1提供的方式进行处理,以实现IP报文的重组,以及创建IP报文地址信息与MTU值集合的对应关系。优选地,可采用如图3所示的在步骤301接收到分片数据包之后步骤302至步骤305所示的流程进行处理,以实现IP报文的重组,以及创建IP报文地址信息与MTU值集合的对应关系。其中,创建IP报文地址信息与MTU值集合的对应关系的方法可如前所述,在此不再重复。

步骤803:根据接收到的分片数据包的分片偏移量和MTU值集合,确定所述分片数据包在所述分片数据包集合中的目标位置。

具体地,根据接收到的分片数据包的分片偏移量和MTU值集合,按照以 下公式确定分片数据包在分片数据包集合中的目标位置:

offset0=OFFSET;i=0

offseti=offseti-1%mtuC+1-i;1≤i≤C-1

其中,OFFSET为分片数据包的分片偏移量,MTU值集合按照从小到大排序如下[mtu1,…,mtuc,…,mtuC],C为MTU值集合中元素的个数,表示了IP报文进行分片的分片次数,C为大于等于1的整数,K为分片数据包在分片数据包集合中对应的元素索引。

进一步地,在确定分片数据包在所述分片数据包集合中的目标位置之前,还可以根据接收到的分片数据包的分片偏移量和MTU值集合,判断接收到的分片数据包的分片偏移量是否为MTU值集合中任一个MTU值的整数倍,如果分片数据包的分片偏移量不是MTU集合中任一个MTU值的整数倍,则认为接收到的该分片数据包为非法分片,做丢弃处理,并返回步骤801,等待下一个到达的分片数据包,从而可以达到有效识别和丢弃可能接收到的错误的分片数据包或者是来自报文攻击的非法分片数据包,因此不必等到重组超时后再对这类数据包进行释放,避免了对业务处理性能的影响以及资源的浪费。

步骤804:根据所述分片数据包在所述分片数据包集合中的目标位置更新所述分片数据包集合。

其中,分片数据包集合的形式可以是任何具有将集合中元素以有序形式组织起来的且该有序形式可以由MTU值集合与分片数据包的分片偏移值计算确认的特征的集合,比如可以是数组,该数组中的一个数组元素对应IP报文的一个分片数据包。下面为了进一步说明本方法实施例所描述的过程,将以数组为例进行阐述,应当认为该过程适用于任何具有上述特征的分片数据包集合。

具体地,如果在步骤802中根据所述IP报文的地址信息获取到对应的MTU值集合,则通过步骤803和步骤804的过程,对接收到的分片数据包以数组的 形式进行存储,因此能够使得再次接收到新的分片数据包时能够通过计算直接地找到在数组中对应的目标位置,不再像现有技术中需要遍历查询以得到分片数据包对应的目标位置。对于一个有N个分片报文的数据包,若在步骤802中根据所述IP报文的地址信息获取到对应的MTU值集合,则通过步骤803和步骤804进行重组和更新所需要的循环查找遍历次数仅为N,小于现有技术中需要循环遍历的次数N2/2,进一步地提高了重组的效率。

为了更清楚地理解上述的流程,下面基于图8所示的流程,以报文长度为3500的IP报文存在两次分片,分片对应的MTU值:mtu1为1200和mtu2为1500为例,两次分片对应的MTU值按从小到大的顺序排序如下[1200,1500],根据此场景对图8所示的流程进行说明:

当接收到IP报文的分片数据包后,为保证收到的分片数据包为同一链路上的数据包,则根据所述IP报文的源IP地址、目的IP地址、IP标识、源介质访问控制MAC地址、目的MAC地址,计算数组索引,根据所述数组索引获取与所述IP报文对应的数组以及MTU值集合[1200,1500];

根据接收到的所述分片数据包的分片偏移量OFFSET和所述MTU值集合[1200,1500],可以首先对该分片数据包进行判断,如果该分片数据包的分片偏移量不是1200或1500的整数倍,则可以判断该分片数据包为非法分片,进行丢弃处理,如果该分片数据包的分片偏移量是1200的整数倍或者是1500的整数倍,则可以继续利用步骤803中所述的公式进行如下计算:

offset0=OFFSET;offset1=offset0%mtu2

从而可以得到:

进而可以确定所述分片数据包在所述数组中的目标位置,具体地:

如果收到的该分片数据包的分片偏移量OFFSET值为0,则K计算为0,也就是该分片数据包对应数组中索引为0的数组元素;

如果该分片数据包的分片偏移量OFFSET为1200,则按照上面的公式可以计算:

则可以确定该分片数据包在该数组中的目标位置对应数组中索引为1的数组元素;同样地,如果该分片数据包的分片偏移量OFFSET为1200的整数倍p×1200,则按照上面的公式可以计算确定该分片数据包在该数组中的目标位置对应数组中索引为(2×p+1)的数组元素;

如果该分片数据包的分片偏移量OFFSET为1500,则按照上面的公式可以计算:

则可以确定该分片数据包在该数组中的目标位置对应数组中索引为2的数组元素;同样地,如果该分片数据包的分片偏移量OFFSET为1500的整数倍q×1500,则按照上面的公式可以计算确定该分片数据包在该数组中的目标位置对应数组中索引为(2×q)的数组元素。

通过以上描述可以看出,本发明的一个实施例在接收到IP报文的分片数据包之后,根据IP报文的地址信息,获取对应的链表,该链表中的节点对应一个或多个顺序级联的分片数据包,该链表中的节点的第一偏移量为该节点对应的顺序级联的分片数据包中的第一个分片数据包的分片偏移量,第二偏移量为该节点对应的顺序级联的分片数据包中的最后一个分片数据包的分片偏移量与所述最后一个分片数据包的分片长度之和,通过对接收到的分片数据包创建对应的新节点,并根据该分片数据包的分片偏移量和分片长度设置新节点的第一偏移量和第二偏移量之后,根据新节点的第一偏移量和/或第二偏移量以及 链表中的节点的第一偏移量和/或第二偏移量,确定出新节点在链表中的目标位置,从而更新链表。可以看出,在本发明的上述实施例中通过设置节点以及节点的第一偏移量与第二偏移量,使得对接收到的分片数据包查找目标位置时,避免了对每一个已存在的分片数据包的遍历查找,而是以节点为单位,先查找出节点的目标位置,进而判断分片数据包的目标位置,因此减少了寻找目标位置所需要的遍历次数,优化了已有的对分片数据包重组的方法,提高了重组过程的效率,进而在相同的硬件场景下能够提高了产品的性能,

同时,本发明的另一个实施例还提出了在接收到IP报文的分片数据包之后,根据IP报文的地址信息,获取与IP报文对应的分片数据包集合以及MTU值集合,根据接收到的分片数据包的分片偏移量与MTU值集合,确定分片数据包在分片数据包集合中的目标位置,进而根据该分片数据包在分片数据包集合中的目标位置更新分片数据包集合。可以看出,在根据IP报文的地址信息获取到MTU值集合的情况下,可以根据分片数据包的分片偏移量与MTU值集合,通过计算直接确定出分片数据包在分片数据包集合中的目标位置,因此进一步地减少了寻找目标位置所需要的遍历次数,并且可以在对接收到的分片数据包进行确定目标位置之前,根据接收到的分片数据包的分片偏移量和MTU值集合,判断接收到的分片数据包是否正确,从而及时的识别错误的或者来自报文攻击的分片数据包,提前对此类分片数据包进行丢弃,避免了对业务处理性能的影响以及资源的浪费,解决了现实组网中经常出现的防攻击报文处理、进一步提高了重组的效率,对于提高EPC(分组核心网,Evolved Packet Core)设备的性能与稳定性、减轻系统负荷、提升网络质量有非常重要的作用。

通过对于大量用户都需要重组的实际LTE网络应用场景中对本发明实施例提供的分片数据包处理方法的具体应用实验,得到了在使用本发明实施例对分片数据包进程处理时,对于多次分片的报文,单板业务处理性能提高30%的效果,因此在相同的组网条件下能够降低单板处理的负荷,降低硬件的成本。

基于与如图3所述流程相同的技术构思,本发明的一个实施例提供了一种 分片数据包处理装置。

参见图9,为本发明实施例三提供的装置的结构示意图,该装置可包括:接收模块901,获取模块902,创建模块903,第一确定模块904,更新模块905,其中:

接收模块901,用于接收IP报文的分片数据包,所述分片数据包中包含IP报文的地址信息;

获取模块902,用于根据所述IP报文的地址信息,获取与所述IP报文对应的链表,所述链表中有N个节点,第n个节点对应Mn个顺序级联的分片数据包,第n个节点的第一偏移量为该节点对应的Mn个分片数据包中的第一个分片数据包的分片偏移量,第n个节点的第二偏移量为该节点对应的Mn个分片数据包中的最后一个分片数据包的分片偏移量与所述最后一个分片数据包的分片长度之和,N为大于等于1的整数,Mn为大于等于0的整数,1≤n≤N;

创建模块903,用于创建与所述分片数据包对应的新节点,并根据所述分片数据包的分片偏移量和分片长度设置所述新节点的第一偏移量和第二偏移量;

第一确定模块904,用于根据所述新节点的第一偏移量和/或第二偏移量以及所述链表中的节点的第一偏移量和/或第二偏移量,确定所述新节点在所述链表中的目标位置;

更新模块905,用于根据所述新节点在所述链表中的目标位置更新所述链表。

其中,所述第一确定模块904,具体通过以下方式中的任一种确定新节点的目标位置:

1)若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第一偏移量小于新节点的第一偏移量,且第二节点的第一偏移量大于新节点的第一偏移量,则将第一节点与第二节点之间的位置确定为新节点的目标位置;

2)若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第二偏移量小于新节点的第二偏移量,且第二节点的第二偏移量大于新节点的第二偏移量,则将第一节点与第二节点之间的位置确定为新节点的目标位置;

3)若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第二偏移量小于或等于新节点的第一偏移量,且第二节点的第二偏移量大于新节点的第一偏移量,则将第一节点与第二节点之间的位置确定为新节点的目标位置;

4)若所述链表中已存在的节点中包括第一节点以及与第一节点相邻的第二节点,且第一节点的第一偏移量小于新节点的第二偏移量,且第二节点的第一偏移量大于或等于新节点的第二偏移量,则将第一节点与第二节点之间的位置确定为新节点的目标位置。

其中,更新模块905,具体用于:根据新节点的第一偏移量和第二偏移量以及目标位置上新节点的相邻节点的第一偏移量和第二偏移量,判断新节点对应的分片数据包能否被级联到相邻节点,若判断能被级联到相邻节点,则将分片数据包级联到相邻节点并释放新节点;否则,将新节点插入目标位置。

具体地,更新模块905在判断新节点对应的分片数据包能否被级联到相邻节点时可以通过比较新节点的第一偏移量和新节点的相邻节点中的前一个相邻节点的第二偏移量,若相等,则判断分片数据包能被级联到前一个相邻节点;比较新节点的第二偏移量和新节点的相邻节点中的后一个相邻节点的第一偏移量,若相等,则判断分片数据包能被级联到后一个相邻节点。

其中,若分片数据包仅能被级联到前一个相邻节点,则将分片数据包级联到前一个相邻节点对应的最后一个分片数据包之后并释放新节点;

若分片数据包仅能被级联到后一个相邻节点,则将分片数据包级联到后一个相邻节点对应的第一个分片数据包之前并释放新节点;

若分片数据包能被级联到前一个相邻节点以及后一个相邻节点,则将分片 数据包级联到前一个相邻节点对应的最后一个分片数据包之后并释放新节点,将后一个相邻节点对应的分片数据包级联到分片数据包之后并释放后一个相邻节点。

进一步地,该分片数据包处理装置,还可以包括:

对应关系建立模块906,用于若链表中的所有分片数据包长度的累加和等于IP报文总长度,则根据该链表中所有分片数据包的分片偏移量确定IP报文分片次数和每次分片的最大传输单元MTU值,得到MTU值集合;以及用于建立MTU值集合与IP报文的地址信息之间的对应关系。

具体地,获取模块902还可以用于:根据IP报文的地址信息获取对应的MTU值集合。

进一步地,获取模块902根据分片数据包对应的IP报文的地址信息,获取与IP报文对应的链表,以及所述创建模块903创建与分片数据包对应的新节点,并根据分片数据包的分片偏移量和分片长度设置新节点的第一偏移量和第二偏移量,是在所述获取模块902未获取到对应的MTU值集合的情况下执行的;

若所述获取模块902根据IP报文的地址信息获取到对应的MTU值集合,则所述获取模块902还用于根据IP报文的地址信息,获取与所述IP报文对应的分片数据包集合,所述分片数据包集合中的一个元素对应于IP报文的一个分片数据包。

在所述获取模块902根据IP报文的地址信息获取到对应的MTU值集合的情况下,所述装置还包括:第二确定模块907,用于根据接收到的分片数据包的分片偏移量与MTU值集合,确定分片数据包在分片数据包集合中的目标位置。

所述更新模块905具体用于根据所述第二确定模块907确定的分片数据包在分片数据包集合中的目标位置更新分片数据包集合。

基于与图8所示流程相同的技术构思,本发明的另一个实施例提供了一种 分片数据包处理装置。

参见图10,为本发明的另一个实施例提供的装置的结构示意图,该装置可包括:接收模块1001,获取模块1002,确定模块1003,更新模块1004,其中:

接收模块1001,用于接收IP报文的分片数据包,所述分片数据包中包含IP报文的地址信息;

获取模块1002,用于根据所述IP报文的地址信息,获取与所述IP报文对应的分片数据包集合以及MTU值集合,所述分片数据包集合中的一个元素对应所述IP报文的一个分片数据包,所述MTU值集合中的元素对应所述IP报文在分片时每次分片的MTU值;

确定模块1003,用于根据接收到的所述分片数据包的分片偏移量和所述MTU值集合,确定所述分片数据包在所述分片数据包集合中的目标位置;

更新模块1004,用于根据所述分片数据包在所述分片数据包集合中的目标位置更新所述分片数据包集合。

具体地,所述获取模块1002用于根据IP报文的源IP地址、目的IP地址、IP标识、源MAC地址、目的MAC地址,计算分片数据包集合索引;根据所述分片数据包集合索引获取与IP报文对应的分片数据包集合。

具体地,所述确定模块1003用于按照以下公式确定分片数据包在分片数据包集合中的目标位置:

offset0=OFFSET;i=0

offseti=offseti-1%mtuC+1-i;1≤i≤C-1

其中,OFFSET为分片数据包的分片偏移量,MTU值集合按照从小到大排序如下[mtu1,…,mtuc,…,mtuC],C为MTU值集合中元素的个数,表示了IP报文进行分片的分片次数,C为大于等于1的整数,K为分片数据包在分片数据包集合中对应的元素索引。

进一步地,所述装置还可以包括判断模块1005,用于在所述确定模块1003确定分片数据包在分片数据包集合中的目标位置之前,根据接收到的分片数据包的分片偏移量和MTU值集合,对接收到的分片数据包进行判断,若接收到的分片数据包的分片偏移量不是所述MTU值集合中任一个MTU值的整数倍的话,则判断该分片数据包为非法分片,作丢弃处理,重新从接收模块1001中接收新的分片数据包。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1