← All projects

Rebuilding a testbed that no longer exists

Replicating PropShare: Fair Bandwidth Allocation in BitTorrent

Team Rogue Packet: Yousef AbuHashem, Fabio Ibanez, Shounak Ray, and Jacob Roberts-Baca. Stanford CS244, Spring 2025.

P2PNetworkingDistributed Systems

BitTorrent gets described as tit-for-tat, and that description is wrong. It behaves like an auction. Peers bid for bandwidth by uploading to their neighbors, the top bidders get unchoked, and then every winner receives the same slice regardless of how hard they bid.

That last part is the exploitable bit. If everyone in the winners’ circle gets paid the same, your optimal move is to contribute the bare minimum that keeps you in it. BitTyrant clients do exactly that. BitThief clients go further and barely upload at all, freeloading off optimistic unchoking.

PropShare was the proposed fix: pay out proportionally. Upload twice as much as someone else, get twice the bandwidth. Suddenly gaming the auction stops paying.

We set out to replicate the paper that showed this worked.

The part nobody warns you about

The original experiments ran on PlanetLab, a globally distributed research testbed. PlanetLab is dead. It has been for years.

So before testing anything, we had to rebuild the ground it stood on: a multi-region AWS EC2 deployment with custom orchestration, YAML-declared node roles, controlled launch ordering (leechers first, then seeders, so nobody gets a head start), live log streaming, and centralized collection of download times. Then we implemented both the vanilla BitTorrent client and the PropShare client, including seeding, peer discovery, optimistic unchoking, auction-based unchoking, and bandwidth accounting.

Most of this project was infrastructure. The experiment was the easy part.

Results, honestly

We got three runs in, at PropShare-to-BitTorrent ratios of 0.33, 0.6, and 1.0.

Performance comparison between PropShare and vanilla BitTorrent
PropShare against vanilla BitTorrent across three configurations. Note how much the confidence intervals overlap.

PropShare performed comparably to vanilla BitTorrent. Not better in a way we could defend. The variance was high and the confidence intervals overlapped enough that claiming a win would have been dishonest.

We think the gap comes from three places. PlanetLab was a genuinely messier system than a tidy set of EC2 instances, so some of the original effect may have depended on that mess. EC2 latency profiles differ from geographically scattered PlanetLab nodes. And the original paper left real implementation details unspecified, so our PropShare and their PropShare are not guaranteed to be the same algorithm.

What replication actually teaches you

Assumptions are unavoidable

The original never said which BitTorrent client was the baseline. The spec allows many, and they do not behave alike.

Infrastructure is the project

Hand-rolled AWS orchestration gave us control and ate our time. Kubernetes would probably have been the adult choice.

Inherited code has a tax

We built on PyTorrent and paid for it. What it claimed to support and what it did were different things.

Small gaps compound

An unspecified detail, like who gets bandwidth when one node monopolizes a piece, can swing the whole result.