APU2C0 pfSense network throughput test
Posted by Natalia Wieczorek on
Update 1: APU2 can can achieve full Gigabit on pfSense when configured to use multiple queues.
Update 2: APU2 can achieve a full Gigabit speed under IPFire and OpenWRT: see results here.
WARNING: Results below are outdated, and no longer correct. Read the updated articles linked above.
Clients often ask us if the APU2C0 router, which appears on the lower end, is fast enough for their network. This is the definitive answer. We have assembled the cheapest possible hardware configuration and performed few throughput tests.
This throughput test was performed with PC Engines APU2C0 and pfSense 2.3.4 installed on a 4GB SD card.
First, we made a test without a router to assess the throughput of the connection that goes over a 1 Gbit switch. This gave us roughly 940Mbit/s, switched, non-routed throughput.
In the second test we added a router into the mix. Here are both topologies.
And here are the results.
Transfer 4 parallel connections | Bandwidth 4 parallel connections | Transfer 1 connection | Bandwidth 1 connection | Ping latency min | Ping avg | Ping max | Ping mdev | |
no router. Switched connection | 1.09 GBytes | 940 Mbits/sec | 1.09 GBytes | 938 Mbits/sec | 0.254 | 0.31 | 0.363 | 0.035 |
apu2c0 4GB SD card | 739 MBytes | 620 Mbits | 732 MBytes | 614 Mbits/sec | 0.331 | 0.45 | 0.653 | 0.08 |
APU2C0 can route about 620Mbit on pfSense 2.3.4. During the test, pfSense showed about 60% CPU usage, and 10% Memory usage, which makes me think that the real throughput can be higher with some software optimization.
We have tested with 1 connection, 4 parallel connections and 100 parallel connections. Results were surprisingly similar. 1-3% difference in bandwidth.
All tests were performed using iperf and iper3 utilities, results are averaged over 5 different tests. We have used the default pfSense config. Nothing was configured or fine-tuned.
The answer is: if your internet connection is slower than 620 Mbit/s, then this router is more than enough for you.
Here's one of the outputs for reference:
# iperf3 -P1 -c 192.168.5.10
Connecting to host 192.168.5.10, port 5201
[ 4] local 192.168.1.30 port 49376 connected to 192.168.5.10 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 75.8 MBytes 636 Mbits/sec 0 1.15 MBytes
[ 4] 1.00-2.00 sec 74.4 MBytes 624 Mbits/sec 0 1.20 MBytes
[ 4] 2.00-3.00 sec 72.9 MBytes 611 Mbits/sec 0 1.27 MBytes
[ 4] 3.00-4.00 sec 74.7 MBytes 627 Mbits/sec 0 1.27 MBytes
[ 4] 4.00-5.00 sec 74.8 MBytes 628 Mbits/sec 0 1.27 MBytes
[ 4] 5.00-6.00 sec 74.9 MBytes 628 Mbits/sec 0 1.27 MBytes
[ 4] 6.00-7.00 sec 75.4 MBytes 633 Mbits/sec 0 1.27 MBytes
[ 4] 7.00-8.00 sec 75.5 MBytes 633 Mbits/sec 0 1.27 MBytes
[ 4] 8.00-9.00 sec 75.2 MBytes 631 Mbits/sec 0 1.27 MBytes
[ 4] 9.00-10.00 sec 75.2 MBytes 630 Mbits/sec 0 1.27 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 749 MBytes 628 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 748 MBytes 627 Mbits/sec receiver