|
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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
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.
|
 |
2
|
Paul Barham , Boris Dragovic , Keir Fraser , Steven Hand , Tim Harris , Alex Ho , Rolf Neugebauer , Ian Pratt , Andrew Warfield, Xen and the art of virtualization, Proceedings of the nineteenth ACM symposium on Operating systems principles, October 19-22, 2003, Bolton Landing, NY, USA
|
| |
3
|
J. Corbet. Van Jacobson's network channels. Available: http://lwn.net/Articles/169961/ {Viewed May 14, 2008}, 2006.
|
| |
4
|
|
| |
5
|
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.
|
| |
6
|
I. Molnar. KVM/NET, paravirtual network device. Available: http://www.mail-archive.com/kvmdevel@lists.sourceforge.net/msg00824.html {Viewed April 14, 2008}, January 2007.
|
| |
7
|
R. Russel. lguest: Implementing the little Linux hypervisor. In OLS '07: Proceedings of the 2007 Ottawa Linux Symposium, pages 173--177, 2007.
|
| |
8
|
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.
|
| |
9
|
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.
|
| |
10
|
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.
|
| |
11
|
R. Russell. {PATCH 2/3} partial checksum and gso support for tun/tap. Available: http://www.mailarchive.com/netdev@vger.kernel.org/msg59903.html Viewed April 14, 2008}, January 2008.
|
| |
12
|
R. Russell. virtio: hardware random device. Available: http://lwn.net/Articles/282721/ {Viewed May 26, 2008}, May 2008.
|
| |
13
|
Jose Renato Santos , Yoshio Turner , G. Janakiraman , Ian Pratt, Bridging the gap between software and hardware techniques for I/O virtualization, USENIX 2008 Annual Technical Conference on Annual Technical Conference, p.29-42, June 22-27, 2008, Boston, Massachusetts
|
| |
14
|
|
| |
15
|
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.
|
CITED BY 3
|
|
|
|
|
Disheng Su , Wenzhi Chen , Wei Huang , Haitao Shan , Yunhong Jiang, SmartVisor: towards an efficient and compatible virtualization platform for embedded system, Proceedings of the Second Workshop on Isolation and Integration in Embedded Systems, p.37-41, March 31-31, 2009, Nuremburg, Germany
|
|
|
Hideki Eiraku , Yasushi Shinjo , Calton Pu , Younggyun Koh , Kazuhiko Kato, Fast networking with socket-outsourcing in hosted virtual machine environments, Proceedings of the 2009 ACM symposium on Applied Computing, March 08-12, 2009, Honolulu, Hawaii
|
INDEX TERMS
Primary Classification:
D.
Software
D.4
OPERATING SYSTEMS
D.4.4
Communications Management
Subjects:
Input/output
Additional Classification:
D.
Software
D.4
OPERATING SYSTEMS
D.4.0
General
Nouns:
Linux
D.4.8
Performance
Subjects:
Operational analysis
General Terms:
Design,
Management,
Performance
Keywords:
I/O,
KVM,
Linux,
lguest,
ring buffer,
virtio,
virtio_pci,
virtualization,
vring
|