APP下载

SR-IOV密码设备中断传输过程建模1

2019-02-20孙磊李帅郭松辉

网络与信息安全学报 2019年1期
关键词:中断加密密码

孙磊,李帅,郭松辉

(信息工程大学,河南 郑州 450001)

1 引言

近年来,云计算凭借其强大的计算和存储能力逐渐在产业界得到广泛应用[1]。随着云计算的快速发展,其应用也逐渐在军事、电子商务和电子政务等领域得到推广,而同时云计算也面临为敏感信息提供机密性、完整性和真实性等保护的迫切需求。通过部署密码服务器,利用虚拟化技术为用户提供密码运算服务,是目前广泛使用的密码服务保障模式[2]。

密码服务器通过外接密码设备为用户提供密码运算服务,密码设备处理密码任务不仅要求运算的正确性,还要求任务处理的实时性[3]。在虚拟化环境下,由虚拟密码机(VCM,virtual cipher machine)(为用户提供密码服务的虚拟机)[4]发出的密码运算请求以中断的方式通知密码设备,然而在整个中断传输的过程中存在较大延迟,这是由于虚拟机监控器(VMM,virtual machine monitor)会截获相应的中断,触发VM-exit造成的。单根I/O虚拟化技术(SR-IOV,single-root I/O virtualization)[5]是一种硬件辅助虚拟化技术,该技术借鉴Passthrough I/O传输方式[6],在数据传输过程中绕过VMM,并通过输入/输出内存管理单元(IOMMU,input/output memory management unit)减少了存储保护和地址转换的开销,大大提高了传输效率[7]。然而,虚拟中断请求仍然会被VMM 截获,其传输过程造成多次上下文切换,使在中断密集时,密码设备不能及时处理密码运算任务,降低了密码运算的效率。而且,当云中用户对加密服务的请求在同一时间过多时会产生大量不可预测的中断请求,导致密码设备外部中断请求过多,严重影响了密码设备处理密码运算的能力,增大了系统开销[8]。

针对SR-IOV设备中断的问题,国内外学者进行了大量研究。Dong等[9]在 2010年指出了SR-IOV中断引起的性能降低问题,在对SR-IOV中断优化的过程中,上海交通大学管海兵团队先后提出了中断聚集方法[10]、基于事件的轮询方法[11]和一种自适应中断频率控制方法[12],这3种方法分别从优化中断频率和消除VM-exit入手来提高系统性能。然而,中断聚集方法和自适应中断频率控制方法需要考虑多方面因素,因为中断聚集意味着每次中断带来的数据量较大,可能会导致数据丢失,且中断聚集引起的中断频率的减少可能会带来更高的延迟,这在高速网络传输过程中是非常严重的问题。而采用基于事件的轮询方法是以虚拟中断注入作为轮询起点,这是一条更长的代码路径,会造成额外开销。国外学者Gordon等[13]提出了一种更少中断退出的机制(ELI,exit-less interrupt),该机制采用软件模拟的方式在客户虚拟机内建立影子中断描述符表(IDT,interrupt description table),可实现客户机直接处理中断,但ELI只允许影子IDT直接处理已经分配的设备中断,其他中断仍需要主机的介入,云环境下中断请求复杂多样,该方法显然具有一定的局限性。Tu等[14]提出了一种直接中断传输的方法(DID,direct interrupt delivery),该方法通过清除虚拟机控制结构中的外部中断控制位来禁止VM-exit,可能会导致中断的错误处理。从虚拟密码设备的角度来说,这种做法会导致密码运算错误,是不可取的。

研究影响 SR-IOV密码设备的性能问题必须要考虑密码任务的特点,本文以单台密码服务器为例,针对虚拟化环境下 SR-IOV密码设备频繁产生中断影响运算性能的问题,根据密码任务先到先服务的规则,利用排队论的知识建立了M/M/1模型,分析了影响SR-IOV密码设备密码运算性能的关键因素,并通过仿真和实验对比验证了模型的有效性,最后对系统性能进行了测试。

2 相关技术和关键问题

2.1 相关技术

云计算环境的安全体系主要依托密码技术来建立,实现密码运算的载体是各种密码设备,传统的密码设备扩展性差,无法满足云环境下海量数据的密码服务需求,虚拟化技术的出现解决了资源利用率低的问题,通过在云资源中心部署密码服务器集群,采用虚拟化技术为云用户提供密码运算服务,充分提高了密码设备资源的利用率[15]。

