Azure Speedtest Overview

The Speedtest application consists of two docker containers. The first container (netfoundry/speedtest) implements the user-facing web application (we'll refer to this as the application). The second container (netfoundry/speedtest-remote) implements the remote payload server (we'll refer to this as the remote).

Speedtest does rough performance characterization of both the "server to server" and the "local" (end user to application) links. It compares the performance of these links by requesting data payloads from the remote over both the public internet, and also over NetFoundry Network. The configuration looks roughly like this:

The SpeedTest will pull 2MB chunks for a total of 48MB.

Getting Started is Easy

We'll walk you through the simple steps below to spin up your first network and create a SpeedTest demonstration that can be used in any region of Azure Cloud.


Sign up for both an Azure and NetFoundry Accounts if you don't have one. They're free.

Sign up for a Azure Account

Click Here

Sign up for a NetFoundry Account

Click Here


a. Log into your NetFoundry console

b. If you have not created a network yet, “Create A New Network” and give it a name (ex: NFdemo).

c. It will take approximately 5-8 minutes for you network to be created. While the network is being created, the icon to the left of the network name will spin. Once your network is ready, the icon turns green.


We will break this tutorial in to two pieces. The first part implements a Cloud Formation script which builds a pre-configured VNET with an NFN gateway and a SpeedTest payload server. The VNET and associated components will be created by the Azure Resource Template script. This is called the “Remote side”.

The second part will include setting up a single Azure Linux Host in a “working” VNET in a distant region. This instance provides the web front end to access the remote payload server. Your VNET must be active and have all the components including: Internet Gateway, active subnet, route table with subnet association, network security group & ssh keys. You may also implement this host in other Cloud providers or on premise, however the example uses Azure. This is called the “App” side.

For the NFN prebuilt webserver:

a. From the NetFoundry Console left-hand navigation, select GATEWAYS.

b. In the upper right, click the + sign to add a gateway.

c. Select the “Create an Azure Gateway” option

d. Give your gateway a name (ex: gwDemo)

e. From the dropdown menu, select the region in which you plan to launch the AWS gateway. Hit the “Create” button.

f. Click on your Gateway Registration Key (this will copy it to your clipboard).

g. Hit Esc icon in upper right to close the window


For the prebuilt NetFoundry Gateway & webserver:

a. Click here to add NetFoundry MultiCloud Gateway to your Azure account – this will take you to the Azure portal account

b. Resource template will launch in the the Dashboard as a custom deployment. If you would like to launch in a different region, simply switch regions from the drop down. Please be sure you are launching in the same region you selected your NetFoundry gateway to be in (from 3.e above).

c. Once in the Custom Deployment area of the portal you may select the appropriate Resource Group.

d. Paste your Gateway Registration key in the appropriate field. Click Next to continue.

e. On the next page (“Options”) – leave all defaults. Click Next to continue.

f. From the Review page… Click Create to launch the stack

g. This Resource template will create a simple vnet, subnet, routing table, internet gateway & two (2) VM instances along with a network security group to allow port 8080(http) from anywhere to the Demo App.
• One B1ms for the SpeedTest payload server
• One B1ms for the NetFoundry MultiCloud Gateway

h. Once the Deployment is complete, find and verify the internal IP address of the SpeedTest App is, you will need for the next section. You can also test the external URL of the SpeedTest App to make sure it’s accessible. The internal URL will only work once the NFN network is complete. (This could take 2-3 minutes)


a. From the Left side panel select Network Dashboard. Then select SERVICES.

b. In the upper right, click the + sign to add a service.

c. Select “CREATE AN IP Host Service”.

d. Add a service name (ex: speedtest-remote).

e. Select a GATEWAY from the drop-down menu i.e. the one that you create in 4.

f. For the IP address use the private IP copied from above (step 4.h). This IP should be

g. Port/range = 8080

h. Intercept IP can be anything you want. In our example we will leave it blank.

i. Protocol Type = TCP/UDP

j. Hit the “Create” button (NOTE: The Service you just created may take a couple minutes to complete before it becomes available in the list – the icon will turn GREEN when it is ready)


a. From the NetFoundry Console left-hand navigation select NETWORK DASHBOARD, select CLIENTS.

b. In the upper right, click the + sign to add a client.

c. Add a client name (ex: MikesMac).

d. Select Standard from the drop down menu.

e. From the Location dropdown menu, select the region closest to where you are located (NetFoundry uses this location information to optimize network).

f. Hit the “Create” button.

g. Copy the client registration key to your clipboard.

h. Hit Esc icon in upper right to close the window.


j. Click DOWNLOAD on the appropriate installer.


a. If you didn’t do step 6i then go  here and download the appropriate client for your computer. Client installation and registration instructions can be found here.

b. Follow the install instructions and enter the client registration key you copied (step 6.f).

Attention PC users: you may need to disable AntiVirus/Firewall.

Attention Mac users: If you experience issues trying to install the .pkg. Go to Security & Privacy -> general -> select open anyway for Nfninstall.pkg. You may need to install helper and grant dispersive systems access to system. Note that the NFN client will be visible on the top right of the navigation bar. You can click on it to activate it.


a. Make sure your Service in Step 5 has completed (the icon next to the Service name will be green)

b. From the NetFoundry Console left-hand navigation select NETWORK DASHBOARD. Then select APPWANS.

c. In the upper right, click the + sign to add a new AppWAN.


e. Add an APPWAN NAME (ex: SpeedTestAppWAN).

f. Underneath the “AVAILABLE CLIENTS” Select the client installed from step 6.

g. Click on your  client and it should move right to section “SELECTED ENDPOINTS”

f. In section 3 of this page, under the section “ADD SERVICES” add the Service created in step 5 by clicking on it. It should move to the right under “SELECTED SERVICES”.

g. Hit the “Create” button.

9. Configuration of SpeedTest application front-end webserver

a. In a distant region create an Azure Ubuntu Server 18.04 virtual machine instance to support the website. Ensure you have a working VNET in that region which includes, Internet Gateway, a subnet, working route table with a entry pointing to IGW, Security group accepting connections from anywhere on Custom TCP ports 80-8080.

b. From the Azure Console hit Create a resource.

c. Select the AMI Image

d. Choose a T3.small or T3.medium instance type and hit Next to Configure Instance details.

e. Select the Virtual Network and Advanced NIC Network Security Group. Hit Create new

f. Create Network Security Group to allow ports 80-8080 inbound from anywhere.

g. Select Next to management and Next again to Advanced tab. Insert the following script into the Custom Data field and hit Review + Create and then Create to begin Virtual Machines deployment.

sudo su -

apt-get update -y

apt install -y

systemctl enable docker

systemctl start docker

docker run -d -it -p 80:8080 -e HTTP_PORT=8080 -e PUBLIC_IP=<SpeedtestRemotePublicIPfromStep4 > -e INTERCEPT_IP= --name speedtest --rm netfoundry/speedtest


a.Make sure your NetFoundry client is running
• For Mac: Open NFN Client in Applications
• For PC: Open NFN Client from the Start Menu

Open Web browser and insert the following URL.


b.The SpeedTest web page should come up with this view.

c. Hit Start to begin test.