IPv6-only BitTorrent tracker
IPv6?
IPv6 is the successor of the currently common communication protocol used in the Internet, IPv4. It is currently mainly used by power users, but should gain traction among endusers pretty soon. By restoring end-to-end connectivity (without NAT) it is especially helpful for P2P-applications like BitTorrent.
If you do not have IPv6 connectivity and want to experiment with it you can get free tunneled connectivity from various providers, including HE and SixXS.
IPv6 and Bittorrent
Most Bittorrent clients, including µTorrent, Azureus, Transmission and libtorrent (Rasterbar) support exchanging data with both IPv4 and IPv6 peers at the same time today. libtorrent (Rakshasa) (known for the famous rtorrent) does not support it yet, but there is a work going on which will hopefully be integrated soon.
Unfortunately, to exchange data with IPv6 peers they have to find them first, which has been a problem for quite a while now. In general BitTorrent clients have three ways to aquire lists of possible IPv6-endpoints.
Tracker
Clients can connect to one or more central database servers called Trackers. These systems keep track of all clients currently sharing a specific content (identified by a unique hash) and share this information with the connecting clients, allowing them to connect to other clients to pull data from.
Historically IPv6 has been supported in trackers for a long time, since the original Tracker protocol exchanged IP address information as strings and was thus agnostic of the used protocol. To reduce the overhead a compressed format for exchanging peer data has been specificed in BEP 23. IPv6-extensions to this protocol are specified in BEP 7.
Clients supporting this are µTorrent and Vuze, as well as all libtorrent (Rasterbar) based clients. The major exception is Transmission, which supports (as of version 1.80) connecting to IPv6 peers, but not to IPv6 trackers. An explaination for this can be seen in their bugtracker. This has been somewhat fixed in version 2.20 to allow connections to IPv6-only trackers. Ubuntu has backported this change into 2.13 for Ubuntu 11.04 (Natty Narwhal).
While the software side was easy IPv6-support never got much traction in public trackers. Aside from projects like the SixXS IPv6 Tracker and Debian the only major tracker ever gaining IPv6 support was The Piratebay. Unfortunately they suffered from outages due to overload and network problems while being in major legal disputes at the same time. Today, TPB does not run trackers anymore.
Peer Exchange
With Peer Exchange (or PEX) clients that are connected to each other can share information about the third-party clients connected to them. This is implemented in all major clients.
Distributed Hash Table
With Distributed Hash Tables (DHT) clients can build a self-maintaining overlay network between each other (Peer-to-Peer) and exchange any kind of information over it. In Bittorrent this is used to find the connection information for peers sharing the same content. For IPv4 DHT is supported for all major clients.
Azureus/Vuze has IPv6-enabled DHT since a couple of years. Unfortunately this extension is Azureus-specific, so other clients do not participate in the DHT and thus cannot be found.
An official standard for IPv6 DHT has recently been standardized in BEP 32. This is supported by Azureus with the additional mlDHT Plugin, Transmission (starting in 1.80) and various libtorrent (Rasterbar)-based clients.
The most widely used client µTorrent does not support any kind of IPv6 DHT yet.
Conclusion
IPv6 could play a much larger role in BitTorrent today if the trackers would be available over IPv6 as well. PEX does not work too well with the current density of IPv6 peers, and DHT is either completely unsupported (µTorrent) or will not be upgraded to in large numbers within the next 12 months (Transmission 1.80+).
The Project
In order to aid BitTorrent over IPv6 for the 26th Chaos Communication Congress (26C3) recordings I set up an IPv6-only tracker using the famous opentracker software by erdgeist. Thanks to the nice guys at FeM, who are responsible for the creation of the recordings, I got the tracker included into the official .torrent files shortly after the recordings were released.
This tracker is free for use by all legal Bittorrent content. I do not have time nor energy to fight with the owners of illegally shared content. Please respect my wishes and do not use this tracker for questionable content. If this happens nevertheless I might be forced to limit the tracker to known content (by hash). If you have legal content you want to share using this tracker please consider sending me the hash, I will add it to the whitelist.
How to use
The announce URL (used at torrent creation) is http://tracker.birkenwald.de:6969/announce.
ATTENTION: This is an IPv6-only tracker. Clients not having IPv6 will not be able to connect. Do NOT use this as single tracker in any Torrent you create, most of the clients out there will not be able to connect. Instead, use the multi-tracker extensions as defined by BEP 12 to add several tracker groups to a torrent.
mktorrent
This section is about mktorrent by esmil, which is included in the Debian repository. There is another programm called mktorrent by borg which takes slightly different options (see below).
$ mktorrent -a <youripv4tracker> -a http://tracker.birkenwald.de:6969/announce -o file.torrent file
mktorrent-borg
There is also another mktorrent implementation by borg.
$ mktorrent -a <youripv4tracker> -mt <youripv4tracker> -mt http://tracker.birkenwald.de:6969/announce -o file.torrent file
Azureus/Vuze
When you create a new torrent, put your IPv4 tracker into the Announce URL on the first page and check the „multiple torrents“ option. On the next page you need to create several tracker groups, one for each tracker you are going to add. You can do this by pressing „Edit“ and adding new tracker groups using the context menu (right mouse button).
µTorrent
When creating a new torrent put all trackers into the appropriate field, seperated by an empty line (not just a newline, an empty line). An IPv4 tracker should probably come first.
Bittorrent/Bittornado
The old python reference implementation Bittorrent.com and its fork Bittornado also support multiple trackers
$ btmakemetafile <youripv4tracker> --announce_list '<youripv4tracker>|http://tracker.birkenwald.de:6969/announce' file
you can also use the included tool btreannounce with the same parameters to change an already existing .torrent file.
Statistics
This is still a TODO item. Various experimental graphs can be found here.
Current Users
Projects currently using this tracker include
Ubuntu uses the described multi-tracker setup with their own dedicated IPv6 tracker.
Contact
If you have further questions or comments don't hesitate to contact me.
E-Mail: berni+tracker@birkenwald.de
IRC: berniv6 @freenode or @IRCnet