A Highly-Extensible Architecture for Networked I/O
We describe a new distributed I/O software architecture to support remote applications interacting with local I/O devices based on the concept of a networked device driver. Our goal is both network transparency and high extensibility/ease of customization in support of the vastly different types of applications and devices that can benefit from remote I/O, especially relevant in cloud computing contexts. A networked device driver logically connects a device at one network end- point and an application at another, and allows the I/O stream between them to be modified by a set of pipelined transformation modules. Each transformation module comes in a pair, operating on each side of the network, with one side typically applying some operation and the other side applying a corresponding one (e.g., one that reverses the original transformation). Because of the paired nature of transformation modules, the system is capable of supporting the modification of the I/O stream in a variety of ways to compensate for network issues while remaining transparent to the application, and also results in a high degree of extensibility. This is achieved with a mostly user-level implementation that incurs a relatively low degree of overhead.
Taylor, Cynthia and Joe Pasquale. "A Highly-Extensible Architecture for Networked I/O," Proceedings of the International Conference on Computing, Networking and Communications, San Diego, CA, January 2013.