I have a torrent started and I see multiple trackers for it. Does each tracker have its own isolated swarm?

If not, how does the bittorrent protocol determine how to form swarms (what rules are used)? Or is swarm management at the mercy of the trackers (i.e., a malicious tracker could create a swarm for each new leecher)?

Does a peer in a swarm not transfer file data with a peer in a different swarm?

Applied side questions

How can I join a particular swarm manually in µTorrent?
If that's not possible, how does µTorrent decide which swarm to put me in?


Each tracker maintains its own table of peers, so there is a separate swarm for each tracker. But since they are all working on the same torrent, the peers will work with each other no matter how they find out about each other.

Bittorrent peers trade pieces of files, split up in to pieces where each is validated by a hash. The entire file has a hash as well.

If a peer B receives a piece from peer A, and it validates against the hash of that piece as provided in the Bittorrent file, peer B is happy and doesn't care where peer A got it from.

There's nothing stopping a Bittorrent application from connecting to all available trackers identified in the torrent file and reporting accordingly to all peers on all trackers. You can't have the same piece in transfer from multiple peers, but you can have different pieces in transfer in paralell, and it doesn't matter whether from one or multiple trackers, as long as the Bittorrent application is keeping things straight and not doing something like asking for the same piece from two different peers (which it shouldn't be doing anyway).

Malicious peers are possible, but if all they do is provide bad pieces, they'll fail the SHA-1 hash, and then receiving peers will stop communicating with them. Unless SHA-1 is broken, it's not possible to feed bad data in a torrent. Keep in mind that Bittorrent gives all peers your IP address by design. So if a party wanted to find out your IP they don't have to do anything special. Something like a "malicious" tracker that simply never has any peers is possible, but many Bittorrent applications support DHT which is an alternate, trackerless way to find peers for a torrent. And there is nothing stopping anyone from putting the torrent on another, valid tracker.

Swarm management - the tracker merely tells any connecting peer some IPs of other peers that it saw recently. That's all the tracker does. The peer does the rest including checking in with the tracker and starting communication with other peers and everything else.

How can I join a particular swarm manually in µTorrent?

It's been awhile since I've actually used µTorrent but try right clicking the torrent and looking for options that let you check the trackers it read from the torrent. If you can't do this, you would need to remove the trackers you don't want to use from the .torrent file itself.

If that's not possible, how does µTorrent decide which swarm to put me in?

I'm not sure. If I happen across this information I'll update this.

  • I saw a lot of definitions of swarm. One of them says that the relationship between tracker:swarm is 1-to-n ( cfpm.org/~david/posters/patarin-hales-delis-poster6.ai see figure2), the other one says that it's torrent:swarm - 1:1 (all peers for one torrent file are in a single swarm) and you imply it's tracker:swarm - 1:1 (" there is a separate swarm for each tracker") – Wuschelbeutel Kartoffelhuhn Aug 12 '13 at 12:00
  • The tracker is pretty stateless. Peers hit the tracker for a request of info and then move on, asking again later. They do not maintain a connection to the tracker. As far as the precise definition I guess it could vary but that is how it is. – LawrenceC Aug 12 '13 at 14:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.