The Virtual Interface Architecture

This chapter will summarize the fundamental concepts underlying the Virtual Interface Architecture. First, we present the VI stack and the VI data movement operations: Send/Receive, RDMA-Read, and RDMA-Write. Second, we will define basic concepts such as descriptors, work queues, completion queues, doorbells, and memory registration. This knowledge will prepare the reader for subsequent discussions of implementation procedures, coding, and other technical issues.
The VI architecture permits direct access to the underlying network hardware, enabling an application to transmit and receive data with very low overhead. To understand how VIA achieves such low overhead, the user must first understand the structure and purpose of the VI stack. The VI stack consists of the software and hardware layers that are traversed when data is transferred on the VI Architecture. The stack is comprised of three layers: the VI NIC, the VI Provider Layer, and the VI Kernel Agent. See Figure 3.1, VI Stack.
The VI NIC is a network interface controller that complies with the VI Architecture Specification. The VI NIC executes the multiplexing, de-multiplexing, and data transfer scheduling functions normally performed by the operating system kernel. Also, to ensure reliable communication between endpoints, a VI NIC may implement a reliability protocol.
The VI Provider Layer is a set of functions and data structures that provide use-level processes a software interface to the VI NIC. This interface is a minimal set of primitives that fully exposes the underlying capabilities of the VI Architecture.
If...