一种提高ssl数据处理速度的装置及其方法

文档序号:8412821阅读:350来源:国知局
一种提高ssl数据处理速度的装置及其方法
【技术领域】
[0001]本发明涉及网络安全领域,尤其涉及一种提高SSL数据处理速度的装置及其方法。
【背景技术】
[0002]当今人们对Internet网络的通信安全要求越来越高,SSL安全协议已被广泛地应用到网络中。SSL安全协议中需要进行大量的密钥协商工作(非对称算法)与报文流量的加密和解密操作(对称算法),另外还需要进行摘要计算,目前的解决方案通常是使用通用CPU运行软件方式来对以上的操作进行相应的处理。由于通用CPU软件处理安全协议业务比较慢及需要处理其他业务的原因,使用这种方案来进行SSL加解密处理已经不能满足人们对性能需求了。
[0003]为解决上述问题,现有技术出现了 SSL加解密业务处理加速卡,该卡支持PC1-E标准接口,使用专用的硬件加解密芯片(支持SSL业务处理处理所需的所有算法)来处理网络中的SSL业务数据,从而大大提高了加解密的处理性能,并且不再需要通过CPU进行这些加解密的处理,故SSL的数据处理不再消耗CPU的计算资源,能将CPU解放出来完成其他的业务。
[0004]实际应用中,SSL加解密业务处理加速卡插在服务器的PC1-E槽上。服务器使用Linux操作系统,上层应用程序将需要作SSL加解密的数据送给加速卡,由加速卡来完成数据的加解密操作。上层应用程序运行在用户空间,而加速卡工作在内核空间。在数据传送的过程中,包含从用户空间传递到内核空间的处理,即应用程序接收到的处理数据是在用户空间,而CPU需要在内核空间将获取数据送给加速卡进行处理。用户空间向内核空间传递的是需要进行加解密操作处理的数据在用户空间的虚拟地址,以及加解密操作处理完成后的数据在用户空间的虚拟地址。此时,用户空间数据传递到内核空间给加速卡处理以及加速卡进行处理后的数据从内核空间传回给用户空间,这两个过程中的数据传递的快慢将直接影响到整体加速卡的性能。
[0005]目前由于内核空间与用户空间的内存不能直接互访,因此需要借助函数copy_from_user O将需要进行加解密操作处理的数据从用户空间到内核空间的复制,函数copy_to_user O完成将加解密处理后的数据从内核空间到用户空间的复制。具体操作如下:
[0006]当应用程序接收到需要作加解密操作处理的数据时,CPU需要在用户空间分别申请内存来存放需要作加解密的数据和加解密处理后的数据,同时为了能让工作在内核空间的加速卡处理要加解密的数据,CPU需要在内核空间申请内存,来存放需要作加解密的数据,并通过调用函数C0py_fr0m_user()完成数据从用户空间到内核空间的复制:
[0007]copy_from_user ((dest), (src), (size));
[0008]函数参数中,dest为内核空间申请用来存放需要作加解密处理的数据的内核空间虚拟地址,src为用户空间中存放需要作加解密处理的数据的虚拟地址,size为将要复制数据的字节数。
[0009]同时,CPU需要在内核空间申请内存,用来存放加速卡加解密操作处理完成后的数据。并需要借助函数copy_to_user()完成数据从内核空间到用户空间的复制:
[0010]copy_to_user ((dest), (src), (size));
[0011]函数参数中,dest为用户空间中用来存放数据加解密处理后的虚拟地址,src为内核空间申请用来存放加速卡加解密操作后数据的内核空间虚拟地址,size为将要复制数据的字节数。
[0012]由上描述,用户空间和内核空间之间的数据传递是需要通过以上两个函数进行复制的。
[0013]因此,CPU在这两次复制操作中均需要在内核空间中申请内存,而且用户空间和内核空间的数据的复制,在实际的应用中,操作一次,所花费的时间可以忽略不计,但在大流量SSL数据操作的情况下,操作非常频繁,其所消耗的时间实际上是十分影响加速卡整体的处理性能的,比如SSL的吞吐量。

【发明内容】

