Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Reliable Datagram Sockets

From Wikipedia, the free encyclopedia
Reliable Datagram Sockets
Communication protocol
AbbreviationRDS
DeveloperOracle Corporation
IntroductionJune 9, 2009; 17 years ago (2009-06-09)
OSI layerTransport layer
Port16385 (RDS-over-TCP)

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.

[edit]
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

[edit]

References

[edit]
  1. "Linux 2 6 30 - Linux Kernel Newbies". Kernelnewbies.org. 2009-06-12. Archived from the original on 2012-04-02. Retrieved 2015-10-11.
  2. "VSR Security Advisory : Product Description". Vsecurity.com. Archived from the original on 2022-12-04. Retrieved 2015-10-11.
  3. "CVE-2010-3904". NIST National Vulnerability Database. Archived from the original on 2020-12-21. Retrieved 2020-12-27.
  4. "NVD - CVE-2019-11815". nvd.nist.gov. Retrieved 2019-05-14.
[edit]