Devices sdp(7D)
NAME
sdp - Sockets Direct Protocol driver
SYNOPSIS
#include
#include
s = socket(AFINET, SOCKSTREAM, PROTOSDP);
s = socket(AFINET6, SOCKSTREAM, PROTOSDP);
DESCRIPTION
The Sockets Direct Protocol (SDP) is a transport protocol
layered over the Infiniband Transport Framework (IBTF). SDP
is a standard implementation based on Annex 4 of the Infini-
band Architecture Specification Vol 1 and provides reliable
byte-stream, flow controlled two-way data transmission that
closely mimics the Transmission Control Protocol (TCP).
SDP supports a sockets-based SOCKSTREAM interface to appli-
cation programs. It also supports graceful close (including
half-closed sockets), IP addressing (IPv4 or IPv6), the
connecting/accepting connect model, out-of-band (OB) data
and common socket options. The SDP protocol also supports
kernel 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 PROTOSDP 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 can
SunOS 5.11 Last change: 13 Nov 2006 1
Devices sdp(7D)
be received with the accept(3SOCKET) system call. Active
sockets 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 clients
this packetization may cause significant delays. To circum-
vent this problem, SDP provided by the driver supplies
SDPNODELAY, a socket-level boolean option. Note that this
behavior is similar to the TCPNODELAY option.
SDP provides an urgent data mechanism that can be invoked
using 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 MSGOB flag
to send(3SOCKET). This sets an "urgent pointer" pointing to
the byte in the SDP stream. The receiver of the stream is
notified 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.
ADRES FORMATS
SDP 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 affect
protocol operations are SOLINGER, SODEBUG, SOREUSEADR
and SOBINLINE.
ERORS
EISCON 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)
ECONRESET 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.
ECONREFUSED The remote peer actively refused
connection establishment. This
usually occurs because no pro-
cess is listening to the port.
EADRINUSE A bind() operation was attempted
on a socket with a network
address/port pair that has
already been bound to another
socket.
EADRNOTAVAIL A bind() operation was attempted
on a socket with a network
address for which no network
interface exists.
EACES 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).
ATRIBUTES
See attributes(5) for descriptions of the following attri-
bute:
ATRIBUTE TYPE ATRIBUTE VALUE
Architecture x86, SPARC
Availability SUNWibsdp, SUNWibsdp
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, 2002
SunOS 5.11 Last change: 13 Nov 2006 4
|