Abstract
The Linux Kernel currently supports at least 8 distinct virtualization systems: Xen, KVM, VMware's VMI, IBM's System p, IBM's System z, User Mode Linux, lguest and IBM's legacy iSeries. It seems likely that more such systems will appear, and until recently each of these had its own block, network, console and other drivers with varying features and optimizations.
The attempt to address this is virtio: a series of efficient, well-maintained Linux drivers which can be adapted for various different hypervisor implementations using a shim layer. This includes a simple extensible feature mechanism for each driver. We also provide an obvious ring buffer transport implementation called vring, which is currently used by KVM and lguest. This has the subtle effect of providing a path of least resistance for any new hypervisors: supporting this efficient transport mechanism will immediately reduce the amount of work which needs to be done. Finally, we provide an implementation which presents the vring transport and device configuration as a PCI device: this means guest operating systems merely need a new PCI driver, and hypervisors need only add vring support to the virtual devices they implement (currently only KVM does this).
This paper will describe the virtio API layer as implemented in Linux, then the vring implementation, and finally its embodiment in a PCI device for simple adoption on otherwise fully-virtualized guests. We'll wrap up with some of the preliminary work to integrate this I/O mechanism deeper into the Linux host kernel.
- Z. Amsden, D. Arai, D. Hecht, A. Holler, and P. Subrahmanyam. VMI: An interface for paravirtualization. In OLS '06: The 2006 Ottawa Linux Symposium, pages 371--386, July 2006.Google Scholar
- P. Barham, B. Dragovic, K. Fraser, S. Hand, T. Harris, A. Ho, R. Neugebauer, I. Pratt, and A. Warfield. Xen and the art of virtualization. In SOSP '03: Proceedings of the nineteenth ACM symposium on operating systems principles, pages 164--177, New York, NY, USA, 2003. ACM Press. Google Scholar
Digital Library
- J. Corbet. Van Jacobson's network channels. Available: http://lwn.net/Articles/169961/ {Viewed May 14, 2008}, 2006.Google Scholar
- J. Dike. User-mode linux. In ALS '01: Proceedings of the 5th Annual Linux Showcase & Conference, pages 3--14, Berkeley, CA, USA, 2001. USENIX Association. Google Scholar
Digital Library
- A. Kivity, Y. Kamay, D. Laor, U. Lublin, and A. Liguori. kvm: the Linux virtual machine monitor. In OLS '07: The 2007 Ottawa Linux Symposium, pages 225--230, July 2007.Google Scholar
- I. Molnar. KVM/NET, paravirtual network device. Available: http://www.mail-archive.com/[email protected]/msg00824.html {Viewed April 14, 2008}, January 2007.Google Scholar
- R. Russel. lguest: Implementing the little Linux hypervisor. In OLS '07: Proceedings of the 2007 Ottawa Linux Symposium, pages 173--177, 2007.Google Scholar
- R. Russell. Linux virtio_blk definitions. Available: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=include/linux/virtio_blk.h {Viewed April 14, 2008}, 2008.Google Scholar
- R. Russell. Linux virtio_net definitions. Available: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=include/linux/virtio_net.h {Viewed April 14, 2008}, 2008.Google Scholar
- R. Russell. Linux virtio_ring definitions. Available: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=include/linux/virtio_ring.h {Viewed April 14, 2008}, 2008.Google Scholar
- R. Russell. {PATCH 2/3} partial checksum and gso support for tun/tap. Available: http://www.mailarchive.com/[email protected]/msg59903.html Viewed April 14, 2008}, January 2008.Google Scholar
- R. Russell. virtio: hardware random device. Available: http://lwn.net/Articles/282721/ {Viewed May 26, 2008}, May 2008.Google Scholar
- J. Santos, Y. Turner, J. Janakiraman, and I. Pratt. Bridging the gap between software and hardware techniques for i/o virtualization. In Proceedings of the 2008 USENIX Annual Technical Conference. Google Scholar
Digital Library
- J. Sugerman, G. Venkitachalam, and B.-H. Lim. Virtualizing i/o devices on vmware workstation's hosted virtual machine monitor. In Proceedings of the 2001 USENIX Annual Technical Conference, pages 1--14, Berkeley, CA, USA, 2001. USENIX Association. Google Scholar
Digital Library
- XenSource. Xen virtual network driver. Available: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=drivers/net/xen-netfront.c {Viewed April 14, 2008}, 2005.Google Scholar
Index Terms
virtio: towards a de-facto standard for virtual I/O devices
Recommendations
IO Core Manager for Virtual Environments
SYSTOR '16: Proceedings of the 9th ACM International on Systems and Storage ConferencePara-virtualization is the leading approach in IO device virtualization. It allows the hypervisor to interpose on and inspect a virtual machine's I/O traffic at run-time. Examples of such interfaces are KVM's virtio [6] and VMWare's VMXNET [7]. Current ...
InfiniBand virtualization on KVM
CLOUDCOM '12: Proceedings of the 2012 IEEE 4th International Conference on Cloud Computing Technology and Science (CloudCom)With the ability to provide on-demand service and to reduce the IT cost, cloud computing becomes more and more popular recently. Virtualization is one of the important technologies in cloud computing, whose main idea is to provide abstractions of the ...
Virtio network paravirtualization driver
One of the techniques used to improve I/O performance of virtual machines is paravirtualization. Paravirtualized devices are intended to reduce the performance overhead on full virtualization where all hardware devices are emulated. The interface of a ...






Comments