CN113704007B - 利用硬件特性的无服务器计算平台加速系统 - Google Patents
利用硬件特性的无服务器计算平台加速系统 Download PDFInfo
- Publication number
- CN113704007B CN113704007B CN202111083843.9A CN202111083843A CN113704007B CN 113704007 B CN113704007 B CN 113704007B CN 202111083843 A CN202111083843 A CN 202111083843A CN 113704007 B CN113704007 B CN 113704007B
- Authority
- CN
- China
- Prior art keywords
- module
- ept
- server
- shared memory
- virtual machine
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000001133 acceleration Effects 0.000 title claims abstract description 15
- 238000000034 method Methods 0.000 claims abstract description 218
- 230000008569 process Effects 0.000 claims abstract description 114
- 238000004891 communication Methods 0.000 claims abstract description 30
- 238000012546 transfer Methods 0.000 claims abstract description 22
- 230000006870 function Effects 0.000 claims description 35
- 230000007246 mechanism Effects 0.000 claims description 12
- 238000012986 modification Methods 0.000 claims description 10
- 230000004048 modification Effects 0.000 claims description 10
- 238000012795 verification Methods 0.000 claims description 9
- 239000008186 active pharmaceutical agent Substances 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 3
- 238000002347 injection Methods 0.000 claims description 3
- 239000007924 injection Substances 0.000 claims description 3
- 230000009191 jumping Effects 0.000 claims description 3
- 238000013507 mapping Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000000694 effects Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/606—Protecting data by securing the transmission between two devices or processes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1052—Security improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/151—Emulated environment, e.g. virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种利用硬件特性的无服务器计算平台加速系统,涉及虚拟机中进程间通信技术领域,该方法包括:地址空间切换模块:提供跨虚拟机的进程间调用;中心控制器模块:在所述地址空间切换模块之上,保证跨虚拟机之间的进程间调用的安全性;当进程利用空间切换模块进行跨虚拟机的进程间调用时,程序先访问中心控制器模块;共享内存域模块:保证在无服务器环境下共享内存的安全性与串行性。本发明能够减少无服务器方法之间的信息传递时间,允许无服务器方法之间进行快速、安全的控制流与数据流传递,并在整个无服务器计算过程中,提高用户代码执行时间在整个执行过程中的占比,降低用户获得结果的时延。
Description
技术领域
本发明涉及虚拟机中进程间通信技术领域,具体地,涉及一种应用于无服务器函数之间的跨虚拟机的进程通信,尤其涉及一种利用硬件特性的无服务器计算平台加速系统。
背景技术
无服务器计算是一种新兴的云服务提供模式。不同于传统的以虚拟机为粒度租借给用户服务器的形式进行云服务提供,无服务器计算不需要用户考虑程序运行时的运行环境,只需要上传用户代码或可执行文件作为无服务器函数,并进行触发器的配置。当触发器被触发时,其对应的无服务器函数将会被实例化并运行。例如用户代码由python语言编写,则云平台会在触发器被触发时创建一个python语言的运行环境,读取并执行用户提前上传并保存在云服务器中的与该触发器相对应的一个或多个无服务器函数。由于无服务器计算不需要用户进行程序运行时的环境管理,因此云服务提供商可以充分地利用不同用户的不同类型应用往往有不一样的运行模式与访问峰值的特性,合理的安排云上的各个物理机器的负载,进行负载均衡,提高资源的利用率。
同时,对于用户来说,用户不需要在进行复杂的环境配置工作,由云服务提供商进行的环境管理还能有效的应对访问量激增的情况,使程序拥有更好的伸缩性。此外,由于无服务器计算由触发器驱动,只有当触发器触发时,才会实例化无服务器函数的相应运行环境并进行计算,因此拥有按实际运行时长及所消耗资源进行付费的特征。对并不是全天高负载运行的用户程序来说,传统的长时间租赁一台或多台云服务器作为程序运行环境的方法并不适用(购买的资源少了,程序无法满足高负载时的运行要求,购买的资源多了,程序在低负载运行时就有大量的资源浪费),而利用无服务器计算模式不但能减少资源浪费,还不用考虑程序运行的环境问题,带来更好的经济效益。
VMFUNC指令是Intel提出的一种X86架构的虚拟化环境下可以使用的指令。该指令允许用户使用一系列针对虚拟化环境提供的功能,目前,该指令只提供“EPT页表切换”这一种功能。EPT页表为Intel的X86架构虚拟化环境中提供内存虚拟化的重要组成部分。通过在原来的进程页表的基础上额外增加一张EPT页表,在虚拟机内的进程进行地址翻译时,进程的当前虚拟地址(GVA)需要先经过保存在当前CR3寄存器中的页表的地址翻译获得GPA,再进一步经过当前EPT的页表进行地址翻译获得HPA并通过HPA访问实际数据。VMFUNC指令的EPT页表切换功能需要虚拟机监视器为虚拟机配置一个EPT页表的数组,数组的每一项为一个合法的EPT页表的HPA。当虚拟机内的进程调用VMFUNC指令时,可以通过指定一个索引号,将当前虚拟机使用的EPT页表切换为EPT页表数组中该索引号位置所对应的页表。通过对EPT页表进行特殊的修改,可以实现进程跨虚拟机通信的效果。由于VMFUNC指令可以在虚拟化环境下的低特权级别调用,且不会下陷到高特权级别,因此速度很快。目前,主流的无服务器计算提供商均使用轻量级虚拟机技术作为无服务器函数运行的环境,给利用VMFUNC指令进行优化工作提供了广阔空间。
共享内存是进程间进行数据共享的常用方式。但是利用共享内存进行数据共享也会存在安全性的问题。例如三个进程同时共享一块区域,当其中两个进程利用共享内存进行通信时,另一进程对共享区域同时进行修改将会造成不可预料的后果。虽然用户进程往往会进行细致的设计避免产生冲突,但若其中某一进程被黑客攻破,恶意进程就可以通过在合适的时机篡改共享区域的数据从而攻击其他进程。
我们发现,无服务器计算有明显的函数之间的调用关系,且一个实际的业务往往需要多个无服务器函数进行计算才能得到最终结果。目前,利用热启动技术,无服务器函数的创建已经非常的迅速了,在高频率的连续调用情况下,无服务器函数的开销主要体现在用户代码的执行时间与无服务器函数之间的通信开销上。
缩略语和关键术语定义:
EPT:Extended Page Tables,虚拟化拓展页表,记录虚拟机物理地址到宿主机物理地址映射的信息;
VMFUNC:一种虚拟化环境下可以使用的指令,其功能之一是切换虚拟机的EPT页表;
无服务器函数:一种由云平台进行程序运行环境管理的新兴云服务模式;
GVA:Guest Virtual Address,客户虚拟地址,指的是虚拟化环境中,运行在虚拟机内的进程的虚拟地址;
GPA:Guest Physical Address,客户物理地址,指的是虚拟化环境中进程的GVA经过一次页表翻译获得的地址;
HPA:Host Physical Address,主机物理地址,指的是当前物理机器上实际运行的操作系统所管理的物理地址;
VMCS:Virtual Machine Control Structures,虚拟机控制结构,Intel硬件虚拟化技术提供的对虚拟机的各个行为、属性进行配置的内存结构;
CFG:Control Flow Graph,控制流图,是一种有向图,图中的边表示两点之间存在关系,在本发明中用来表示两个无服务器方法之间是否存在依赖关系。
公开号为CN111543037A的发明专利,公开了一种事件驱动的无服务器函数编排,从一个或多个事件源接收一个或多个事件;根据映射规则,将所述一个或多个事件映射到函数图中的一个或多个事件状态,其中,所述一个或多个事件状态包括一个或多个动作;执行满足所述映射规则的一个或多个动作;将所述接收到的事件发送到计算机系统,以触发所述计算机系统启动一个或多个计算资源组,从而执行与所述一个或多个动作相关联的一个或多个无服务器函数;从所述无服务器函数接收一个或多个响应。
发明内容
针对现有技术中的缺陷,本发明提供一种利用硬件特性的无服务器计算平台加速系统。
根据本发明提供的一种利用硬件特性的无服务器计算平台加速系统,所述方案如下:
一种利用硬件特性的无服务器计算平台加速系统,所述系统包括:
地址空间切换模块:提供跨虚拟机的进程间调用;
中心控制器模块:在所述地址空间切换模块之上,保证跨虚拟机之间的进程间调用的安全性;当进程利用空间切换模块进行跨虚拟机的进程间调用时,程序先访问中心控制器模块;
共享内存域模块:保证在无服务器环境下共享内存的安全性与串行性。
优选的,所述地址空间切换模块包括:
在调用者与被调用者的虚拟机的客户物理地址空间中,保留一块物理地址不被其他进程或虚拟机内核使用,将特殊映射的客户物理地址重映射到该物理地址。
优选的,所述中心控制器模块包括:
CFG注册与验证子模块:中心控制器模块维护一个CFG数据结构,当有新的服务创建或有新的客户向某一已经存在的服务注册的时候,CFG的数据将会更新;当进程试图进行进程间跨虚拟机通信时,中心控制器模块则会首先调用CFG注册与验证子模块进行依赖检测,如果本次调用的目的服务与当前进程没有依赖关系,则会阻止本次调用;
EPT列表动态调整子模块:当某一次进程间通信经过了CFG注册与验证子模块的验证,且为合法请求时,EPT列表动态调整子模块将能访问目标进程的一张特殊EPT页表的页表根地址填入当前进程的EPT列表中,并调用目标服务调用子模块;
目标服务调用子模块:该模块简单的调用一次跨虚拟机的地址空间切换模块,访问由EPT列表动态调整子模块刚写上的特殊EPT页表。
优选的,所述中心控制器模块中:设置控制器机制,每一个进程的EPT列表中只存在能跳转到控制器的EPT页表项,其他页表项均为初始页表项。
优选的,利用控制器机制进行安全的进程间通信需要如下过程:
a、用户进程通过调用库函数访问跳板代码;
b、每一个虚拟机都拥有自己的EPT列表,并且其中有一项特殊页表指向控制器服务,跳板代码通过将地址空间切换为该特殊页表访问控制器;
c、控制器进行访问鉴权,控制器会将请求双方与CFG中的边进行比对,只有存在的边会被视为合法请求;
d、经过控制器判断,若是合法的访问请求,则控制器将一个能够访问目标虚拟机中目标进程地址空间的特殊的EPT表填入当前虚拟机的EPT列表的某一位置;
e、控制器随后通过VMFUNC指令将当前EPT切换为新换上的特殊页表,通过特殊EPT表,控制流成功进入目标进程地址空间中的跳板代码;
f、在目标进程的地址空间中,跳板代码访问限定的目标用户代码并获得执行结果;
g、执行完成后程序控制流将会原路返回,在经过控制器时,控制器会将之前填入的特殊EPT表抹去。
优选的,所述共享内存域模块中:共享内存域为一块特殊的内存空间,整块区域包括:数据页与辅助方法页,其中数据页又包括共享数据页与传送门数据页;
所有使用同一共享内存域的进程,共享内存域的共享数据页对其皆只有读取权限。
优选的,使用共享内存域进行数据共享需经过如下过程:
1)、进程申请一个共享内存域,若成功,虚拟机监视器将共享内存域映射到进程的地址空间中;
2)、进程将数据修改复制到共享内存域的传送门数据页中,或直接利用辅助函数从传送门数据页中申请空间;
3)、进程调用辅助函数将数据从传送门数据页拷贝到共享数据页中;
4)、其他进程看到共享数据页中的数据并进行相应处理。
优选的,共享内存域的分配以物理核心为粒度,且在利用辅助方法进行数据拷贝的过程中,虚拟机监视器会停止中断注入。
优选的,所述系统与无服务器计算平台相结合,包括:为用户提供的无服务器方法调用库,以及内嵌到无服务器计算平台中的用户无感知的方法。
优选的,所述为用户提供的无服务器方法调用库中:
用户通过调用库的调用方法访问云服务器上的其他无服务器方法时,调用库会查找本地物理机器上是否有目标无服务器方法的一个已经注册的实例;
若已存在,则利用硬件加速的进程间通信方法与共享内存域进行数据访问;
若不存在,则通过云平台原始的RESTful API进行访问。
与现有技术相比,本发明具有如下的有益效果:
1、本发明加速了无服务器计算平台对用户代码的执行速度,提高了执行效率;
2、本发明的加速效果能极大的减少无服务器方法之间的信息传递时间,允许无服务器方法之间进行快速、安全的控制流与数据流传递,并在整个无服务器计算过程中,提高用户代码执行时间在整个执行过程中的占比,降低用户获得结果的时延。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为本发明整体结构示意图;
图2为重映射已有地址到保留虚拟地址空间的过程示意图;
图3为共享内存域的结构示意图;
图4为利用中心控制器进行安全调用的过程示意图;
图5为本发明应用于无服务器计算平台的示意图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例提供了一种利用硬件特性的无服务器计算平台加速系统,该系统包括地址空间切换模块、共享内存域模块以及中心控制器模块,并与传统的无服务器计算平台结合,提升无服务器计算平台的运行效率,参照图1所示,具体如下:
地址空间切换模块:提供跨虚拟机的进程间调用;
准备一特殊的EPT,特殊的EPT为通信中被调用者的EPT的深拷贝。此外还要进行一些特殊映射。例如调用者进程的页表根地址所在的表项,翻译成被调用者进程的页表根地址在物理机上的实际物理地址。
为避免特殊映射影响到被调用者进程已经使用的的内存,在调用者与被调用者的虚拟机的客户物理地址空间中,保留一块物理地址不被其他进程或虚拟机内核使用,将特殊映射的客户物理地址重映射到该区域,能够避免影响被调用者进程的已有内存。
本发明提出跨虚拟机的地址空间快速切换技术,根据虚拟化环境下,虚拟地址转化为主机物理地址需要经过两次页表翻译的特性,利用VMFUNC指令,介入程序的地址翻译过程,修改程序所在虚拟机当前使用的EPT页表,实现在低特权级别中进行快速的地址切换并进行进程间通信。
参照图1所示,为了利用VMFUNC指令进行进程间通信,虚拟机监视器需要预先为未来可能发生的调用准备一个特殊的EPT。该ETP的绝大多数页表项与通信中的被调用进程的虚拟机EPT一致,但其中通信中的调用者进程的页表的根地址所在的表项将被翻译成通信中被调用者进程的页表根地址在物理机上的实际物理地址。这是为了保证在利用VMFUNC指令进行地址空间的切换之后,尽管CR3寄存器中保存的进程页表根地址没变,但所有内存访问经过的地址翻译都会由被调用者的页表与EPT进行。类似的,为了保证中断机制的正确运行,通信中被调用者虚拟机中对应虚拟机VMCS结构中的名为APIC_ACCESS_ADDR字段所示的HPA的GPA将会在特殊EPT中被翻译到调用者的该字段所示的HPA中。这是由于硬件支持的中断虚拟化通过监听VMCS中记录的该物理内存是否被写判断虚拟机是否处理完当前中断,若不进行该映射,中断处理结束的消息将永远不会被写入正确物理地址,虚拟机监视器无法得知中断已经被处理完成,导致系统失去响应。此外,由于PC寄存器中保存的程序指令地址不会改变,因此需要保证VMFUNC指令调用前后在调用者与被调用者的虚拟地址空间中都有合法的指令,本发明通过将一块跳板代码映射到两进程的同一块虚拟地址保证这一前提。
通过上述这种手段对EPT表项进行操作很容易会遇到需要修改的调用者GPA在被调用者的地址空间中已经被使用的情况,若直接对其进行覆盖,会造成不可预知的后果。
参照图2所示,为了避免对进程页表跟地址的操作覆盖到被调用者原有的已分配数据,本发明通过在调用者与被调用者的虚拟机的物理地址空间中,保留一块物理地址不被其他进程或虚拟机内核使用,将这块保留空间中的任一地址在EPT中映射到虚拟机页表根地址所指向的实际物理内存中的HPA,达到同一虚拟机中,有两个不同的GPA指向同一个HPA的效果。用此预留地址空间中的地址替换进程当前的虚拟机页表根寄存器中的值,由于经过地址翻译指向的实际数据完全一致,因此不会对当前进程的运行造成任何影响。经过这样的处理,可以保证在进程间调用过程中,对被调用者EPT表项的修改不会影响到原虚拟机的正常运行。
共享内存域模块:该模块可称之为一种共享内存的新的使用方法的实现,用以保证在无服务器环境下共享内存的安全性与串行性。
提出共享内存域的概念,在多进程间共享的内存区域由于每一个用户都能任意的对其进行读写,因此存在安全隐患。本发明提出了使用共享内存域的概念,将共享区域以共享内存域包裹,一块共享内存域既包括了共享内存的数据区域,也包括了一系列辅助函数和一系列的传送门数据区域。共享内存的数据页被以只读的形式映射到进程的虚拟地址空间中,进程对共享内存域的修改,需先写入传送门数据区域,再通过辅助函数获取对共享内存的数据区域的可写权限,将传送门数据区域的数据拷贝到共享内存的数据区域中中,以解决上述共享内存的安全问题。
共享内存域是一种共享内存的新形式,解决多用户之间共享内存所面临的安全问题。参照图3所示,共享内存域为一块特殊的内存空间,整块区域分为数据页与辅助方法页两部分,其中数据页又可划分为共享数据页与传送门数据页。对所有使用同一共享内存域的进程来说,共享内存域的共享数据页对其皆只有读取权限。使用共享内存域进行数据共享需经过如下过程:
1)进程申请一个共享内存域,若成功,虚拟机监视器将共享内存域映射到进程的地址空间中;
2)进程将数据修改复制到共享内存域的传送门数据页中,或直接利用辅助函数从传送门数据页中申请空间;
3)进程调用辅助函数将数据从传送门数据页拷贝到共享数据页中;
4)其他进程看到共享数据页中的数据并进行相应处理。
其中,共享内存域中的传送门数据页是每个进程自有的,只有共享数据页是连接到同一共享内存域的进程所共享的。辅助方法的实质是通过VMFUNC指令改变共享内存页在当前进程EPT中的权限,使当前进程可以修改共享内存页的内容。
共享内存域的分配以物理核心为粒度,且在利用辅助方法进行数据拷贝的过程中,虚拟机监视器会停止中断注入,上述两种限制保证了无论一个共享内存域被多少个用户进程共享,同一时间只有一个进程可以利用辅助方法对共享数据区域进行修改,避免了多用户同时对共享内存页修改引起的数据污染问题。
中心控制器模块:在所述地址空间切换模块之上,保证跨虚拟机之间的进程间调用的安全性;当进程利用空间切换模块进行跨虚拟机的进程间调用时,程序先访问中心控制器模块。
对上述跨虚拟机的地址空间快速切换技术进行安全检查与动态管控机制,本发明利用VMFUNC指令中“EPT页表切换”功能的特征,将虚拟机的EPT页表的列表映射到控制器进程的地址空间中,中心控制器进程是独立运行于一个专属虚拟机中的可信进程,该专属虚拟机无任何其他功能,仅作为控制器进程运行的载体,维护控制器进程的地址空间。通过让任意虚拟机仅能通过VMFUNC指令切换到控制器的地址空间中,由控制器通过依赖关系图判断调用是否合法,保证了利用VMFUNC指令在虚拟机之间通信的安全性。
该中心控制器模块包括了三个子模块:
CFG注册与验证子模块:中心控制器模块维护一个CFG数据结构,当有新的服务创建或有新的客户向某一已经存在的服务注册的时候,CFG的数据将会更新;当进程试图进行进程间跨虚拟机通信时,中心控制器模块则会首先调用CFG注册与验证子模块进行依赖检测,如果本次调用的目的服务与当前进程没有依赖关系,则会阻止本次调用。
EPT列表动态调整子模块:当某一次进程间通信经过了CFG注册与验证子模块的验证,且为合法请求时,EPT列表动态调整子模块将能访问目标进程的一张特殊EPT页表的页表根地址填入当前进程的EPT列表中,并调用目标服务调用子模块。
目标服务调用子模块:该模块简单的调用一次跨虚拟机的地址空间切换模块,访问由EPT列表动态调整子模块刚写上的特殊EPT页表。
参照图4所示,为了利用VMFUNC指令在不同虚拟机之间进行安全的进程间通信,本发明引入控制器机制。每一个进程的EPT列表中只存在能跳转到控制器的EPT页表项,其他页表项均为初始页表项。因此即便有恶意的虚拟机构造任意的VMFUNC请求,也只能跳转到控制器中。控制器维护着一张本机器无服务器方法的CFG图,无服务器计算平台从用户定义的无服务器计算应用中获取其中各个无服务器方法之间的调用关系并将调用关系存入CFG图中。例如,一个无服务器应用由三个无服务器方法A、B、C构成,实现整个应用会先运行方法A,然后将方法A的输出作为方法B的输入运行方法B,同理运行方法C。那么在控制器维护的CFG图中就会出现A、B、C三个点,分别代表三类无服务器方法,同时加入从A到B和从B到C的边,代表这些方法之间存在调用关系。
利用控制器机制进行安全的进程间通信需要如下过程:
a、用户进程通过调用库函数访问跳板代码;
b、每一个虚拟机都拥有自己的EPT列表,并且其中有一项特殊页表指向控制器服务,跳板代码通过将地址空间切换为该特殊页表访问控制器;
c、控制器进行访问鉴权,控制器会将请求双方与CFG中的边进行比对,只有存在的边会被视为合法请求;
d、经过控制器判断,若是合法的访问请求,则控制器将一个能够访问目标虚拟机中目标进程地址空间的特殊的EPT表填入当前虚拟机的EPT列表的某一位置;
e、控制器随后通过VMFUNC指令将当前EPT切换为新换上的特殊页表,通过特殊EPT表,控制流成功进入目标进程地址空间中的跳板代码;
f、在目标进程的地址空间中,跳板代码访问限定的目标用户代码并获得执行结果;
g、执行完成后程序控制流将会原路返回,在经过控制器时,控制器会将之前填入的特殊EPT表抹去。
本发明不需要将能访问其他虚拟机进程的EPT表事先填入虚拟机EPT列表中,而是通过访问控制器,由控制器经过鉴权之后动态的将特殊EPT页表填入EPT列表中。该过程可以有效防止恶意的虚拟机构造自己的VMFUNC指令试图访问其他虚拟机内的进程。
将本发明与传统无服务器计算平台相结合:
将上述快速进程间调用机制应用到无服务器计算领域,加速无服务器计算过程。参照图5所示,本发明提供两种机制以应用上述利用硬件加速的进程间通信机制。
第一种是为用户提供的无服务器方法调用库。用户通过调用库的调用方法访问云服务器上的其他无服务器方法时,调用库会查找本地物理机器上是否有目标无服务器方法的一个已经注册的实例。若已存在,则利用硬件加速的进程间通信方法与共享内存域进行数据访问;若不存在,则通过云平台原始的RESTful API进行访问。在图5的例子中,无服务器方法A访问无服务器方法B,由于方法B并不在当前物理机中,则通过RESTful API访问,而方法C调用的方法D在同一物理机器上,因此可以通过本发明上述的加速通信机制进行通信。
第二种为内嵌到无服务器计算平台中的用户无感知的方法,在无服务器计算的场景下,用户的需求往往需要多个无服务器方法一起协作才能获得结果。在方法与方法之间,往往有明显的顺序关系,即上一个方法的输出作为下一个方法的输入。在这一类场景中,无服务器计算平台能知道下一个方法能否利用上述优化进行访问,若可以,则直接利用本发明提供的加速通信机制进行通信,若不可以,则按照传统方法创建新的无服务器方法实例。
本发明实施例提供了一种利用硬件特性的无服务器计算平台加速系统,加速了无服务器计算平台对用户代码的执行速度,提高了执行效率。在已有热容器的情形下,无服务器计算平台完成对用户事件响应所用的时间有两部分组成,分别是用户无服务器方法的代码的执行时间与不同无服务器方法之间的信息传递时间,根据调研,后者在整个流程中占比客观,个别应用甚至能比前者花费更长时间。本发明的加速效果能极大的减少无服务器方法之间的信息传递时间,允许无服务器方法之间进行快速、安全的控制流与数据流传递,并在整个无服务器计算过程中,提高用户代码执行时间在整个执行过程中的占比,降低用户获得结果的时延。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (4)
1.一种利用硬件特性的无服务器计算平台加速系统,其特征在于,包括:
地址空间切换模块:提供跨虚拟机的进程间调用;
中心控制器模块:在所述地址空间切换模块之上,保证跨虚拟机之间的进程间调用的安全性;当进程利用地址空间切换模块进行跨虚拟机的进程间调用时,程序先访问中心控制器模块;
共享内存域模块:保证在无服务器环境下共享内存的安全性与串行性;
所述地址空间切换模块包括:
在调用者与被调用者的虚拟机的客户物理地址空间中,保留一块物理地址不被其他进程或虚拟机内核使用,将特殊映射的客户物理地址重映射到该物理地址;
所述中心控制器模块包括:
CFG注册与验证子模块:中心控制器模块维护一个CFG数据结构,当有新的服务创建或有新的客户向某一已经存在的服务注册的时候,CFG的数据将会更新;当进程试图进行进程间跨虚拟机通信时,中心控制器模块则会首先调用CFG注册与验证子模块进行依赖检测,如果本次调用的目的服务与当前进程没有依赖关系,则会阻止本次调用;
EPT列表动态调整子模块:当某一次进程间通信经过了CFG注册与验证子模块的验证,且为合法请求时,EPT列表动态调整子模块将能访问目标进程的一张特殊EPT页表的页表根地址填入当前进程的EPT列表中,并调用目标服务调用子模块;
目标服务调用子模块:该模块简单的调用一次跨虚拟机的地址空间切换模块,访问由EPT列表动态调整子模块刚写上的特殊EPT页表;
所述中心控制器模块中:设置控制器机制,每一个进程的EPT列表中只存在能跳转到控制器的EPT页表项,其他页表项均为初始页表项;
利用控制器机制进行安全的进程间通信需要如下过程:
a、用户进程通过调用库函数访问跳板代码;
b、每一个虚拟机都拥有自己的EPT列表,并且其中有一项特殊页表指向控制器服务,跳板代码通过将地址空间切换为该特殊页表访问控制器;
c、控制器进行访问鉴权,控制器会将请求双方与CFG中的边进行比对,只有存在的边会被视为合法请求;
d、经过控制器判断,若是合法的访问请求,则控制器将一个能够访问目标虚拟机中目标进程地址空间的特殊的EPT表填入当前虚拟机的EPT列表的某一位置;
e、控制器随后通过VMFUNC指令将当前EPT切换为新换上的特殊页表,通过特殊EPT表,控制流成功进入目标进程地址空间中的跳板代码;
f、在目标进程的地址空间中,跳板代码访问限定的目标用户代码并获得执行结果;
g、执行完成后程序控制流将会原路返回,在经过控制器时,控制器会将之前填入的特殊EPT表抹去;
所述共享内存域模块中:共享内存域为一块特殊的内存空间,整块区域包括:数据页与辅助方法页,其中数据页又包括共享数据页与传送门数据页;
所有使用同一共享内存域的进程,共享内存域的共享数据页对其皆只有读取权限;
使用共享内存域进行数据共享需经过如下过程:
1)、进程申请一个共享内存域,若成功,虚拟机监视器将共享内存域映射到进程的地址空间中;
2)、进程将数据修改复制到共享内存域的传送门数据页中,或直接利用辅助函数从传送门数据页中申请空间;
3)、进程调用辅助函数将数据从传送门数据页拷贝到共享数据页中;
4)、其他进程看到共享数据页中的数据并进行相应处理。
2.根据权利要求1所述的利用硬件特性的无服务器计算平台加速系统,其特征在于,共享内存域的分配以物理核心为粒度,且在利用辅助方法进行数据拷贝的过程中,虚拟机监视器会停止中断注入。
3.根据权利要求1所述的利用硬件特性的无服务器计算平台加速系统,其特征在于,所述系统与无服务器计算平台相结合,包括:为用户提供的无服务器方法调用库,以及内嵌到无服务器计算平台中的用户无感知的方法。
4.根据权利要求3所述的利用硬件特性的无服务器计算平台加速系统,其特征在于,所述为用户提供的无服务器方法调用库中:
用户通过调用库的调用方法访问云服务器上的其他无服务器方法时,调用库会查找本地物理机器上是否有目标无服务器方法的一个已经注册的实例;
若已存在,则利用硬件加速的进程间通信方法与共享内存域进行数据访问;
若不存在,则通过云平台原始的RESTful API进行访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111083843.9A CN113704007B (zh) | 2021-09-14 | 2021-09-14 | 利用硬件特性的无服务器计算平台加速系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111083843.9A CN113704007B (zh) | 2021-09-14 | 2021-09-14 | 利用硬件特性的无服务器计算平台加速系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113704007A CN113704007A (zh) | 2021-11-26 |
CN113704007B true CN113704007B (zh) | 2023-11-07 |
Family
ID=78660909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111083843.9A Active CN113704007B (zh) | 2021-09-14 | 2021-09-14 | 利用硬件特性的无服务器计算平台加速系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113704007B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106203082A (zh) * | 2016-06-29 | 2016-12-07 | 上海交通大学 | 基于虚拟化硬件特性的高效隔离内核模块的系统及方法 |
CN107102888A (zh) * | 2017-04-25 | 2017-08-29 | 华中科技大学 | 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 |
US9858199B1 (en) * | 2016-03-30 | 2018-01-02 | Amazon Technologies, Inc. | Memory management unit for shared memory allocation |
CN109933441A (zh) * | 2019-02-28 | 2019-06-25 | 上海交通大学 | 微内核进程间通讯方法和系统 |
CN110851231A (zh) * | 2018-08-20 | 2020-02-28 | 英特尔公司 | 使用扩展分页和存储器完整性的安全公用云 |
CN112035272A (zh) * | 2019-06-03 | 2020-12-04 | 华为技术有限公司 | 进程间通信的方法、装置以及计算机设备 |
CN113064697A (zh) * | 2021-04-01 | 2021-07-02 | 上海交通大学 | 利用多硬件特性加速微内核进程间通信的方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020010556A1 (zh) * | 2018-07-11 | 2020-01-16 | 华为技术有限公司 | 增强用户空间与内核空间的隔离性的方法和装置 |
US11922220B2 (en) * | 2018-11-08 | 2024-03-05 | Intel Corporation | Function as a service (FaaS) system enhancements |
-
2021
- 2021-09-14 CN CN202111083843.9A patent/CN113704007B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9858199B1 (en) * | 2016-03-30 | 2018-01-02 | Amazon Technologies, Inc. | Memory management unit for shared memory allocation |
CN106203082A (zh) * | 2016-06-29 | 2016-12-07 | 上海交通大学 | 基于虚拟化硬件特性的高效隔离内核模块的系统及方法 |
CN107102888A (zh) * | 2017-04-25 | 2017-08-29 | 华中科技大学 | 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 |
CN110851231A (zh) * | 2018-08-20 | 2020-02-28 | 英特尔公司 | 使用扩展分页和存储器完整性的安全公用云 |
CN109933441A (zh) * | 2019-02-28 | 2019-06-25 | 上海交通大学 | 微内核进程间通讯方法和系统 |
CN112035272A (zh) * | 2019-06-03 | 2020-12-04 | 华为技术有限公司 | 进程间通信的方法、装置以及计算机设备 |
CN113064697A (zh) * | 2021-04-01 | 2021-07-02 | 上海交通大学 | 利用多硬件特性加速微内核进程间通信的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113704007A (zh) | 2021-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210194696A1 (en) | System and method for high performance secure access to a trusted platform module on a hardware virtualization platform | |
CN109522754B (zh) | 一种移动终端可信隔离环境核心控制方法 | |
US10983926B2 (en) | Efficient userspace driver isolation for virtual machines | |
US10176007B2 (en) | Guest code emulation by virtual machine function | |
US10255088B2 (en) | Modification of write-protected memory using code patching | |
US20220091911A1 (en) | Method and apparatus for inter-process communication, and computer device | |
CN109933441A (zh) | 微内核进程间通讯方法和系统 | |
Kulkarni et al. | Splinter:{Bare-Metal} extensions for {Multi-Tenant}{Low-Latency} storage | |
US10083129B2 (en) | Code loading hardening by hypervisor page table switching | |
CN113064697B (zh) | 利用多硬件特性加速微内核进程间通信的方法 | |
US20040205203A1 (en) | Enforcing isolation among plural operating systems | |
US11734048B2 (en) | Efficient user space driver isolation by shallow virtual machines | |
Rad et al. | ZeroVM: secure distributed processing for big data analytics | |
US10754796B2 (en) | Efficient user space driver isolation by CPU page table switching | |
US9292324B2 (en) | Virtual machine supervision by machine code rewriting to inject policy rule | |
CN114154144A (zh) | 基于安全沙箱的应用安全加固系统 | |
CN112182560B (zh) | 针对Intel SGX内部高效的隔离方法、系统及介质 | |
CN113704007B (zh) | 利用硬件特性的无服务器计算平台加速系统 | |
US11748140B2 (en) | Virtual machine security policy implementation | |
US11586727B2 (en) | Systems and methods for preventing kernel stalling attacks | |
US11429412B2 (en) | Guest protection from application code execution in kernel mode | |
Hartig et al. | L4-virtualization and beyond | |
US11977496B1 (en) | Security vulnerability mitigation using hardware-supported context-dependent address space hiding | |
KR102287057B1 (ko) | 복수의 사용자에게 효율적으로 동일한 컨텐츠를 제공하는 방법 및 장치 | |
CN112948062B (zh) | 设备文件的透传方法、设备及计算机存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |