uTorrent, IPv6

Nathan Ward nanog at daork.net
Mon Aug 18 23:56:33 CDT 2008

Sit up and pay attention, even if you don't now run IPv6, or even if  
you don't ever intend to run IPv6.
Your off-net bandwidth is going to increase, unless you put some  
relays in.
As a friend of mine just said to me: "Welcome to your v6-enabled  
transit network, whether you like it or not ;-)".

uTorrent 1.8 is out, as of Aug 9.

uTorrent actively enables IPv6 on XP SP2 and Vista machines in the  
install process (by default, it can be turned off). IPv6 is turned on,  
on lots of PCs.
uTorrent does DHT, so that uTorrent users will talk to eachother to  
exchange peers - IPv6 does not require tracker support.
uTorrent (as far as I understand) knows how to set  
IPV6_PROTECTION_LEVEL appropriately on sockets, so that Teredo is  
actually used.

What does this mean?

It means that many uTorrent end users will have Teredo addresses, and  
many will have 6to4 addresses. As we roll out IPv6 globally, more and  
more uTorrent users will have non-tunnelled IPv6 addresses.
uTorrent users move **LOTS** of data.

This means relay load. There are very few 6to4 relays around the  
world. There are fewer Teredo relays.
If you run a network today and do not have 6to4 and Teredo relays,  
traffic between a 6to4 end user and a Teredo end user will go off-net.  
That costs you money.

So, if you run a network today, deploy 6to4 and Teredo relays,  
regardless of whether you have customer facing IPv6 or not.
If you serve IPv6 content, you are already running Teredo and 6to4  
relays, so that Windows Vista users get near to IPv4-speed access to  
your IPv6 content, right? Right...

Azureus does IPv6 now, but does not turn on IPv6, and does not set the  
IPV6_PROTECTION_LEVEL (as far as I understand), so Teredo is not used.
Windows uses 6to4 if you have a non-RFC1918 address, and it uses  
Teredo if you do not (typically, this means you are behind NAT).
With the huge amount of end users behind NAT, this means that uTorrent  
will have a much wider effect than Azureus has had.

Running a relay *does not* mean that people outside your network can  
use it.
- Who uses your 6to4 relay is controlled by how far you advertise the  
well known IPv4 and IPv6 prefixes.
- Your Teredo relay is used only by Teredo clients trying to get to  
your non-Teredo connected users (ie your 6to4 or natively connected  

6to4 relays can be Cisco boxes, Juniper NetScreen, FreeBSD, Linux,  
etc. OpenBSD does not have 6to4 support.
Teredo relays can be Windows boxes, or Linux/FreeBSD/etc. boxes  
running `Miredo'.

I have pre-built FreeBSD images that run both 6to4 and Teredo relays,  
and can talk BGP to your network. They are about 30MB, so will run on  
a compact flash card, and will happily run on anything from a 133Mhz  
468 (ie. Soekris net4501) through to whatever top of the line server  
you have.

They can also optionally do this "Tui" thing, which uses 6to4 and BGP  
to build direct IPv6 over IPv4 tunnels to everyone else with one of  
these boxes, without you having to configure each tunnel manually - I  
have some central route-servers. Optional, experimental, YMMV, etc.

Thankfully, both Teredo and 6to4 use anycast for relay discovery, so  
if you have load problems you can deploy more of these for the cost of  
a server.

As per usual, I'm giving it away free, see the following URL, or  
contact me off list:
If you don't care about the "Tui" stuff, ignore those parts of the  
document, the rest will work just fine.

ps. I'm looking at packet dumps of things right now, captured from  
torrent clients from the last wee while. I'll be rambling about this  
and pointing at pretty graphs in about a week at APNIC26.

Nathan Ward

More information about the NANOG mailing list