论文部分内容阅读
近年来,随着互联网用户隐私意识的提高,安全协议HTTPS(Hypertext Transfer Protocol Secure)也逐渐在各大网络服务中全面普及(如在线视频点播,社交网络,网络购物等),但是该协议中的加密操作极大地消耗了系统的CPU(Central Processing Unit)资源。在加密流量与日俱增的当下,继续使用通用处理器来处理加解密计算使得企业成本剧增,因此利用专用集成电路ASIC(Application-Specific Integrated Circuit)加速卡来卸载HTTPS已经逐渐成为一个业界通用方案。如今,在云计算的浪潮下,越来越多的网络应用都选择部署在云端(即虚拟化环境中),其中就包含了众多采用了HTTPS的应用。因此云计算中心也要投入大量的计算资源来处理复杂的加解密计算。为了缓解这一巨大的计算开销,云服务提供商也寻求一种高效灵活的虚拟化方案将加速卡应用在云计算中心来卸载HTTPS。目前相关的虚拟化方案有SR-IOV和virtio-crypto类虚拟化方案,但是这两种方案都有不足。SR-IOV方案可供分配的虚拟功能VF(Virtual Function)只能提供给固定的虚拟机,当一些虚拟机空闲时无法让出VF给其它虚拟机,因此不够灵活。而virtio-crypto方案中新安装的前端驱动不能兼容已有的加速卡卸载方案,破坏了透明性。为了解决这些问题,本文提出了QVirt,一个针对ASIC加速卡QAT(In-tel~?QuickAssist Technology)的高效灵活的类虚拟化解决方案。QAT卡是由英特尔公司设计研发的一款可以用于卸载服务器上加解密操作的硬件加速卡。QVirt将一张物理的QAT加速卡用软件的方式虚拟化成多个逻辑加速卡实例,供多个虚拟机使用。虚拟的QAT实例可以为虚拟机上的应用提供加解密加速服务,从而节省出宝贵的CPU资源去处理其它业务逻辑。QVirt的主要设计目标是达到功能等效性,灵活性,透明性和低性能影响,我们复用已有的虚拟设备virtio-crypto,并在虚拟化方案之上引入一个新的中间转换层,以及使用了加速数据面处理的用户空间框架来实现这些目标。我们在KVM(Kernel-Based Virtual Machine)/QEMU(Quick Emulator)中基于QAT加速卡实现了QVirt,表明了我们设计的可行性。通过详尽的测试,我们发现已有的实现原型可以透明地为虚拟机中的应用提供加解密加速服务,虚拟的加速卡也能提供大部分QAT所支持的特性。QVirt针对AES-128-CBC加密算法套件的处理性能最高可以达到传统软件方式的4.8倍,并且仍有很大的提升空间。