Design and evaluation of virtual networks for clusters of workstations

Virtual networks provide applications with an automated control system that performs automatic communication resource allocation and management of network multiprogramming. This provides processes with the illusion of having their own, dedicated network even though systems possess limited, shared physical communication resources. Virtualization establishes a large logical space of endpoints, objects that encapsulate methods for communicating and the state associated with ports into virtual networks. Each virtual network forms an independent communication domain that spans a collection of endpoints, with a namespace, access controls, and service guarantees that determine its relative isolation from others. Much as physical memory hosts the most active pages of address spaces, physical network resources host the most active loci of communication. The system binds network resources to endpoints on-demand, and allows the set of applications with direct network access to change naturally over time. By abstracting the naming, protection, management, and scheduling of communication resources, virtual networks facilitate the construction of software packages that communicate, and their re-use and composition in applications. This dissertation develops the virtual networks architecture, and describes a prototype implementation for a large-scale cluster of workstations. It discusses the key challenges across several layers of system design, and examines the integration of communication API, operating system resource management, and network interface operation. The implementation quantifies the impact of virtualization on message latencies and throughputs, shows that full hardware performance is delivered to dedicated applications and time-shared workloads, and demonstrates robust performance under demanding workloads that overcommit network resources.