Measuring the maximum throughput of Gigabit Ethernet on the Ultra96

In this video I use Iperf to measure the actual maximum throughput of a Gigabit Ethernet port on the Ultra96 v2 running PetaLinux. The result that I get is pretty impressive: 910-940Mbps!

To do this test yourself you’ll need to build the example design that you’ll find on our Github repo, and then prepare the SD card. Plug your SD card into your Ultra96 and fit the 96B Quad Ethernet Mezzanine on top of the Ultra96. You need to connect the Ultra96‘s USB UART to your PC and open up a terminal (115200, 8-bit data, 1-bit stop, no parity).

You’ll also need to download Iperf for Windows and copy it to some location on your hard drive. I just copy it to C:/iperf.

You’ll need to physically connect both your Windows PC and your Ultra96 to a router with DHCP server so that both devices will automatically obtain an IP address. This isn’t really necessary but it just simplifies things. If you want, you can instead connect the two directly and set them up with fixed IP addresses.

At this point you can turn on the Ultra96 and let PetaLinux boot up. When it finishes, login and then run ifconfig to get the IP address of the Ultra96. Shut down the Ethernet port by running ifconfig eth0 down, then reconfigure MTU by running ifconfig eth0 mtu 9000. Then bring the port back up by running ifconfig eth0 up.

Now you can launch the Iperf server on the Ultra96 by running iperf -s.

Now run a command prompt on your Windows machine, cd to the location of Iperf and then run iperf -c <IP addr of Ultra96> to launch the Iperf client.

You should see this kind of output on your Windows machine:

C:\iperf\iperf3 -s
-------------------------
Server listening on 5201
-------------------------
Accepted connection from 192.168.2.16, port 42890
[  5] local 192.168.2.18 port 5201 connected to 192.168.2.16 port 42892
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec   110 MBytes   920 Mbits/sec
[  5]   1.00-2.00   sec   113 MBytes   946 Mbits/sec
[  5]   2.00-3.00   sec   113 MBytes   946 Mbits/sec
[  5]   3.00-4.00   sec   113 MBytes   945 Mbits/sec
[  5]   4.00-5.00   sec   113 MBytes   946 Mbits/sec
[  5]   5.00-6.00   sec   113 MBytes   947 Mbits/sec
[  5]   6.00-7.00   sec   113 MBytes   949 Mbits/sec
[  5]   7.00-8.00   sec   113 MBytes   945 Mbits/sec
[  5]   8.00-9.00   sec   113 MBytes   949 Mbits/sec
[  5]   9.00-10.00  sec   113 MBytes   949 Mbits/sec
[  5]  10.00-10.03  sec  2.92 MBytes   940 Mbits/sec
-------------------------
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.03  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.03  sec  1.10 GBytes   944 Mbits/sec                  receiver

Those are pretty impressive results, especially for a single board computer, and they really demonstrate the power of the Zynq US+‘s quad core ARM Cortex-A53 clocked at 1.2GHz. Also not to forget, this wouldn’t be possible without jumbo frames, which is a critical feature supported by the integrated Gigabit MACs in the Zynq US+. All of this makes the Ultra96 a great little platform for developing network applications with the Zynq Ultrascale+.

Jeff is passionate about FPGAs, SoCs and high-performance computing, and has been writing the FPGA Developer blog since 2008. As the owner of Opsero, he leads a small team of FPGA all-stars providing start-ups and tech companies with FPGA design capability that they can call on when needed.

Facebook Twitter LinkedIn 

Recent posts

Introducing 96B Quad Ethernet Mezzanine

Introducing 96B Quad Ethernet Mezzanine

Update 2019-06-10: This product is now available to purchase! Read the documentation here, and get it from the order page here. Over the last few months I've been really busy working on a new product and I just want to take a step back today and share some of it. Let...

Last year I designed a Zynq board for a company in Santa Clara.