R86S レビューシリーズ
- R86S レビュー (Ubuntu 22.10 編 その1) - 外部記憶装置 ← この記事
- R86S レビュー(Ubuntu 22.10 編 その2 NAPT他) - 外部記憶装置
- R86S レビュー(OpenBSD 編) - 外部記憶装置
- R86S レビュー(pfSense 編 その1 初期設定) - 外部記憶装置
- R86S レビュー(pfSense 編 その2 Firewall, NAT) - 外部記憶装置
- R86S レビュー(pfSense 編 その3 IPSec VPN) - 外部記憶装置
謎の小型PC、R86S を購入し、簡単な計測を行った時の記録
R86S について
R86S は aliexpress で販売されている謎の小型PCである。 SFP+ が2個と 2.5Gbps Ethernet(RJ-45) が3個搭載されていることが最大の特徴となっている。
購入はここから。
購入したモデルは GW-R86S-G1 である。 CPU Intel Celeron N5105(4Core/4Thread)、メモリ 8GB、NICは Intel I225(2.5Gbps x 3) と Mellanox ConnectX-3 (SFP+ x 2) が搭載されている。
OSは基本的に最新の Windows、Ubuntu であれば問題なくサポートされている様子(R86S Document より)
デバイスに関する詳細なレビューは yas-nyan 氏のレビューが分かりやすいため、ここでは省略する。
ネットワーク処理性能の計測
R86S を高速ルーターや高速パケット処理のおもちゃとして利用するにあたり、 バニラな Ubuntu 22.10 をインストールした環境で iperf3 を用いた計測を行った。 なお、計測は SFP+x2 な部分についてのみ行った。
計測環境
計測用のネットワークはこのようになっている。MTU は全体で 9000 とした。
物理マシンと接続された10Gスイッチが10GBASE-Tしか刺さらないため、メディコン代わりに別の10Gスイッチを介して接続している。 当初は 10GBASE-T SFP+モジュールを用いる予定であったが、購入したモジュール が R86S でリンクを上げることが出来なかったため、このような構成となっている。
計測は iperf3 を用いた。
iperf3 -c 192.168.14.2 -i 0 -O 5 -M [MSS] -t 120
R86S
- モデル: GW-R86S-G1
- OS: Ubuntu 22.10 (Kernel: 5.19.0-31-generic)
負荷生成用マシン(仮想マシン)
2台の物理マシン上に1台ずつ負荷生成用のマシンとして仮想マシンを用意した。 vCPU の pinning やそのほかのチューニングは行わず、QEMU/libvirt の標準設定で作成した。 専用の物理マシンやパケットジェネレータを利用したわけではないため、パケットサイズが小さい場合は不正確な測定結果となっている可能性がある。
L2 フォワーディング(bridge)
10G NIC 間を bridge で接続した場合について計測した。
bridges: br0: mtu: 9000 interfaces: - enp4s0 - enp4s0d1
計測結果は以下のとおりである。MSS が 1000bytesを超えたあたりから 9Gbps を超えている。
L3 フォワーディング(routing)
10G NIC 間で静的ルーティングを行った場合について計測した。 おおむね、L2 フォワーディングの時とほぼ同様な傾向であることが分かる。
CPU の負荷
L3 フォワーディングの計測を行っている間のCPU使用率を mpstat
で計測した。
MSS を 80, 216, 472, 984, 1240, 1478, 3960, 7960, 8960 と2分ずつ計測した時のCPU使用率(全コア合算)のグラフが下図である。
MSS が大きくなるにつれて、soft(ソフトウェア割り込み) の割合が下がっていることが分かる。 しかし、MSS が 3960 以上となるとまたソフトウェア割り込みが増加している。
各コアのソフトウェア割り込みの割合についても計測した。
iperf3 では計測毎に接続を貼りなおすため、計測ごとに割り込みがかかっているコアが違っていることが分かる。 MSS が小さい場合、1つのコアがソフトウェア割り込みによってほぼ使い果たされている。 MSSが1500に近づくにつれてその割合は減るものの、MSSが1500を超えると、ソフトウェア割り込みの割合が 50%前後を遷移している。 詳細な原因は分からないため、今後調べることにする。
まとめ
R86S で iperf3 を用いて簡易的なネットワーク処理性能の計測を行った。 MSS が 1000 bytes を超えるような場合において、約 9Gbps 以上でパケットフォワーディングができた。 簡易的な高速ルーターやパケットキャプチャデバイスとしては十分に利用できそうなデバイスであると思う。