首页 专利交易 科技果 科技人才 科技服务 国际服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

一种利用软硬件协同技术提高WebServer的HTTPS应用性能的方法 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:重庆大学

摘要:本发明涉及一种利用软硬件协同技术提高WebServer的HTTPS应用性能的方法。该方法在WebServer系统中的实现,首先需要通过分析仅调用软件加密的WebServer系统和仅调用硬件加密的WebServer系统的HTTPS性能,确定实现相应的加密软硬件协同时硬件加密在该系统中的资源占比参数i、j,从而以最少的CPU资源最大化硬件加密对HTTPS性能的提升。其中,j表示WebServer系统中调用硬件执行加密操作的进程数,i表示管理j个进程的CPU数。然后,将j个WebServer进程分配给ii=1,2,…,M.M为服务器上的CPU总数个CPU处理并使其调用硬件执行加解密操作,将M‑i个WebServer进程分配给服务器中余下的M‑i个CPU处理并使其调用软件执行加解密操作。该软硬件协同技术在充分调用服务器软硬件加密资源的情况下使得WebServer的HTTPS应用性能达到最大。

主权项:一种利用软硬件协同技术提高WebServer的HTTPS应用性能的方法,包括以下步骤:在实现软硬件协同加密的WebServer系统之前,通过仅调用软件加密的WebServer系统和仅调用硬件加密的WebServer系统分析确定WebServer系统实现软硬件协同时的硬件加密的资源占比参数i、j,从而以最少的CPU资源最大化硬件加密对HTTPS性能的提升。其中,j表示WebServer系统中调用硬件执行加密操作的进程数,i表示管理j个进程的CPU数。若服务器上的CPU个数为M,则将jj为正整数个WebServer进程分配给ii=1,2,…,M个CPU处理并使其调用硬件执行加解密操作,将M‑i个WebServer进程分配给服务器中余下的M‑i个CPU处理并使其调用软件执行加解密操作。从而最终确定了WebServer系统中开启的进程数为N=M‑i+j个。

