This talk will present our usage of SPDK, Storage Performance Development Kit,
with the Xen hypervisor and discuss memory sharing mechanisms in hypervisors
from a security and performance perspective.
This talk will present our usage of SPDK, Storage Performance Development Kit,
with the Xen hypervisor and discuss memory sharing mechanisms in hypervisors
from a security and performance perspective.
SPDK is a userspace NVMe driver allowing access to these types of storage
devices with minimal overhead from the operating system. It allows you to
maximize the performance usage of new storage technologies, as well as having faster
development times of applications serving IO because of the easier development
cycle of running in userspace. In our case, we use it as a storage backend
for virtual machines where an SPDK application establishes a connection with
virtual machines through shared memory.
This sharing of memory, in a virtualized environment, gives access to the
outside world to a virtual machine. In the case of Xen, the sharing mechanism,
called Grant Table, uses the hypervisor as a trusted intermediary to allow
sharing memory with another virtual machine. The backend doing device
multiplexing only get access to areas explicitely permitted by the frontend.
This permits the guest to not completely trust the storage provider software
with complete access to private memory, but the extra security of this model
doesn't come for free. We would like to discuss improvements that could be
added that would still keep the security aims of the Grant Table mechanism
while providing a high performance interface.