Home  +  Forums  +  C++ and Sockets  +  C++ and SQL: MySQL, sqlite, ODBC  +  Miscellaneous Projects

trackerbt - a distributed bittorrent tracker

BitTorrent is a highly successful distributed file transfer protocol. Some would like to call it a peer-to-peer network, but BitTorrent in itself lacks much of the functionality one would wish of a peer-to-peer network. There is no way to search for content with BitTorrent; search is a big part of other peer-to-peer protocols.

Latest BitTorrent developments

Bram Cohen is releasing a trackerless capable bittorrent client.

The Azureus BitTorrent client has support for distributed trackers. Read more here.

About trackers and trackerbt

One crucial component of the BitTorrent structure is the tracker. This is a small program which is hosted by someone who wants to share a file using BitTorrent. Anyone that wants to download that file needs to connect to the tracker to receive a list of other peers already participating in the download of the file. The tracker is a standalone program. If the tracker goes offline, new peers will not be able to join the download. This makes the tracker the weak link of the BitTorrent solution.

What if the tracker were able to share its peer list with other trackers? This would create a redundant network of trackers, all aware of all peers participating in the download. Peak load would be reduced, and if one tracker goes offline new peers would still be able to contact one of the other trackers and join the download.


The Distributed BitTorrent Tracker solution
Solution Description

Each download is aware of one tracker URL. Using DNS, the tracker hostname can be given multiple IP addresses (many A records). When a peer tries to contact the tracker, it will randomly use one of these IP addresses.

The minder acts as a tracker for the trackers. Using SSL, tracker peer lists are distributed to each tracker, who can then contact other trackers to keep "the peer list" up-to-date.

trackerbt Features

  • Secure communication to/from the minder
  • Potentially secure communication between trackers
  • XML configuration file ( example )
  • Written in C++, using the multiplatform C++ Sockets Library


Latest version trackerbt-0.1.3.tar.gz 2006-10-03
trackerbt-0.1.3.zip 2006-10-03

"trackerbt" is also available through the FreeBSD Ports Collection. Find it here.

Older versions
trackerbt-0.1.2.tar.gz 2006-04-21
trackerbt-0.1.2.zip 2006-04-21
trackerbt-0.1.1.tar.gz 2005-04-14
trackerbt-0.1.tar.gz 2004-04-20

Release plan*

0.1 http tracking ability (request / response working)
minder connectivity
distributed peer list capability
0.2 tracker compatibility
0.3 http status page
0.4 https
1.0 stable

*) Dates intentionally left out



Source code documentation (generated by Doxygen). Select "File List" from the doxygen index page to see a list of all files in the example. Then select "[code]" to read the source code of that file. Files beginning with lowercase are usually the main() starting point, and files beginning with uppercase usually contains a class of the same name as the file itself.

Class Diagram

Live network top. map

Network Map
Network Map
Page, code, and content Copyright (C) 2021 by Anders Hedström