Measuring Network Bandwidth with VxWorks 7 and Ubuntu Linux

1 Introduction

Iperf3 is a tool for active measurement to discover the maximum bandwidth achievable on IP networks. It was originally developed for Linux, FreeBSD, and macOS operating systems, but there is now a ported version for VxWorks. Iperf3 is provided under three BSD licenses.

VxWorks is a real-time operating system built by Wind River.

This article describes how to configure and use the ported iperf3 on VxWorks in conjunction with iperf3 on Ubuntu Linux to measure the maximum network bandwidth on a wired network.

2 Prerequisites

This article assumes you are using:

A Windows workstation with the following software installed:

  • Wind River VxWorks 7, SR0620

  • Git client

  • Ubuntu Linux 16.04 / 18.04 / 20.04 workstation

  • An Intel target machine booted from UEFI BIOS, such as a Dell Latitude E6540 laptop

  • A USB flash drive

  • A wired network switch

3 Related Files

For more information on this topic, refer to:

Wind River documentation:

  • VxWorks support for third-party software

  • itl_generic_readme.md

Non-Wind River documentation:

  • iperf3, http://software.es.net/iperf/

  • Wind-River/vxworks7-layer-for-iperf, https://github.com/Wind-River/vxworks7-layer-for-iperf

  • git –fast-version-control, https://git-scm.com/

4 Downloading the VxWorks 7 IPERF3 Layer to the Windows Workstation

Open a DOS shell window, configure the build environment, and then download the iperf3 layer’s git repository:

cd <WIND_HOME>                  // your installation directory
wrenv -p vxworks-7
cd vxworks-7\pkgs_v2\net        // the root of the VxWorks 7 networking software directory
                                // clone the iperf3 git repo to download the iperf3 layer
git clone https://github.com/Wind-River/vxworks7-layer-for-iperf

Your workstation should now have a new directory named \vxworks-7\pkgs_v2\net\vxworks7-layer-for-iperf.

5 Preparing the VxWorks Project with IPERF3 Enabled

5.1 Creating and Compiling the VxWorks Source Code Build (VSB) Project

From the same DOS shell window, create and compile a new VxWorks source code build (VSB) project:

cd <YOUR_WORKSPACE>             // your workspace
vxprj vsb create iperf3_vsb -bsp itl_generic -smp -force
cd iperf3_vsb                   // your VSB directory
vxprj vsb add IPERF3            // add the new IPERF3 layer to the VSB
make -j 32                      // build the VSB

5.2 Creating and Compiling the VxWorks Image Project (VIP)

Create a VxWorks image project as follows:

cd ..
vxprj create -smp itl_generic iperf3_vip -profile PROFILE_INTEL_GENERIC -vsb iperf3_vsb
cd iperf3_vip
vxprj vip component add INCLUDE_MULTI_STAGE_WARM_REBOOT
vxprj vip bundle add BUNDLE_STANDALONE_SHELL
vxprj component add INCLUDE_IPERF3
vxprj component add INCLUDE_IPERF3_CMD
vxprj build

6 Compiling and Configuring the Wind River UEFI Boot Loader USB Flash Drive

6.1 Compiling the UEFI Boot Loader

Compile the boot loader as follows:

// navigate to the UEFI boot loader directory
cd <WIND_HOME>\vxworks-7\pkgs_v2\boot\uefi-2.0.1.1
make clean
make

6.2 Configuring the USB Flash Drive with the UEFI Boot Loader

Switch to the directory \vxworks-7\workspace\uefi_x86_64, copy the file BOOTX64.EFI to the USB flash drive: \EFI\BOOT\BOOTX64.EFI, switch to \iperf3_vip\default\, copy and rename the VxWorks file to \EFI\BOOT\bootapp.sys. After finishing, you should see the files and directories on the USB drive as follows:

EFI
BOOT
----------bootapp.sys
----------BOOTX64.EFI

7 Installing VxWorks on the Intel Target Machine

7.1 Connecting the Intel Target Machine to the Network Switch

Connect the Intel target machine to the wired switch using an Ethernet cable.

7.2 Booting VxWorks on the Intel Target Machine

Insert the USB drive and power on the Intel target board, select the USB drive as the boot device, after the target machine starts, you will see the familiar slogan of VxWorks and the kernel shell prompt will appear.

->

7.3 Setting the IP Address of VxWorks on the Intel Target Machine

On the kernel shell command line, assign a free IP address to the target machine as follows:

-> ifconfig "gei0 down"
-> ifconfig "gei0 inet add 192.168.1.2"  // assumes this IP address is free on your network
-> ifconfig

If you see multiple IP addresses assigned to your network device, delete the other IP addresses until only 192.168.1.1 remains, for example:

-> ifconfig "gei0 inet delete 90.0.0.50"

Enable the network connection as follows:

-> ifconfig "gei0 up"

8 Testing IPERF3 in Loopback Mode on VxWorks

Run the iperf3 server as follows:

-> sp iperf3, "-s -B 0.0.0.0"

Run the iperf3 client to test the bandwidth of the target loopback connection:

-> cmd
[vxWorks *]# iperf3 -c192.168.1.2 -t3

The client will report the detailed network bandwidth calculated for the loopback connection.

Restart the Intel target machine.

On the VxWorks kernel shell program, reset the IP address of gei0 to 192.168.1.2.

9 Configuring IPERF3 on the Ubuntu Linux Workstation

9.1 Connecting the Ubuntu Linux Workstation to the Network Switch

Connect the Ubuntu Linux workstation to the wired switch using an Ethernet cable, power on the Ubuntu workstation, and set the IP address of the Ubuntu wired network connection to 192.168.1.1.

9.2 Installing iperf3 on the Ubuntu Linux Workstation

On the Ubuntu workstation, open the Linux shell command line and enter the following:

:~$ sudo apt update
:~$ sudo apt install iperf3

9.3 Disabling Wireless Network on the Ubuntu Workstation

Before performing wired network bandwidth measurements, we must disable the wireless connection on the Ubuntu workstation.

10 Checking the Network Connection between VxWorks and Ubuntu

Leave a Comment

×