PEX ping

PEX ping is basically a do-it-fast approach to decentralized tracking. The idea is to enhance BuddyCast with fresh ip addresses for active peers in a given swarm. So, buddycasted torrents already have the swarm information, no need to contact the tracker.

Johan: there is a split between Buddycast gossip on peers and content and Remote Search. Remote search queries are a hybrid between gossip+gnutella floods as each peer keeps almost a complete replica of known content. The idea is to only add 1 extra field to the remote query.

Problems:

  • constant background overhead of connecting to every of last 50 swarms and begging for PEX messages (PEX is not standardized so it is unclear when/whether contacted peers will PEX)
  • long-lasting idle connections might be considered an abuse
  • more overhead in BuddyCast
  • kinda insecure
  • we have to lie as if we'll say "Not interested" and the peer says "not interested" then we get disconnect; Johan! It is a very sophisticated protocol violation relying on unstandardized client behavior. It is too bad.
  • finally, the show stopper: the peer may start sending us his bit-field and everything (or will expect us to send him the bitfield); that brick is too heavy. (I'll check the code twice; I think it must do that.)

Advantages:

  • trackerless
  • fast bootstrapping (precached IPs)
  • may work being implemented in Tribler only

As a security measure, a peer is supposed to contact either

  • previously known peers or
  • peers mentioned in several buddycasts (what is the point? several buddycasts may just retell the same PEX list by the same original 'author')