多加解密芯片并行处理报文加解密的保序方法及系统的制作方法

文档序号:7861681阅读:251来源:国知局
专利名称:多加解密芯片并行处理报文加解密的保序方法及系统的制作方法
技术领域
本发明涉及网络通信技术领域,尤其涉及一种多加解密芯片并行处理报文加解密的保序方法及系统。
背景技术
带网络协议安全性(Internet Protocol Securit, IPSEC)功能的高端网络设备, 大多采用η (η大于等于I)个通用CPU (例如intel的atom通用CPU)加m (m大于等于2) 个加解密专用CPU (例如Cavium Networks公司的cavium加解密芯片)来对发送或接收的报文进行加解密。但是现有技术中,多个加解密芯片同时进行报文加解密处理时无法对报文进行保序,在报文处理完成后,会产生报文发送时的乱序现象(测试中有千分之三的乱序几率),进而导致丢包或者视频马赛克,使得网络通信受到较为严重的阻滞。发明内容
(一)要解决的技术问题
本发明要解决的技术问题是提供一种多加解密芯片并行处理报文加解密的保序方法及系统,以解决多个加解密芯片同时进行报文加解密处理时无法对报文进行保序的问题。
(二)技术方案
为解决上述问题,一方面,本发明提供了一种多加解密芯片并行处理报文加解密的保序方法,包括以下步骤
SI :设置报文处理循环链表,任一个CPU接收到报文后获得所述报文对应的加解密密钥,并将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上;
S2 :所述CPU获取空闲的加解密芯片,并将对应报文交给所述加解密芯片;
S3 :加解密芯片读取报文对应节点的节点数据,根据报文需要进行的加解密类型对报文进行加解密处理后,将报文放回到所述报文处理循环链表相应的节点上。
其中,在所述步骤S3之后,还包括步骤S4 :
任意空闲CPU在报文处理循环链表上获取需要处理的报文,判断报文是否已经被加解密芯片处理完毕如果没有,则不做任何操作;否则获取加解密后的报文并处理。
其中,所述报文处理链表上的每个节点包括以下节点数据需要加解密处理的报文地址指针;加解密处理后的报文地址指针;需要对报文进行的加解密类型信息;加解密使用的加解密密钥;以及所述报文处理循环链表中下一个节点的位置。
其中,所述任一个CPU接收到所述报文后获得报文对应的加解密密钥的步骤具体为对于需要加密的报文任一个CPU通过配置的安全联盟隧道数据匹配规则对报文进行匹配,在匹配成功后获得匹配成功的安全联盟隧道;
对于需要解密的报文任一个CPU根据报文的三元组信息找到相应的安全联盟,并取出所述安全联盟中对应的解密密钥。
其中,所述CPU将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上的步骤具体为所述CPU获取当前节点的下一个节点,并根据报文的地址、加解密密钥、以及需要进行的加解密类型完善获取的节点对应的节点数据。
其中,所述步骤S2中所述CPU获取空闲的加解密芯片的步骤具体为所述CPU获取当前处理加解密数据的加解密芯片的序号+1后除以加解密芯片的总数再取余,得到空闲的加解密芯片的序号。
其中,所述步骤S3具体为
加解密芯片获取节点对应的节点数据中需要加解密处理的报文地址指针、加解密密钥以及需要进行的加解密类型,根据这些节点数据对报文进行加解密处理后,将处理后的报文放入节点数据中加解密处理后的报文地址指针所指的地址中。
另一方面,本发明还提供了一种多加解密芯片并行处理报文加解密的保序系统, 包括
报文处理循环链表设置模块,用于设置报文处理循环链表;
多核CPU,用于在接收到报文后获得所述报文对应的加解密密钥,并将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上;获取空闲的加解密芯片,并将对应报文交给所述加解密芯片;
加解密芯片,用于读取报文对应节点的节点数据,根据报文需要进行的加解密类型对报文进行加解密处理后,将报文放回到所述报文处理循环链表相应的节点上。
(三)有益效果
本发明通过使用循环链表,让多个加解密芯片获取当前链表上当前位置的节点报文,处理完此报文后再放回到原来的链表节点上的方法,使多个加解密芯片协同处理的同时得到报文的保序目的,防止出现报文发送时的乱序现象。


