Reliable Datagram Sockets (RDS ) is a high-performance, low-latency , reliable , connectionless protocol for delivering datagrams . It is developed by Oracle Corporation .
It was included in the Linux kernel 2.6.30 which was released on 9 June 2009. The code was contributed by the OpenFabrics Alliance (OFA).[ 1]
On October 19, 2010, VSR announced CVE -2010-3904 , a vulnerability within the Linux 2.6.30 kernel which could result in a local privilege escalation via the kernel's implementation of RDS.[ 2] This was subsequently fixed in Linux 2.6.36.[ 3]
On May 8, 2019, CVE -2019-11815 was published, regarding a race condition in the Linux RDS implementation that could lead to a use-after-free bug and possible arbitrary code execution .[ 4] The bug has been fixed in Linux 5.0.8.
RDS Header
Size (bits)
Name
Description
be64
h_sequence
Sequence number
be64
h_ack
Sequence number of last received message
be32
h_len
Length of the message payload
be16
h_sport
Port on source node
be16
h_dport
Port on destination node
8
h_flags
Described below
8
h_credit
Credits given (used for credit-based flow control)
32
h_padding
Padding for 64-bit struct alignment
16
h_csum
1's complement header checksum
128
h_exthdr
Optional extension header space
RDS Header
Offset
Octet
0
1
2
3
Octet
Bit
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
0
0
h_sequence
4
32
8
64
h_ack
12
96
16
128
h_len
20
160
h_sport
h_dport
24
192
h_flags
h_credit
h_padding… ↴
26
208
↪ …h_padding
h_csum
32
256
h_exthdr
36
288
40
320
44
352
Sequence (h_sequence): 64 bits
The sequence number.
Acknowledge (h_ack): 64 bits
The sequence number of last received message.
Length (h_len): 32 bits
The length of the message payload.
Source Port (h_sport): 16 bits
Identifies the sending port.
Destination Port (h_dport): 16 bits
Identifies the receiving port.
Flags (h_flags): 8 bits
Described below.
Credits (h_credit): 8 bits
Credits given (used for credit-based flow control).
Padding (h_padding): 32 bits
Padding for 64-bit struct alignment.
Checksum (h_csum): 16 bits
1's complement header checksum.
Extension Header (h_exthdr): 128 bits
Optional extension header space.
See also
References
External links