一种基于多卡冗余校验的数据加解密调度方法与流程

文档序号:11323065阅读:478来源:国知局
一种基于多卡冗余校验的数据加解密调度方法与流程

本发明涉及基于加密卡的计算机数据加解密技术,具体涉及一种基于多卡冗余校验的数据加解密调度方法。



背景技术:

在政府、军队、有保密要求的企业或组织内部有对重要数据进行加密的需求。出于保密性和性能的考虑,现有数据加密系统普遍使用硬件加解密。加密硬件为pci卡的形式(以下简称加密卡)。单块加密卡的加解密速度是有上限的。对于单台主机来说,有时单块加密卡并不能在速度上满足处理大量数据的需要,因此可同时插入多块加密卡分担任务。因为加解密每个数据块的任务彼此独立不相互依赖,对于多卡环境,可简单的把加解密数据块任务平均分配到每个加密卡上,这也是目前使用的加密卡调度算法。

每个加密卡有多个端口,每个端口可处理一个加解密数据任务,也就是说一个有n个端口的正常状态下的加密卡可同时进行n个数据的加解密。

在实际使用过程中,加密卡可能出现故障,导致加解密无法进行。对于单卡系统来说,由于加密卡故障为单点故障,从而导致整个系统故障。对于多卡系统,当一部分加密卡出现故障时,在使用目前调度算法的情况下,当任务分配到故障加密卡上时,会导致该任务失败,总体看来会有部分任务失败。因此即使多卡系统也无法冗余加密卡故障。

在实际的加密卡加解密过程中,发现有时在密钥和数据正确的情况下,会出现错误的结果。这种错误具有随机性,表现为对于相同的密钥和数据,在同一加密卡上重复加密两次,可能会出现不同的结果,考虑结果的惟一性,必然有一次产生了错误的结果。这种情况通常不被认为是加密卡故障,但是如何保证数据的正确性,仍然是一项亟待解决的技术问题。



技术实现要素:

本发明要解决的技术问题:针对现有技术的上述问题,提供一种考虑到了加密卡的数据错误及调用错误等情况,使用特定调度算法在多卡环境下建立冗余,最大限度提高了多加密卡并行性能和系统可用性,降低了数据错误率的基于多卡冗余校验的数据加解密调度方法。

为了解决上述技术问题,本发明采用的技术方案为:

一种基于多卡冗余校验的数据加解密调度方法,其特征在于实施步骤包括:

1)预先维护一个加密卡状态列表、为每一个加密卡维护一个端口状态列表,所述加密卡状态列表包括每一个加密卡的状态,所述加密卡的状态包括正常、故障和饱和三种,所述端口状态列表包括加密卡的每一个端口的状态,所述端口的状态包括使用中和未使用两种;初始化用于存放加解密任务的等待队列;当收到当前加解密任务时,跳转执行步骤2);

2)将当前加解密任务分配到两个正常状态的加密卡中的两个未使用的目标端口进行指定的加密或解密处理,且在两个目标端口进行指定的加密或解密处理的输出一致的情况下判定当前加解密任务执行成功,调用目标端口过程中将目标端口标记为使用中、且在调用目标端口完毕后恢复端口为未使用,如果加密卡端口全在使用中且标记该加密卡为饱和,且根据目标端口的调用成功情况标记加密卡的状态为正常或故障状态。

2.根据权利要求1所述的基于多卡冗余校验的数据加解密调度方法,其特征在于,步骤2)的详细步骤包括:

2.1)判断等待队列是否为空,如果等待队列为空则直接跳转执行步骤2.2);否则,将当前加解密任务加入等待队列,且在等待队列中位于当前加解密任务前面的任务全部完成后,跳转执行步骤2.2);

2.2)根据加密卡状态列表尝试获取正常状态的两个加密卡,如果获取成功,则跳转执行步骤2.3);否则,将加密卡总数量减去处于故障状态的加密卡数量得到可用加密卡数量,如果可用加密卡数量小于二则返回错误并退出,如果可用加密卡数量大于等于二,则跳转执行步骤2.1);

2.3)根据两个加密卡的端口状态列表,从所述两个加密卡中分别获取一个未使用的端口,并置该端口状态为已使用,如果此时加密卡的所有端口均被使用,则将加密卡状态列表中该加密卡的相关状态置为饱和,最终得到分属于不同加密卡的两个端口作为两个目标端口;

2.4)将当前加解密任务分别调用两个目标端口进行指定的加密或解密处理得到两个输出;如果两个目标端口均调用正常、且两个输出相同则返回当前加解密任务执行成功;如果两个目标端口均调用正常、且两个输出不同,则返回当前加解密任务执行校验错误;如果任意目标端口调用出错,则将加密卡状态列表中调用出错的目标端口对应加密卡的相关状态置为故障,返回当前加解密任务执行错误;

2.5)针对调用正常的目标端口对应的加密卡,将对应端口状态列表中的目标端口的状态置为未使用,且将加密卡状态列表中的对应状态置为正常。

