Devices sdp(7D)
NAME
sdp - Sockets Direct Protocol driver
SYNOPSIS
#include
#include
s = socket(AF_INET, SOCK_STREAM, PROTO_SDP);
s = socket(AF_INET6, SOCK_STREAM, PROTO_SDP);
DESCRIPTION
The Sockets Direct Protocol (SDP) is a transport protocol layered over the Infiniband Transport Framework (IBTF). SDPis a standard implementation based on Annex 4 of the Infini-
band Architecture Specification Vol 1 and provides reliablebyte-stream, flow controlled two-way data transmission that
closely mimics the Transmission Control Protocol (TCP).SDP supports a sockets-based SOCK_STREAM interface to appli-
cation programs. It also supports graceful close (includinghalf-closed sockets), IP addressing (IPv4 or IPv6), the
connecting/accepting connect model, out-of-band (OOB) data
and common socket options. The SDP protocol also supportskernel bypass data transfers and data transfers from send-
upper-layer-protocol (ULP) buffers to receive ULP buffers. A
SDP message includes a BSDH header followed by data. (A BSDH header advertises the amount of available buffers on the local side).SDP networking functionality is broken into the sdp driver
and a function call-based sockfs implementation. A new pro-
tocol family of PROTO_SDP is introduced to use the SDP tran-
sport provided by the driver. Sockets utilizing SDP are either active or passive. Active sockets initiate connections to passive sockets. Both active and passive sockets must have their local IP or IPv6 address and SDP port number bound with the bind(3SOCKET) system call after the socket is created. By default, SDP sockets are active. A passive socket is created by calling the listen(3SOCKET) system call after binding the socket with bind(). This process establishes a queueing parameter for the passive socket. Connections to the passive socket canSunOS 5.11 Last change: 13 Nov 2006 1
Devices sdp(7D)
be received with the accept(3SOCKET) system call. Activesockets use the connect(3SOCKET) call after binding to ini-
tiate connections. In most cases, SDP sends data when it is presented. When outstanding data is not yet acknowledged, SDP gathers small amounts of output to be sent in a single packet once an acknowledgement is received. For a small number of clientsthis packetization may cause significant delays. To circum-
vent this problem, SDP provided by the driver suppliesSDP_NODELAY, a socket-level boolean option. Note that this
behavior is similar to the TCP_NODELAY option.
SDP provides an urgent data mechanism that can be invokedusing the out-of-band provisions of send(3SOCKET). The
out-of-band delivery behavior is identical to TCP. The
caller may mark one byte as "urgent" with the MSG_OOB flag
to send(3SOCKET). This sets an "urgent pointer" pointing to the byte in the SDP stream. The receiver of the stream isnotified of the urgent data by a SIGURG signal. The SIOCAT-
MARK ioctl(2) request returns a value indicating whether the stream is at the urgent mark. Because the system never returns data across the urgent mark in a single read(2)call, it is possible to advance to the urgent data in a sim-
ple loop which reads data, testing the socket with the SIOCATMARK ioctl() request until it reaches the mark. ADDRESS FORMATSSDP uses IP/IPv6 addresses to refer to local and remote devices and opens a reliable connected IB connection between
two end points. The sdp driver supports a point-to-point
connection, however broadcasting and multicasting are not supported. SOCKET OPTIONS SDP supports setsockopt and getsockopt to set and read socket options. Very few socket options affect SDP protocol operations. Other common socket options are processed but do not affect SDP protocol operation. All socket options are checked for validity. A getsockopt returns the values set or toggled by setsockopt. Socket options that affectprotocol operations are SO_LINGER, SO_DEBUG, SO_REUSEADDR
and SO_OOBINLINE.
ERRORS
EISCONN A connect() operation was attempted on a socket on which a connect() operation had already been performed.SunOS 5.11 Last change: 13 Nov 2006 2
Devices sdp(7D)
ECONNRESET The remote peer forced the con-
nection to be closed. This usu-
ally occurs when the remote machine loses state information about the connection due to a crash. ECONNREFUSED The remote peer actively refused connection establishment. Thisusually occurs because no pro-
cess is listening to the port. EADDRINUSE A bind() operation was attempted on a socket with a network address/port pair that has already been bound to another socket. EADDRNOTAVAIL A bind() operation was attempted on a socket with a network address for which no network interface exists. EACCES A bind() operation was attempted with a reserved port number and the effective user ID of the process was not the privileged user. ENOBUFS The system ran out of memory for internal data structures. FILES/kernel/drv/sdp
32-bit ELF kernel module (x86).
/kernel/drv/amd64/sdp
64-bit ELF kernel module (x86).
/kernel/drv/sparcv9/sdp
64-bit ELF kernel module (SPARC).
SunOS 5.11 Last change: 13 Nov 2006 3
Devices sdp(7D)
/kernel/drv/sdpib
32-bit ELF kernel module (x86).
/kernel/drv/amd64/sdpib
64-bit ELF kernel module (x86).
/kernel/drv/sparcv9/sdpib
64-bit ELF kernel module (SPARC).
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
bute:___________________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_________________________|________________________________________|
| Architecture | x86, SPARC ||_________________________|________________________________________|
| Availability | driver/network/sdp, driver/network/sdp|
|_________________________|________________________________________|
SEE ALSO
read(2), getsockopt(3XNET), socket.h(3HEAD), accept(3SOCKET), bind(3SOCKET), connect(3SOCKET), send(3SOCKET), attributes(5), standards(5)Infiniband Architecture Specification Vol 1- Annex 4 -
November, 2002SunOS 5.11 Last change: 13 Nov 2006 4