Rk3568 2.5GB Performance

Does anyone have any real world (such as iperf) performance numbers of routing traffic WAN to LAN over an rk3566/rk3568 based device?

I'm extremely familiar with this chip (just check kernel.org's commit history if you don't believe me), however I'm worried if the quad core A55 can keep up with 2.5GB NICs, specifically the realtek 8125b. My specific concern is at the maximum throughput of the NIC the CPU will get overwhelmed with IRQs and not be able to keep up with line speed.

While I bet the rk3588 can, it's probably several months to a year behind the rk3568 in terms of mainline, and thus mainline acceptance into OpenWRT.

I searched a bit and checked out some YouTube video reviews, with the FriendlyWRT the NanoPi R5S doesn't seem to be able to deliver 2.5G NAT throughput, in fact the RK3568 looks like sitting in between RK3288 and RK3399. That's why I skipped R5S and bought R6S (RK3588) for it.

Cortex A55 would worry more me more than Realtek rtl8125b in this regard.

That's kind of what I'm afraid of. I have a Celeron N3160 and it hits CPU capacity (due to interrupts according to top) with some Realtek gigabit NICs, can only imagine what a marginally slower CPU would do with NICs twice as fast. Not that they make i225/i226 on this CPU, but I would bet it could handle it because that doesn't flood the CPU with IRQs.

I'm taking a slightly further back seat on the rk3588 mainlining efforts relative to the rk3568 stuff, but to my knowledge I think we're mostly there already (at least as long as you don't want video, which is pointless on a router).

Too bad there's no rk3588 with an SFP+ port...

Because of Realtek NICs? My Jetway NF9HG-2930 uses Celeron N2930 which is even older than yours but I am no trouble in getting 1G routing, but my board has 4x Intel i211 instead of Realtek. What I learned from this is, RTL8125B also has RSS which should improve performance, unlike the cheap Realtek 1G NIC.

You just get one of Pine64's boards and stick whatever NIC you want that's compatible into it? :slight_smile:
The RockPro64 is probably a better choice and according to Pine64's Wiki you should be able to push 5Gbit or close to it using a Intel X550-T2 Dual Port or similar.
https://wiki.pine64.org/wiki/ROCKPro64_Hardware_Accessory_Compatibility#PCIe_devices
Looking at my own RockPro64 setups using Intel Gbit NICs (FreeBSD however) I'd say that it should in theory be doable in the same ballpark as listed using netperf.

You also have the Quartz64 if you're dead set on RK3566 but you might be pushing your luck trying to go linespeed. https://codingfield.com/blog/2021-10/let-s-plug-an-additional-nic-on-the-quartz/
That's rather old and there have probably been some optimizations imported etc since.

RockPro64 could work. Also looking at R6S (for the RK3588), and some x86 based stuff. I'm almost certain that the R6S will work for my needs, I just have to be willing to put the legwork into it. For reference, I have been a key contributor in the mainlining efforts of the RK3566, so I'm super-familiar with the Rockchip stuff (proof/shameless plug: Commits · torvalds/linux (github.com) ). On the other hand x86 is pretty much perpetually in a "plug it in and forget it" state, so that's pretty compelling too.

I'd be very careful about "bleeding edge" hardware on ARM, it takes several months mature and RK3588 definitely falls under that category but I guess you know that by know. I'd also be a concerned about the NanoPI overall as uboot etc never seems to land. From what I know there are several parts missing in the latest kernel (upstream) for RK3588 to be somewhat ready. You also have the issue that there's very few options around and FriendlyELEC usually ends up on the shortlist. I think your best bet would be a Quartz64Pro in terms of hardware as you can pop in a nother NIC but I don't think they have any left in stock. Personally I'm excitied to see when SoC support lands in FreeBSD but that's another story... :slight_smile:

On the nanopi r5s I get about 2.4G NAT throughput enabling software flow offloading. Testing with iperf3 server running on a x64 box connected to WAN:

root@openwrt:/# uname -a
Linux NanoPi-R5S 6.1.14 #0 SMP PREEMPT Thu Mar  2 03:20:09 2023 aarch64 GNU/Linux
root@openwrt:/# iperf3 -c 192.168.3.1
Connecting to host 192.168.3.1, port 5201
[  5] local 192.168.3.156 port 39068 connected to 192.168.3.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   283 MBytes  2.37 Gbits/sec    0    897 KBytes       
[  5]   1.00-2.00   sec   281 MBytes  2.35 Gbits/sec    0    897 KBytes       
[  5]   2.00-3.00   sec   280 MBytes  2.35 Gbits/sec    0    940 KBytes       
[  5]   3.00-4.00   sec   280 MBytes  2.35 Gbits/sec    0   1.03 MBytes       
[  5]   4.00-5.00   sec   281 MBytes  2.36 Gbits/sec    0   1.03 MBytes       
[  5]   5.00-6.00   sec   280 MBytes  2.35 Gbits/sec    0   1.03 MBytes       
[  5]   6.00-7.00   sec   281 MBytes  2.35 Gbits/sec    0   1.03 MBytes       
[  5]   7.00-8.00   sec   280 MBytes  2.35 Gbits/sec    0   1.03 MBytes       
[  5]   8.00-9.00   sec   280 MBytes  2.35 Gbits/sec    0   1.03 MBytes       
[  5]   9.00-10.00  sec   281 MBytes  2.36 Gbits/sec    0   1.03 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  2.74 GBytes  2.36 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  2.74 GBytes  2.35 Gbits/sec                  receiver

iperf Done.
root@openwrt:/# iperf3 -c 192.168.3.1 -R
Connecting to host 192.168.3.1, port 5201
Reverse mode, remote host 192.168.3.1 is sending
[  5] local 192.168.3.156 port 41982 connected to 192.168.3.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   280 MBytes  2.35 Gbits/sec                  
[  5]   1.00-2.00   sec   281 MBytes  2.35 Gbits/sec                  
[  5]   2.00-3.00   sec   281 MBytes  2.35 Gbits/sec                  
[  5]   3.00-4.00   sec   281 MBytes  2.35 Gbits/sec                  
[  5]   4.00-5.00   sec   281 MBytes  2.35 Gbits/sec                  
[  5]   5.00-6.00   sec   280 MBytes  2.35 Gbits/sec                  
[  5]   6.00-7.00   sec   281 MBytes  2.35 Gbits/sec                  
[  5]   7.00-8.00   sec   281 MBytes  2.35 Gbits/sec                  
[  5]   8.00-9.00   sec   281 MBytes  2.35 Gbits/sec                  
[  5]   9.00-10.00  sec   281 MBytes  2.35 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  2.74 GBytes  2.36 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  2.74 GBytes  2.35 Gbits/sec                  receiver

iperf Done.

OpenSpeedTest setting "?Stress=Low"

1 Like

kernel version 6.1.14? Where to get this?

2 Likes

Nice....I wish there will be the one for R6S soon....