Measuring Internet Speed via NDT

By February 7, 2018Linux

Measuring download and upload speed is a good way to find if the Internet bandwidth is causing network or application performance degradation issues. An Internet connection should have enough bandwidth to allow all users and applications to communicate with external hosts. A simple formula to calculate the Internet bandwidth is: 

Internet Bandwidth = ( Average Bandwidth Consumption per Host * Number of Hosts )

In this equation, a host can be an end-user’s desktop or a server. In the case of business connections, the bandwidth should also account for future growth, so in general it’s always good to add an extra 20-40% of bandwidth. This extra amount of bandwidth can also be used to cover bursts periods.

Let’s assume that you have selected an Internet connection that offers enough capacity to users and applications, yet experience applications slowness. In this case, it’s possible that the Internet Service Provider (ISP) is not honoring the Service Level Agreement (SLA).

The best way to find this out, is to run a download and upload throughput test, that is, run an Internet speed test.

Ookla speed test and NDT

I am sure that most of the readers are familiar with the Ookla speed test. This test runs a download and upload throughput test within a browser to see how much bandwidth the ISP is providing. However, if you search for “internet speed test”, you can see that Google has started to offer a speed test service that is competing with the traditional Ookla speed test:

This test is well integrated with the google search engine, and the graphical user interface is pretty nice … as it’s shown in the below screenshots, it’s definitely time for me to upgrade my home connection 🙂

If you click on the learn more link, you can find that the Internet speed test offered by Google is using the Network Diagnostic Tool (NDT) developed by the M-Lab consortium, whose goal is to create an “open, verifiable measurement platform for global network performance”. The mission of the M-Lab consortium is in line with NetBeez, because it wants to empower users with tools and resources that will help them to point out whether application slowness is caused by the connection, the application, or something else.

Installing NDT on Linux

If you want to test the NDT command, the installation is very simple. Download the source tarball on your Linux host, and then compile the source code following the below instructions:

The NDT package contains many executables, including the web100clt command that is used to run the Internet speed test. Let’s see this command in action.

Running NDT via command line

Running the web100clt command is as simple as running the speed test-cli command, the open source version of the Ookla speed test. The only difference is that, while the speed test-cli automatically finds the server with the lowest latency, the web100clt requires a server to be specified. In this case, I have selected the server ndt-iupui-mlab1-iad02.measurement-lab.org located in Washington, D.C.

You can see that, when compared to the speed test-cli command, the NDT’s web100ctl provides much more information about the host that is running the test, and the network in between the client and the server. Some useful information that you can obtain by running the web100ctl command is:

  • Identification of the slowest link between traversed by the packets
  • Identification of network firewalls between the client and the server
  • Packet size
  • Whether the client or the server are behind NAT

NDT worldwide servers

Since the web100ctl command doesn’t automatically select the destination server to use for the Internet speed test, A list of NDT servers is available on the M-Lab website at the URL: https://mlab-ns.appspot.com/admin/map/ipv4/ndt. When you access this webpage, you’ll first see a map of the world with all the servers available.

If you click on one pin in the map, you can see the list of servers available at that location, along with their status information and the timestamp of the last check (encoded in UTC).

The syntax to use one specific server is the following:

In the previous example, if you want to use the second server from the Miami (FL) location, you’ll type:

 

This hostname along with the fully qualified domain name will be passed to the web100ctl command after the -n flag. Unlike the speed test-cli command, which does first probe a group of servers before selecting the one with the lowest latency, it doesn’t appear that here the selection can be done automatically. Users may want to test different servers to run tests against, starting with the ones that are geographically closer to the client.

NetBeez users

If you are the proud owner of a NetBeez dashboard, you are probably aware that the speed test-cli is already available and integrated with the user interface.

If you want to run the NDT speed test command on one of your NetBeez agents, you can install and run the web100ctl command straight through the interactive console available under the agent’s detailed view.

I hope this blog post was useful to review yet another tool available to assess your network performance. I believe that the NDT command developed by the M-Lab consortium offer a great alternative to test your Internet speed.