为了更高效地为云用户提供密码运算服务,考虑到密码设备本身是一种物理硬件设备,通常采用一种硬件辅助虚拟化技术——SR-IOV技术实现密码设备的虚拟化。其中,SR-IOV是PCI-SIG组织发布的PCIe规范的扩展,它借鉴了Passthrough I/O技术,在数据传输过程中绕过了VMM,使用IOMMU在虚拟内存中直接寻址,减少了存储保护和地址转换的开销。基于 PCIe规范,具有SR-IOV功能的设备可创建多个虚拟功能(VF,virtual function),并且每个SR-IOV设备具有一个或多个物理功能(PF,physical function),每个PF都是标准的PCIe 功能,且关联多个VF,这些VF均可共享密码设备资源[12]。SR-IOV密码设备基本架构如图1所示。每个虚拟密码机对应一个VF,VCM和VF之间通过VFIO驱动进行通信,并且不受VMM干预。

图1 SR-IOV密码设备基本架构

密码设备集成了专用密码运算单元和 CPU模块,密码运算单元中集成了对称加密、不对称加密、身份验证、数字签名、公开密钥加密和DH等加密技术,用户可以通过相应的接口调用相应的密码算法来实现加密需求。密码设备在执行密码运算时,从用户发出密码运算请求开始到密码设备执行密码运算结束,整个运算过程所用的时间长短直接反映了系统处理密码运算的效率,即高效的密码运算要求较短的时间。其中,整个密码运算过程所消耗的时间主要包括 CPU执行密码运算的时间和请求响应时间,而CPU执行密码运算的时间由密码算法复杂度和CPU频率决定,取值相对固定。因此,提高密码运算效率需从减小请求响应时间入手。

密码设备的请求响应是一种I/O传输,I/O传输的方式有查询、轮询和中断3种方式。其中,查询方式是一种I/O串行方式,该方式存在很大的空闲期,会造成严重的CPU资源浪费。轮询方式改进为定期查询完成信号,提高了 CPU利用率,但系统轮询频率设置的高低又带来其他不可避免的问题。例如,当系统设置较大的轮询频率时,轮询例程被调用时若系统没有可用响应,会浪费CPU周期,增加卸载成本;如果系统设置的轮询频率过低,就会增加延迟。中断进一步提高了CPU的使用效率,当系统需要处理设备接收到的新数据时,会中断当前任务转去处理新接收的数据,该做法提高了请求响应时间,大大提升了系统的利用效率。而且,设备发出中断处理请求后,中断方式会立刻通知操作系统,而轮询方式需要下一次轮询到该设备时,才会得知这一请求。所以,相比查询方式和轮询方式,中断方式有较小的延迟。考虑到密码任务的实时性要求,即在一定时间内系统必须对高优先级的任务做出及时响应,而且大多数实时任务是靠中断驱动的[3],密码设备采用中断触发方式响应用户请求,可满足密码任务实时性的要求。

2.2 关键问题

由 2.1节的分析可知,用户发出的密码运算请求以中断的方式通知密码设备上相应的寄存器,交由密码运算单元处理密码任务。在虚拟化环境下,由虚拟密码机发出的密码运算请求同样以中断的方式通知密码设备,然而在整个中断传输的过程中有相应的延迟,这是由于VMM会截获相应的中断,触发VM-exit事件造成的。VMM截获中断信号之后将中断注入主机内核,主机内核调用相关的函数接口将密码请求任务交给密码设备,密码设备执行完密码任务后生成一个完成信号,该信号返回给虚拟机的过程中再次被VMM截获,触发VM-exit事件,引发EOI写操作。整个中断传输的过程造成多次上下文切换,当中断频率过大时,频繁的上下文切换使 cache污染的概率大大提高[9],严重影响密码设备运算性能。物理环境下和虚拟环境下的中断处理过程如图2和图3所示。

图2 物理环境下的中断处理过程

