Installing a low-latency Wireless Endpoint (Golden client)
Posted by Pieter Vandercammen, Last modified by Craig Godbold on 12 October 2022 05:06 PM

Setup Overview

This article focuses on the ideal setup to measure the latency of a network. More so than functional or even throughput testing, this type of test requires special care for proper time synchronization between a ByteBlower Endpoint and ByteBlower server.

To ensure this sync, we recommend the setup as shown in the picture below. From left to right we see the "ByteBlower Server", the device under test (a Wi-Fi Access Point) and the ByteBlower Endpoint ('Golden Client'). The network switch at the bottom of the image is used only to connect the management interfaces.

Two types of network traffic flow through this setup

  • The test-traffic is shown in blue. It is send between between ByteBlower server and Golden client. This traffic loads the device under test.

  • The management traffic is shown in black. This traffic goes over a separate interfaces and is Wired Ethernet. As shown in image, ideally a single switch ties everything together.

In the above image, both the ByteBlower server and Golden Client are synchronized to a common reference clock. This enables accurate latency measurements.

The Golden client

The golden client is the reference system for performing latency measurements with the Wireless Endpoint. In the sections below describe how to install Linux, Wireless Endpoints and configure the PTP-timesync.

Installing the OS

Just like the Time synchronization system, Debian is chosen as base OS for the Golden client. It's a popular Linux distribution with a long history that will stay relevant for the time being. The guide below has been tested on Debian 10.

The ISO image for the Linux installer is available from the link below. A common approach is to copy this binary on onto a USB stick and create boot from this USB stick. Several tools are available for performing this step, balena is one that is available on a large number of platforms.

This Low latency WEP client does not require a desktop environment. If you’re comfortable with managing such a headless system, the desktop can be omitted. For Intel NUC platform both headless and desktop should work well, no large performance differences are expected.

Installing the Wireless Endpoint

The wireless Endpoint is available in the Excentis repository. Adding this repository to the system makes it keep the application up to date. The steps below add this repository to the system and next install the software.

# Add our Excentis Repository to the system.
wget -qO - http://bbdl.excentis.com/repo/public-key.key | sudo apt-key add - 
sudo add-apt-repository "deb [arch=amd64] http://bbdl.excentis.com/repo/deb $(lsb_release -cs) main"

# Finally install the Wireless Endpoint
sudo apt-get update
sudo apt-get install byteblower-wireless-endpoint

WEP configuration

The following configuration launches the Wireless Endpoint immediately at startup. It defines a systemd service. The contents should be saved to following file

  • /etc/systemd/user/byteblower_wep.service
[Unit]
Description=Sync the Clock on the NIC to improve PTP accuracy

[Service]
User=excentis
ExecStart=byteblower-wireless-endpoint -t <Wi-Fi NIC> <MeetingPoint address>
Restart=always

[Install]
WantedBy=multi-user.target

The above configuration uses two parameters that depend on the actual configuration:

  • The name of the Wi-Fi network interface, for example wlo1. The name can be found with the command ip link.
  • The network address of the MeetingPoint.

After saving the above file, the service is enabled with the following command. This is ensures that the Wireless Endpoint is launched on each subsequent startup.

  • systemd enable byteblower_wep.service

Since the Wireless Endpoint runs in the background, no GUI is launched. To see the current status, you can either of the following command:

  • systemctl status byteblower_wep
  • journalctl --unit=byteblower_wep --since "1 hour"

The top command prints out the current status, the bottom one show the log messages of the last hour.

PTP on Golden client

As detailed at the start, it is important for the ByteBlower server and Wireless Endpoint to be synchronized to the same time-reference. On local networks one can use the Precision-Time-Protocol. This offers the most reliable time-sync.

To configure PTP on Linux, following two packages are required.

  • sudo apt install linuxptp chrony

LinuxPTP takes care of the PTP configuration. Chrony organizes the overall time synchronization. In case when the PTP clock becomes unavailable it will fall back to other time sources.

Configuring the timesync software

The timesync is configured in the following file. It needs to be edited as a root user.

  • /etc/linuxptp/timemaster.conf
# Configuration file for timemaster

[ntp_server ntp-server.local]
minpoll 4
maxpoll 4

[ptp_domain 5]
interfaces enp0s3

[timemaster]
ntp_program chronyd

[chrony.conf]
include /etc/chrony/chrony.conf

[ptp4l.conf]

[chronyd]
path /usr/sbin/chronyd

[phc2sys]
path /usr/sbin/phc2sys

[ptp4l]
path /usr/sbin/ptp4l

The above configuration has two important configuration parameters:

  • The name of the Wired network interface (NIC) to use for the PTP time synchronization. In the above example uses enp0s3. Like for the Wi-Fi NIC, the name is found with ip link.
  • The domain of the PTP clock. The example uses domain 5. This is configuration value, it depends on the time-synchronzation setup in the lab.

This timesmaster is enabled with systemctl enable timemaster.

When all goes well, systemctl status timemaster should display the following information.

root@goldenclient:/home/excentis# systemctl status timemaster
● timemaster.service - Synchronize system clock to NTP and PTP time sources
     Loaded: loaded (/lib/systemd/system/timemaster.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2022-09-16 18:00:26 CEST; 1s ago
       Docs: man:timemaster
   Main PID: 1196 (timemaster)
      Tasks: 4 (limit: 18710)
     Memory: 1.4M
        CPU: 11ms
     CGroup: /system.slice/timemaster.service
             ├─1196 /usr/sbin/timemaster -f /etc/linuxptp/timemaster.conf
             ├─1197 /usr/sbin/chronyd -n -f /var/run/timemaster/chrony.conf
             ├─1198 /usr/sbin/ptp4l -l 5 -f /var/run/timemaster/ptp4l.0.conf -H -i enp2s0
             └─1199 /usr/sbin/phc2sys -l 5 -a -r -R 1.00 -z /var/run/timemaster/ptp4l.0.socket -t [6:enp2s0] -n 6 -E ntpshm -M 0

sep 16 18:00:26 goldenclient timemaster[1196]: [270.829] process 1197 started: /usr/sbin/chronyd -n -f /var/run/timemaster/chrony.conf
..
sep 16 18:00:27 goldenclient ptp4l[1198]: [272.255] [6:enp2s0] port 1: new foreign master ecf4bb.fffe.426fea-1

In addition to the above, more information about the actual timesync is available with chronyc.

root@goldenclient:/home/excentis# chronyc sources

MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
#* PTP0                          0   2   377     5    +42ns[  +69ns] +/-   50us

Example Test results

The results below show example results attainable with the Wireless Endpoint and a proper Time Synchronization master. It contains the latency results between the same two hosts, Golden Client to a ByteBlower 4100, but over different media

  • The top graph show traffic over the Wi-Fi link. At regular intervals the network traffic experiences high latencies.
  • The bottom graph is the wired Ethernet link. It demonstrates a well-performing golden client operating in a minimal delay network. Typical latency accuracy is well below 1 ms.

(0 vote(s))
Helpful
Not helpful

Comments (0)

We to help you!