Reliable Datagram Sockets
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these messages)
|
Communication protocol | |
Abbreviation | RDS |
---|---|
Developer(s) | Oracle Corporation |
Introduction | June 9, 2009 |
OSI layer | Transport layer |
Port(s) | 16385 (RDS-over-TCP) |
Internet protocol suite |
---|
Application layer |
Transport layer |
Internet layer |
Link layer |
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.
Header
[edit]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 |
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]- ^ "Linux 2 6 30 - Linux Kernel Newbies". Kernelnewbies.org. 2009-06-12. Retrieved 2015-10-11.
- ^ "VSR Security Advisory : Product Description". Vsecurity.com. Retrieved 2015-10-11.
- ^ "CVE-2010-3904". NIST National Vulnerability Database. Retrieved 2020-12-27.
- ^ "NVD - CVE-2019-11815". nvd.nist.gov. Retrieved 2019-05-14.
External links
[edit]- Oss.oracle.com
- Oss.oracle.com
- https://oss.oracle.com/projects/rds/dist/documentation/rds-3.1-spec.html