– measuring the Internet.

Network Architectures and Services

The extended NAT tests are a collection of tests that require raw sockets or take much more time than the usual NAT tests. To run the test you need:

  • A Linux PC with a mobile broadband modem (USB or integrated).
  • Python 2, python-scapy and python-netifaces installed
  • Agree to run the client as root

Some notes about the client and the measurements:

  • The client adds an iptables rule to block the TCP RST messages from the Linux kernel. The rule is removed again after the experiments.
  • The complete tests take around 3,5 hours and generate traffic up to 40 MB
  • You can limit the duration of the timeout test, which takes by default one hour.
  • There is a test that opens 213 UDP and TCP connections, which must be enabled explicitly.
  • The result is a JSON file that contains all details from the experiments. A evaluation script will be available soon.

To run the tests, download the client here and unpack it:

$ unzip
$ cd extended-nattests

You need to know the interface name of your modem, use ip a to get it. As mentioned before you can disable or restrict some tests:

Short timeout test without port space exhaustion test

The timeout test takes only 10 minutes now:

$ sudo python -i ppp0 -s --max-timeout 10

Normal timeout test without port space exhaustion test

The timeout test takes 60 minutes by default:

$ sudo python -i ppp0 -s

With port space exhaustion test

The port space exhaustion test open 213 UDP and TCP connections.

$ sudo python -i ppp0 -s --enable-port-exhaustion

Submitting the results

After the tests are finished, you get the file result.json. Please send this file to hertle (at) and also add the name of your ISP. Thank you!