一种对数据包进行处理的方法及装置制造方法
【专利摘要】一种对数据包进行处理的方法及装置,所述方法包括:对于待处理的数据包,根据所述数据包对应的配置信息获知所述数据包在各级算法组间的处理顺序;其中,算法组为预先根据安全算法中所涉及到的各算法的类别对所要用到的算法进行分组后得到的,每级算法组中包含一个以上的属于同一类的算法的算法核;按照所述处理顺序,在各级算法组中,根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组进行处理。所述装置包括:一级以上的算法组、多路选择器及任务信息处理模块。采用本发明后,不必等待整个数据包的所有数据在前一级进行处理完成后再进行下一级处理,这样节省了处理的时间,从而提升了运算效率。
【专利说明】一种对数据包进行处理的方法及装置
【技术领域】
[0001]本发明涉及通讯或信息安全领域,尤其涉及一种对数据包进行处理的方法及装置。
【背景技术】
[0002]在通讯或信息安全领域,随着网络和通信的大发展,信息交换和传播的速度大大加快,在效率提升的同时,保证传输的私密性、数据完整性、鲁棒性变得尤为重要。在此基础上,出现了大量的安全算法和安全协议,几乎在每一个网络传输协议栈中,都可以看到与安全相关的算法和协议。
[0003]但安全带来的另一个问题就是效率,由于安全算法都要涉及对数据的操作,而且还要经过各类复杂的运算才能达到一定的安全标准,因此会消耗较多的系统资源,进而影响整个通信系统的处理能力。所以如何高效的进行安全算法处理显得尤为重要。
[0004]在传统的效率提升方法中,加快算法的实现已成为主要的考虑方向,对某一级算法实现流水线处理、并行计算、大数据位宽处理等方式,都是为了增强单一算法的处理能力,提高数据的处理效率。同时也有通过密钥保留、共享上下文等方式,减少数据包与数据包之间切换时的操作,从而提升整条数据流的算法效率。但对于如何对需要进行多级处理的安全算法进行效率提升,现有技术却鲜有涉及。
[0005]此外,在利用安全算法进行计算时,每使用一级算法,都需要对外部存储器进行一次读取操作,这不仅会降低处理效率,而且会增加外部存储器负担。
【发明内容】
[0006]本发明的目的在于提供一种对数据包进行处理的方法及装置,以有效减少单包对多个算法的处理时间。
[0007]为解决上述问题,本发明提供了一种对数据包进行处理的方法,包括:
[0008]对于待处理的数据包,根据所述数据包对应的配置信息获知所述数据包在各级算法组间的处理顺序;其中,算法组为预先根据安全算法中所涉及到的各算法的类别对所要用到的算法进行分组后得到的,每级算法组中包含一个以上的属于同一类的算法的算法核;
[0009]按照所述处理顺序,在各级算法组中,根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组进行处理。
[0010]进一步地,
[0011]所述根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组中进行处理,具体包括:
[0012]对于第一级算法组,输入缓冲按照外部存取效率读取相应数据量的数据后,采用相应的算法核进行处理,并将处理后得到的数据发送到下一级算法组中的输入缓冲中。
[0013]进一步地,[0014]所述根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组中进行处理,具体包括:
[0015]对于除第一级算法组和最后一级算法组之外的其它各级算法组,根据本级算法组要求的数据块大小,在判断出输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理,将处理后的数据发送到下一级算法组的输入缓冲。
[0016]进一步地,
[0017]所述根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组中进行处理,具体包括:
[0018]对于最后一级算法组,根据本级算法组要求的数据块大小,在判断出输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理,将处理后的数据发送到输出缓冲中,在满足输出数据量要求时一次写入外部存储器。
[0019]进一步地,上述方法还包括:
[0020]在相关的算法组中的输入缓冲中将无需经过该算法组处理的部分数据删除后进行后续处理;而在下一级需要对该删除的部分数据进行处理的算法组的输入缓冲中,在原删除位置上添加该部分数据后再进行后续处理。
[0021]相应地,本发明还提供了一种对数据包进行处理的装置,包括:一级以上的算法组、多路选择器及任务信息处理模块;
[0022]所述算法组为预先根据安全算法中所涉及到的各算法的类别对所要用到的算法进行分组后配置到所述装置中的,每级算法组中包含一个以上的属于同一类的算法的算法核;用于根据所述数据包对应的配置信息采用相应的算法核对输入到本算法组的相应数据量的数据进行处理后,发送到所述多`路选择器;
[0023]所述任务信息处理模块用于对于待处理的数据包,根据所述数据包对应的配置信息获知所述数据包在各级算法组间的处理顺序,并将所述处理顺序配置到所述多路选择器;
[0024]所述多路选择器用于根据所述任务信息处理模块对本模块的配置,在所述一级以上的算法组中为待处理的数据选择处理路径。
[0025]进一步地,上述装置还包括:一个以上的输入缓冲,每一个输入缓冲仅与一个算法
组--对应;
[0026]所述多路选择器还用于将接收到的数据发送到下一级算法组中的输入缓冲中;
[0027]所述输入缓冲用于在收集到数据进行缓存。
[0028]进一步地,
[0029]所述算法组用于根据所述数据包对应的配置信息采用相应的算法核对输入的相应数据量的数据进行处理,具体包括:
[0030]第一级算法组用于在对应的输入缓冲按照外部存取效率读取相应数据量的数据后,采用相应的算法核进行处理。
[0031]进一步地,
[0032]所述算法组用于根据所述数据包对应的配置信息采用相应的算法核对输入的相应数据量的数据进行处理,具体包括:
[0033]除第一级算法组和最后一级算法组之外的其它各级算法组用于根据本级算法组要求的数据块大小,在判断出对应输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理。
[0034]进一步地,上述装置还包括输出缓冲,所述输出缓冲与最后一级算法组相对应:
[0035]所述算法组用于根据所述数据包对应的配置信息采用相应的算法核对输入的相应数据量的数据进行处理,具体包括:
[0036]所述最后一级算法组用于根据本级算法组要求的数据块大小,在判断出对应输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理,将处理后的数据发送到所述输出缓冲中;
[0037]所述输出缓冲用于在满足输出数据量要求时将缓存的数据一次写入外部存储器。
[0038]进一步地,
[0039]所述任务信息处理模块还用于在相关的算法组中的输入缓冲中将无需经过该算法组处理的部分数据删除后进行后续处理;而在下一级需要对该删除的部分数据进行处理的算法组的输入缓冲中,在原删除位置上添加该部分数据后再进行后续处理。
[0040]本发明具有以下优点:对算法核进行分组之后,在组间对数据块进行流水操作,即上一级已经处理完的数据可以直接送至下一级进行处理,不必等待整个数据包的所有数据在前一级进行处理完成后再进行下一级处理。这样节省了处理的时间,从而提升了运算效率。本发明还降低了对外部存储器的访问次数,进一步提升了处理效率。此外,通过额外的数据块来支持同一套协议中不同算法覆盖范围不相等的情况,可以使本发明适用于大多数安全协议应用场景。
【专利附图】
【附图说明】
[0041]图1为本发明实施例中对数据包进行处理的方法流程图;
[0042]图2为本发明实施例中对数据包进行处理的装置结构示意图;
[0043]图3为本发明应用示例中对数据包进行处理的装置的结构示意图;
[0044]图4(a)?图4(c)分别为本装置中各算法组的具体工作流程示意图。
【具体实施方式】
[0045]为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
[0046]在本实施例中,一种对数据包进行处理的方法,如图1所示,包括:
[0047]步骤10、预先根据安全算法所涉及到的各算法的类别,对所要用到的算法进行分组,每级算法组中包含一个以上的属于同一类的算法的算法核;在本文中,算法核为用于执行相应算法的核心单元;
[0048]例如,要使用IPSEC(互联网协议安全性)协议对数据包进行处理时,可能要使用到ESP (Encapsulating Security Payload,封装安全载荷)加密算法、ESP认证算法及AH(Authentication Header,认证头)认证算法,这时可将算法分为3组;
[0049]需要说明的是,此步骤可以在相应装置启动后执行一次,或者在该装置的初始化过程中执行一次,无需每次对数据包进行处理时均执行一次。[0050]步骤20、对于待处理的数据包,根据该数据包对应的配置信息获知该数据包在上述各级算法组间的处理顺序;按照该处理顺序,在各级算法组中根据上述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组中进行处理。
[0051]在步骤20中,对于每个待处理的数据包,应当按照算法要求对待输入本算法组的数据进行切分,以进行流水线处理,即:按照处理顺序,对于第一级算法组来说,将待处理的数据包按照一个合理的数据段大小(该大小可以根据外部取数据效率决定)取入内部缓冲,作为第一级算法组的输入,在经过相应的算法核处理之后发送到下一级算法的输入缓冲中,并从上述数据包中读取下一段数据;对于其他算法组来说,根据本级算法组要求的数据块大小,在判断出输入缓冲内的数据量达到要求时,就发送给本算法组内相应的算法核进行运算处理,在处理完成后发送到下一级算法的输入缓冲中;对于最后一级算法组来说,会将处理完的数据发送到输出缓冲中,在满足输出数据量要求时一次写入外部存储器。
[0052]从总体上看来,数据包相当于完成了多级算法计算后输出。但是实际上因为采用了如上的流水线,只要数据量达到可以计算的程度,就立即进行计算,这就使得多级算法之间同时进行数据处理变得更加有效率。
[0053]此外,对于一个数据包来说,有可能存在部分数据无需经过部分算法组的处理,而该数据包中的其他数据需要经过该部分算法组的处理的情况,即出现了同一套协议中不同算法组之间覆盖范围不相等的情况。在该种情况下,在相关的算法组中的输入缓冲中将无需经过该算法组处理的部分数据删除后进行后续处理;而在下一级需要对该删除的部分数据进行处理的算法组的输入缓冲中,需在原删除位置上添加该部分数据后再进行后续处理。
[0054]下面根据附图对本发明的实施方式进行详细说明。
[0055]如图2所示,一种使用安全算法对数据包进行处理的方法,应用在包含如下模块的装置中:一级以上的算法组、多路选择器及任务信息处理模块;还可以输出缓冲和/或一个以上的输入缓冲;
[0056]算法组是预先根据当前处理的安全算法所可能用到的算法分类后组合后配置到该装置中的,每级算法组中包含一个以上的属于同一类的算法的算法核,属于不同组的算法核有可能会在同一个数据包的处理流程中同时被使用到。以应用在IPSEC安全协议为例,组I为ESP加密算法,组2为ESP认证算法,组3为AH认证算法。这些安全算法的共同点是:虽然配置参数时以数据包为单位,但在实际运算时都是将数据包分块来运算的。另夕卜,算法核可以提供统一的接口,在不同的安全协议增加和删减相应的算法核即可适用。算法组用于根据数据包对应的配置信息采用相应的算法核对输入到本算法组的相应数据量的数据进行处理后,发送到多路选择器;
[0057]任务信息处理模块是核心的控制模块,在对数据包进行实际处理之前,根据该数据包对应的配置信息(如:大小、使用的算法、使用的算法的顺序、算法的模式等配置信息,该信息可从上层获得)获知该数据包在各级算法组间的处理顺序,并将该处理顺序配置到多路选择器,完成配置后其他模块开始工作,进行数据包的实际处理。如将数据包大小发送到第一级输入缓冲和最后一级输出缓冲;将使用的算法转换为算法组内的算法核对应编号发送给算法组,由算法组根据该编号将对应的算法接入路径;将使用的算法的顺序转换为每一个算法核对应的上一个算法核的编号,发送到多路选择模块,由多路选择模块根据编号配置每一算法核连接的上一算法核;将算法模式被发送到选中的算法核,进行算法核的初始化。
[0058]多路选择器用于根据任务信息处理模块对本模块的配置,在上述一级以上的算法组中为待处理的数据选择处理路径,例如:在第一级输入缓冲和第二级输入缓冲之间,根据多路选择器的配置,可以是算法组1,也可以是算法组2,也可以是算法组3 ;这样灵活配置,使得每个不同协议、不同算法的包,只要可以支持,通过改变配置即可完成数据包处理的切换。这就使得上述方法可以应用在混合各种协议的安全处理装置中。
[0059]多级缓冲是装置内部用于暂存数据的缓冲,每一个输入缓冲仅与一个算法组一一对应;其中第一级输入缓冲和输出缓冲可根据总线搬移数据的效率设计,中间的多级输入缓冲需要根据安全算法输入数据块的大小进行设计。除第一级输入缓冲外,其他输入缓冲用于暂存多路选择器输出的上一级算法组的输出结果,收集到适当量的数据时就发送给对应的算法组进行运算。
[0060]较佳地,第一级算法组用于在对应的输入缓冲按照外部存取效率读取相应数据量的数据后,采用相应的算法核进行处理;除第一级算法组和最后一级算法组之外的其它各级算法组用于根据本级算法组要求的数据块大小,在判断出对应输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理;最后一级算法组用于根据本级算法组要求的数据块大小,在判断出对应输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理,将处理后的数据发送到输出缓冲中;输出缓冲用于在满足输出数据量要求时将缓存的数据一次写入外部存储器。
[0061]此外,任务信息处理模块还可用于在相关的算法组中的输入缓冲中将无需经过该算法组处理的部分数据删除后进行后续处理;而在下一级需要对该删除的部分数据进行处理的算法组的输入缓冲中,在原删除位置上添加该部分数据后再进行后续处理。
[0062]如图3所示,一种典型的配置后的数据路径为:数据包从外部存储器取入后,依次经过第I级输入缓冲、算法组1、第2级输入缓冲、算法组2、第3级输入缓冲、算法组3、最后输出到输出缓冲发送到外部。
[0063]如图4所示,在典型配置下各级缓冲对数据处理流程,包括:
[0064]如图4(a)所示,第一级输入缓冲判断外部存储器是否仍然有数据需要处理,如果有,从外部存储器按照总线效率合理取入一块数据后存入第一级输入缓冲中。判断第一级输入缓冲内当前数据量是否满足本级算法的要求,若不满足则再从外部存储器取入剩余数据,如满足则将当前保存的数据发往第一级算法组内相应的算法核进行计算。在完成计算后将计算出的数据送往下一级缓冲,后并继续判断是否还要从外部存储器取入的数据,重复过程。
[0065]如图4(b)所示,下一级输入缓冲接收到足够的数据(即满足第二级算法组要求的数据量)之后,发往第二级算法组;当本组内的算法核完成计算后,将计算出的数据送往下一级输入缓冲依次类推,直到数据抵达输出缓冲。如图4(c)所示,输出缓冲接收到数据后,在判断外部接口空闲且可接收数据时,在到达总线要求后即向外输出数据。所有数据块输出完毕后,本包处理流程完成。
[0066]上面列出的是一种较为易于理解的流程,对于不同组的算法,不一定是处理范围完全相同,因此在进行运算时还需要根据情况对数据进行拼接或者裁切的过程。[0067]本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。
[0068]以上所述仅为本发明的优选实施例而已,并非用于限定本发明的保护范围。根据本发明的
【发明内容】
,还可有其他多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员当可根据本发明作出各种相应的改变和变形,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种对数据包进行处理的方法,包括: 对于待处理的数据包,根据所述数据包对应的配置信息获知所述数据包在各级算法组间的处理顺序;其中,算法组为预先根据安全算法中所涉及到的各算法的类别对所要用到的算法进行分组后得到的,每级算法组中包含一个以上的属于同一类的算法的算法核; 按照所述处理顺序,在各级算法组中,根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组进行处理。
2.如权利要求1所述的方法,其特征在于: 所述根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组中进行处理,具体包括: 对于第一级算法组,输入缓冲按照外部存取效率读取相应数据量的数据后,采用相应的算法核进行处理,并将处理后得到的数据发送到下一级算法组中的输入缓冲中。
3.如权利要求1或2所述的方法,其特征在于: 所述根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组中进行处理,具体包括: 对于除第一级算法组和最后一级算法组之外的其它各级算法组,根据本级算法组要求的数据块大小,在判断出输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理,将处理后的数据发送到下一级算法组的输入缓冲。
4.如权利要求3所述的方法` 所述根据所述配置信息采用相应的算法核对输入的相应数据量的数据进行处理后,发送到下一级算法组中进行处理,具体包括: 对于最后一级算法组,根据本级算法组要求的数据块大小,在判断出输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理,将处理后的数据发送到输出缓冲中,在满足输出数据量要求时一次写入外部存储器。
5.如权利要求1~3中任意一项所述的方法,其特征在于,还包括: 在相关的算法组中的输入缓冲中将无需经过该算法组处理的部分数据删除后进行后续处理;而在下一级需要对该删除的部分数据进行处理的算法组的输入缓冲中,在原删除位置上添加该部分数据后再进行后续处理。
6.一种对数据包进行处理的装置,包括:一级以上的算法组、多路选择器及任务信息处理模块; 所述算法组为预先根据安全算法中所涉及到的各算法的类别对所要用到的算法进行分组后配置到所述装置中的,每级算法组中包含一个以上的属于同一类的算法的算法核;用于根据所述数据包对应的配置信息采用相应的算法核对输入到本算法组的相应数据量的数据进行处理后,发送到所述多路选择器; 所述任务信息处理模块用于对于待处理的数据包,根据所述数据包对应的配置信息获知所述数据包在各级算法组间的处理顺序,并将所述处理顺序配置到所述多路选择器; 所述多路选择器用于根据所述任务信息处理模块对本模块的配置,在所述一级以上的算法组中为待处理的数据选择处理路径。
7.如权利要求6所述的装置,其特征在于,还包括:一个以上的输入缓冲,每一个输入缓冲仅与一个算法组一一对应;所述多路选择器还用于将接收到的数据发送到下一级算法组中的输入缓冲中; 所述输入缓冲用于在收集到数据进行缓存。
8.如权利要求7所述的装置,其特征在于, 所述算法组用于根据所述数据包对应的配置信息采用相应的算法核对输入的相应数据量的数据进行处理,具体包括: 第一级算法组用于在对应的输入缓冲按照外部存取效率读取相应数据量的数据后,采用相应的算法核进行处理。
9.如权利要求7或8所述的装置,其特征在于: 所述算法组用于根据所述数据包对应的配置信息采用相应的算法核对输入的相应数据量的数据进行处理,具体包括: 除第一级算法组和最后一级算法组之外的其它各级算法组用于根据本级算法组要求的数据块大小,在判断出对应输入缓冲内的数据量达到要求,读入数据并采用相应的算法核进行处理。
10.如权利要求9所述的装置,其特征在于,还包括输出缓冲,所述输出缓冲与最后一级算法组相对应: 所述算法组用于根据所述数据包对应的配置信息采用相应的算法核对输入的相应数据量的数据进行处理,具体包括: 所述最后一级算法组用于根据本级算法组要求的数据块大小,在判断出对应输入缓冲内的数据量达到要求,读入数据并采`用相应的算法核进行处理,将处理后的数据发送到所述输出缓冲中; 所述输出缓冲用于在满足输出数据量要求时将缓存的数据一次写入外部存储器。
11.如权利要求6~8中任意一项所述的装置,其特征在于: 所述任务信息处理模块还用于在相关的算法组中的输入缓冲中将无需经过该算法组处理的部分数据删除后进行后续处理;而在下一级需要对该删除的部分数据进行处理的算法组的输入缓冲中,在原删除位置上添加该部分数据后再进行后续处理。
【文档编号】H04L29/06GK103516684SQ201210212959
【公开日】2014年1月15日 申请日期:2012年6月26日 优先权日:2012年6月26日
【发明者】徐毓斌, 黄健, 张波, 张宣平 申请人:中兴通讯股份有限公司