Enter Avalanche: P2P filesharing from Microsoft
Researchers at Microsoft's computer science lab in Cambridge have developed a peer-to-peer filesharing system that they say overcomes the scheduling problems associated with existing distribution protocols such as Bit Torrent.
The researchers claim download times are between 20-30 per cent faster, using their network coding approach, than on systems that only code at the server, and between 200 and 300 per cent faster than distributing un-encoded information.
Naturally, Microsoft is very keen to stress that this technology should be used for distributing legitimate content. It even put that in italics in the press material.
The basic principle of the system, dubbed Avalanche, is pretty much the same as BitTorrent. Certainly the problem it solves is: a large file needs to be distributed to many people. One server does not have the bandwidth to deal with all that traffic, so you need to find another way of getting the file to everyone who needs it.
If the file is broken up into smaller pieces, these can be distributed among a smaller number of people, who can then share the pieces to make sure they all eventually have the complete file.
The problem with this approach, as anyone who has ever tried to download content on the system - legitimate or otherwise - knows, is that towards the end of a download, any one downloader could have a while to wait for the particular pieces he needs. As the number of receivers increases, scheduling traffic also becomes more complex, and the whole process slows down.
Microsoft Research's approach gets around this by re-encoding all the pieces, so that each one that is shared is actually a linear combination of all the pieces, fed into a particular function. The blocks are then distributed with a tag that describes the parameters it contains.
Once you have downloaded a few of these, you can generate new combinations from the ones you have, and send those out to your peers. Collect enough of these pieces, and you will have enough information to reconstruct the whole file. Even if you don't have all the original pieces distributed by the person who held the original version of the file.
Peers can make use of any new piece, instead of having to wait for specific chunks that are missing. This means no one peer can become a bottle neck, since no piece is more important than any other. It also means overall network traffic is lower, since the same information doesn't have to travel back and forth multiple times.
Have a read of the research paper here (pdf), if this is your kind of thing. ®