Internships/ProjectIdeas/VhostUserSCSIRust: Difference between revisions

From QEMU
(Created page with "=== 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...")
 
 
Line 13: Line 13:
* [https://lists.nongnu.org/archive/html/qemu-devel/2020-08/msg00800.html "Why QEMU should move from C to Rust"]
* [https://lists.nongnu.org/archive/html/qemu-devel/2020-08/msg00800.html "Why QEMU should move from C to Rust"]
* [https://github.com/rust-vmm/vhost/ vhost crate in Rust-VMM, which includes support for vhost-user]
* [https://github.com/rust-vmm/vhost/ vhost crate in Rust-VMM, which includes support for vhost-user]
* [https://github.com/cloud-hypervisor/cloud-hypervisor/tree/master/vhost_user_fs vhost-user-fs device server in Rust]  
* [https://gitlab.com/virtio-fs/virtiofsd-rs/ vhost-user-fs device server in Rust]  
   
   
'''Details:'''
'''Details:'''

Latest revision as of 08:39, 29 March 2021

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:

Details:

  • Skill level: Intermediate
  • Language: Rust
  • Mentor: Sergio Lopez <slp@redhat.com>