Overview
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.
- Fragmentation
- 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.
- Packetization
- The source and repair symbols produced by the sliding window encoder are
encapsulated in a Rely packet.
- Network
- As a final step the Rely packets are sent over the network.
The Decoder Side
On the decoder side the following components are used.
- Network
- Rely packets are received and consumed by the class decoder.
- Depacktization
- 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.
- Defragmentation
- 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.