本发明基于多卡冗余校验的数据加解密调度方法具有下述优点:

1、本发明方法预先维护一个加密卡状态列表、为每一个加密卡维护一个端口状态列表,加密卡的状态包括正常、故障和饱和三种,端口状态包括使用中和未使用两种;初始化用于存放加解密任务的等待队列;当收到当前加解密任务时,将当前加解密任务分配到两个正常状态的加密卡中的两个未使用的目标端口进行指定的加密或解密处理,输出一致的情况则判定当前加解密任务执行成功,在调用过程中更新维护加密卡状态列表和端口状态列表,本发明考虑到了加密卡的数据错误及调用错误等情况,使用特定调度算法在多卡环境下建立冗余,最大限度提高了多加密卡并行性能和系统可用性,降低了数据错误率。

2、本发明能够解决现有采用多加密卡环境的数据加解密系统存在加密卡故障导致系统故障,以及加解密小概率产生错误结果的问题。

附图说明

图1为本发明实施例方法的应用环境示意图。

图2为本发明实施例方法的流程示意图。

图3为本发明实施例中的加密卡状态列表示意图。

图4为本发明实施例中的端口状态列表示意图。

图5为本发明实施例中步骤2)的详细流程示意图。

图6为本发明实施例中的等待队列示意图。

具体实施方式

如图1所示,本实施例中具体是包含4块加密卡的linux操作系统为例,对本发明基于多卡冗余校验的数据加解密调度方法进行进一度的详细说明。参见图1,该包含4块加密卡的linux操作系统文件系统驱动调度算法模块,文件系统驱动为调度算法模块的调用者,调度算法模块则为加密卡驱动的调用者,加密卡驱动为原始的加密卡硬件接口,要求调用者指定卡号和端口号,调度算法模块为采用本实施例基于多卡冗余校验的数据加解密调度方法的实例,对上层调用者屏蔽了加密卡的细节,提供了单一的加解密接口。

如图2所示,本实施例基于多卡冗余校验的数据加解密调度方法的实施步骤包括:

1)预先维护一个加密卡状态列表(如图3所示,其中卡1、卡2、卡3……分别不同的加密卡)、为每一个加密卡维护一个端口状态列表(如图4所示,其中端口1、端口2、端口3……分别同一加密卡的不同端口),加密卡状态列表包括每一个加密卡的状态,加密卡的状态包括正常、故障和饱和三种,端口状态列表包括加密卡的每一个端口的状态,端口的状态包括使用中和未使用两种;初始化用于存放加解密任务的等待队列(如图5所示,其中任务1~任务n表示等待队列中缓存的任务);当收到当前加解密任务时,跳转执行步骤2);

2)将当前加解密任务分配到两个正常状态的加密卡中的两个未使用的目标端口进行指定的加密或解密处理,且在两个目标端口进行指定的加密或解密处理的输出一致的情况下判定当前加解密任务执行成功,调用目标端口过程中将目标端口标记为使用中、且在调用目标端口完毕后恢复端口为未使用,如果加密卡端口全在使用中且标记该加密卡为饱和,且根据目标端口的调用成功情况标记加密卡的状态为正常或故障状态。

如图6所示,步骤2)的详细步骤包括:

2.1)判断等待队列是否为空,如果等待队列为空则直接跳转执行步骤2.2);否则,将当前加解密任务加入等待队列,且在等待队列中位于当前加解密任务前面的任务全部完成后,跳转执行步骤2.2);本实施例中,等待队列采用fifo的方式进行调度,如果等待队列非空,则将当前加解密任务加入等待队列,直到前面的任务都完成才能够将当前加解密任务进行调度处理,这样做的目的是为了提供qos(服务质量),防止的等待队列中的任务可能长时间得不到处理;

2.2)根据加密卡状态列表尝试获取正常状态的两个加密卡,如果获取成功,则跳转执行步骤2.3);否则,将加密卡总数量减去处于故障状态的加密卡数量得到可用加密卡数量,如果可用加密卡数量小于二则返回错误并退出,如果可用加密卡数量大于等于二,则跳转执行步骤2.1);

2.3)根据两个加密卡的端口状态列表,从两个加密卡中分别获取一个未使用的端口,并置该端口状态为已使用,如果此时加密卡的所有端口均被使用,则将加密卡状态列表中该加密卡的相关状态置为饱和,最终得到分属于不同加密卡的两个端口作为两个目标端口;

2.4)将当前加解密任务分别调用两个目标端口进行指定的加密或解密处理得到两个输出;如果两个目标端口均调用正常、且两个输出相同则返回当前加解密任务执行成功;如果两个目标端口均调用正常、且两个输出不同,则返回当前加解密任务执行校验错误;如果任意目标端口调用出错,则将加密卡状态列表中调用出错的目标端口对应加密卡的相关状态置为故障,返回当前加解密任务执行错误;

2.5)针对调用正常的目标端口对应的加密卡,将对应端口状态列表中的目标端口的状态置为未使用,且将加密卡状态列表中的对应状态置为正常。

以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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