Reliable Datagram Sockets

Last updated
Reliable Datagram Sockets
Communication protocol
AbbreviationRDS
Developer(s) Oracle Corporation
IntroductionJune 9, 2009;16 years ago (2009-06-09)
OSI layer Transport layer
Port(s) 16385 (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.

Contents

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)NameDescription
be64h_sequenceSequence number
be64h_ackSequence number of last received message
be32h_lenLength of the message payload
be16h_sportPort on source node
be16h_dportPort on destination node
8h_flagsDescribed below
8h_creditCredits given (used for credit-based flow control)
32h_paddingPadding for 64-bit struct alignment
16h_csum1's complement header checksum
128h_exthdrOptional extension header space
RDS Header
Offset Octet 0123
Octet Bit 012345678910111213141516171819202122232425262728293031
00h_sequence
432
864h_ack
1296
16128h_len
20160h_sporth_dport
24192h_flagsh_credith_padding…
26208…h_paddingh_csum
32256h_exthdr
36288
40320
44352
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

  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.