NanoPi NEO(無印)とNanoPi NEO2ネットワーク通信性能

NanoPi NEOとNEO2

NanoPi NEO(無印)はネットワーク10/100Mbpsに対応しているがGbEには非対応。GbEに対応させようとするとネットワークチップが必要だけど、10/100MbpsはSoCの内蔵機能だけで利用できるから安く上がると思われる。
新しいNanoPi NEO2はSoC内蔵の「なんちゃって」ネットワークインターフェースではなく、一応まともなGbEなネットワークチップを搭載したのがウリ。(上の写真)
そこで、実際にどんなもんか試してみた。

NanoPi NEO(無印)

$ iperf -c 192.168.0.???
------------------------------------------------------------
Client connecting to 192.168.0.???, TCP port 5001
TCP window size:  255 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.??? port 16444 connected with 192.168.0.??? port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   113 MBytes  94.5 Mbits/sec

PC → NanoPi NEO (IPv4): 94.5Mbps

$ iperf -V -c f???:????:????:????:????:????:????:????
------------------------------------------------------------
Client connecting to f???:????:????:????:????:????:????:????, TCP port 5001
TCP window size:  255 KByte (default)
------------------------------------------------------------
[  3] local f???:????:????:????:????:????:????:???? port 31003 connected with f???:????:????:????:????:????:????:???? port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   111 MBytes  92.8 Mbits/sec

PC → NanoPi NEO (IPv6): 92.8Mbps

$ iperf -c 192.168.0.???
------------------------------------------------------------
Client connecting to 192.168.0.???, TCP port 5001
TCP window size: 21.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.??? port 56469 connected with 192.168.0.??? port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec   116 MBytes  96.5 Mbits/sec

NanoPi NEO → PC (IPv4): 96.5Mbps

$ iperf -V -c f???:????:????:????:????:????:????:????
------------------------------------------------------------
Client connecting to f???:????:????:????:????:????:????:????, TCP port 5001
TCP window size: 20.8 KByte (default)
------------------------------------------------------------
[  3] local f???:????:????:????:????:????:????:???? port 49151 connected with f???:????:????:????:????:????:????:???? port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.1 sec   114 MBytes  95.2 Mbits/sec

NanoPi NEO → PC (IPv6): 95.2Mbps

NanoPi NEO(無印)は100Mbpsのネットワークであるという点は残念ではあるが、SoC内蔵にしては通信性能が何か劣るという点は特に無いようだ。
H3のCPU全コアに100%負荷をかけた状態で上と同じテストを行っても結果の数字は変わらなかった。
CPUの負荷が高いと遅くなるかと思っていたので正直意外。
ただし、NanoPi NEOはシステム時計がバカなので計測結果の数字を見るときは時計の正しいPC側を見た方が良さげ。負荷が高い状態だと計測が短時間であってもNanoPi NEOシステム時計が激しく遅れるせいで、NanoPi NEO側で表示された結果が微妙に良い数字になる傾向あり。(同一の計測でクライアント側サーバ側でそれぞれ結果が表示されるのだが違う数字が表示される)

NanoPi NEO2

$ iperf -c 192.168.0.???
------------------------------------------------------------
Client connecting to 192.168.0.???, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.??? port 56900 connected with 192.168.0.??? port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   948 MBytes   795 Mbits/sec

PC → NanoPi NEO2 (IPv4): 795Mbps

$ iperf -V -c f???:????:????:????:????:????:????:????
------------------------------------------------------------
Client connecting to f???:????:????:????:????:????:????:????, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local f???:????:????:????:????:????:????:???? port 57028 connected with f???:????:????:????:????:????:????:???? port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec   904 MBytes   758 Mbits/sec

PC → NanoPi NEO2 (IPv6): 758Mbps

$ iperf -c 192.168.0.???
------------------------------------------------------------
Client connecting to 192.168.0.???, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local 192.168.0.??? port 45790 connected with 192.168.0.??? port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.05 GBytes   904 Mbits/sec

NanoPi NEO2 → PC (IPv4): 904Mbps

iperf -V -c f???:????:????:????:????:????:????:????
------------------------------------------------------------
Client connecting to f???:????:????:????:????:????:????:????, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[  3] local f???:????:????:????:????:????:????:???? port 40076 connected with f???:????:????:????:????:????:????:???? port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.03 GBytes   888 Mbits/sec

NanoPi NEO2 → PC (IPv6): 888Mbps

参考までに普通のPC同士のIPv4で900Mbps前半程度。IPv6はそれより僅かに劣る程度。

Linux PCがサーバ側でNanoPi NEO2がクライアント側のときは特に異常無く普通の性能。
しかし、Linux PCがクライアント側でNanoPi NEO2がサーバ側の場合にIPv4,IPv6共に800Mbps出ないのが謎。

関連記事: