一种面向异构加解密计算资源的统一半虚拟化框架制造技术

技术编号:37424302 阅读:19 留言:0更新日期:2023-04-30 09:45
本发明专利技术公开了一种面向异构加解密计算资源的统一半虚拟化框架,涉及信息安全领域,包括半虚拟化后端模块、虚拟机监控程序、驱动模块、半虚拟化前端模块,半虚拟化后端模块接收来自虚拟机监控程序的控制面sess会话请求并在本地进程创建会话对象,接收来自半虚拟化前端模块的数据面crypto加解密请求并构造本地crypto加解密请求;半虚拟化前端模块能够作为虚拟设备引擎被虚拟机中的应用程序直接加载,能够构造模拟出sess会话请求和crypto加解密请求,并且采用前后端架构的设计。本发明专利技术在面对不同的异构加解密资源时,为虚拟机中的应用程序提供高性能且通用的设备虚拟化,消除基于物理硬件的虚拟化支持,使得虚拟设备和物理设备能够完全解耦,虚拟设备的数量不受限制。虚拟设备的数量不受限制。虚拟设备的数量不受限制。

【技术实现步骤摘要】
一种面向异构加解密计算资源的统一半虚拟化框架


[0001]本专利技术涉及信息安全领域,尤其涉及一种面向异构加解密计算资源的统一半虚拟化框架。

技术介绍

[0002]自从互联网开始蓬勃发展以来,隐私安全问题就始终是云计算中摆脱不了的困扰,如何避免隐私安全泄露给用户造成损失始终是当今云安全和网络安全领域中的重要课题。隐私安全问题大致可以分为三个重要的子课题:(1)窃听嗅探风险,即第三方可能可以截获通信数据;(2)身份伪造风险,即第三方可以冒充他人身份参与通信;(3)数据篡改风险,即第三方获取到通信数据后可能会进行恶意修改。隐私安全问题的有效解决高度依赖于加解密技术的发展,加解密技术可以具体分为对称加密算法、非对称加密算法、数字摘要算法等多种类型的算法,能够提供内容加密、身份认证、数据完整性校验等一系列功能,高性能、高安全性的加解密技术具有抵御恶意用户各种攻击的能力,对隐私安全问题的解决具有重大意义。但遗憾的是,随着5G技术的蓬勃发展、社交网络的大规模普及、攻击方法的日益多样化,加解密技术在承担更大压力的情况下对CPU资源等计算资源的开销也愈发繁重,产生了新的性能瓶颈。
[0003]随着硬件加速技术的发展,工程师们开始逐渐尝试利用GPU(Graphic Processing Unit)、FPGA(Field Programmable Gate Array)、ASIC(Application Specific Integrated Circuit)等硬件来卸载加速加解密请求对CPU资源等计算资源的开销,这类硬件可以统称为异构加解密资源。2017年,Wangzhao Cheng等人基于GPU加速提出了一种高性能的对称加密服务器,能够缓解各种类型的确保端到端通信安全的安全协议对系统整体性能的降低;2019年,Markku Vajaranta等人分析了在云计算场景中将IPsec(Internet Protocol Security)等高性能网络应用从软件卸载到FPGA的可行性,并认为在未来的数据中心中,从速度和能效方面来考虑,依赖硬件加速对于IPsec等应用是大有裨益的;2019年,Xiaokang Hu等人提出了一种基于QAT技术(Quick Assist)的高性能TLS(Transport Layer Security)异步卸载框架QTLS,解决了直接卸载TLS加密操作中卸载I/O长期阻塞的问题。不难发现,借助异构加解密资源卸载加速加解密请求正成为当前优化加解密技术的主流方案。
[0004]随着虚拟化技术的发展,云服务提供商为了提高服务器资源的利用率,同时享受虚拟化技术带来的故障恢复、业务部署、迁移转换、更新维护等方面的便利,将越来越多需要使用加解密技术的应用程序运行在了虚拟机上,这就对异构加解密资源提出了能够适用于虚拟化环境的要求。以SR

IOV(Single Root I/O Virtualization)为代表的I/O直通技术是应对这一场景的可行方案之一,SR

IOV从物理硬件设备的物理功能(PF,Physical Function)中虚拟出多个虚拟功能(VF,Virtual Function),每个虚拟功能可以管理自己所需的资源并具有物理硬件设备的绝大部分功能,可以直接作为虚拟加解密设备提供给虚拟机中的应用程序,并获得与直接使用物理硬件设备接近的性能。
[0005]尽管在近年来针对使用异构加解密资源来卸载加速加解密请求计算开销的研究取得了显著的成果,但异构加解密资源依然比较难以适用于虚拟化环境,因而难以广泛地使得运行在虚拟机中的应用程序从中受益。一类异构加解密资源不提供对虚拟化环境的支持,而另一类仅支持使用SR

IOV实现虚拟化的异构加解密资源则继承了该技术可扩展性和灵活性不足的问题;这两类问题可以总结为存在基于物理硬件的虚拟化支持需求,使得虚拟设备和物理设备无法完全解耦。前者不提供对虚拟化环境的支持自然无法应用于虚拟机中的应用程序。后者依赖的SR

IOV能够支持的虚拟设备数量有限,一张10Gb的网卡通常只能支持64个虚拟功能。虚拟设备数量不足会导致系统在物理资源紧张的情况下无法给更多租户提供服务,导致租户密度不足,在多租户场景下也容易发生上下文切换导致性能互相干扰。同时,SR

IOV还缺乏成熟的实时热迁移能力,在提供给应用程序的可扩展性和灵活性上受限。
[0006]因此,本领域的技术人员致力于开发一种面向异构加解密计算资源的统一半虚拟化框架,当虚拟机通过前端驱动发起I/O请求后,请求会经由半虚拟化前后端约定好的通信机制virtqueue发送到运行在虚拟机监控程序中的半虚拟化后端驱动进行处理,半虚拟化后端驱动既可以调用真实物理硬件设备来执行请求,也可以像QEMU一样以纯软件的方式模拟执行I/O请求,能够在面对不同的异构加解密资源时,为虚拟机中的应用程序提供高性能且通用的设备虚拟化,消除基于物理硬件的虚拟化支持,使得虚拟设备和物理设备能够完全解耦,从而使得虚拟设备的数量不受限制。

技术实现思路

[0007]有鉴于现有技术的上述缺陷,本专利技术所要解决的技术问题是异构加解密资源难以适用于虚拟化环境。
[0008]为实现上述目的,本专利技术提供了一种面向异构加解密计算资源的统一半虚拟化框架,包括半虚拟化后端模块、虚拟机监控程序、驱动模块、半虚拟化前端模块,其中,所述半虚拟化后端模块接收来自虚拟机监控程序的控制面sess会话请求并在本地进程创建会话对象后返回会话ID;所述半虚拟化后端模块接收来自所述半虚拟化前端模块的数据面crypto加解密请求并构造本地crypto加解密请求;所述半虚拟化后端模块将本地crypto加解密请求下发给物理硬件设备并取回已处理完成的crypto加解密请求;
[0009]所述驱动模块运行在虚拟机中,虚拟机完成启动后,代替虚拟机操作系统内核接管虚拟机加解密设备,并向上层暴露统一的接口;
[0010]所述半虚拟化前端模块能够被虚拟机中的应用程序通过通用的接口对虚拟加解密设备的引擎进行加载并执行初始化流程;所述半虚拟化前端模块接收来自应用进程的加解密元数据并构造sess会话请求,通过控制面队列下发给所述虚拟机监控程序获取到会话对象;所述半虚拟化前端模块接收来自应用进程的加解密数据并构造crypto加解密请求,通过数据面队列下发给所述半虚拟化后端模块;所述半虚拟化前端模块监测crypto加解密请求的完成状态,在请求完成后批量取回并通知唤醒应用进程;
[0011]所述半虚拟化前端模块基于OpenSSL提供的纤程机制提供加解密请求异步处理模式;所述半虚拟化前端模块包括引擎前端模块、引擎后端模块。
[0012]进一步地,所述半虚拟化后端模块为每个虚拟加解密设备维护一个控制面队列和
一个数据面队列来实现与所述虚拟机监控程序和所述半虚拟化前端模块的通信,所述控制面队列和所述数据面队列均通过virtqueue实现;所述控制面队列传递包含加解密元数据的sess会话请求用于创本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向异构加解密计算资源的统一半虚拟化框架,其特征在于,包括半虚拟化后端模块、虚拟机监控程序、驱动模块、半虚拟化前端模块,其中,所述半虚拟化后端模块接收来自所述虚拟机监控程序的控制面sess会话请求并在本地进程创建会话对象后返回会话ID;所述半虚拟化后端模块接收来自所述半虚拟化前端模块的数据面crypto加解密请求并构造本地crypto加解密请求;所述半虚拟化后端模块将本地crypto加解密请求下发给物理硬件设备并取回已处理完成的crypto加解密请求;所述驱动模块运行在虚拟机中,虚拟机完成启动后,代替虚拟机操作系统内核接管虚拟机加解密设备,并向上层暴露统一的接口;所述半虚拟化前端模块能够被虚拟机中的应用程序通过通用的接口对虚拟加解密设备的引擎进行加载并执行初始化流程;所述半虚拟化前端模块接收来自应用进程的加解密元数据并构造sess会话请求,通过控制面队列下发给所述虚拟机监控程序获取到会话对象;所述半虚拟化前端模块接收来自应用进程的加解密数据并构造crypto加解密请求,通过数据面队列下发给所述半虚拟化后端模块;所述半虚拟化前端模块监测crypto加解密请求的完成状态,在请求完成后批量取回并通知唤醒应用进程;所述半虚拟化前端模块基于OpenSSL提供的纤程机制提供加解密请求异步处理模式;所述半虚拟化前端模块包括引擎前端模块、引擎后端模块。2.如权利要求1所述的面向异构加解密计算资源的统一半虚拟化框架,其特征在于,所述半虚拟化后端模块为每个虚拟加解密设备维护一个控制面队列和一个数据面队列来实现与所述虚拟机监控程序和所述半虚拟化前端模块的通信,所述控制面队列和所述数据面队列均通过virtqueue实现;所述控制面队列传递包含加解密元数据的sess会话请求用于创建会话对象;所述数据面队列传递包含加解密数据的crypto加解密请求下发并监测请求完成状态;所述半虚拟化后端模块维护一个unix socket文件描述符用于和所述虚拟机监控程序建立通信链路,通过socket接口实现基于vhost

