WiFiMon measures WiFiMon measures the performance of WiFi networks, as experienced by WiFiMon Software Probes, i.e. End Users (crowdsourced measurements) and/or WiFiMon Hardware Probes (deterministic measurements from fixed points within the network), by embedding JavaScript code in websites frequently visited websites. Performance tests are triggered when End Users visit these websites and, in particular, after a web page is loaded so that browsing experience is not impacted by WiFiMon. by the users of the Wi-Fi network. These websites should be under the management of the WiFiMon administrator in order to embed the necessary JavaScript lines; an example of a frequently visited website for a campus network can be the main university site that is visited by students on a regular basis.
The JavaScript code and the files that are required for measuring the Wi-Fi performance are contained within The aforementioned JavaScript code scripts along with the files, i.e. images that are required to perform the tests are contained in the WiFiMon Test Server (WTS). After visiting a website including the aforementioned JavaScript lines, the end device triggers performance tests towards the WTS. Based on time needed to exchange specific images and/or test data, the end devices calculate performance results and stream them to the WIFiMon Analysis Server (WAS), i.e. the main component that collects and processes information. Performance tests are triggered only after a web page has loaded so that browsing experience is not impacted by WiFiMon.
Performance results calculated by end devices, i.e. Download/Upload Rates and Round Trip Times (RTTs) depend on the connectivity between the monitored WiFi network and the WTS location. Thus, for accurate results, the WTS should WTS should be located as close as possible to the monitored Subnets. In contrast, there is no requirement for the WiFiMon Analysis Server ( WAS ) to be placed close to the monitored networks. Note that the WAS and the WTS are not necessarily separate components and could be installed within the same machine. In the following, we consider the WAS and the WTS as two separate machines with FQDNs WAS_FQDN and WTS_FQDN respectively.
WiFiMon is currently using 3 JavaScript-based testtools to measure the performance of WiFi networks. These are (i) NetTest, (ii) boomerang and (iii) speedtest/HTML5.
In the reminder of this page we provide the details on:
- Prerequisites for installing the WiFiMon Test Server (WTS)
- WTS installation: installing Installation of a web server, the testtools used by WiFiMon and the images that are used for monitoring
- The JavaScript code that is required to be embedded in the frequently visited websites.
This guide presents the commands required to install the WTS in a Debian-based distribution (Debian, Ubuntu, etc.). Other distributions may also be considered by adjusting the included commands appropriately.
Anchor WTS WTS
1. Prerequisites
WTS | |
WTS |
Before installation the WiFiMon Test Server (WTS), you will need the following:
- An IP address (WTS_IP) configured for the WTS. This IP should be accessible from the WiFiMon Hardware Probes (WHP's) and WiFiMon Software Probes (WSP's), i.e. the end users of the Wi-Fi network.
- Optionally, you may associate an FQDN (WTS_FQDN) with the WTS_IP.
- We assume that WAS has already been installed in a separate machine. The FQDN of the WAS is denoted as WAS_FQDN.
In the sequel, we assume that an FQDN (WTS_FQDN) was selected.
Anchor WTS WTS
2. WiFiMon Test Server (WTS) Installation
WTS | |
WTS |
In the following, we detail the steps that are required to install the WiFiMon Test Server (WTS). Our installation was tested in Ubuntu 20.04 LTS. Notably, WiFiMon currently uses the Apache2 web server. However, readers could adjust the following setup to their preferred web server.
...
Then,Apache2 mod_headers should be enabled with the following commands:
Code Block |
---|
sudo a2enmod headers
sudo service apache2 restart |
WiFiMon also requires enabling CORS. The following lines should be added in the /etc/apache2/apache2.conf file and Apache2 should then be restarted:
Code Block |
---|
<Files ~ "\.(htm|html|css|dat|js|php|gif|jpg|png|swf)$"> Header always set Access-Control-Allow-Origin "*" Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT" Header always set Access-Control-Max-Age "1000" Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token" </Files> |
Finally, the required scripts required scripts and images should be uploaded to the root directory of the Apache2 web server, i.e. directly under /var/www/html. The contents of the "testtools" directory which are available from the WiFiMon code repository (Download the required zip file and unzip it with the following commands:
Code Block |
---|
wget https://bitbucket.software.geant.org/projects/WFMON/repos/agent/ |
...
raw/wifimon.zip?at=refs%2Fheads%2Fmaster --output-document wifimon.zip
unzip wifimon.zip |
A single modification is required in file "wifimon/js/nettest/nettest-swfobject.js". The variable "NetTest.FlashPath" should be configured to match the FQDN of the WiFiMon Test Server, i.e. WTS_FQDN.
Anchor website website
website | |
website |
...
3. Embed Scripts in your Website
The following paragraphs show the lines that should be included in the HTML code of the frequently-visited websites for each testtool. The FQDN of the WiFiMon Test Server (WTS) is denoted as WTS_FQDN, the FQDN of the WiFiMon Analysis Server (WAS) is denoted as WAS_FQDN and the name of the utilized testtool should be included in the testtool attribute.
Example pages for each testtool are available in the "measurements" folder of the "testtoolswifimon" directory in the WiFiMon code repository (https://bitbucket.software.geant.org/projects/WFMON/repos/agent/browse/testtools)that was downloaded in the previous section.
2.1.1: NetTest
NetTest measurements require embedding the following lines of code in your website:
Code Block | ||||
---|---|---|---|---|
| ||||
<html> <head> <script type="text/javascript" src="https://WTS_FQDN/wifimon/js/nettest/jquery-3.56.10.min.js"></script> <script type="text/javascript" src="https://WTS_FQDN/wifimon/js/nettest/nettest-swfobject.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" id="settings" hostingWebsite="https" agentIp="WAS_FQDN" agentPort="443" testtool="NetTest" testServerLocation="LOCATION" imagesLocation="https://WTS_FQDN/wifimon/images/" cookieTimeInMinutes="0.01" src="https://WTS_FQDN/wifimon/js/nettest/runtests.js" defer></script> <!--meta http-equiv="refresh" content="30" --> </head> </html> |
...
NOTE: Except for the 4th bullet, the rest of the bullets apply for both subsections 2.2 and 2.3. Thus, they will not be included in the following subsections.
2.1.2
...
: Boomerang
Triggering boomerang measurements requires embedding the following lines of code in your website:
Code Block | ||||
---|---|---|---|---|
| ||||
<html> <head> <script type="text/javascript" src="https://WTS_FQDN/wifimon/js/boomerang/jquery-3.56.10.min.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script src="https://WTS_FQDN/wifimon/js/boomerang/boomerang.js" type="text/javascript"></script> <script src="https://WTS_FQDN/wifimon/js/boomerang/bw.js" type="text/javascript"></script> <script src="https://WTS_FQDN/wifimon/js/boomerang/rt.js" type="text/javascript"></script> <script type="text/javascript" id="settings" hostingWebsite="https" agentIp="WAS_FQDN" agentPort="443" testtool="boomerang" testServerLocation="LOCATION" imagesLocation="https://WTS_FQDN/wifimon/images/" cookieTimeInMinutes="" src="https://WTS_FQDN/wifimon/js/boomerang/boomerang-trigger.js" defer></script> </head> </html> |
- testtool (required): With this attribute, you specify a name for the testtool. WiFiMon Analysis Server relies on the value of this attribute to visualize measurements. The following assumptions are made: (i) for websites visited by WiFiMon Software Probes the value of the testtool attribute should be specified as "boomerang", while (ii) for websites visited by WiFiMon Hardware Probes the testtool attribute should be specified as "boomerang-x" where x is the number assigned to a particular WiFiMon Hardware Probe. Note that you must use separate websites for WiFiMon Software Probes and WiFiMon Hardware Probes.
2.1.3
...
: LibreSpeed Speedtest
...
Speedtest requires two steps.
Step 1: Create the following proxy HTML page in page in the "measurements" folder of the "testtoolswifimon" directory in the WiFiMon code repository (https://bitbucket.software.geant.org/projects/WFMON/repos/agent/browse/testtools)that was downloaed in the previous section:
Code Block | ||||
---|---|---|---|---|
| ||||
<!DOCTYPE html> <html> <body> <iframe src="https://WTS_FQDN/wifimon/js/speedtest/speedworker.html" style="visibility: hidden;"></iframe> <body/> </html> |
Step 2: Create the following HTML page with name "speedworker.html" in the "js/speedworker" folder of the "testtoolswifimon" directory that was downloaded in the WiFiMon code repository(https://bitbucket.software.geant.org/projects/WFMON/repos/agent/browse/testtools):previous section:
Code Block | ||||
---|---|---|---|---|
| ||||
<!DOCTYPE html> <html> <head> <title>Speed worker</title> <script type="text/javascript" src="jquery-3.56.10.min.js"></script> <script type="text/javascript" src="https://www.google.com/jsapi"></script> <script type="text/javascript" id="settings" hostingWebsite="https" agentIp="WAS_FQDN" agentPort="443" testtool="speedtest" testServerLocation="LOCATION" cookieTimeInMinutes="0.01" src="speedworker-post.js"></script> </head> </html> |
- testtool (required): With this attribute, you specify a name for the testtool. WiFiMon Analysis Server relies on the value of this attribute to visualize measurements. The following assumptions are made: (i) for websites visited by WiFiMon Software Probes the value of the testtool attribute should be specified as "speedtest", while (ii) for websites visited by WiFiMon Hardware Probes the testtool attribute should be specified as "speedtest-x" where x is the number assigned to a particular WiFiMon Hardware Probe. Note that you must use separate websites for WiFiMon Software Probes and WiFiMon Hardware Probes.
...
2.2: Combining Measurements in the Same Page
Including all three types of testtools (NetTest, boomerang, speedtest/HTML Boomerang, LibreSpeed Speedtest) in your measurements requires injecting the following HTML lines in the "head" section of the website that is monitored by WiFiMon:
...