由图2和图3对比分析知,物理环境下的中断处理过程造成了两次上下文切换,且不存在虚拟机监控器的参与;而虚拟环境下的中断处理造成了4次上下文切换,且每次VM-exit事件均被VMM 截获,开销比物理环境下大得多。如果将虚拟环境下中断的处理过程分成虚拟机处理中断和VMM介入两部分,在运行Netperf工作流下,实验测得两部分消耗的CPU周期中,由VMM介入所消耗的 CPU周期高达 86%[16]。而且,密码算法的操作序列比较长,当采用密码算法对一段数据进行加密时,一般具有大量重复的操作。由于VMM截获中断的开销较大,当虚拟化环境下的中断频率过多时,会造成更大的开销,当大量的中断引发中断嵌套时,甚至会加解密失败,严重影响了密码设备处理密码运算的效率。Intel Corporation DH895XCC Series QAT密码设备考虑到虚拟机中断带来的巨大开销,采用基于事件的轮询模式——“Epoll模式”处理响应,但该模式只能在用户空间中使用,内核空间部分依然利用中断模式,如果内核中断有延迟,则会在向用户空间交付事件时出现相应的延迟[11]。因此,在密码设备处理密码运算任务的过程中,中断的发生是必然的,处理中断所引起的系统开销也是不可避免的,而系统开销的大小取决于中断带来的延时。在上述的分析中,造成中断延时的原因主要是中断处理过程中 VMM的介入和高中断频率。

图3 虚拟环境下的I/O中断处理过程

3 模型建立与分析

3.1 模型建立

在单个服务器上,SR-IOV密码设备中断传输过程如图4所示,主要包括SR-IOV密码设备、虚拟密码机、VMM 和中断请求队列。其中,密码设备采用SR-IOV技术将单个物理设备呈现为一个PF和若干VF。在实际使用时,把每个VF分配给每一个虚拟密码机,虚拟密码机通过 VF获取密码设备资源,完成密码运算操作。由于VF之间相互隔离,因此每台虚拟密码机执行密码运算时互不影响。但由于虚拟密码机共享硬件资源,当同一时间内,虚拟密码机发出大量中断请求时,会造成主机不能及时处理中断请求,从而形成中断请求队列。在中断请求队列中,密码运算类中断请求具有同等优先级,因此队列中的中断请求按照先到先服务的规则进行排序。密码设备处理完密码运算后生成一个 EOI信号交由 VMM 处理,处理完成后注入VCM,最终VCM恢复正常运行。

在SR-IOV密码设备中断传输过程中,两个相邻中断请求的时间间隔具有无记忆性,且每个中断请求之间相互独立,实际上,系统中断请求的到达过程具有马氏性,且两个相邻中断请求时间间隔服从指数分布。中断请求进入排队系统后,系统处理每个中断请求的时间是独立同分布的指数随机变量,且服从指数分布。上述中断请求时间间隔和系统处理每个中断请求的时间所满足的概率分布符合排队论的基本条件[17],且队列中的中断请求按照先到先服务的规则进行排序,则针对单个服务器,密码服务系统中每个虚拟密码机的中断请求处理过程构成了M/M/1排队模型。

3.2 模型分析

假设密码服务系统中中断请求的平均到达率为λ,系统处理每个中断请求的平均服务率为μ。考虑到密码服务系统中中断请求的随机性,取中断请求时间间隔的平均值为Tb,则系统任务的平均到达率即系统中断请求频率。假设系统中断请求频率为I,则λ=I。取系统处理每个中断请求的平均处理时间为T,则中断的平均服务速率为。假设N(t)表示t时刻系统中断请求队列长度,其中包括正在处理的中断以及队列中的中断。对M/M/1排队模型来说,是一个时间参数连续的马氏链,实际上是一个生灭过程,其Q矩阵为

图4 SR-IOV密码设备中断传输过程

根据Q矩阵,可画出的状态转移图,如图5所示。

图5 系统中断请求队长状态转移图

则系统的稳态队长的分布为

当k=n时

其中,ρ为系统服务强度,且

当k取0时,得出系统处于空闲状态的概率为

则系统处于繁忙状态的概率为

由little公式[18],系统的平均任务数为

在密码服务系统中,系统的平均中断响应时间反映了密码设备处理中断请求的效率,它等于从虚拟密码机发出中断请求开始到SR-IOV密码设备接收到中断请求并进入中断处理程序的时间。在 SR-IOV密码设备中断传输过程中,这个时间可分为两部分:中断请求的排队等待时间和中断请求在系统中的传输时间。假设Tq为中断请求的排队等待时间,tT为中断请求在系统中的传输时间,则系统的平均中断响应时间可表示为