全文数据:—种利用软硬件协同技术提高Webserver的HTTPS应用性能的方法技术领域[0001]本发明涉及Webserver应用系统性能领域,具体涉及一种利用软硬件协同技术提高Webserver的HTTPS应用性能的方法。[0002]HTTPS是一种通过计算机网络进行安全通信的通信协议,对访问网站的客户端进行身份验证并且对通信双方交换的数据的完整性和私密性进行保护。https通信的安全性主要基于SSLTLS协议。SSLTLS协议为两个相互通信的应用程序提供了安全通信连接。SSLTLS协议定义了4个子协议:握手协议、改变密码规格协议、告警协议和记录协议。其中,握手协议对通信双发的身份进行了验证。握手过程中的ChangeCipherSpec消息由改变密码规格协议定义。告警协议定义了多个告警信息以报告通信双方通信过程中的错误或异常情况。记录协议用于保护数据的完整性和私密性。记录协议接收到上层数据后,将源数据分为多个数据块。若通信双方协商了压缩算法,则压缩数据块。接下来计算压缩后数据的MACMessageAuthenticationCode值。然后对数据进行加密。最后为加密后的数据加上记录协议头发送给用户。记录协议处理数据的过程如图1所示。[0003]对HTTPS中数据的加密可以通过两种途径实现:软件加密和硬件加密。当前,使用较为广泛的软件加密库和加密框架包括:〇penSSL、CNGCryptographyNextGeneration、Linux内核加密框架CryptoAPI等。OpenSSL是一个为SSLTLS协议提供了强大商业级工具包的开源项目,不仅实现了各版本的SSLTLS协议,还实现了软件加密库。其支持的对称密钥算法包括△£5、0£3、81^^311、〔451'、10£々、1^2、1^4、1^5等。0吣是阻^〇8〇忖的一个核心加密界面,也是针对基于Windows和支持加密的应用程序建议使用的APIXNG提供了大量的以开发人员为目标对象的功能,其中包括算法发现和替换、可替换的随机数生成器和一个内核模式加密APIlinux内核加密框架CryptoAPI用于满足内核空间中各种加解密操作的需要,如IPsec、dm-crypt加密子系统都用到了这种架构。目前,CryptoAPI已经支持很多常用的加密算法。这种框架已经十分稳定且性能良好。[0004]在硬件加密方面,Intel提出并实现了QAT技术。该技术支持多种实现框架,即可以实现在用户空间,也可以实现在内核空间以向上层应用提供加解密支持。为了提高性能,QAT技术采用了异步硬件加解密接口、使用DAM方式传送数据、以并行方式调用底层硬件,支持的编程模型包括单线程同步编程、多线程同步编程以及单线程异步编程等。基于这种技术实现的硬件加速器,在内核态时支持AES-128-CBC、AES-256-CBC等算法,在用户态时支持AES-128-CBC-HMAC-SHAUAES-256-CBC-HMAC-SHA256等算法。研究人员对ARM硬件加密也进行了大量研究。VishnuP.Nambiar基于FPGA实现了使用硬件执行AES算法提高加密速度的嵌入式系统。ThiruneelakandanA•实现了基于FPGA的超大集成电路的嵌入式加密系统。ManavskiS•A•研究了通过GPU实现AES算法的效率问题。GilgerJ•使用GinJ和OpenCL实现了对称加密算法△£5、0£5、81^打311、10£4、0311161113和0々315算法,并针对々£3采用粗粒度方法进行了优化,进一步提升了该算法性能。[0005]然而,对于Webserver的HTTPS应用,仅调用软件或硬件加密引擎执行加解密操作无法充分利用服务器资源使得应用性能达到最大。发明内容[0006]本发明旨在充分利用服务器中的软硬件资源,以提高Webserver的HTTPS应用性能。[0007]本发明采用了软硬件协同的方法来提高Webserver的HTTPS应用的性能。本发明中,在实现软硬件协同加密的Webserver系统之前,通过仅调用软件加密的Webserver系统和仅调用硬件加密的Webserver系统分析确定Webserver系统实现软硬件协同时的硬件加密的资源占比参数i、j,从而以最少的CPU资源最大化硬件加密对HTTPS性能的提升。其中,j表示Webserver系统中调用硬件执行加密操作的进程数,i表示管理j个进程的CPU数。若服务器上的CPU个数为M,则将jj为正整数个Webserver进程分配给ii=1,2,…,M个CPU处理并使其调用硬件执行加解密操作,将M-i个Webserver进程分配给服务器中余下的M-i个CPU处理并使其调用软件执行加解密操作。从而最终确定了Webserver系统中开启的进程数为N=M-i+j个。通过实现以上软硬件协同的方法使得Webserver的HTTPS应用的性能达到最大。[0008]软硬件协同执行加解密操作时的CPU和Webserver进程分配的参数i,j的确定过程包括如下步骤:[0009]31,启动服务器上1个0?1]1=1,2,"_,1\〇1«为服务器上可用〇?1]个数),1吐36口虹应用系统开启i个调用软件执行加密操作的进程,测试在CPU满负载情况下的最大性能值SPiSPi表示软件加密时端到端RPSRequestperSecond值或加密带宽GBs。[0010]S2,启动服务器上i个CPUi=l,2,…,MM为服务器上可用CPU个数),通过在Webserver应用系统中不断增加调用硬件执行加密操作的进程数jj=l,2,…,N的方式,测试在CPU满负载情况下的最大性能值HPi_jHPi_j表示硬件加密时端到端RPSRequestperSecond值或加密带宽GBs[0011]S3,计算Pi—j=HPi—j-SPi;[0012]S4,对i=1,2,…,M的情况依次执行SI,S2,S3计算Pi—ji=1,2,…,M.j=1,2,…,N;[0013]S5,获取Pi_ji=1,2,…,M.j=1,2,•••,N中的最大值MAXPi—j,则i个CPU处理j个调用硬件执行加密操作的Webserver应用系统进程,ARM服务器中余下的M-iM-i+j=N个CPU处理执行M-i个调用软件执行加密操作的Webserver应用系统进程。附图说明[0014]图1是记录协议处理数据的过程;[0015]图2是本发明基于软硬件协同的Webserver系统整体框架图;[0016]图3是基于软件或基于硬件的Webserver系统框架图;[0017]图4是Webserver进程与CPU分配不意图;[0018]图5是不同CPU个数下AES-128-CBC算法的软硬件加密性能对比图;[0019]图6是不同CPU个数下AES-128-CBC算法的软硬件加密性能差值图。[0020]具体实施方法[0021]为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。[0022]本发明提供了一种利用软硬件协同技术提高Webserver的HTTPS应用性能的方法。该方法具有通用性,能够在构建于Intelx86架构的服务器或ARM服务器上的Webserver系统中实现,支持当前主流的软件加密库和加密框架,同时也支持实现了HTTPS中加密套件要求的算法并与搭载当前Webserver系统的服务器适配的各种硬件加密引擎。下面以在AM月艮务器上部署实施实现了本发明的软硬件结合方法的Webserver系统为例对本发明作进一步的详细描述。[0023]该ARM服务器的硬件配置包括:16个CPU,每个CPU的主频为2.1GHz;硬件加密引擎集成在主板上。基于ARM服务器构建的Webserver应用系统的软件包括:Linux-4_1•27,Nginx-1.11.6,0penSSL-1.0.2j,CryptoDev-1.8和硬件加密引擎驱动。在该系统中,通过OpenSSL的软件加密库提供软件加密。图2所示即为本发明在ARM服务器上基于软硬件协同的Webserver系统整体框架图。[0024]对ARM服务器上Webserver应用系统中的HTTPS应用实施本发明时,首先需要分析确定软硬件协同时调用硬件加密引擎执行加解密操作的Webserver进程数j和管理这j个进程的CPU数i,从而以最少的CPU资源最大化硬件加密对HTTPS性能的提升。在实施方法的具体说明中,以OpenSSL层加密带宽作指标为例,详细说明确定这两个参数i、j的过程。由于当前OpenSSL支持的加密算法很多,下面以AES-128-CBC为例进行详细说明。确定这两个参数i、j的步骤如下:[0025]S1,以图3a所示方式构建Webserver应用系统,使得进程只能通过软件执行加解密操作。[0026]S2,ARM服务器中只开启1个CPU,且只开启1个进程,在测试中使得在当前测试情况下CPU负载达到最大,获取当前的加密带宽值为l.OIGBs。[0027]S3,ARM服务器中依次开启2—16个CPU,且分别对应开启2—16个进程,在测试中使得在当前测试情况下CPU负载达到最大,获取当前的加密带宽值。不同CPU、进程数对应的加密带宽值如图5中software对应的数据所示。[0028]S4,以图30所示方式构建Webserver应用系统,使得进程只能通过硬件加密引擎执行加解密操作。[0029]S5,ARM服务器中只开启1个CPU,且只开启1个进程,在测试中使得在当前测试情况下CPU负载达到最大,获取当前的加密带宽值7.52GBS。[0030]Se,ARM服务器中只开启1个CPU,依次开启2—n个进程,在测试中使得在当前测试情况下CPU负载达到最大,获取当前的加密带宽值。若在当前进程数n下获取的RPS比在进程数n_l下获取的RPS值小或两个值相等,则停止测试。取n-l为1个CPU情况下的进程数。[0031]S7,ARM服务器中依次开启2_16个CPU,重复S5,S6的步骤。获取在2—16个CPU的情况下,取得最大加密带宽值的进程数。测试的CPU数和对应的最大加解密带宽值如图5中hardware对应的数据所示。其中,各CPU数下,使得硬件加密性能达到最大的进程数分别为:12、16、16、16、16、16、16、16、16、16、16、16、16、16、16、16。[0032]SS,对CPU数为1一16时分别计算硬件加密带宽和软件加密带宽的差值,结果如图6所示。[0033]S9,获取S8中的最大差值,g卩6•5lGBs。其对应的CPU数为1,进程数为12。[0034]根据以上测试结果,Webserver系统共开启12+15=27个进程。为了实现软硬件结合,在OpenSSL中更改了eng_cryptodev.c文件中AES-128-CBC算法对应的EVP_CIPffiR实例cryptodev_aes_cbc〇[OO35]首先,更改了cryptodev_aes_cbc中init函数指针指向的函数cryptodev_init_key。该函数用于初始化密钥。为了实现软硬件结合,在该函数中分别初始化软件加密对应的上下文和硬件加密对应的上下文。软件上下文保存在dev_crypto_state结构体中的sw_ctx_data变量中。[0036]然后,更改了cryptodev_aes_cbc中do_cipher函数指针指向的函数cryptodev_cipher。该函数用于执行加解密操作。为了实现软硬件结合,当进程首次调用该函数时,进行进程分配:将12个进程分配给1个CPU处理并使其调用硬件执行加解密操作,并将这些进程的进程号pid保存在共享内存空间的前12个数据空间中;将Webserver系统中余下的15个进程分配给服务器中余下的15个CPU处理使其调用软件执行加解密操作,并将这些进程的进程号pid保存在共享内存空间的后15个数据空间中。接下来,当进程调用该函数时,根据Pid号判断当前进程调用软件还是硬件执行加密操作。若调用软件,则函数跳转到use_sf标签处,通过sw_ctx_data将当前的加解密上下文切换为软件加密上下文,调用OpenSSL软件加密库中AES-128-CBC算法对应的EVP_CIPHER实例aes-128-cbc中的aes_cbc_cipher函数执行加解密;若调用硬件,则函数构建加解密请求crypt_op实例,并通过ioctl将请求发送到〇3^1:0〇6¥。〇7口1:0〇6¥通过^611331下发的请求构建31311^1口1161'」:6911631:请求,并下发给硬件加密引擎驱动。该驱动通过CryptoDev下发的请求构建硬件加密引擎能够识别的请求并下发给硬件加密引擎使其执行加解密操作。[0037]通过对OpenSSL中eng_cryptodev.c文件的更改实现了软硬件协同加密。通过测试,在服务器开启所有CPU16个的情况下,基于软硬件系统的OpenSSL层算法的性能值为22.78GBS,相较于仅调用软件执行加解密的性能提升了43%,相较于仅调用硬件执行加解密的性能提升了199%。

