Researchers have created a "selfish" BitTorrent client:
http://bittyrant.cs.washington.edu
I did something similar a couple years ago.
The first law of peer-to-peer (P2P) networks is that someone needs to upload 100% as much as they download. As soon as the average person is only contributing 99% as much as they take, the system breaks down. Most P2P networks have this flaw, but try to make it up with tricks, such as having a corporation funding servers to inject extra bandwidth into the system.
BitTorrent largely sucks as a P2P client, but makes up for it by the fact that it tries to enforce this rule. Unfortunately, the enforcement is not "hard" but "soft". It's easy to game the system.
In my experiments, I found the following:
1 - Open a TCP connection with ALL peers, hunting for the best ones, rather than a small set of peers that suck.
2 - Upload to those that respond the best. In other words, find the gullible people uploading more than they are downloading, and ride them hard. (This appears to be what BitTyrant does).
3 - Upload corrupted fragments, especially all zeroes (easily compressed if the other side is a dialup). The RIAA can only sue you if you UPLOAD content, not if you DOWNLOAD. Therefore, change it so that you don't upload. The other side will eventually figure out that the data you sent was corrupted and discard it, but not before you've gotten a lot of downloads.
In my own experiments, I could maximize my 2mbps Internet link for popular torrents while uploading ZERO good data.
The BitTyrant FAQ claims that they won't hurt BitTorrent, but they are wrong. The technique only works for the few people doing it, once that techniques become widespread, it will bring down the network until they fix the protocol.
BTW, there is a simple fix for this: force peers to upload garbage data. In other words, force every download to be matched with an upload, and if the peer has nothing to upload, force them to upload garbage. This will only reduce efficiency by a small bit, but it will wipe out all incentive to cheat.
No comments:
Post a Comment