BitFountain is a P2P system that applies an erasure coding technique to exchanged data. As you may have already guessed, BitFountain is based on BitTorrent, the most famous, reliable and fast P2P protocol of the latest ten years. However, BitTorrent uses TCP (only in recent times it has begun to use UDP, mostly for streaming-related applications) and has “indexed” blocks of data that must be exchanged in order to complete the download (receiver asks for block #x #y #z).

Isn’t more reliable and fast a BitTorrent system where every packet is equally critical as the others? Of course, given the fact that some torrents have no seeds (dead-torrent) just because some few blocks are not available! Here comes BitFountain: by applying a Digital Fountain erasure code (Raptor), we encode every block of data in order to treat all blocks identically: as soon as the receiver has received enough encoded blocks, it stops receiving and decode the piece (the encoding is applied to piece level hierarchy).

BitFountain is written on Python (and is based on BitTorrent by Bram Cohen) and was presented as my M.Sc. thesis in December 2008. It also awarded me a 6 months research experience at the “Network Research Lab” at UCLA. The work was continued by Alessandro Cattaneo and STM has published a paper on it.

Wanna know more? You can have a look at my thesis and visit the BitFountain project site
Do you want to know what’s under the hood? Take a look at the BitFountain git repo on GitHub.