权利要求:1.一种利用软硬件协同技术提高Webserver的HTTPS应用性能的方法,包括以下步骤:在实现软硬件协同加密的Webserver系统之前,通过仅调用软件加密的Webserver系统和仅调用硬件加密的Webserver系统分析确定Webserver系统实现软硬件协同时的硬件加密的资源占比参数i、j,从而以最少的CPU资源最大化硬件加密对HTTPS性能的提升。其中,j表示Webserver系统中调用硬件执行加密操作的进程数,i表示管理j个进程的CPU数。若服务器上的CPU个数为M,则将jj为正整数个Webserver进程分配给ii=l,2,.",M个CPU处理并使其调用硬件执行加解密操作,将M_i个Webserver进程分配给服务器中余下的M-i个CPU处理并使其调用软件执行加解密操作。从而最终确定了Webserver系统中开启的进程数为N=M-i+j个。2.如权利要求1所述的一种利用软硬件协同技术提高Webserver的HTTPS应用性能的方法,其特征在于,在Webserver中系统实现该软硬件协同技术后,Webserver的HTTPS应用的性能将高于仅调用软件或仅调用硬件加密的Webserver系统中的HTTPS应用,且在充分调用服务器软硬件加密资源的情况下使得应用的性能达到最大。3.如权利要求1所述的一种利用软硬件协同技术提高Webserver的HTTPS应用性能的方法,其特征在于,软硬件协同时参数i、j的确定过程包括如下步骤:S1,启动服务器上i个CPUi=l,2,…,MM为服务器上可用CPU个数),WebServer应用系统开启i个调用软件执行加密操作的进程,测试在CPU满负载情况下的最大性能值SPiSPi表示软件加密时端到端RPSRequestperSecond值或加密带宽GBs〇S2,启动服务器上i个CPUi=l,2,…,MM为服务器上可用CPU个数),通过在Webserver应用系统中不断增加调用硬件执行加密操作的进程数jj=l,2,〜,N的方式,测试在CPU满负载情况下的最大性能值HPi_jHPi_j表示硬件加密时端到端RPSRequestperSecond值或加密带宽GBsS3,计算Pi_j=HPi—j-SPi;S4,对i=1,2,…,M的情况依次执行S1,S2,S3计算Pi_ji=l,2,…,M_j=l,2,…,N;S5,获取Pi_ji=1,2,…,M•j=1,2,…,N中的最大值MAXPi_j,贝!Ji个CPU处理j个调用硬件执行加密操作的Webserver应用系统进程,ARM服务器中余下的M_iM_i+j=N个CPU处理执行M-i个调用软件执行加密操作的WebServer应用系统进程。

百度查询: 重庆大学 一种利用软硬件协同技术提高WebServer的HTTPS应用性能的方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。