Email This Page

RUDP: Reliable User Datagram Protocol (Reliable UDP)

Reliable UDP (RUDP) is a simple packet based transport protocol, based on RFCs 908 (version 1) and 1151 (version 2), which is intended as a reliable protocol to transport telephony signalling across IP networks. RUDP is designed to allow characteristics of each connection to be individually configured so that a number of protocols with different transport requirement can be implemented simultaneously not on the same platform. It is layered on the UDP/IP protocols and provides reliable in-order delivery (up to a maximum number of retransmissions) for virtual connections. RUDP has a very flexible design that would make it suitable for a variety of transport uses. One such use would be to transport telecommunication-signalling protocols.

Reliable UDP (RUDP) is a set of quality of service enhancements, such as congestion control tuning improvements, retransmit, and thinning server algorithms, that improve the ability to present a good quality RTP stream to RTP clients even in the presence of packet loss and network congestion. Reliable UDP's congestion control mechanisms allow streams to behave in a TCP-friendly fashion without disturbing the real-time nature of the protocol.

To work well with TCP traffic on the Internet, RUDP (Reliable UDP) uses retransmission and congestion control algorithms similar to the algorithms used by TCP. Additionally, these algorithms are time-tested to utilize available bandwidth optimally.

Reliable UDP (RUDP) features include:

  • Client acknowledgment of packets sent by the server to the client
  • Windowing and congestion control so the server does not exceed the currently available bandwidth
  • Server retransmission to the client in the event of packet loss
  • Faster than real-time streaming known as overbuffering

Protocol Structure - RUDP and RUDP v2 (Reliable UDP)

1

2

3

4

5

6

7

8

16 bit

SYN

ACK

EAK

RST

NUL

CHK

TCS

0

Header Length

Sequence number

Ack number

Checksum

  • Control bits - indicate what is present in the packet. Details as follows:
    • SYN: The SYN bit indicates a synchronization segment is present.
    • ACK: The ACK bit indicates the acknowledgment number in the header is valid.
    • EACK: The EACK bit indicates an extended acknowledge segment is present.
    • RST: The RST bit indicates the packet is a reset segment.
    • NUL: The NUL bit indicates the packet is a null segment.
    • CHK: The CHK bit indicates whether the Checksum field contains the checksum of just the header or the header and the body (data).
    • TCS: The TCS bit indicates the packet is a transfer connection state segment.
    • 0:  The value of this field must be zero.
  • Header length - It indicates where user data begins in the packet.
  • Sequence number - When a connection is first opened, each peer randomly picks an initial sequence number. This sequence number is used in the SYN segments to open the connection. Each transmitter increments the sequence number before sending a data, null, or reset segment.
  • Acknowledgement number - The field indicates to a transmitter the last in- sequence packet the receiver has received.
  • Checksum - The checksum is always calculated on the RUDP header to ensure integrity. The checksum here is the same algorithm used in UDP and TCP headers.


Related Protocols
IP , IPv6,  TCP , UDP , RDP

Sponsor Source

RUDP is discussed in IETF (http://www.ietf.org ) in a memo but no standard defined yet.



Reference

http://www.javvin.com/protocol/reliable-udp.pdf : Reliable UDP protocol
http://www.javvin.com/protocol/rfc908.pdf : Reliable Data Protocol (RDP) 
http://www.javvin.com/protocol/rfc1151.pdf : Version 2 of the Reliable Data Protocol (RDP)