Recognizing a need for efficient high-speed, low-latency server-to-server communications, Compaq, Intel, and Microsoft published the Virtual Interface (VI) Architecture specification in 1997. VI Architecture is a step along the path to the InfiniBand architecture, which isn't likely to be commercially available until late 2001. (For more information, see "InfiniBand," September 2000.)
VI Architecture promises to improve performance for distributed applications, especially clustered and tiered database applications. These improvements result from a network adapter and driver architecture that eliminates much kernel-mode processing. VI Architecture support can benefit application performance in several ways. First, the reduced instruction path length means faster I/O completion. Second, using fewer CPU cycles for network I/O leaves more CPU cycles free for applications on the server—a potentially significant advantage for network I/O-intensive applications.
When an application opens a connection to a VI-compliant network adapter, VI's Kernel Agent—a kernel-mode driver—creates a VI, which is a logical network adapter dedicated to that application. Applications use VI's User Agent interface, operating in user mode, to communicate with the Kernel Agent and the VI. The Kernel Agent allocates nonpageable, reusable memory buffers to each VI. These buffers eliminate the delays and kernel-mode CPU activity that memory allocation and address translation cause during I/O activity.
The buffers are a basic requirement for VI Architecture's support of Remote Direct Memory Access (RDMA) data transfer. With an RDMA Write or RDMA Read, a computer can initiate data transfer directly to or from another computer's memory, respectively—eliminating CPU involvement on the destination computer during the I/O operation. VI Architecture also supports traditional send/receive data transfer; the VI driver chooses the mode of transfer that is most efficient for each I/O operation.
VI Architecture supports three data-transfer reliability levels: Reliable Reception, Reliable Delivery, and Unreliable Delivery. Reliable Reception is the most reliable level; in this mode, VI Architecture considers a write operation complete when the destination interface acknowledges that its buffer has received the data. In Reliable Delivery mode, VI Architecture considers a write operation complete when data leaves the local system. In Unreliable Delivery mode, which is the only level for which the specification requires support, VI Architecture doesn't monitor the results of a data transfer operation. VI Architecture implements these reliability levels in hardware, thus freeing your server's CPU for other work.
SQL Server 2000 (running under any Windows 2000 Server version) and Win2K Datacenter Server both offer native support for VI Architecture. SQL Server 2000 offers direct support for two VI-compatible NICs: Giganet's cLAN1000 and Compaq's ServerNet II. Both NICs support 1.25Gbps full-duplex speeds over a switched-network architecture. Microsoft intends this support to benefit application-server-to-database-server communications and database-server-to-database-server links. Datacenter's Winsock Direct lets existing applications written to the TCP/IP Winsock interface take advantage of VI Architecture's improved performance.
For more information about VI Architecture, visit http://www.viarch.org. You can also visit http://www.giganet.com/index.asp (for information about cLAN1000 as well as other VI-related links) or http://www.servernet.com (for information about ServerNet II).