Skip to main content

"A workaround for Bittorrent traffic shaping" or "bashing my ISP"

Recently, I found out that my ISP does traffic shaping with respect to Bittorrent traffic. After my clients sends the Bittorrent handshake, all packets from the respective TCP conversation were dropped, so the remote peer sees nothing of the following. That's not just a minor issue in quality of service, right? That's a breach of contract with respect to universal IP service agreements.

If you are subscribed to UPC in Vienna, this letter to my ISP might be interesting to you. Next to regular rhetoric that they should immediately stop that practice, they are also warned that otherwise I will get them in front of the national conciliation body for telecommunication (http://rtr.at/en).

If you are unlucky to be subscribed such an ISPs, you can use Azureus to work around that.

  • Find out your public IP and ensure that there is some open/forwarded port in your firewall/router or whatever you may have. 
  • Get and setup up http://www.torproject.org/ and Azureus.
  • Run TOR with its Socks proxy.
  • Launch Azureus
  • Azureus-Options-Connection: Enter the public port from before as Incoming TCP/UDP listen port.
  • Azureus-Options-Connection-Proxy Options: Tick "Enable proxying of tracker communication
  • Azureus-Options-Connection-Proxy Options: Tick "I have a SOCKS proxy", and enter the host/port combination of your Tor Socks proxy (most likely localhost:9050)
  • Azureus-Options-Connection-Transport Encryption: "Require encrypted transport" with Minimum encryption level "RC4"
  • Azureus-Options-Tracker-Client: Enter your public IP/port in the "Override Options".
That's it. You are ready to go, and override ANY bittorrent traffic shaping (at least the one that listens for bittorrent signature). The drawback is that your only able to communicate with other Bittorrent clients that know encryption. But that's better than no connection at all.

Comments

Thomas said…
I just got out from under the UPC umbrella (my DSL got acquired along with inode) last month, but evil traffic shaping practices would be entirely within expectations for them.

Still, your technical description sounds a bit weird - wouldn't that lead to a total blocking of all bittorrent traffic? I think we would have heard about this before if that was the case.
Yes, that's right, bittorrent is totally blocked for me. I have two log files from my local UPC side and my own remote tracker, that clearly show that all traffic is blocked. Azureus isn't even able to contact the tracker with a direct peer connection, though ktorrent gets to the tracker, but as Azureus can't talk to any other peer. I suspect ktorrent uses a slightly different connection scheme, one which UPC doesn't listen for.
Anonymous said…
Isn't using tor with bt considered Really Poor Form?
this scheme only uses tor for tracker communications. remember, the Bittorrent tracker protocol isn't really heavy. I'd say surfing the web using Tor causes more traffic at the exit nodes. The actual transfer is still P2P, but as this scheme uses RC4 encryption, there is no unencrypted fragment in the communication a traffic shaper could listen for.
David said…
Did UPC respond yet? Plz keep us updated.

Popular posts from this blog

Liskell standalone

Some time has passed since I last blogged about Liskell. It is not dead nor have I changed my mind that Haskell needs a proper meta-programming facility not to mention a better syntax.Liskell was a branch of GHC once. Now it sits on top of the GHC API, or I should rather say sneaks behind its back as it creates its own API as the original one is not suitable for the stunts I'm interested in. If Liskell sticks with GHC as its soil, I will definitely send patches upstream to refine the GHC API in the areas where it needs more flexibility for Liskell. However for the moment, my main target was to get something out that compiles with a stable version of GHC.You can grab it with the usual: darcs get http://code.haskell.org/liskell/ This version has been tested with ghc 6.10.1 and should install like: ./Setup.lhs configure ./Setup.lhs build ./Setup.lhs install cd LskPrelude make install-inplace Optionally you can run make tests in the testsuite subdirectory. Thanks to community.haskell…

XMonad GridSelect

Personally, I not just need a window manager, I need a focus manager. I tend to think of windows as TODO items, and as there are many TODOs in life there are many windows on my workspaces. Usually a fraction of that can't be closed or worked on immediately, so they linger around on my desktop, cluttering my workspace.I used to use the Tabbed layout. But Tabbed isn't the answer when you are a guy who reports bugs such as "XMonad 0.6 with Tabbed dies when firefox-session-restore slams 40 windows at once on the desktop". In other words, I use a lot of windows. The workspaces concept isn't particularly useful to me either. My mind just doesn't work with mental boxes. So the result is, that I have too few workspaces with too much windows on them, so that Tabbed has trouble displaying useful window titles, and navigating through them is slow and cumbersome (mostly because tab switching generates a lot of useless X Expose events).GridSelect is my answer to that. It…

Removing CHS based access from windows boot loaders

Recently, I had troubles to migrate my Windows installation from VMWare to VirtualBox. When booting the vmware created partition in virtualbox, I got "NTLDR not found". So I sharpened the knives and got down to business with vmware's gdb interface and virtualbox's internal debugger. Tracing the execution showed that the BIOSes of the two products reported different geometries on the INT 13h interface. The generic method contained in the boot loader to read a sector from disk is "clever" as it checks whether the sector is below the maximum sector index that is reachable with the CHS geometry reported by the BIOS. If not, it uses the LBA interface of the BIOS. If yes, the cleverness of the boot loader suddenly vanishes. Instead of using the BIOS reported geometry to break the absolute sector down into its CHS components, the boot loader uses a geometry stored in the so called BIOS parameter block. That's a section of the first sector embedded into the boo…