Internships/ProjectIdeas/VhostUserSCSIRust
vhost-user-scsi device server in Rust
Summary: Implement a vhost-user-scsi device server in Rust
The vhost-user protocol allows driving a virtio process from a separate process. This is better from a security perspective, as it allows to implement a better privilege separation policy, but also makes possible to implement the device personality using a foreign programming language (QEMU is mainly written in C) and to experiment with optimization features that would be hard to deploy inside QEMU itself.
There are already a number of crates in the rust-vmm umbrella project that provide a framework for writing vhost-user device servers in Rust, and some device servers implementations such as vhost-user-blk, vhost-user-net and vhost-user-fs.
This project consists in writing a vhost-user-scsi device server in Rust that's able to serve multiple virtual LUNs, each one backed by a different disk image or iSCSI target. If time allows, benchmarks should also be provided comparing its performance against the integrated virtio-scsi implementation.
Links:
- Vhost-user protocol documentation
- "Why QEMU should move from C to Rust"
- vhost crate in Rust-VMM, which includes support for vhost-user
- vhost-user-fs device server in Rust
Details:
- Skill level: Intermediate
- Language: Rust
- Mentor: Sergio Lopez <slp@redhat.com>