Golden Client - Intel NUC with Endpoint


Introduction

The golden client is the reference system for performing latency measurements with the ByteBlower Endpoint. In the sections below describe how to install Linux, ByteBlower Endpoints, and configure time synchronization using PTP.

Installing the OS

Just like the Time synchronization system, Debian is chosen as the 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 11 and Ubuntu 22.04.

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

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

Installing the Endpoint

Installing the ByteBlower Endpoint

The ByteBlower Endpoint is available in the Excentis repository. Adding this repository to the system makes it keeps 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 - 
echo "deb http://bbdl.excentis.com/repo/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/byteblower.list

# Finally install the ByteBlower Endpoint
sudo apt-get update
sudo apt-get install byteblower-wireless-endpoint
Configure Endpoint service

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

  • /etc/systemd/system/byteblower-endpoint.service
[Unit]
Description=ByteBlower Endpoint
Documentation=https://setup.byteblower.com/wirelessendpoints.html
After=network.target

[Service]
ExecStart=/usr/bin/byteblower-wireless-endpoint --management '<mgmt_nic>' --traffic '<wifi_nic>' '<meeting_point_address>'

[Install]
WantedBy=multi-user.target

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

  • <mgmt_nic>​: The name of the network interface, for example enp88s0​, via which you can connect to the ByteBlower Meeting Point. The name can be found with the command ip link show​.
  • <wifi_nic>​: The name of the Wi-Fi network interface, for example: wlo1​. The name can be found with the command ip link show​.
  • <meeting_point_address>​: The network address of the MeetingPoint.

After saving the above file, you need to reload the systemd configuration and start the service with the following commands:

sudo systemctl daemon-reload
sudo systemctl start byteblower-endpoint.service

The service can also be enabled. This ensures that the ByteBlower Endpoint is launched on each subsequent startup.

sudo systemctl enable byteblower-endpoint.service

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

sudo systemctl status byteblower-endpoint.service
sudo journalctl --unit=byteblower-endpoint.service --since "1 hour"

The top command prints out the current status and the last lines from the log, and the bottom one shows the log messages of the last hour.

Install time synchronization software

As detailed at the start, it is important for the ByteBlower server and ByteBlower 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, the following two packages are required.

sudo apt-get 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.

Configure time synchronization

The time synchronization 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>]
minpoll 4
maxpoll 4
iburst 1

[ptp_domain <ptp_domain>]
interfaces <mgmt_nic>

[timemaster]
ntp_program chronyd

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

[ntp.conf]
includefile /etc/ntp.conf

[ptp4l.conf]

[chronyd]
path /usr/sbin/chronyd

[ntpd]
path /usr/sbin/ntpd
options -u ntp:ntp -g

[phc2sys]
path /usr/sbin/phc2sys

[ptp4l]
path /usr/sbin/ptp4

The above configuration has three important configuration parameters:

  • <mgmt_nic>​: The name of the Wired network interface (NIC) to use for the PTP time synchronization. In the above example uses enp88s0​. As for the Wi-Fi NIC, the name is found with ip link show​.
  • <ptp_domain>​: The domain of the PTP clock. The value is a number, for example, 3​, 5​, .... The configuration value depends on the time-synchronzation setup in the lab and can typically be found in the configuration or status information of the PTP master clock server.
  • <ntp_server>​: The network address of the NTP server which is used as fallback when the PTP service is not available. The default is ntp-server.local​, but can be set to a specific NTP server in the test network.

To start the services with the new configuration, execute the commands:

sudo systemctl restart timemaster.service
sudo systemctl status timemaster.service

Check that the time synchronization services are running fine:

sudo systemctl status chrony.service
sudo systemctl status timemaster.service

To show the status of the time synchronization, execute the commands:

chronyc -n tracking
chronyc -n sources
chronyc -n sourcestats

When time synchronization is not working, it can be caused by firewalling.

To have a quick check, try to disable the firewall and see if time synchronization works. For example, using sudo ufw disable​.


Example result

The results below show example results attainable with the ByteBlower 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 shows 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.