UDP/IP with iperf3

iperf3 goodput measurement tool is used for measuring the maximum attainable goodput of the VPP Host Stack connection across two instances of VPP running on separate DUT nodes. iperf3 is a popular open source tool for active measurements of the maximum achievable goodput on IP networks.

Because iperf3 utilizes the POSIX socket interface APIs, the current test configuration utilizes the LD_PRELOAD mechanism in the linux kernel to connect iperf3 to the VPP Host Stack using the VPP Communications Library (VCL) LD_PRELOAD library (libvcl_ldpreload.so).

In the future, a forked version of iperf3 which has been modified to directly use the VCL application APIs may be added to determine the difference in performance of ‘VCL Native’ applications versus utilizing LD_PRELOAD which inherently has more overhead and other limitations.

The test configuration is as follows:

       DUT1              Network               DUT2
[ iperf3-client -> VPP1 ]=======[ VPP2 -> iperf3-server]

where,

  1. iperf3 server attaches to VPP2 and LISTENs on VPP2:UDP port 5201.

  2. iperf3 client attaches to VPP1 and transmits one or more streams of packets to VPP2:UDP port 5201.

  3. iperf3 client transmits a uni-directional stream as fast as the VPP Host Stack allows to the iperf3 server for the test duration.

  4. At the end of the test the iperf3 client emits the goodput measurements for all streams and the sum of all streams.

Test cases include 1 and 10 Streams with a 20 second test duration with the VPP Host Stack using the UDP transport layer..

Note: iperf3 is single threaded, so it is expected that the 10 stream test shows little or no performance improvement due to multi-thread/multi-core execution.