1sdp(7D)                             Devices                            sdp(7D)
2
3
4

NAME

6       sdp - Sockets Direct Protocol driver
7

SYNOPSIS

9       #include <socket.h>
10
11
12       #include <netinet/in.h>
13
14
15       s = socket(AF_INET, SOCK_STREAM, PROTO_SDP);
16
17
18       s = socket(AF_INET6, SOCK_STREAM, PROTO_SDP);
19
20

DESCRIPTION

22       The  Sockets Direct Protocol (SDP) is a transport protocol layered over
23       the Infiniband Transport Framework (IBTF). SDP is a standard  implemen‐
24       tation  based  on  Annex 4 of the Infiniband Architecture Specification
25       Vol 1 and provides reliable byte-stream, flow controlled  two-way  data
26       transmission  that  closely  mimics  the  Transmission Control Protocol
27       (TCP).
28
29
30       SDP supports a sockets-based SOCK_STREAM interface to application  pro‐
31       grams. It also supports graceful close (including half-closed sockets),
32       IP addressing (IPv4 or IPv6), the connecting/accepting  connect  model,
33       out-of-band (OOB) data and common socket options. The SDP protocol also
34       supports kernel bypass data transfers and  data  transfers  from  send-
35       upper-layer-protocol  (ULP)  buffers to receive ULP buffers. A SDP mes‐
36       sage includes a BSDH header followed by data. (A BSDH header advertises
37       the amount of available buffers on the local side).
38
39
40       SDP  networking functionality is broken into the sdp driver and a func‐
41       tion  call-based  sockfs  implementation.  A  new  protocol  family  of
42       PROTO_SDP  is  introduced  to  use  the  SDP  transport provided by the
43       driver.
44
45
46       Sockets utilizing SDP are either active or passive. Active sockets ini‐
47       tiate  connections  to passive sockets. Both active and passive sockets
48       must have their local IP or IPv6 address and SDP port number bound with
49       the  bind(3SOCKET) system call after the socket is created. By default,
50       SDP sockets are active. A passive socket is created by calling the lis‐
51       ten(3SOCKET)  system  call  after  binding the socket with bind(). This
52       process establishes a queueing parameter for the passive  socket.  Con‐
53       nections   to   the   passive    socket   can   be  received  with  the
54       accept(3SOCKET) system call. Active sockets  use  the  connect(3SOCKET)
55       call after binding to initiate connections.
56
57
58       In  most  cases,  SDP sends data when it is presented. When outstanding
59       data is not yet acknowledged, SDP gathers small amounts of output to be
60       sent  in  a  single   packet once an acknowledgement is received. For a
61       small number  of  clients  this  packetization  may  cause  significant
62       delays.  To  circumvent  this problem,  SDP provided by the driver sup‐
63       plies SDP_NODELAY, a socket-level boolean option. Note that this behav‐
64       ior is similar to the TCP_NODELAY option.
65
66
67       SDP  provides  an  urgent  data mechanism that can be invoked using the
68       out-of-band provisions  of   send(3SOCKET).  The  out-of-band  delivery
69       behavior  is identical to TCP. The caller may mark one byte as "urgent"
70       with the  MSG_OOB  flag to send(3SOCKET). This sets an "urgent pointer"
71       pointing  to  the byte in the SDP stream. The receiver of the stream is
72       notified of  the  urgent  data  by  a  SIGURG  signal.  The  SIOCATMARK
73       ioctl(2)  request  returns  a value indicating whether the stream is at
74       the urgent mark. Because the  system  never  returns  data  across  the
75       urgent  mark in a single read(2) call, it is possible to advance to the
76       urgent data in a simple loop which reads  data,  testing   the   socket
77       with the SIOCATMARK  ioctl() request until it reaches the mark.
78

ADDRESS FORMATS

80       SDP  uses   IP/IPv6  addresses to refer to local and remote devices and
81       opens a reliable connected IB connection between two  end  points.  The
82       sdp  driver  supports a point-to-point connection, however broadcasting
83       and multicasting are not supported.
84

SOCKET OPTIONS

86       SDP supports setsockopt and getsockopt to set and read socket  options.
87       Very  few  socket  options affect SDP protocol operations. Other common
88       socket options are  processed but do not affect  SDP  protocol   opera‐
89       tion. All socket options are checked for validity. A getsockopt returns
90       the values set or toggled by setsockopt.  Socket  options  that  affect
91       protocol operations are SO_LINGER, SO_DEBUG, SO_REUSEADDR and SO_OOBIN‐
92       LINE.
93

ERRORS

95       EISCONN                     A connect() operation was  attempted  on  a
96                                   socket  on  which a connect() operation had
97                                   already  been performed.
98
99
100       ECONNRESET                  The remote peer forced the connection to be
101                                   closed. This usually occurs when the remote
102                                   machine loses state information  about  the
103                                   connection due to a crash.
104
105
106       ECONNREFUSED                The remote peer actively refused connection
107                                   establishment. This usually occurs  because
108                                   no process is listening to the port.
109
110
111       EADDRINUSE                  A  bind()  operation  was  attempted   on a
112                                   socket with  a  network  address/port  pair
113                                   that  has  already  been  bound  to another
114                                   socket.
115
116
117       EADDRNOTAVAIL               A  bind()  operation  was  attempted  on  a
118                                   socket  with a network address for which no
119                                   network interface exists.
120
121
122       EACCES                      A bind() operation was  attempted  with   a
123                                   reserved port number and the effective user
124                                   ID of the process was  not  the  privileged
125                                   user.
126
127
128       ENOBUFS                     The  system  ran out of memory for internal
129                                   data structures.
130
131

FILES

133       /kernel/drv/sdp
134
135           32-bit ELF kernel module (x86).
136
137
138       /kernel/drv/amd64/sdp
139
140           64-bit ELF kernel module (x86).
141
142
143       /kernel/drv/sparcv9/sdp
144
145           64-bit ELF kernel module (SPARC).
146
147
148       /kernel/drv/sdpib
149
150           32-bit ELF kernel module (x86).
151
152
153       /kernel/drv/amd64/sdpib
154
155           64-bit ELF kernel module (x86).
156
157
158       /kernel/drv/sparcv9/sdpib
159
160           64-bit ELF kernel module (SPARC).
161
162

ATTRIBUTES

164       See attributes(5) for descriptions of the following attribute:
165
166
167
168
169       ┌─────────────────────────┬─────────────────────────────────┐
170       │     ATTRIBUTE TYPE      │         ATTRIBUTE VALUE         │
171       ├─────────────────────────┼─────────────────────────────────┤
172       │Architecture             │ x86, SPARC                      │
173       ├─────────────────────────┼─────────────────────────────────┤
174       │Availability             │ SUNWibsdp, SUNWibsdp            │
175       └─────────────────────────┴─────────────────────────────────┘
176

SEE ALSO

178       read(2),    getsockopt(3XNET),    socket.h(3HEAD),     accept(3SOCKET),
179       bind(3SOCKET),  connect(3SOCKET),  send(3SOCKET),  attributes(5), stan‐
180       dards(5)
181
182
183       Infiniband Architecture Specification Vol 1- Annex 4 — November, 2002
184
185
186
187SunOS 5.11                        13 Nov 2006                          sdp(7D)
Impressum