在上述性能参考指标中,系统服务强度ρ一般情况下小于 1,即系统处理每个中断请求的平均处理时间T小于中断请求时间间隔Tb;若ρ大于 1,显然系统不能及时处理中断请求,且随着时间的推进,系统中断请求的队长将趋于无限;若ρ等于 1,则系统一直处于繁忙状态,即系统每接收到一个中断请求信号就马上处理,处理完毕后又立即处理下一个中断请求信号,但中断响应都有相应的延时,随着时间的推进,系统中断请求的队长也将趋于无限。显然,在SR-IOV密码设备中断传输过程中,ρ大于等于1的情况是不希望发生的,那么T一定不能超过Tb,且即控制系统中断请求频率I不能过大。

在SR-IOV密码设备中断传输过程中,系统的中断响应时间直接体现了密码设备处理密码运算的效率。在上述性能参考指标中,系统的平均中断响应时间Tr由中断请求排队等待时间Tq和中断请求传输时间tT组成,可通过减少Tq和tT降低系统的中断响应时间。减少Tq的本质是增大Tb,即降低I。由第2节分析可知,减少中断请求传输时间tT要从 VMM 入手,即尽可能避免VMM截获中断。因此,要提高 SR-IOV密码设备密码运算性能,需从降低系统中断请求频率和减少VMM介入入手。

4 验证与分析

本文采用软件仿真和实验测试两种方式验证模型的有效性,并对性能特征进行分析。软件仿真使用Matlab_2016a建立模型,实验环境如下。主机和虚拟密码机操作系统均为 CentOS-7-x86_64-1511,内核版本为Linux 3.10.0-327.e17.x86_64,处理器为 Intel(R) Xeon(R) CPU E5-2620 v3@2.40 GHz,CPU核心数为12核,内存大小为128 GB,支持SR-IOV技术,每台虚拟密码机均分配一个vCPU和2 048 MB内存,密码设备为Intel Corporation DH895XCC Series QAT。

4.1 模型有效性验证

SR-IOV密码设备的VF自身支持中断频率上限的设置,实验中本文分别设置VF中断频率上限为 1 000、2 000、3 000、4 000、5 000、6 000、7 000、8 000、9 000和10 000,测试了单个虚拟密码机在相应设置下的中断响应时间,测试结果与仿真结果进行对比,结果如图6(a)所示。为了测试整个系统的运行队列长度,本文分别运行1台、2台、4台、8台和16台虚拟密码机,测试系统运行队列长度,并对仿真结果进行对比,结果如图6(b)所示。图6表明,实验结果与仿真结果曲线走势相同,模型有较高的有效性。

4.2 系统性能测试

本节选取对称加密算法AES128作为实验对象,以密码算法的加密速度作为虚拟密码机性能参考指标,基于crytodev加密框架[18]发送和接收相关指令,实现虚拟密码机与密码设备的通信,获取相应的密码服务。该加密框架可以测试虚拟密码机密码运算速度,其中包含AES128等加密算法。系统性能的各项指标由Linux vmstat 命令获得,该命令可获得给定时间间隔内系统的状态值,包括系统队列长度、系统中断频率、系统上下文切换次数、系统 CPU时间和用户 CPU时间等。其中,系统队列长度表示当前系统正在运行的进程数目,系统中断频率表示每秒CPU的中断次数,系统上下文切换次数主要反映调用系统函数的繁忙程度,系统CPU时间和用户CPU时间主要反映系统I/O操作的繁忙程度。下面分别对单台虚拟密码机和多台虚拟密码机进行性能测试。

图6 模型有效性验证