[0014]有鉴于此,本发明的目的是提供一种提高SSL数据处理速度的装置及其方法,其不需要进行用户空间和内核空间之间的数据复制,不需要在内核空间重新申请内存,减少了内核空间的内存使用,并且提升了加速卡的整体性能。
[0015]为实现上述目的,本发明提供技术方案如下:
[0016]一种提高SSL数据处理速度的装置,应用于安装有SSL加速卡的服务器中。服务器的CPU将应用程序接收到的需要进行加解密处理的数据传送给加速卡,并将加速卡完成加解密处理后的数据传送给应用程序。该装置包括:
[0017]地址转换模块,用于将应用程序运行的用户空间的虚拟地址转换成SSL加速卡工作的内核空间的虚拟地址。
[0018]数据处理模块,用于令CPU根据虚拟地址直接获得应用程序接收到的需要进行加解密处理的数据,以及将加速卡完成加解密处理后的数据直接根据虚拟地址传送给应用程序。
[0019]如果Linux内核版本大于2.4.20,地址转换模块包括:
[0020]内存资源获取单元,用于根据应用程序运行时系统分配的进程标识符得到进程所占有的内存资源。
[0021]页全局目录获取单元,用于根据内存资源和用户空间的虚拟地址获取页全局目录。
[0022]页上级目录获取单元,用于根据页全局目录和用户空间的虚拟地址获取页上级目录。
[0023]页中间目录获取单元,用于根据页上级目录和用户空间的虚拟地址获取页中间目录。
[0024]页表项获取单元,用于根据页中间目录和用户空间的虚拟地址获取页表项。
[0025]虚拟地址获取单元,用于根据页表项和用户空间的虚拟地址获取SSL加速卡工作的内核空间的虚拟地址。
[0026]如果Linux内核版本小于等于2.4.20,地址转换模块包括:
[0027]内存资源获取单元,用于根据应用程序运行时系统分配的进程标识符得到进程所占有的内存资源。
[0028]页全局目录获取单元,用于根据内存资源和用户空间的虚拟地址获取页全局目录。
[0029]页中间目录获取单元,用于根据页全局目录和用户空间的虚拟地址获取页中间目录。
[0030]页表项获取单元,用于根据页中间目录和用户空间的虚拟地址获取页表项。
[0031]虚拟地址获取单元,用于根据页表项和用户空间的虚拟地址获取SSL加速卡工作的内核空间的虚拟地址。
[0032]内存资源获取单元根据应用程序运行时系统分配的进程标识符得到进程的描述符,从而获得进程所占有的内存资源。
[0033]进程的描述符为task_struct结构体存储相关信息。
[0034]虚拟地址获取单元根据页表项获得页表项的内核空间物理地址,根据页表项内核空间物理地址获得页表项的内核空间虚拟地址。根据用户空间的虚拟地址获得物理页的偏移量,根据页表项的内核空间虚拟地址和物理页的偏移量获得用户空间虚拟地址对应的内核空间虚拟地址。
[0035]一种提高SSL数据处理速度的方法,应用于安装有SSL加速卡的服务器中。服务器的CPU将应用程序接收到的需要进行加解密处理的数据传送给加速卡,并将加速卡完成加解密处理后的数据传送给应用程序。该方法包括:
[0036]地址转换步骤,将应用程序运行的用户空间的虚拟地址转换成SSL加速卡工作的内核空间的虚拟地址。
[0037]数据处理步骤,令CPU根据虚拟地址直接获得应用程序接收到的需要进行加解密处理的数据,以及将加速卡完成加解密处理后的数据直接根据虚拟地址传送给应用程序。
[0038]如果Linux内核版本大于2.4.20,地址转换步骤包括:
[0039]内存资源获取子步骤,用于根据应用程序运行时系统分配的进程标识符得到进程所占有的内存资源。
[0040]页全局目录获取子步骤,用于根据内存资源和用户空间的虚拟地址获取页全局目录。
[0041 ] 页上级目录获取子步骤,用于根据页全局目录和用户空间的虚拟地址获取页上级目录。
[0042]页中间目录获取子步骤,用于根据页上级目录和用户空间的虚拟地址获取页中间目录。
[0043]页表项获取子步骤,用于根据页中间目录和用户空间的虚拟地址获取页表项。
[0044]虚拟地址获取子步骤,用于根据页表项和用户空间的虚拟地址获取SSL加速卡工作的内核空间的虚拟地址。
[0045]如果Linux内核版本小于等于2.4.20,地址转换步骤包括:
[0046]内存资源获取子步骤,用于根据应用程序运行时系统分配的进程标识符得到进程所占有的内存资源。
[0047]页全局目录获取子步骤,用于根据内存资源和用户空间的虚拟地址获取页全局目录。
[0048]页中间目录获取子
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1