[CentOS-mirror] IPv6 Bittorrent tracker for CentOS torrents

Sat Sep 24 23:28:29 UTC 2011
Anssi Johansson <centosmirror at miuku.net>

Hi, this message is related to the enhancement request I filed at 
http://bugs.centos.org/view.php?id=4652 where I proposed to have an 
IPv6-enabled CentOS torrent tracker.

I've been operating a torrent seedbox at http://norsu.miuku.net/ for 
about a year now and it has been pushing bits at a rate of about 
5TB/month. It's not restricted to serving only CentOS data, but I'd 
estimate that it has served about 5TB of CentOS data in total so far. 
Yes, I know there are proper mirror servers which have traffic amounts 
much higher than that, but that's beside the point.

My primary goal with setting up that torrent seedbox was to increase the 
amount of bits transferred over IPv6, as in, I'd serve primarily IPv6 
clients and IPv4 clients would get only the leftover bandwidth. 
Unfortunately the amount of IPv6 traffic is still quite low, but I'd 
like to help in changing that trend, even if only by a tiny amount. I'm 
a computer science student nowadays and my studies concentrate on 
computer networks, thus IPv6 adoption is a particularly interesting 
subject to me.

Besides the fact that there might not be that many IPv6-enabled hosts 
downloading data with bittorrent, there's also a technical problem which 
hinders IPv6 usage with bittorrent. Obviously most IPv6-capable peers 
are also able to connect to IPv4 trackers, so that's not the problem. 
The problem is how the tracker gets to know the client's IPv6 address if 
the client connects to the tracker with IPv4. And if the tracker doesn't 
know the client's IPv6 address, it can't tell that IPv6 address to other 
clients connecting to the tracker, thus forcing clients to connect to 
each other using IPv4 even if they were both IPv6 enabled.

There are bittorrent protocol extensions that allow the client to 
include the IPv6 address in the data when connecting to the tracker, but 
my experience shows that most trackers seem to either not implement 
those protocol extensions, or intentionally disregard any extra IP 
address information. By having a tracker with an IPv6 address, the 
tracker can simply record the source address of the connection.

The problem is that CentOS has only an IPv4 tracker at this moment. I'd 
suggest setting up a separate tracker that would be accessible via IPv6.

As a proof of concept, I have set up an instance of OpenTracker 
(compiled from source from 
http://erdgeist.org/arts/software/opentracker/) on a separate 
IPv6-enabled server; some assorted files of that tracker can be seen at 
http://tursas.miuku.net/tracker/

I have also modified (with the help of torrenteditor.com) some existing 
CentOS 6 torrents to include my IPv6-enabled tracker. These torrent 
files can be found at http://norsu.miuku.net/torrents/ipv6/

Those torrents could be placed in the appropriate place so that they'd 
get used for any new CentOS 6 downloads. Please note that even though 
the torrents have been modified to include an additional tracker, the 
info hash is unchanged. This means that the torrent swarm won't be split 
even if someone now starts using the new torrents. Using these modified 
torrents now would enable us to test the new tracker with a bit less 
traffic, as compared to trying the new tracker only when C6.1/C5.8 is 
eventually released.

I offered to maintain this IPv6 torrent tracker server myself for the 
benefit of the CentOS community. The offer is still valid, but Karanbir 
suggested that there might already be some CentOS servers which might be 
suitable for this purpose. Someone with the appropriate privileges would 
need to set up the IPv6 tracker on some IPv6-enabled server and set up 
an AAAA record pointing to that server (perhaps named 
ipv6.torrent.centos.org, as in my modified torrents).

The torrent creation scripts would need to be updated to include "-a 
http://torrent.centos.org:6969/announce -a 
http://ipv6.torrent.centos.org:6969/announce", assuming you're using the 
standard mktorrent. Please note that "-a URL1,URL2" would create a 
different kind of torrent than "-a URL1 -a URL2". The "-a URL1 -a URL2" 
method is preferred as it'll create two separate tracker groups.

My focus point with this project is on dual-stacked machines -- if the 
machine has a possibility to download the torrent data over IPv4 or 
IPv6, I'd prefer that it'd be done over IPv6. This is slightly different 
than the IPv6 mirrorlist project that was discussed on this list some 
time ago, as it was aimed at IPv6-only networks. In particular, we 
wouldn't need to have IPv6 connectivity for centos.org name servers for 
this IPv6 tracker project.

I feel that setting up an IPv6 torrent tracker wouldn't be that much of 
work and it'd signal that CentOS is doing its share when it comes to 
IPv6 adoption.

Perhaps the forthcoming CentOS 6.1 torrents will already include the new 
IPv6 torrent tracker?