Cloud stacks must isolate microservices, while permitting efficient data sharing between isolated services deployed on the same physical host. Traditionally, the MMU enforces isolation and permits sharing at a page granularity. MMU approaches, however, lead to cloud stacks with large TCBs in kernel space, and the page granularity requires inefficient OS interfaces for data sharing. Forthcoming CPUs with hardware support for memory capabilities offer new opportunities to implement isolation and sharing at a finer granularity. We describe cVMs, a new VM-like abstraction that uses memory capabilities to isolate application components while supporting efficient data sharing, all without mandating application code to be capability-aware. cVMs share a single virtual address space safely, each having only capabilities to access its own memory. A cVM may include a library OS, minimizing its dependency on the cloud environment. cVMs efficiently exchange data through two capability-based primitives assisted by a small trusted monitor: (i) an asynchronous read/write interface to buffers shared between cVMs; and (ii) a call interface to transfer control between cVMs. Using these two primitives, we build more expressive mechanisms for efficient cross-cVM communication. Our prototype implementation using CHERI RISC-V capabilities shows that cVMs isolate microservices (Redis and Python) with low overhead while improving data sharing.
翻译:云层云层必须隔离微观服务,同时允许在同一物理主机上部署的孤立服务之间高效地共享数据。传统上,MMU强制实施隔离,允许在一个页面颗粒上共享。MMMU方法导致在内核空间与大型 TCB 共享云层堆叠,而页面颗粒性则要求为数据共享建立低效的OS界面。即将到来的具有内存能力的硬件支持的CPU为在微小颗粒状态下实施隔离和共享提供了新的机会。我们描述的是cVMS,这是一种新型VM式的类似VM式的抽象界面,利用记忆能力分离应用组件分离应用程序组件,同时支持高效的数据共享。 cVMMS共享一个单一虚拟地址空间,每个地址只能安全访问自己的记忆。 cVMM可能包括一个图书馆OS,最大限度地减少其对云层环境的依赖性。 cVMS通过一个小信任的监视器辅助的两种基于能力的原始数据交换数据:(一) 一个使用低频读/写界面,用于共享的缓冲系统共享;以及(二)一个呼叫接口,用于在使用高效的CRIMMS系统上传输能力上,改进我们的智能系统。