CN109286584A - 一种多核系统中的分片重组方法、装置及设备 - Google Patents
一种多核系统中的分片重组方法、装置及设备 Download PDFInfo
- Publication number
- CN109286584A CN109286584A CN201710601423.2A CN201710601423A CN109286584A CN 109286584 A CN109286584 A CN 109286584A CN 201710601423 A CN201710601423 A CN 201710601423A CN 109286584 A CN109286584 A CN 109286584A
- Authority
- CN
- China
- Prior art keywords
- cpu
- fragment message
- message
- address
- frament reassembling
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9057—Arrangements for supporting packet reassembly or resequencing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开一种多核系统中的分片重组方法、装置及设备,所述方法包括:多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项。当网卡接收到任一分片报文后,判断该分片报文是否为首包报文。如果该分片报文是首包报文,则根据五元组信息确定该分片报文的第一CPU,并将该分片报文发送至该第一CPU。然后,第一CPU根据该分片报文的源IP地址和目的IP地址,确定第二CPU,并由第二CPU在确定满足重组条件时,完成分片报文的重组。由于本发明中的分片重组表为每核独立资源,不存在多核资源竞争的问题,所以本发明能够提高分片重组的效率。
Description
技术领域
本申请涉及数据处理领域,具体涉及一种多核系统中的分片重组方法、装置及设备。
背景技术
多核系统是一个实现并行计算的重要平台,随着科技的发展,越来越多的产品采用多核系统。例如网络转发系统,目前也多采用多核系统。
但是,目前采用多核系统的网络转发系统,在实现分片重组的功能时并没有考虑到多核系统的特点,而是基于全局唯一的分片重组表实现分片报文的重组。
显然,多核系统中的各个CPU均具有对该分片重组表的访问权限,一旦分片报文过多,则多核资源竞争的问题比较严重,影响多核系统的性能,可能会造成分片重组的处理效率较低。
发明内容
本发明提供了一种多核系统中的分片重组方法、装置及设备,能够提高分片重组的处理效率。
本发明权利要求提供了一种多核系统中的分片重组方法,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述方法包括:
当接收到任一分片报文后,判断所述分片报文是否为首包报文;
如果所述分片报文为首包报文,则获取所述分片报文的五元组信息;
根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
将所述分片报文发送至所述第一CPU,以便所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU,并将所述分片报文发送至所述第二CPU,从而所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,所述方法还包括:
如果所述分片报文不是首包报文,则获取所述分片报文的源IP地址和目的IP地址;
根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU;
将所述分片报文发送至所述第三CPU,以便所述第三CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第三CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,所述根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU,包括:
利用RSS算法,根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
相应的,所述根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU,包括:
利用RSS算法,根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU。
本发明还提供了一种多核系统中的分片重组方法,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述方法包括:
接收来自网卡的任一分片报文后,判断所述分片报文是否为首包报文;
如果所述分片报文为首包报文,则根据所述分片报文的源IP地址和目的IP地址确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU;
将所述分片报文发送至所述第二CPU,以便所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,所述方法还包括:
如果所述分片报文不是首包报文,则根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在分片重组表中的分片重组项中;
在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,所述方法还包括:
获取重组后的分片报文;
根据所述重组后的分片报文的五元组信息,确定第四CPU,所述第四CPU为所述重组后的分片报文的目标CPU;
将所述重组后的分片报文发送至所述第四CPU。
优选地,所述分片重组项设置有超时定时器,所述方法还包括:
当所述分片重组项中存储一分片报文时,控制所述超时定时器开始\重新计时;
当所述超时定时器计时达到预设时长时,删除所述分片重组项中的分片报文。
本发明还提供了一种多核系统中的分片重组装置,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述装置包括:
判断模块,用于在接收到任一分片报文后,判断所述分片报文是否为首包报文;
第一获取模块,用于在所述判断模块的结果为是时,获取所述分片报文的五元组信息;
第一确定模块,用于根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
第一发送模块,用于将所述分片报文发送至所述第一CPU,以便所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU,并将所述分片报文发送至所述第二CPU,从而所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,所述装置还包括:
第二获取模块,用于在所述判断模块的结果为否时,获取所述分片报文的源IP地址和目的IP地址;
第二确定模块,用于根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU;
第二发送模块,用于将所述分片报文发送至所述第三CPU,以便所述第三CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第三CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,所述第一确定模块,包括:
第一确定子模块,用于利用RSS算法,根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
相应的,所述第二确定模块,包括:
第二确定子模块,用于利用RSS算法,根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU。
本发明还提供了一种多核系统中的分片重组装置,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述装置包括:
判断模块,用于接收来自网卡的任一分片报文后,判断所述分片报文是否为首包报文;
第一确定模块,用于在所述判断模块的结果为是时,根据所述分片报文的源IP地址和目的IP地址确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU;
第一发送模块,用于将所述分片报文发送至所述第二CPU,以便所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,所述装置还包括:
存储模块,用于在所述判断模块的结果为否时,根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在分片重组表中的分片重组项中;
重组模块,用于在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,所述装置还包括:
获取模块,用于获取重组后的分片报文;
第二确定模块,用于根据所述重组后的分片报文的五元组信息,确定第四CPU,所述第四CPU为所述重组后的分片报文的目标CPU;
第二发送模块,用于将所述重组后的分片报文发送至所述第四CPU。
优选地,所述分片重组项设置有超时定时器,所述装置还包括:
控制模块,用于当所述分片重组项中存储一分片报文时,控制所述超时定时器开始\重新计时;
删除模块,用于当所述超时定时器计时达到预设时长时,删除所述分片重组项中的分片报文。
本发明还提供了一种多核系统中的分片重组设备,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述设备包括存储器和处理器,
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令,执行以下步骤:当接收到任一分片报文后,判断所述分片报文是否为首包报文;如果所述分片报文为首包报文,则获取所述分片报文的五元组信息;根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;将所述分片报文发送至所述第一CPU,以便所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU,并将所述分片报文发送至所述第二CPU,从而所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
优选地,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述设备包括存储器和处理器,
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令,执行以下步骤:接收来自网卡的任一分片报文后,判断所述分片报文是否为首包报文;如果所述分片报文为首包报文,则根据所述分片报文的源IP地址和目的IP地址确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU;将所述分片报文发送至所述第二CPU,以便所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
本发明提供的多核系统中的分片重组方法中,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项。具体的,当接收到任一分片报文后,首先判断该分片报文是否为首包报文。如果该分片报文是首包报文,则根据五元组信息确定该分片报文的第一CPU,并将该分片报文发送至该第一CPU。然后,第一CPU根据该分片报文的源IP地址、目的IP地址和报文ID,确定第二CPU,并由第二CPU在确定满足重组条件时,完成分片报文的重组。由于本发明中的分片重组表为每核独立资源,不存在多核资源竞争的问题,所以本发明实施例能够提高分片重组的效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种多核系统中的分片重组方法的信令交互图;
图2为本发明实施例提供的另一种多核系统中的分片重组方法的信令交互图;
图3为本发明实施例提供的一种多核系统中的分片重组装置的结构示意图;
图4为本发明实施例提供的另一种多核系统中的分片重组装置的结构示意图;
图5为本发明实施例提供的另一种多核系统中的分片重组装置的结构示意图;
图6为本发明实施例提供的另一种多核系统中的分片重组装置的结构示意图;
图7为本发明实施例提供的一种多核系统中的分片重组设备的结构示意图;
图8为本发明实施例提供的一种多核系统中的分片重组设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在网络通信领域,链路层具有最大传输单元值,它限制了数据帧的最大长度,不同的网络类型都有一个上限值。以太网的最大传输单元值是1500,如果IP层有数据包要传,而且数据包的长度超过了最大传输单元值,那么IP层就要对数据包进行分片操作,使每个分片报文的长度都小于或等于最大传输单元值,这些分片报文在到达接收方后,由接收方完成分片重组。
本发明提供的多核系统中的分片重组方法中,分片重组表设置为每核独立资源,即每个CPU分别配置有分片重组表,每个CPU只能访问自己的分片重组表。即使分片报文过多,也不存在多核资源竞争的问题,提高了分片重组的处理效率。
具体的,本发明实施例提供了一种多核系统中的分片重组方法,其中,多核系统中的每个CPU分别配置有分片重组表,各个分片重组表包括分片重组项。本发明实施例提供的多核系统中的分片重组方法应用于各种网络收发包设备,以下,以应用于网卡为例进行介绍:
参考图1,为本发明实施例提供的一种多核系统中的分片重组方法的信令交互图,所述方法具体可以包括:
S101:当网卡接收到任一分片报文后,判断所述分片报文是否为首包报文,如果是,则执行S102。
本发明实施例中,网卡在接收到分片报文后,首先对分片报文进行解析,以判断该分片报文是否为首包报文。
分片报文分为首包报文和非首包报文两种类型,其中,首包报文中携带有完整的五元组信息,五元组信息包括源IP地址,目的IP地址,源端口号,目的端口号,协议类型。而非首包报文中仅携带有三元组信息,三元组信息包括源IP地址,目的IP地址,协议类型。
基于此,一种实现方式中,当网卡接收到任一分片报文后,通过判断该分片报文是否携带完整的五元组信息,以确定该分片报文是否为首包报文。
另一种实现方式中,当网卡接收到任一分片报文后,对该分片报文进行解析后得到能够表示首包报文的标识,进而通过标识确定该分片报文是否为首包报文。例如,表示偏移原始数据包开始处位置的标识offset为0,则说明该分片报文为首包报文。
事实上,用于确定分片报文是否为首包报文的方法较多,在此不做过多的介绍。
S102:获取所述分片报文的五元组信息。
本发明实施例中,当网卡确定该分片报文为首包报文后,获取该分片报文中携带的五元组信息。
S103:根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU。
本发明实施例中,网卡在获取该分片报文的五元组信息后,根据五元组信息计算该分片报文的目标CPU,即第一CPU。
本发明实施例中,多核系统中包括多个网卡,每个网卡均可以向各个CPU发送报文,每个网卡具有与CPU总个数N相同的队列数N,且分别标记为队列0、队列1…队列N-1。每个网卡的队列与CPU具有映射关系,每个网卡通过任一队列可以向与该队列具有映射关系的CPU发送报文。本发明实施例中的网卡支持RSS(英文:Receive Side Scaling)算法,一种实现方式中,网卡利用RSS算法,计算出该分片报文的目标CPU。具体的,网卡根据该分片报文的五元组信息计算hash值,然后将hash值模上该网卡具有的队列数N得到值X,将该网卡的队列X对应的CPU确定为该分片报文的目标CPU。
S104:将所述分片报文发送至所述第一CPU。
本发明实施例中,网卡在确定分片报文的目标CPU,即第一CPU后,将该分片报文发送至第一CPU。
S105:所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU。
当第一CPU接收到该分片报文后,首先确定该分片报文为首包报文,其次,为了实现分片重组,需要将该首包报文与该首包报文的后续报文存储在同一个CPU上。事实上,本发明实施例中的网卡在接收到非首包报文时,是根据非首包报文的源IP地址和目的IP地址计算目标CPU的。所以,为了将该首包报文与后续报文存储于同一CPU,本发明实施例中第一CPU在接收到首包报文后,根据该首包报文的源IP地址和目的IP地址,计算该首包报文的后续报文的目标CPU,即第二CPU。
S106:所述第一CPU将所述分片报文发送至所述第二CPU。
本发明实施例中,在第一CPU确定首包报文的后续报文的目标CPU,即第二CPU后,将该首包报文发送至第二CPU,以便将该首包报文与后续报文存储在同一CPU上,便于分片重组。
由于本发明实施例中的网卡在接收到非首包报文时,是根据非首包报文的源IP地址和目的IP地址计算目标CPU的,所以,属于同一个报文的分片报文(除首包报文)均被发送至同一个CPU。为了实现分片重组,事实上只需要倒核一次,即第一CPU将首包报文发送至第二CPU。另外,在一种特殊情况下,第一CPU与第二CPU为同一个CPU,此时不需要倒核。总之,本发明实施例的处理方式能够有效提高多核系统中的分片重组效率。
S107:所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中。
本发明实施例中,第二CPU在接收到该分片报文后,首先确定该分片报文为首包报文,其次,根据该分片报文的源IP地址、目的IP地址和报文ID,确定第二CPU的分片重组表上是否存在对应的分片重组项。如果存在,则直接将该分片报文存储在对应的分片重组项中。事实上,属于同一个报文的分片报文具有相同的源IP地址、目的IP地址和报文ID,所以,属于同一报文的分片报文均会存储于该分片重组项中。如果第二CPU确定分片重组表上不存在对应的分片重组项,则新建一分片重组项,并将该分片报文存储在该分片重组项中,以等待后续报文的存入。
S108:所述第二CPU在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
本发明实施例中,第二CPU判断自身管理的分片重组表中的各个分片重组项是否满足重组条件,具体为判断分片重组项中的分片报文是否全部存入。一种实现方式为,当第二CPU接收到具有预设标志位的分片报文后,则可以确定该分片重组项中的分片报文全部存入。如果分片重组项中的分片报文全部存入,则将该分片重组项中的分片报文进行重组。
在上述实施例的基础上,本发明实施例还提供了一种多核系统中的分片重组方法,其中,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项。
参考图2,为本发明实施例提供的一种多核系统中的分片重组方法的信令交互图。所述方法具体包括:
S201:当网卡接收到任一分片报文后,判断所述分片报文是否为首包报文。
S202:如果所述分片报文为不是首包报文,则获取所述分片报文的源IP地址和目的IP地址。
当网卡接收到分片报文后,首先对该分片报文进行解析,如果确定该分片报文未携带完整的五元组信息,则确定该分片报文为非首包报文。
对于非首包报文,其携带有三元组信息,三元组信息包括源IP地址,目的IP地址,协议类型。本发明实施例中,网卡获取该分片报文的源IP地址和目的IP地址。
S203:根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU。
本发明实施例中,网卡根据该分片报文的源IP地址和目的IP地址,确定目标CPU。
一种实现方式中,网卡利用RSS算法计算该分片报文的目标CPU。具体的,网卡首先根据该分片报文的源IP地址和目的IP地址计算hash值,然后将hash值模上该网卡具有的队列数N得到值Y,将该网卡的队列Y对应的CPU确定为该分片报文的目标CPU,即第三CPU。
S204:将所述分片报文发送至所述第三CPU。
S205:所述第三CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第三CPU的分片重组表的分片重组项中。
当第三CPU接收到该分片报文后,首先确定该分片报文为非首包报文,其次,根据该分片报文的源IP地址、目的IP地址和报文ID,确定第三CPU的分片重组表上是否存在对应的分片重组项。如果存在,则直接将该分片报文存储在对应的分片重组项中。事实上,属于同一报文的分片报文均会存储于该分片重组项中。如果第三CPU确定分片重组表上不存在对应的分片重组项,则新建一分片重组项,并将该分片报文存储在该分片重组项中,以等待后续报文的存入。
S206:所述第三CPU在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
实际应用中,第三CPU判断自身管理的分片重组表中的各个分片重组项中的分片报文是否全部存入,如果是,则将该分片重组项中的分片报文进行重组。
另外,为了避免长时间大量堆积分片报文过多导致的内存泄漏等问题,本发明实施例为每个分片重组项设置有超时定时器,用于在分片重组项中长时间没有新的分片报文存入时,删除该分片重组项,释放内存。
事实上,可能由于各种原因,如某一分片报文传输失败等,导致分片重组项中已存储的分片报文失效,即无法进行分片重组,所以,本发明实施例可以释放该分片重组项中的分片报文占用的内存,缓解系统内存压力。
具体的,在第三CPU将分片报文存储于分片重组项时,控制该分片重组项的超时定时器开始计时或重新计时。而一个分片重组项中需要存储若干分片报文,如果第三CPU确定该分片报文是第一个存入该分片重组项中的分片报文,则控制超时定时器开始计时;如果该分片报文不是第一个存入该分片重组项的分片报文,说明超时定时器当前正处于计时状态,此时需要控制超时定时器清零,然后重新计时。当超时定时器计时达到预设时长时,删除该分片重组项中存储的所有分片报文,释放内存,以避免长时间大量堆积分片报文导致的内存泄露问题。
S207:所述第三CPU获取重组后的分片报文。
S208:根据所述重组后的分片报文的五元组信息,确定第四CPU,所述第四CPU为所述重组后的分片报文的目标CPU;
S209:将所述重组后的分片报文发送至所述重组后的分片报文的目标CPU。
为了保证网络转发系统的各项业务正常运行,本发明实施例在完成分片报文的重组后,获取重组后的分片报文,并由第三CPU根据重组后分片报文的五元组信息确定目标CPU,即第四CPU,最后将该重组后的分片报文发送至第四CPU。
实际应用中,第三CPU可以利用RSS算法,根据重组后的分片报文的五元组信息确定目标CPU。事实上,该重组后的分片报文的目标CPU即为该重组后的分片报文的首包报文的目标CPU。
另一种实现方式中,第三CPU可以预先记录首包报文的目标CPU,然后直接将该目标报文确定为重组后的分片报文的目标CPU。
另外,本发明实施例中,五元组相同的报文重组成功后会被发送至同一CPU,并由该CPU进行后续正常的业务处理。
本发明实施例提供的多核系统中的分片重组方法中,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项。当网卡接收到任一分片报文后,判断该分片报文是否为首包报文。如果该分片报文是首包报文,则根据五元组信息确定该分片报文的第一CPU,并将该分片报文发送至该第一CPU。然后,第一CPU根据该分片报文的源IP地址和目的IP地址,确定第二CPU,并由第二CPU在确定满足重组条件时,完成分片报文的重组。由于本发明实施例中的分片重组表为每核独立资源,不存在多核资源竞争的问题,所以本发明实施例能够提高分片重组的效率。
本发明实施例还提供了一种多核系统中的分片重组装置,参考图3,为本发明实施例提供的一种多核系统中的分片重组装置的结构示意图。其中,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述装置包括:
判断模块301,用于在接收到任一分片报文后,判断所述分片报文是否为首包报文;
第一获取模块302,用于在所述判断模块的结果为是时,获取所述分片报文的五元组信息;
第一确定模块303,用于根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
第一发送模块304,用于将所述分片报文发送至所述第一CPU,以便所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU,并将所述分片报文发送至所述第二CPU,从而所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
另外,参考图4,在图3的基础上,本发明实施例提供的另一种多核系统中的分片重组装置中还包括:
第二获取模块401,用于在所述判断模块的结果为否时,获取所述分片报文的源IP地址和目的IP地址;
第二确定模块402,用于根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU;
第二发送模块403,用于将所述分片报文发送至所述第三CPU,以便所述第三CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第三CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
具体的,所述第一确定模块303,包括:
第一确定子模块,用于利用RSS算法,根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
相应的,所述第二确定模块,包括:
第二确定子模块,用于利用RSS算法,根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU。
另外,参考图5,为本发明实施例提供的另一种多核系统中的分片重组装置的结构示意图,其中,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述装置包括:
判断模块501,用于接收来自网卡的任一分片报文后,判断所述分片报文是否为首包报文;
第一确定模块502,用于在所述判断模块的结果为是时,根据所述分片报文的源IP地址和目的IP地址确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU;
第一发送模块503,用于将所述分片报文发送至所述第二CPU,以便所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
另外,参考图6,在图5的基础上,本发明实施例提供的另一种多核系统中的分片重组装置中还包括:
存储模块601,用于在所述判断模块的结果为否时,根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在分片重组表中的分片重组项中;
重组模块602,用于在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
为了保证重组后的分片报文能够正常处理,所述装置还包括:
获取模块,用于获取重组后的分片报文;
第二确定模块,用于根据所述重组后的分片报文的五元组信息,确定第四CPU,所述第四CPU为所述重组后的分片报文的目标CPU;
第二发送模块,用于将所述重组后的分片报文发送至所述第四CPU。
另外,所述分片重组项设置有超时定时器,所述装置还包括:
控制模块,用于当所述分片重组项中存储一分片报文时,控制所述超时定时器开始\重新计时;
删除模块,用于当所述超时定时器计时达到预设时长时,删除所述分片重组项中的分片报文。
本发明实施例提供的多核系统中的分片重组装置中,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项。当接收到任一分片报文后,判断该分片报文是否为首包报文。如果该分片报文是首包报文,则根据五元组信息确定该分片报文的第一CPU,并将该分片报文发送至该第一CPU。然后,第一CPU根据该分片报文的源IP地址和目的IP地址,确定第二CPU,并由第二CPU在确定满足重组条件时,完成分片报文的重组。由于本发明实施例中的分片重组表为每核独立资源,不存在多核资源竞争的问题,所以本发明实施例能够提高分片重组的效率。
相应的,本发明实施例还提供一种多核系统中的分片重组设备,参见图7所示,可以包括:
处理器701、存储器702、输入装置703和输出装置704。多核系统中的分片重组设备中的处理器701的数量可以一个或多个,图7中以一个处理器为例。在本发明的一些实施例中,处理器701、存储器702、输入装置703和输出装置704可通过总线或其它方式连接,其中,图7中以通过总线连接为例。
存储器702可用于存储软件程序以及模块,处理器701通过运行存储在存储器702的软件程序以及模块,从而执行多核系统中的分片重组设备的各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置703可用于接收输入的数字或字符信息,以及产生与多核系统中的分片重组设备的用户设置以及功能控制有关的信号输入。
具体在本实施例中,处理器701会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器702中,并由处理器701来运行存储在存储器702中的应用程序,从而实现各种功能:
多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项;
当接收到任一分片报文后,判断所述分片报文是否为首包报文;
如果所述分片报文为首包报文,则获取所述分片报文的五元组信息;
根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
将所述分片报文发送至所述第一CPU,以便所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU,并将所述分片报文发送至所述第二CPU,从而所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
相应的,本发明实施例还提供一种多核系统中的分片重组设备,参见图8所示,可以包括:
处理器801、存储器802、输入装置803和输出装置804。多核系统中的分片重组设备中的处理器801的数量可以一个或多个,图8中以一个处理器为例。在本发明的一些实施例中,处理器801、存储器802、输入装置803和输出装置804可通过总线或其它方式连接,其中,图8中以通过总线连接为例。
存储器802可用于存储软件程序以及模块,处理器801通过运行存储在存储器802的软件程序以及模块,从而执行多核系统中的分片重组设备的各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。输入装置803可用于接收输入的数字或字符信息,以及产生与多核系统中的分片重组设备的用户设置以及功能控制有关的信号输入。
具体在本实施例中,处理器801会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器802中,并由处理器801来运行存储在存储器802中的应用程序,从而实现各种功能:
多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项;
接收来自网卡的任一分片报文后,判断所述分片报文是否为首包报文;
如果所述分片报文为首包报文,则根据所述分片报文的源IP地址和目的IP地址确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU;
将所述分片报文发送至所述第二CPU,以便所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请实施例所提供的一种多核系统中的分片重组方法、装置及设备进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种多核系统中的分片重组方法,其特征在于,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述方法包括:
当接收到任一分片报文后,判断所述分片报文是否为首包报文;
如果所述分片报文为首包报文,则获取所述分片报文的五元组信息;
根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
将所述分片报文发送至所述第一CPU,以便所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU,并将所述分片报文发送至所述第二CPU,从而所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
2.根据权利要求1所述的多核系统中的分片重组方法,其特征在于,所述方法还包括:
如果所述分片报文不是首包报文,则获取所述分片报文的源IP地址和目的IP地址;
根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU;
将所述分片报文发送至所述第三CPU,以便所述第三CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第三CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
3.根据权利要求2所述的多核系统中的分片重组方法,其特征在于,所述根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU,包括:
利用RSS算法,根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
相应的,所述根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU,包括:
利用RSS算法,根据所述分片报文的源IP地址和目的IP地址,确定第三CPU,所述第三CPU为所述分片报文的目标CPU。
4.一种多核系统中的分片重组方法,其特征在于,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述方法包括:
接收来自网卡的任一分片报文后,判断所述分片报文是否为首包报文;
如果所述分片报文为首包报文,则根据所述分片报文的源IP地址和目的IP地址确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU;
将所述分片报文发送至所述第二CPU,以便所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
5.根据权利要求4所述的多核系统中的分片重组方法,其特征在于,所述方法还包括:
如果所述分片报文不是首包报文,则根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在分片重组表中的分片重组项中;
在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
6.根据权利要求5所述的多核系统中的分片重组方法,其特征在于,所述方法还包括:
获取重组后的分片报文;
根据所述重组后的分片报文的五元组信息,确定第四CPU,所述第四CPU为所述重组后的分片报文的目标CPU;
将所述重组后的分片报文发送至所述第四CPU。
7.一种多核系统中的分片重组装置,其特征在于,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述装置包括:
判断模块,用于在接收到任一分片报文后,判断所述分片报文是否为首包报文;
第一获取模块,用于在所述判断模块的结果为是时,获取所述分片报文的五元组信息;
第一确定模块,用于根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;
第一发送模块,用于将所述分片报文发送至所述第一CPU,以便所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU,并将所述分片报文发送至所述第二CPU,从而所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
8.一种多核系统中的分片重组装置,其特征在于,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述装置包括:
判断模块,用于接收来自网卡的任一分片报文后,判断所述分片报文是否为首包报文;
第一确定模块,用于在所述判断模块的结果为是时,根据所述分片报文的源IP地址和目的IP地址确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU;
第一发送模块,用于将所述分片报文发送至所述第二CPU,以便所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
9.一种多核系统中的分片重组设备,其特征在于,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述设备包括存储器和处理器,
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令,执行以下步骤:当接收到任一分片报文后,判断所述分片报文是否为首包报文;如果所述分片报文为首包报文,则获取所述分片报文的五元组信息;根据所述五元组信息确定第一CPU,所述第一CPU为所述分片报文的目标CPU;将所述分片报文发送至所述第一CPU,以便所述第一CPU根据所述分片报文的源IP地址和目的IP地址,确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU,并将所述分片报文发送至所述第二CPU,从而所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
10.一种多核系统中的分片重组设备,其特征在于,多核系统中的每个CPU分别配置有分片重组表,所述分片重组表包括分片重组项,所述设备包括存储器和处理器,
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令,执行以下步骤:接收来自网卡的任一分片报文后,判断所述分片报文是否为首包报文;如果所述分片报文为首包报文,则根据所述分片报文的源IP地址和目的IP地址确定第二CPU,所述第二CPU为所述分片报文的后续报文的目标CPU;将所述分片报文发送至所述第二CPU,以便所述第二CPU根据所述分片报文的源IP地址、目的IP地址和报文ID,将所述分片报文存储在所述第二CPU的分片重组表的分片重组项中,并在确定所述分片重组项满足重组条件时,将所述分片重组项中的分片报文进行重组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710601423.2A CN109286584B (zh) | 2017-07-21 | 2017-07-21 | 一种多核系统中的分片重组方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710601423.2A CN109286584B (zh) | 2017-07-21 | 2017-07-21 | 一种多核系统中的分片重组方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109286584A true CN109286584A (zh) | 2019-01-29 |
CN109286584B CN109286584B (zh) | 2021-07-13 |
Family
ID=65184924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710601423.2A Active CN109286584B (zh) | 2017-07-21 | 2017-07-21 | 一种多核系统中的分片重组方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109286584B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111786905A (zh) * | 2020-06-30 | 2020-10-16 | 北京天融信网络安全技术有限公司 | 报文重组方法及装置、处理器、存储介质及网络设备 |
CN111953620A (zh) * | 2020-08-21 | 2020-11-17 | 锐捷网络股份有限公司 | 一种分片报文的重组方法及装置 |
CN114465966A (zh) * | 2022-01-23 | 2022-05-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据包重组控制系统和数据包重组方法 |
CN117596211A (zh) * | 2024-01-18 | 2024-02-23 | 湖北省楚天云有限公司 | Ip分片多核负载均衡装置及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104544A (zh) * | 2011-01-25 | 2011-06-22 | 无锡网芯科技有限公司 | 硬件加速的多核处理器ip隧道分片报文流保序方法 |
CN102624611A (zh) * | 2011-12-31 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 报文分流方法、装置、处理器和网络设备 |
US20130242997A1 (en) * | 2012-03-15 | 2013-09-19 | Neelesh Bansod | Policy control enforcement at a packet gateway |
CN103888364A (zh) * | 2012-12-24 | 2014-06-25 | 华为技术有限公司 | 报文分流方法及设备 |
-
2017
- 2017-07-21 CN CN201710601423.2A patent/CN109286584B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102104544A (zh) * | 2011-01-25 | 2011-06-22 | 无锡网芯科技有限公司 | 硬件加速的多核处理器ip隧道分片报文流保序方法 |
CN102624611A (zh) * | 2011-12-31 | 2012-08-01 | 成都市华为赛门铁克科技有限公司 | 报文分流方法、装置、处理器和网络设备 |
US20130242997A1 (en) * | 2012-03-15 | 2013-09-19 | Neelesh Bansod | Policy control enforcement at a packet gateway |
CN103888364A (zh) * | 2012-12-24 | 2014-06-25 | 华为技术有限公司 | 报文分流方法及设备 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111786905A (zh) * | 2020-06-30 | 2020-10-16 | 北京天融信网络安全技术有限公司 | 报文重组方法及装置、处理器、存储介质及网络设备 |
CN111953620A (zh) * | 2020-08-21 | 2020-11-17 | 锐捷网络股份有限公司 | 一种分片报文的重组方法及装置 |
CN111953620B (zh) * | 2020-08-21 | 2023-01-10 | 锐捷网络股份有限公司 | 一种分片报文的重组方法及装置 |
CN114465966A (zh) * | 2022-01-23 | 2022-05-10 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据包重组控制系统和数据包重组方法 |
CN114465966B (zh) * | 2022-01-23 | 2024-05-28 | 山东云海国创云计算装备产业创新中心有限公司 | 一种数据包重组控制系统和数据包重组方法 |
CN117596211A (zh) * | 2024-01-18 | 2024-02-23 | 湖北省楚天云有限公司 | Ip分片多核负载均衡装置及方法 |
CN117596211B (zh) * | 2024-01-18 | 2024-04-05 | 湖北省楚天云有限公司 | Ip分片多核负载均衡装置及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109286584B (zh) | 2021-07-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109286584A (zh) | 一种多核系统中的分片重组方法、装置及设备 | |
CN101827073B (zh) | 跟踪片段数据流 | |
CN106453625B (zh) | 信息同步方法及高可用性集群系统 | |
CN104580107B (zh) | 恶意攻击检测方法及控制器 | |
CN106878343B (zh) | 一种云计算环境下提供网络安全即服务的系统 | |
WO2020142867A1 (zh) | 一种流量整形方法及相关设备 | |
CN107547301A (zh) | 一种主备设备倒换方法及装置 | |
CN110474845A (zh) | 流表项淘汰方法及相关装置 | |
CN101699795A (zh) | 一种报文拥塞处理方法及系统 | |
CN109379764A (zh) | 报文发送方法及装置 | |
CN107682446A (zh) | 一种报文镜像方法、装置及电子设备 | |
CN105207908A (zh) | 一种报文处理方法及体系架构 | |
CN105991588A (zh) | 一种防御消息攻击的方法及装置 | |
CN101232508B (zh) | 加速多生成树协议网络拓扑收敛的方法及设备 | |
CN107733812A (zh) | 一种数据包调度方法、装置及设备 | |
CN101572871B (zh) | 彩信消息下发方法、装置及系统 | |
CN109450941B (zh) | 一种抗DDoS的SDN控制器消息调度方法 | |
CN105183373B (zh) | 一种数据处理方法及网络设备 | |
US7843829B1 (en) | Detection and recovery from control plane congestion and faults | |
CN107124316B (zh) | 一种数据通信设备中基于硬件的快速倒换动作实现方法 | |
CN107210969A (zh) | 一种基于软件定义网络的数据处理方法及相关设备 | |
CN105009512A (zh) | 维护关联ma设置方法、装置及系统 | |
CN103544292B (zh) | 基于HASH表的Diameter消息处理方法和装置 | |
CN109254721B (zh) | 灵活以太网数据交叉方法、传输装置及存储介质 | |
CN110380968A (zh) | 一种报文处理的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |