[Bloat] BitTorrent and IPv6 [was: tackling torrent...]

Juliusz Chroboczek jch at pps.univ-paris-diderot.fr
Sun Jun 21 11:32:07 EDT 2015


[Removed AQM from CC.]

> 4) *All* the traffic was udp. (uTP)

Yes, modern BitTorrent implementations prefer µTP to TCP.  Unfortunately, 
the implementation of µTP in Transmission doesn't perform PMTUD, and gets 
packet sizes wrong most of the time.  (Yes, I spoke about this to Arvid.  
No, he wasn't particularly concerned.)

> Despite ipv6 being enabled (with two source specific ipv6 ips), I did 
> not see any ipv6 peers connect.  Bug? Death of torrent over ipv6? 
> Blocking? What?

Please check that you allow incoming IPv6 to your peer, for both TCP and 
UDP.  Obviously, setting port forwarding for IPv4 is not enough for that — 
you'll need to explicitly set up a hole in your IPv6 firewall.  If using 
OpenWRT:

     config rule
             option target 'ACCEPT'
             option src 'wan'
             option name 'Transmission-v6'
             option family 'ipv6'
             option dest '*'
             option dest_port '12345'

for the right value of 12345.

If you set the logging level in Transmission to Debug and let it run for 
twenty minutes or so, you should see periodic "Starting IPv6 DHT announce 
(... good ...)".  If you keep seeing "firewalled" instead of "good", 
you've got an issue.

Once you're positive you don't have firewalling issues, the following 
might be of interest.

I've done quite a bit of work a few years ago to improve IPv6 support in 
Transmission.  The main problem is how to learn the IPv6 addresses of 
your peers:

1. Many trackers don't support IPv6.

2. IPv6 is supported by PEX (gossip, peer-exchange).  I'm not sure if 
other peers honour IPv6 PEX when connected over IPv4, but Transmission 
certainly does.

3. I've implemented a protocol extension that allows peers connected over 
IPv4 to exchange their IPv6 addresses.  This is only marginally useful, 
but can sometimes allow bootstrapping IPv6 PEX without tracker support.

4. Most importantly, I've implemented IPv6 support for the DHT (BEP-32) [1].  
BEP-32 is now implemented by Transmission, Vuze, Tixati, KTorrent and 
Shareaza.

Points (1) through (3) are interoperable with µTorrent/BitTorrent and 
libtorrent, which constitute the vast majority of deployed BitTorrent 
peers.  Unfortunately, µTorrent and libtorrent do not implement BEP-32, 
and since these implementations constitute the vast majority of deployed 
BitTorrent peers outside China, this seriously limits the effectiveness of 
the IPv6 DHT.  (Yes, I've spoken to the µTorrent developers, and while 
they reviewed BEP-32 favourably, they had no plans at the time to implement 
it.)

[1] http://www.bittorrent.org/beps/bep_0032.html

-- Juliusz



More information about the Bloat mailing list