Fountain Codes

David J C MacKay

Fountain codes are record-breaking sparse-graph codes for channels with erasures -- such as the internet, where files are transmitted in multiple small packets, each of which is either received without error or not received.

Standard file-transfer protocols simply chop a file up into $K$ packet-sized pieces, then repeatedly transmit each packet until it is successfully received. A back-channel is required for the transmitter to find out which packets need retransmitting. In contrast, fountain codes make packets that are random functions of the whole file. The transmitter sprays packets at the receiver without any knowledge of which packets are received. Once the receiver has received any $N$ packets, where $N$ is just slightly greater than the original file-size $K$, he can recover the whole file.

In this paper I review random linear fountain codes, LT codes, and raptor codes. The computational costs of the best fountain codes are astonishingly small, scaling linearly with the file size.

postscript (Cambridge UK).

postscript (Canada mirror).

pdf (Cambridge UK).

pdf (Canada mirror).

All postscript files are compressed with gzip - see this page for advice about gzip, if needed.

related publications.
David MacKay's: home page, publications. bibtex file.
Canadian mirrors: home page, publications. bibtex file.