1sdp(7D) Devices sdp(7D)
2
3
4
6 sdp - Sockets Direct Protocol driver
7
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
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
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
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
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
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
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
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)