BNBT Tracker Links Documentation
Concepts, Examples and QuestionsHow does the tracker link itself work? How does it share peer information?
The tracker link works and shares peer information in much the same way that multiple-server IRC (Internet Relay Chat) networks relay chat information. As a peer announces to one tracker, it's announce request is processed and sent across the link to the hub and other leaf trackers and stored in the individual tracker's peer database. If the trackers are allowed directory enabled, and an announce comes in on a tracker over the link for a torrent that the tracker doesn't have, it is ignored and removed from the update queue. On torrents that are common to multiple trackers, all trackers that have the torrent act as if they were one tracker.
Four trackers, Trackers 1-3 and Tracker-hub
A client announces to a torrent common to all 4 trackers to tracker 1.
The information about that client (peer id, IP address, port, torrent infohash) is relayed to the tracker hub, where it is then relayed to the remaining two trackers.
A client announces to tracker 2 on the same torrent. It gets the peer information given to the network by the client that announced to tracker 1.
I have an existing tracker that is having problems, how do I link it to another to gain additional performance?
This is where just linking a new tracker and hoping the load distributes automatically won't happen. You need to modify all your existing torrents for use on the new tracker network or configure your tracker's DNS to point to all trackers at once. If you have trackers running on different ports for each system in the network, or your DNS registration does not permit round-robin DNS, the DNS option just plain won't work.
Also, existing downloaders will need to re-download the torrents in order to take advantage of the new tracker network if you can't set up the round-robin DNS. New downloaders won't need to make that change.
The best way to adjust a lot of torrents at once for multitracker is to use the btreannounce.py from the BitTornado Source Package with Python installed. Once python is installed and the BitTornado source package is extracted (I extract mine so that btreannounce.py is in c:\btsrc) you can use the following command on windows from your allowed directory or torrent hosting folder (or a similar command on linux, i don't know what it is) to edit all the torrents at once.
for %a in (*.torrent) do c:\btsrc\btreannounce.py (announce URL) --announce_list (list of announce URLs for each tracker, all comma separated) %a
What this command does is goes through and automatically changes the announce URL in all the torrents in the folder to match the one you specify and generates the announce-list for the file in a proper manner so that supported clients will automatically load balance.
How does linking multiple trackers balance the load?
The BitTorrent tracker code is currently very optimized, using almost immeasurably small amounts of bandwidth even for thousands of peers, so bandwidth concerns usually aren't all that major even in single tracker environments. When you get problems that require multiple trackers to be linked you are dealing with issues relating to numbers of connections not bandwidth. What linking multiple trackers does is spread those connections across multiple systems that can't handle much on their own, but as a group can handle as much if not more traffic of their bigger single-tracker cousins.
Adding a tracker link does not automatically balance the load, as I have described above, but will allow for growth in quite measurable ways in the future.
A friend and I are both running trackers and want to link to each other. What steps should we take to get the link to work right?
The steps you should take are:
One or more of the trackers on my network was disconnected from the network for an extended period.
What special steps do I need to take if this happens?
If the trackers re-establish their connections properly on their own, you do not need to take any special steps to resynchronize them unless you released new torrents while they were down. If you released new torrents, you need to add them to the trackers that were down manually. Other than that, the tracker link will resynchronize the affected trackers automatically over the span of 1 hour and 30 minutes (3 announce cycles, 2 ghost peer expiration cycles)
Sometimes a tracker does what is called a "soft-split" where the link is still established and listed as active in the administration panel, but no peer information is being sent over it. If that happens, you need to go to the administration panel of the affected tracker and choose the "Reset Tracker Link" function to kill the connection to the hub and re-connect it. After that, resynchronization happens normally after 1h30.
CBTT - A C++ BitTorrent tracker based on BNBT by Trevor Hogan