user协议的消息传输;所述虚拟机监控程序使用宿主机大页内存为虚拟机提供虚拟内存支持,所述半虚拟化后端模块基于Linux文件描述符共享机制与所述虚拟机监控程序共同管理该大页内存,能够以零拷贝的方式在所述数据面队列上与所述半虚拟化前端模块交换crypto加解密请求,减少VM

Exit次数;所述半虚拟化后端模块构建资源池,允许各个异构加解密资源将完整的物理硬件设备功能划分为更细粒度的资源组,从而实现多个异构加解密资源共同支持一个虚拟设备;所述半虚拟化后端模块实现顺序排序层,维护一个额外的中间队列按照加解密请求下发的顺序回收已完成的请求,强制保证多个异构加解密资源实现FIFO的要求,避免了乱序执行被应用程序观察到。3.如权利要求1所述的面向异构加解密计算资源的统一半虚拟化框架,其特征在于,所述引擎前端模块被实现为一个动态链接库,基于OpenSSL提供的引擎机制注册到OpenSSL的引擎库中并提供初始化入口函数,使得所述引擎前端模块能够被虚拟机中的应用程序加载为虚拟加解密设备的引擎,在此基础上接收应用程序下发的加解密元数据和加解密数据构建控制面sess会话请求和数据面crypto加解密请求。4.如权利要求1所述的面向异构加解密计算资源的统一半虚拟化框架,其特征在于,所述引擎后端模块在应用进程构造sess会话请求期望获取会话对象时,与所述虚拟机监控程
序和所述半虚拟化后端模块协作创建会话对象;所述引擎后端模块在本地维护会话对象的表单用于缓存,并允许其中的会话对象被具有相同加解密元数据的不同加解密流程所复用;基于DPDK提供的多进程内存共享机制,所述引擎前端模块、所述引擎后端模块分别实现为primary进程和secondary进程,能够具备完全相同的大页内存拓扑结构,进而能够在共享内存中创建数据传输队列并以零拷贝的形式传输crypto加解密请求;所述引擎后端模块在轮询各个数据传输队列获取到所述引擎前端模块下发的加解密请求后会先在本地进行缓存,当加解密请求累积到一定数量后再一起批处理下发;所述引擎后端模块作为守护进程,单进程单独负责轮询所有加解密请求的完成状态。5.一种面向异构加解密计算资源的统一半虚拟化方法,其特征在于,基于如权利要求1至4任一所述的面向异构加解密计算资源的统一半虚拟化框架,所述方法包括以下步骤:步骤1、虚拟机初始化时启动引擎后端模块;所述引擎后端模块在虚拟机中被实现为一个守护进程,在虚拟机初始化阶段负责执行资源的初始化和虚拟加解密设备的初始化;所述资源的初始化包括crypto加解密请求初始化;所述虚拟加解密设备的初始化包括所述引擎后端模块调用驱动模块提供的接口完成控制面队列和数据面队列两个virtqueue的创建,并通过VM

Exit实现与半虚拟化后端模块的通信,并向其共享所述控制面队列和所述数据面队列;步骤2、客户机应用程序加载引擎前端模块作为引擎;客户机应用程序通过调用OpenSSL提供的接口对虚拟加解密设备的引擎进行加载并执行其所提供的初始化流程;被客户机应用程序加载的引擎即为被实现为动态链接库的所述引擎前端模块,初始化流程包括所述引擎前端模块主动与所述引擎后端模块建立连接,所述引擎后端模块创建数据传输队列,并将数据传输队列与crypto加解密请求一同共享给所述引擎前端模块;步骤3、应用进程初始化加解密元数据;客户机应用程序通过OpenSSL提供的纤程机制启动多个纤程fibre,并依次切换到各个纤程fib...

【专利技术属性】
技术研发人员:李健王鑫伟管海兵
申请(专利权)人:上海交通大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1