Warning: This is a development version. The latest stable version is Version 7.0.0.


From a high level the following figure shows the different components of Rely and highlight the relationship between payloads, symbols and packets.


The Encoder Side

On the encoder side we have the following components:

Sending application
The sending application generates payloads which are consumed by the class encoder.
When payloads are added to the class encoder they may be fragmented into one or more source symbols. This is done to respect the maximum packet size allowed, which ensure that Rely will no generate packets larger that the MTU (Maximum Transfer Unit) of the communication path.
Sliding window encoding
The sliding window encoder is responsible for generate the needed repair symbols. Rely operates in a systematic mode which means that the original source symbols and the repair symbols are interleaved.
The source and repair symbols produced by the sliding window encoder are encapsulated in a Rely packet.
As a final step the Rely packets are sent over the network.

The Decoder Side

On the decoder side the following components are used.

Rely packets are received and consumed by the class decoder.
A Rely packet consists of either a source symbol or repair symbol which is extracted.
Sliding window decoding
The sliding window decoder consumes the source and repair symbols and attempts to repair any packet loss that occurred when transmitting the Rely packets over the network.
The source symbols produced by the sliding window decoder are added to the defragmentation component which uses the source symbols to reassemble the original payloads added by the sending application.
Receiving application
The reassembled payloads are then delivered to the receiving application.