2021-11-07 17:54:36 +00:00
|
|
|
# vHost
|
|
|
|
|
2022-08-26 17:47:11 +00:00
|
|
|
A pure rust library for vhost-user. This is a fork of
|
|
|
|
[rust-vmm/vhost](https://github.com/rust-vmm/vhost).
|
2021-11-07 17:54:36 +00:00
|
|
|
|
2022-08-26 17:47:11 +00:00
|
|
|
![vhost Architecture](./docs/vhost_architecture.png)
|
2021-11-07 17:54:36 +00:00
|
|
|
|
2022-08-26 17:47:11 +00:00
|
|
|
The
|
|
|
|
[vhost-user protocol](https://qemu.readthedocs.io/en/latest/interop/vhost-user.html#communication)
|
|
|
|
aims to implement vhost backend drivers in userspace, which complements the ioctl interface used to
|
|
|
|
control the vhost implementation in the Linux kernel. It implements the control plane needed to
|
|
|
|
establish virtqueue sharing with a user space process on the same host. It uses communication over a
|
|
|
|
Unix domain socket to share file descriptors in the ancillary data of the message.
|
2021-11-07 17:54:36 +00:00
|
|
|
|
2022-08-26 17:47:11 +00:00
|
|
|
The protocol defines two sides of the communication, master and slave. Master is the application
|
|
|
|
that shares its virtqueues, slave is the consumer of the virtqueues. Master and slave can be either
|
|
|
|
a client (i.e. connecting) or server (listening) in the socket communication.
|