In this section, we discuss a new class of erasure-correcting codes, called digital fountain codes [, ], that can be used to provide protection against erasures caused by a primary user appearance over a secondary user link. These codes are capable of providing protection from the effects of packet loss irrespective of the loss model of the secondary user link. By recovering lost data packets without requesting retransmission from the sender, these codes provide reliability in various network applications  such as multicast, parallel downloading, video streaming etc. And, like a water fountain producing an endless supply of water drops, any of which can be used to fill a glass, these fountain codes can generate an unlimited number of encoded output packets, any of which can be used to recover the original input packets. They have the following characteristics:
The ability to generate a potentially limitless amount of encoded data from any original set of source data and provide reliable message delivery over extremes of low to high network losses.
The ability to recover the original data from a subset of successfully received encoded data regardless of which specific encoded data has been received.
Exceptionally fast encoding and decoding algorithms, operating at nearly symmetric speeds that grow only linearly with the amount of source data to be processed and independently of the actual amount of network loss.
In the following sections, we discuss ...