USENIX 2005 Annual Technical Conference, General Track Abstract
Pp. 379382 of the Proceedings
Facilitating the Development of Soft Devices
Andrew Warfield, Steven Hand, Keir Fraser, and Tim Deegan, University of Cambridge Computer Laboratory
Abstract
Device-level interfaces in operating systems present a very useful
cut-point for researchers to experiment with new ideas. By
virtualizing these interfaces, developers can create
soft devices , which are used in the same way as normal hardware
devices, but provide extra functionality in software. Recent years
have shown this approach to be of considerable interest: a few
examples of block device extension include the addition of intrusion
detection systems to disk interfaces [1], the
development of ``semantically smart'' disks [2], and that
of time-travel block devices [3]. Other devices,
such as network interfaces, have similarly been extended.
Working at the device interface allows an examination of the
functional separation between hardware and software: researchers can
simulate new features as if they were properties of the device itself.
As simple examples, block or network device interfaces might be
extended to compress or encrypt data before it is written to disk or
transmitted. Alternatively, it may be desirable to prototype entirely
new devices in software, bound to existing interfaces, for instance a
content-addressable disk.
Unfortunately, researchers face a challenge in extending devices in
this manner. Implementors must typically modify an existing operating
system to add the new functionality, often by creating OS-specific
pseudo-devices. This requirement means learning the OS source
and writing scaffolding code to intercept events. Moreover, where new
functionality must be developed in-kernel it is difficult to debug and
crashes are not contained. Finally, these low-level developments are
difficult to share and maintain across systems, as they will be specific
to the OS, or even specific version thereof, that it has been
developed within.
This paper presents a solution to the problems associated with
developing soft devices by extending the existing device interface in
Xen [4]. Xen is a virtual machine monitor (VMM) for the
IA32 architecture that paravirtualizes hardware: Rather than
attempting to present a fully virtualized hardware interface to each
OS in a Xen environment, guest OSes are modified to use a simple,
narrow and idealized view of hardware. Soft devices take advantage of
these narrow interface to capture and transform block requests,
network packets, and USB messages.
As an initial example of this approach, we have implemented a
block tap , which is an interface to facilitate the development
of soft devices for block device access. The block tap allows
soft devices to be constructed as user-space applications in an
entirely isolated virtual machine. This strong isolation from the
remainder of the system allows a single soft device to work with any
OS and hardware available on Xen, and allows developers to work with
high-level languages and debuggers. While our approach aims to
facilitate development it still provides a high level of performance,
sustaining 50MB/s read throughput for disk requests in our experiments.
- View the full text of this paper in HTML and PDF.
Until April 2006, you will need your USENIX membership identification in order to access the full papers. The Proceedings are published as a collective work, © 2005 by the USENIX Association. All Rights Reserved. Rights to individual papers remain with the author or the author's employer. Permission is granted for the noncommercial reproduction of the complete work for educational or research purposes. USENIX acknowledges all trademarks within this paper.
- If you need the latest Adobe Acrobat Reader, you can download it from Adobe's site.
|