Network Architecture Tester
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.

Network Architecture Tester

The Network Architecture Tester (NAT) is a tool for testing whether a given network has a clean architecture. The software is designed to run on a Raspberry Pi environment, but is easily portable to other environments as well.

The basic operation of the tester is to plug it into an Ethernet cable, and let the tester determine whether the network is correctly designed. While the tester is establishing a connection to the network, the yellow led blinks. If the network is correctly designed, a green light lights up. Otherwise, the red "Architecture Fault" light lights up.

The tester architecture is configurable and network-driven; the device where the tester runs has a framework that supports user-defined testing methodology. One user may employ a basic connectivity test while another one may wish to check for something else.

The GitHub home for this project is The tool has been written by Jari Arkko at Ericsson Research and is open source under the BSD license. It also includes, separately, the hopping and tlsver tools, see and

Image of a tester


The device should be plugged into USB power (requires micro-USB at 2A). The device comes up in about a minute, and lights its leds in a specific sequence. Once the yellow led is blinking, the tester is ready for testing. Plug the device into a given network using an Ethernet cable, and in a few seconds the test results should be seen in the leds. If the yellow led continues to blink, the given network does not have apporpriate connectictivity for the tests to be performed.

The devices have no user interface beyond the leds. Internally, they have an identifier (dev0001 etc), and, when network connectivity is available, the device fetches configuration information on desired measurement mode etc from the network. Otherwise, previously used mode is applied. Software updates are checked when the device boots and is connected to a wired network.


The easiest installation method is to retrieve the software from GitHub. There are some dependencies, but they are handled by the make command. These commands should suffice:

git clone
cd archtester
sudo make all install

Currently supported measurements

The following measurements are currently supported:

  • addressing
  • domain names
  • TLS version
  • hops

Image of a tester

These measurements are discussed in more detailed below:


The tester lights a green light if the device gets either a public IPv4 address or has global IPv6 address. With no connectivity, the device blinks the yellow light. With just a NATted address and no IPv6, the device lights a red light.

Domain names

The tester lights a green light if the number of global TLDs is within sensible limits (defined to be under 2000 in 2018, and at most 100 more for each year thereafter).

TLS version

The tester lights a green light if among the top 10 most popular web sites, there is at least some that employ TLS 1.3. This behaviour changes on 1.1.2018, when the device will require at least half of the sites to employ LTS 1.3. TLS versions beyond 1.3 or 2.0 will always light a green light.


The tester lights a green light if the number of hops "to the center of the Internet" (defined as the website of popular content provider such as Google). If the number of hops is 11 or less, the tester lights the green light.


Further development is still needed. We'd like to see for instance:

  • Adding a web-based UI where you can control the operation of the tester, or see more details. The idea is that each tester would have its own web page where you can see the most current measurement, be able to configure wireless LAN parameters, etc.
  • Adding support for wifi-networks.
  • The development of further tests that facilitate the measurement of architectural factors on a given network or on the Internet.
  • Adding connectivity confirmation to the addressing test