ミニPC「R86S」で10GbE対応コンパクトSEILルータの夢を見た

2023年12月14日 木曜日


【この記事を書いた人】
熊本 祐

2018年新卒入社。名古屋支社にてSI中心にお仕事をするエンジニア。仕事ではサーバやミドルウェアを、趣味ではウェブやアプリを弄っています。

「ミニPC「R86S」で10GbE対応コンパクトSEILルータの夢を見た」のイメージ

IIJ 2023 TECHアドベントカレンダー 12/14の記事です】

はじめに

こんにちは、名古屋支社のkmmt-tです。普段は愛知県内の製造業様向けにネットワークやサーバのSI案件を担当しています。

今回は10GbEを備えたミニPCである「R86S」という機種に、IIJ謹製のソフトウェアルータ「SEIL/x86 Ayame」を導入してみました。

登場人物のご紹介

ミニPC「GW-R86S-G1」

中国のGoWin Solutionという会社が販売している「R86S」というシリーズのミニPCです。日本国内での取り扱いは無く、通販サイト等を利用して個人輸入する必要がありますが、手のひらサイズの筐体に以下のようなスペックが詰まった夢のミニPCです。

  • Intel Celeron N5105 (4C/4T)
  • 8GBのメモリ
  • 128GBのeMMC
  • Intel I226-Vによる3つの2.5GbE RJ45ポート
  • Mellanox ConnectX-3による2つの10GbE SFP+ポート
  • NVMeに対応したM.2スロット

ハードウェアに関する細かなレビュー等は、大手メディアなどでも記事が出ていますのでそちらに譲ることにします。

ソフトウェアルータ「SEIL/x86 Ayame」

アドベントカレンダー2023連載の12/13掲載分として昨日公開された、s-umetsuさんの SEIL/x86 Ayame とミニPCでソフトウェアルータ入門 でも利用されていますが、改めてご紹介です。

SEIL/x86シリーズは、IIJが開発したx86アーキテクチャ向けの高機能ソフトウェアルータです。ハードウェア版のSEILシリーズが持つ様々な機能を踏襲し、仮想環境上でそれらの機能を提供するために開発されました。IIJが提供するIaaS「 IIJ GIOインフラストラクチャーP2」の環境をはじめとする様々なクラウドネットワーク上で、仮想ルータやインターネットゲートウェイ、リモートアクセスゲートウェイなどとして活躍しています。今回利用する「Ayame」は2019年12月から提供開始された、SEIL/x86シリーズの最新モデルとなります。

そんなSEIL/x86 Ayameには、一般の方でもご利用が可能(※1)な「スタンダードエディション」の他に、法人向けにより高性能な機能が利用できる「エンタープライズエディション」が用意されています。

両者には様々な機能差異がありますが、今回特に着目したいのは以下の2機能です。

スタンダード エンタープライズ
使用可能なCPU数の上限 2 8
対応デバイス 10GbE コントローラ
価格 5,000円(税抜) 250,000円(税抜)

スタンダードエディションではCPUは2コアまでの対応、インタフェースも1GbEまでの対応でしたが、エンタープライズエディションでは8コア対応かつ10GbEインタフェースが利用可能です。

すなわち、R86Sが持つ2つの10GbE SFP+ポートを活かすには最適なエディションというわけです。

とはいえ、エンタープライズエディションは個人で購入するにはあまりにもお高いので、今回はエンタープライズエディションのお試し用である「トライアルエディション」を使って動作確認をしてみました。

実際に構築してみた

R86S上のESXiにSEIL/x86 Ayameをデプロイ

SEIL/x86 Ayameは仮想ルータですので、仮想アプライアンスをデプロイするための環境が必要です。

今回はVMware環境での利用をするため、R86SにVMware vSphereをセットアップしました。オンボードのeMMCにインストール出来なかったり、I226-Vのドライバがインストールメディアに含まれていないなど色々と課題こそありましたが割愛します。

あとは、公式サイトからダウンロードできるSEIL/x86 AyameのOVAファイルをインポートすれば完了です。ただし、CPUコア数やネットワークインタフェースがデフォルトでは1つだけになっていますので、必要に応じて追加を行います。

今回は、2つのvSwitchを作成してそれぞれにR86SのSFP+ポートを割り当てし、各vSwitchに1ポートずつの仮想NICを割り当てました。

実際にトラフィックを流してみる

今回、SEIL/x86 Ayameには2つのセグメント間の単純なL3ルーティングのみを担ってもらうことにします。

以下のようなネットワーク構成を構築し、両端に接続した10GbE対応のマシンでiperf3によるスループット試験をしてみることにします。

テストマシン#1には、4つのIPアドレスを割り当てることでSEIL/x86 Ayameのマルチコア機能を最大限に活用できるようにしつつ、iperf3のオプションとしても-Pオプションによる並列実行数を複数とすることで、最大のパフォーマンスを発揮できるようにしています。

マルチコアCPU搭載機種は複数のCPUによってパケット転送を並列処理します。
並列処理の単位はIPフロー(送信元と送信先の組み合わせ)です。受信パケットのIPフローからハッシュ値を計算し、その値ごとに受信キューを振り分け、受信から送信までのパスが並列化されます。
TCPパケットの場合は、IPヘッダの送信元アドレス、送信元ポート番号、送信先アドレス、および送信先ポート番号からハッシュ値を計算します。
パケット転送のマルチコア処理 – SEIL/X4 TECHNICAL MANUAL

SEIL/x86 Ayameに対してはインタフェースge0およびge1に対してIPアドレスを指定するだけのシンプルなコンフィグを投入しており、各種フィルタ等は全てオフの状態です。

