Your browser will load a Java Applet from our webserver that will emulate BitTorrent and TCP transfers in
upstream and downstream direction.
This means, you need to have a Java plugin installed in your browser
(If you do not have Java you can download it for free from
here).
The applet will connect to our test server and run the selected test. After the test is done, the
website will show the results of the tests whether throttling of BitTorrent traffic could be
detected or not.
We produced a signed version of the applet for MacOS X users. This is necessary that the applet can
run successfully in the Apple Java Virtual Machine as it uses some unique policy settings. To run
this test, you have to "trust" the applet in the pop-up window that will appear once you
started the test. This allows the applet to access the system property "sun.arch.data.model"
(it is used to determine how many bits the underlying architecture uses) which is needed by the
java.nio.channels.Selectors class
We offer two different tests: A simple test (approximately 4 minutes) and a full test (approximately 7 minutes). The simple test uses shorter transfers (each transfer runs for 10 seconds) while the full test uses 20 seconds per transfer to increase the confidence while inferring the results.
Our tool detects two types of throttling:
Certain traffic (e.g. all BitTorrent traffic or all traffic at a certain port) is shaped and
does not achieve the same throughput as a TCP transfer.
BitTorrent traffic is interrupted using forged TCP RST
packets (you can find more information about this type of throttling in a
Whitepaper
from the Electronic Frontier Foundation).
The test runs transfers using the popular BitTorrent protocol as described in the official
specification. First, the connection is
established using BitTorrent handshake
messages and pieces of data are requested using
BitTorrent request
messages. The other peer sends the data as BitTorrent piece
messages. To tests uploads and downloads, your host will first act as a sender and then as a receiver.
if the Java Applet saw a TCP RST terminating the transfer, we check on our measurement server
(using tcpdump
) if the server sent the TCP RSTs or if there are even incoming
TCP RSTs. This helps us to identify forged TCP RST packets.
To detect if an ISP rate limits BitTorrent traffic, we also run plain TCP transfers and compare the achieved throughput with the one from the BitTorrent transfers. If the TCP transfer achieves twice as much throughput as the BitTorrent transfer we report throttling of the BitTorrent transfer.
All experiments are run at a well-known BitTorrent port as well as on a non-BitTorrent port. This allows us to decide if an ISP throttles (1) all traffic at a well-known BitTorrent port, (2) all transfers using the BitTorrent protocol on every port, or (3) all transfers using the BitTorrent protocol on well-known BitTorrent ports.
To allow accurate measurements you should stop any large downloads (e.g., BitTorrent) that might run in the background.
In case you have questions about this tool or our research, please visit our
transparency project webpage or contact us via e-mail: