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.
- 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.)
- 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')