Sockets Direct Protocol
From Wikipedia, the free encyclopedia
The Sockets Direct Protocol (SDP) is a networking protocol originally defined by the Software Working Group (SWG) of the InfiniBand Trade Association. Originally designed for InfiniBand, SDP now has been redefined as a transport agnostic protocol for Remote Direct Memory Access (RDMA) network fabrics. SDP defines a standard wire protocol over an RDMA fabric to support stream sockets (SOCK_STREAM) network. SDP utilizes various RDMA network features for high-performance zero-copy data transfers. SDP is a pure wire-protocol level specification and does not go into any socket API or implementation specifics.
The purpose of the Sockets Direct Protocol is to provide an RDMA accelerated alternative to the TCP protocol on IP. The goal is to do this in a manner which is transparent to the application.
Today, Sockets Direct Protocol for the Linux operating system is part of the OpenFabrics Enterprise Distribution (OFED), a collection of RDMA networking protocols for the Linux operating system. OFED is managed by the OpenFabrics Alliance. Many standard Linux distributions include the current OFED.
Several other UNIX operating system variants plan to include support for Sockets Direct Protocol. Microsoft Windows offers a similar protocol called Winsock Direct.
Sockets Direct Protocol only deals with stream sockets, and if installed in a system, bypasses the OS resident TCP stack for stream connections between any endpoints on the RDMA fabric. All other socket types (such as datagram, raw, packet etc.) are supported by the Linux IP stack and operate over standard IP interfaces (i.e., IPoIB on InfiniBand fabrics). The IP stack has no dependency on the SDP stack; however, the SDP stack depends on IP drivers for local IP assignments and for IP address resolution for endpoint identifications.