# show config
interface.ge0.ipv4.address:     10.0.0.1/24
interface.ge1.ipv4.address:     10.0.1.1/24
login.admin.encrypted-password: ******
sshd.password-authentication:   enable
sshd.service:                   enable

実際にトラフィックを流してみたところ、以下のような結果となりました。

1アドレス宛あたりのトラフィックは、1Gbps~1.7Gbps程度となっており、合計しても5Gbps程度しか出ていません。iperf3を1プロセスで実行した場合でも同様の結果でした。

[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-600.00 sec  36.6 GBytes   524 Mbits/sec  88201             sender
[  5]   0.00-600.00 sec  36.6 GBytes   524 Mbits/sec                  receiver
[  7]   0.00-600.00 sec  47.5 GBytes   679 Mbits/sec  30637             sender
[  7]   0.00-600.00 sec  47.5 GBytes   679 Mbits/sec                  receiver
[  9]   0.00-600.00 sec  29.9 GBytes   428 Mbits/sec  69249             sender
[  9]   0.00-600.00 sec  29.9 GBytes   428 Mbits/sec                  receiver
[ 11]   0.00-600.00 sec  60.3 GBytes   863 Mbits/sec  18753             sender
[ 11]   0.00-600.00 sec  60.3 GBytes   863 Mbits/sec                  receiver
[ 13]   0.00-600.00 sec  39.9 GBytes   571 Mbits/sec  31900             sender
[ 13]   0.00-600.00 sec  39.9 GBytes   571 Mbits/sec                  receiver
[ 15]   0.00-600.00 sec  62.7 GBytes   898 Mbits/sec  5442             sender
[ 15]   0.00-600.00 sec  62.7 GBytes   898 Mbits/sec                  receiver
[ 17]   0.00-600.00 sec  28.5 GBytes   408 Mbits/sec  72824             sender
[ 17]   0.00-600.00 sec  28.5 GBytes   408 Mbits/sec                  receiver
[ 19]   0.00-600.00 sec  41.5 GBytes   594 Mbits/sec  41772             sender
[ 19]   0.00-600.00 sec  41.5 GBytes   594 Mbits/sec                  receiver
[SUM]   0.00-600.00 sec   347 GBytes  4.97 Gbits/sec  358778             sender
[SUM]   0.00-600.00 sec   347 GBytes  4.97 Gbits/sec                  receiver
スループット CPU使用率

ESXi上から確認できる仮想マシンの監視グラフから確認してみても、やはり5Gbps程度のスループットしか出ていませんでした。CPU使用率については、最大で77.76%となっており、マルチコアへの負荷分散自体は効いているようです。

SEILのコンソールから show system コマンドで確認ができるCPU Stats上でも、各コアに対して均等に負荷が分散されていることが分かりました。しかし、目標としていた10Gbpsに対しては半分程度の速度しか出ていません。

改めて、ESXi全体の監視グラフを確認してみます。

スループット CPU使用率

トラフィックが5Gbps程度のスループットとなっている区間において、CPU使用率が100%となっていることが分かります。上で確認をした仮想マシンとしてのCPU使用率は75%程度でしたので、仮想マシン内ではなくホストマシン側における各インタフェースの仮想ネットワークアダプタ(VMXNET3)I/O処理自体にCPUリソースが使われていたようです。

そもそもが非力なモバイル用SoCであるIntel Celeron N5105では、10Gbpsの膨大なパケットを捌き切ることが出来なかったようです。

まとめ

今回は、エンタープライズエディションのSEIL/x86 Ayameを利用して10Gbpsトラフィックに挑んでみましたが残念ながらマシンスペックの都合により10Gbpsスループット達成はならずとなりました。

手のひらサイズのコンパクトマシン上で、自社製ルータによる10Gbps環境を作ることができれば夢のような話でしたが、残念ながら夢のまま終りとなりました。

とはいえ、近年流行りの2.5Gbpsインタフェースを持ったPCなどを利用する際に、2.5Gbpsでのルーティングが出来る機器としては十分な性能を発揮できそうです。

それでも10Gbpsを出したい、そんなあなたに・・・

9月中旬に弊社がリリースした、SEILアプライアンスシリーズの最新機種「CA10」ならば、最大で8コアのCPUによる処理できっちりと10Gbpsの速度を出すことが出来るとのことです。

一足お先に“CA10”を触ってみた ~ IIJの最新高機能ルータ SEILアプライアンスシリーズ

また、今回試験したR86Sシリーズの新機種では、昨日の記事でs-umetsuさんが利用されていた機種でも使われていた「Intel N100」を採用した機種や、その上位モデルとなる「Intel i3-N305」を採用したモデルも登場しており、こういったCPU性能が向上したモデルを利用することで今回以上のトラフィックを出すことが出来るのではないか、と期待が持てます。

(私がN100モデル、N305モデルを買うかどうかはちょっと検討させてください・・・!)

  1. Amazonの販売ページにて5,000円でお買い求めいただけます[↑]
IIJ Engineers blog読者プレゼントキャンペーン

Xのフォロー&条件付きツイートで、「IoT米」と「バリーくんシール」のセットを抽選でプレゼント!
応募期間は2023/12/01~2023/12/31まで。詳細はこちらをご覧ください。
今すぐポストするならこちら→ フォローもお忘れなく!

熊本 祐

2023年12月14日 木曜日

2018年新卒入社。名古屋支社にてSI中心にお仕事をするエンジニア。仕事ではサーバやミドルウェアを、趣味ではウェブやアプリを弄っています。

Related
関連記事