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ยง
- Segment
Code - A systematic Cauchy-RS outer code over whole blocks:
ddata blocks plusr_outerparity blocks per segment.