Skip to main content

Module tower

Module tower 

Source
Expand description

Cross-block (segment) outer code: the second FEC rung.

The inner code (crate::fec) protects shards within a block. The tower adds an outer code across blocks: a segment of d data blocks ships with r_outer parity blocks, each a Cauchy Reed-Solomon combination of the d data blocks. A burst that erases an entire block - every shard, which the inner per-block code cannot recover and which a long-enough burst defeats even with interleaving - is reconstructed from the surviving blocks in its segment, with no retransmit round-trip.

Each block is treated as one outer symbol: its information is the k inner data shards concatenated (the inner parity shards are re-derivable), so an outer symbol is k * shard_len bytes. The outer code recovers up to r_outer fully-lost blocks as long as at least d of the d + r_outer blocks in the segment survived.

ARQ remains the correctness floor; the tower is a latency optimization that recovers whole-block losses before ARQ has to.

Structsยง

SegmentCode
A systematic Cauchy-RS outer code over whole blocks: d data blocks plus r_outer parity blocks per segment.