A highly-extensible architecture for networked I/O
Cynthia A. Taylor, Joseph C. Pasquale · 2013 International Conference on Computing, Networking and Communications (ICNC) · 2013
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.