Bit horizon
A small idea for increasing the performance of peer-to-peer communications for highly popular files.
Imagine a BitTorrent file that becomes popular overnight. There are
thousands of clients trying to download it, so for each client there are
thousands of possible source to get the file from. However, one client can
only connect to a small number of source at any one time (50-100). Due to
randominess of that connection, such sources could be from the house next
doors or could be from China or Australia. This creates excessive stress
on the whole Internet as the parts of the file fly all around the world
over and over.
I suggest to introduce a horizon effect in clients when the number
of peers is much higher then the max number of connections the client can
make at one time.
The easiest would be to make the decisions based on ping speed, but
other criteria could also be useful.
For an example implementation consider this: a new client joins in
downloading a very popular file on a P2P network, he discovers enough
peers to enable the horizon feature, the client connects to 100 random
peers and takes their ping times, a distribution is calculated and a
horizon is established - all peers with ping higher then the horizon value
are deemed to be too far and are disconnected, freeing the resources for
finding closer peers. The algorithm would continue to update horizon
calculations and eventually would converge down to a set of closest peers
and that would give both optimum performance to the client and less stress
for the global Internet backbones.
Separate horizons could be set up for seeders (clients with fully
downloaded file) and lechers (clients with only partially downloaded
file), so that we do not have a whole section of the network stagnating
with no seeds in the area.
Anyone up to make this work in, for example, Azureus?