首先对一台虚拟密码机进行测试,在分别运行1个任务、2个任务、4个任务和8个任务的状况下,测试虚拟密码机在输入加密数据分组大小从64 byte变化到65 536 byte11次的加密速度,反复测试10次求取平均值,测试结果如图7(a)所示。图 7(a)的测试显示了虚拟密码机处理单个密码任务时,AES128算法对接收到的不同加密字节块大小加密速度的变化趋势。从实验结果中可以看出,加密字节在16 384之前,虚拟密码机加密速度一直在增大,当加密字节为16 384时,虚拟密码机加密速度达到最大,当加密字节继续增大时,虚拟密码机加密速度基本无变化甚至出现降低的趋势。使用vmstat相关命令获取系统实时中断频率、上下文切换次数和系统CPU时间,记录11次采样结果。图7(b)显示了虚拟密码机分别运行1个任务、2个任务、4个任务和8个任务时的每秒中断频率,其平均值分别为1 065、1 126、1 173和1 323,说明随着任务量增加,系统中断频率不断增大。图 7(c)显示了虚拟密码机分别运行1个任务、2个任务、4个任务和8个任务时系统的上下文切换次数,且系统的平均上下文切换次数为299、345、391和451,说明系统任务量越大,系统上下文切换次数越多。图7(d)显示了虚拟密码机分别运行1个任务、2个任务、4个任务和8个任务时的系统CPU时间,该值基本保持在 85%以上。其中运用 vmstat命令测试得出的系统 CPU时间越长,表明系统调用时间越长,如频繁的 I/O操作会导致较高的系统 CPU时间,这也说明了AES128加密操作属于I/O密集型的操作。综合图7,对于单台虚拟密码机来说,密码任务越多,运算性能越低,这不仅是由于每个密码任务平分物理硬件资源,任务增加带来的中断频率增大以及上下文切换次数增大也是导致运算性能降低的主要因素。因为对于同一类密码任务来说,多个任务的加密速度之和总是小于一个任务的加密速度,且任务越多差值越大。

图7 单台虚拟密码机性能测试

图8 多台虚拟密码机性能测试

为了测试多台相同配置的虚拟密码机同时工作时带来的性能开销,分别对1台、2台、4台、8台和16台虚拟密码机同时循环执行AES128加密运算,用vmstat命令每2 s进行一次采样,记录15次采样结果,筛选出系统运行队列长度、系统每秒中断频率、系统每秒上下文切换次数和用户CPU时间,具体结果如图 8所示。由图 8(a)和图 8(b)可明显看出,当系统中虚拟密码机数量增加时,系统运行队列长度和系统中断频率明显增大,且当系统运行16台虚拟密码机时,系统运行队列长度与系统中断频率的比值明显增大,该比值即为中断请求的排队等待时间,该结果验证了中断频率过大使中断排队时间变长的结论。图8(c)和图8(d)所示,系统的上下文切换次数随虚拟密码机数量的增加而增加,用户CPU时间也随虚拟密码机数量的增加而急剧增加。当运行16台虚拟密码机时,用户CPU时间达到100%,说明系统加解密频繁,CPU繁忙。

综合上述测试结果,不管单台虚拟密码机还是多台虚拟密码机,密码运算任务越多,系统中断频率和系统上下文切换次数越多,更多的CPU资源则用来处理系统调用,致使系统 I/O繁忙,密码任务的请求响应时间变长,进而影响密码运算的速度,导致加密字节达到一定值时密码运算速度呈现降低的趋势。要提高虚拟密码机密码运算速率,就要保证 I/O传输的高效性,控制系统中断频率和系统上下文切换次数可有效提高I/O传输能力,因此,影响SR-IOV密码设备系统性能的关键因素是中断频率和上下文切换次数。

5 结束语

本文从SR-IOV密码设备相关技术入手,分析了中断是一种有效满足密码任务实时性要求的通信机制,然而也带来了严重的开销问题。首先,虚拟环境下的中断传输机制相比物理环境下更复杂,中断请求在传输过程中被VMM两次截获,造成严重的上下文切换,增大了系统开销;其次,当虚拟环境下中断请求频率过高时,会严重降低SR-IOV密码设备处理密码运算的能力。本文针对SR-IOV密码设备处理密码任务的特点建立了M/M/1排队模型,分析了影响SR-IOV密码设备密码运算性能的因素,通过仿真和实验两种方式,对系统队列长度、系统中断频率、系统上下文切换次数、系统CPU时间和用户CPU时间进行了测试和分析,并对模型的有效性进行了验证。结果表明,本文建立的模型对SR-IOV密码设备中断传输过程的分析具有较高的有效性。

本文关于SR-IOV密码设备中断传输过程模型的建立仅适用于某一类密码服务的情况,后续的研究将拓展到密码云环境,对密码云环境下不同类和不同优先级的密码服务进行建模,研究影响SR-IOV密码设备密码运算性能的各项因素。

猜你喜欢

中断加密密码
密码里的爱
多级中断屏蔽技术分析
保护数据按需创建多种加密磁盘
电力安全防护加密装置
一种考虑GPS信号中断的导航滤波算法
密码抗倭立奇功
Linux中断线程化分析及中断延时测试
跟踪导练(二)(5)
加密与解密
密码藏在何处