图I为根据本发明实施例保序方法的流程示意图2为根据本发明实施例保序系统的结构示意图。
具体实施方式
下面结合附图及实施例对本发明进行详细说明如下。
实施例一
如图I所示,本实施例记载了一种多加解密芯片并行处理报文加解密的保序方法,包括以下步骤
SI :设置报文处理循环链表,任一个CPU接收到报文后获得所述报文对应的加解密密钥,并将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上;
S2 :所述CPU获取空闲的加解密芯片,并将对应报文交给所述加解密芯片;
S3 :加解密芯片读取报文对应节点的节点数据,根据报文需要进行的加解密类型对报文进行加解密处理后,将报文放回到所述报文处理循环链表相应的节点上。
本实施例中,在所述步骤S3之后,还包括步骤S4
任意空闲CPU在报文处理循环链表上获取需要处理的报文,判断报文是否已经被加解密芯片处理完毕如果没有,则不做任何操作;否则获取加解密后的报文并处理。
下面以一个具体的实施例来说明本发明
本实施例以当前有2个通用CPU (CPU0和CPU1)加3个加解密芯片(caviumO, caviuml, cavium2)的架构为例。
设置链表长为500个节点的报文处理循环链表,每个节点的结构体中的节点数据包括需要加解密处理的报文地址指针;加解密处理后的报文地址指针;需要对报文进行的加解密类型信息(即加密还是解密);加解密使用的加解密密钥;以及所述报文处理循环链表中下一个节点的位置(此数据在设备初始化的时候已经设置好,不需要修改)。
设置当前可使用的节点位置指针全局变量、最后一个处理完的节点位置指针全局变量、当前处理加解密数据的加解密芯片的序号。其中,设备初始化的时候当前可使用的节点位置指针全局变量和最后一个处理完的节点位置指针全局变量会与链表第一个节点的值相同。
对于需要加密的ip数据报文CPU0通过配置的安全联盟隧道数据匹配规则对报文进行匹配,在匹配成功后获得匹配成功的安全联盟隧道,用于对报文进行加密;对于需要解密的esp/ah报文CPU0根据报文的三元组信息(spi、协议号、原ip地址)找到相应的安全联盟(ipsec sa),并取出所述安全联盟中对应的解密密钥,CPUO根据当前节点的节点数据中下一个节点的位置获取当前节点的下一个节点,并根据报文的地址、加解密密钥、以及需要进行的加解密类型完善获取的节点对应的节点数据。然后将当前可使用的节点位置指针全局变量赋值为所述下一个节点。
CPUO获取当前处理加解密数据的加解密芯片的序号+1后除以加解密芯片的总数再取余,得到空闲的加解密芯片的序号;然后将空闲加解密芯片全局变量加I。即
空闲的加解密芯片的序号=| (当前处理加解密数据的加解密芯片的序号+l)/n|, 其中η为加解密芯片的总数。
如本实施例中,加解密芯片的总数为3,若当前处理加解密数据的加解密芯片为 caviumO,其序号为O,则| (0+1)/3 | =1,即获取空闲的加解密芯片caviuml。
加解密芯片获取节点对应的节点数据中需要加解密处理的报文地址指针、加解密密钥以及需要进行的加解密类型,根据这些节点数据对报文进行加解密处理后,将处理后的报文放入节点数据中加解密处理后的报文地址指针所指的地址中。
本实施例中,所述步骤S4具体为
任意空闲CPU读取当前可使用的节点位置指针全局变量和最后一个处理完的节点位置指针全局变量的值,判断是否相同,如果相同,说明没有报文需要处理,如果不相同, 则读取最后一个处理完的节点位置指针全局变量的值,并判断节点的节点数据中的加解密处理后的报文地址指针是否为空,如果为空,说明加解密芯片还没有处理完,则不做任何操作,如果不为空,则首先获取加解密处理后的报文地址指针(加解密后的报文)并将最后一个处理完的节点位置指针全局变量的值赋值为最后一个处理完的节点位置指针全局变量的下一个节点的位置值,然后处理之前获取的加解密后的报文。
本发明通过使用循环链表,让多个加解密芯片获取当前链表当前位置的节点报5文,处理完此报文后再放回到原来的链表节点上的方法,使多个加解密CPU协同处理的同时得到报文的保序目的,防止出现报文发送时的乱序现象。
实施例二
如图2所示,本实施例记载了一种多加解密芯片并行处理报文加解密的保序系统,包括
报文处理循环链表设置模块201,用于设置报文处理循环链表;
多核CPU 202,用于在接收到报文后获得所述报文对应的加解密密钥,并将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上;获取空闲的加解密芯片,并将对应报文交给所述加解密芯片;
加解密芯片203,用于读取报文对应节点的节点数据,根据报文需要进行的加解密类型对报文进行加解密处理后,将报文放回到所述报文处理循环链表相应的节点上。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种多加解密芯片并行处理报文加解密的保序方法,其特征在于,包括以下步骤 51:设置报文处理循环链表,任一个CPU接收到报文后获得所述报文对应的加解密密钥,并将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上; 52:所述CPU获取空闲的加解密芯片,并将对应报文交给所述加解密芯片; S3:加解密芯片读取报文对应节点的节点数据,根据报文需要进行的加解密类型对报文进行加解密处理后,将报文放回到所述报文处理循环链表相应的节点上。
2.如权利要求I所述的方法,其特征在于,在所述步骤S3之后,还包括步骤S4 任意空闲CPU在报文处理循环链表上获取需要处理的报文,判断报文是否已经被加解密芯片处理完毕如果没有,则不做任何操作;否则获取加解密后的报文并处理。
3.如权利要求I或2所述的方法,其特征在于,所述报文处理链表上的每个节点包括以下节点数据需要加解密处理的报文地址指针;加解密处理后的报文地址指针;需要对报文进行的加解密类型信息;加解密使用的加解密密钥;以及所述报文处理循环链表中下一个节点的位置。
4.如权利要求I所述的方法,其特征在于,所述步骤SI中,所述任一个CPU接收到所述报文后获得报文对应的加解密密钥的步骤具体为 对于需要加密的报文任一个CPU通过配置的安全联盟隧道数据匹配规则对报文进行匹配,在匹配成功后获得匹配成功的安全联盟隧道; 对于需要解密的报文任一个CPU根据报文的三元组信息找到相应的安全联盟,并取出所述安全联盟中对应的解密密钥。
5.如权利要求3所述的方法,其特征在于,所述步骤SI中,所述CPU将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上的步骤具体为所述CPU获取当前节点的下一个节点,并根据报文的地址、加解密密钥、以及需要进行的加解密类型完善获取的节点对应的节点数据。
6.如权利要求3所述的方法,其特征在于,所述步骤S2中所述CPU获取空闲的加解密芯片的步骤具体为所述CPU获取当前处理加解密数据的加解密芯片的序号+1后除以加解密芯片的总数再取余,得到空闲的加解密芯片的序号。
7.如权利要求3所述的方法,其特征在于,所述步骤S3具体为 加解密芯片获取节点对应的节点数据中需要加解密处理的报文地址指针、加解密密钥以及需要进行的加解密类型,根据这些节点数据对报文进行加解密处理后,将处理后的报文放入节点数据中加解密处理后的报文地址指针所指的地址中。
8.一种多加解密芯片并行处理报文加解密的保序系统,其特征在于,包括 报文处理循环链表设置模块,用于设置报文处理循环链表; 多核CPU,用于在接收到报文后获得所述报文对应的加解密密钥,并将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上;获取空闲的加解密芯片,并将对应报文交给所述加解密芯片; 加解密芯片,用于读取报文对应节点的节点数据,根据报文需要进行的加解密类型对报文进行加解密处理后,将报文放回到所述报文处理循环链表相应的节点上。
全文摘要
本发明公开了一种多加解密芯片并行处理报文加解密的保序方法,包括以下步骤S1设置报文处理循环链表,任一个CPU接收到报文后获得所述报文对应的加解密密钥,并将所述报文及对应的加解密密钥按序放入所述报文处理循环链表相应的节点上;S2所述CPU获取空闲的加解密芯片,并将对应报文交给所述加解密芯片;S3加解密芯片读取报文对应节点的节点数据,根据报文需要进行的加解密类型对报文进行加解密处理后,将报文放回到所述报文处理循环链表相应的节点上。本发明还公开了一种实现上述保序方法的保序系统。本发明在多个加解密芯片同时进行报文加解密处理时也能保证报文的顺序,防止出现报文发送时的乱序现象。
文档编号H04L9/18GK102932141SQ20121036656
公开日2013年2月13日 申请日期2012年9月27日 优先权日2012年9月27日
发明者陈海滨 申请人:汉柏科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1