STCK1A32W: スティックPCを自宅ルーターにする

我が家は、PCハードウェアを流用した自作ルーターで運用しています。OSはVyattaというLinuxベースのルータアプライアンス。2012年頃に構築しました。埃や熱で、ファンとHDDが時々故障しますが、交換修理しながら運用しています。PCベースなので修理は簡単。出来るだけ低消費電力になるようなハードウェアで運用してきました。
現在のスペックは、

  • Pentium III 700MHz
  • 512MB RAM
  • 10GB HDD

という15年くらい前のものでNLX小型ケースに入っています。メモリ増設やCPU交換が出来ればまだ延命出来るのですが、そろそろ真面目に別ハードウェアに移行したいと考えています。

数年前からルーターハードウェアをRaspberry Pi または Stick PCに移行しようとハードウェアは集めてきたものの、私にとって都合が良いルーターアプライアンスをラズパイやStick PCにうまくインストールすることが出来ず、作業時間を取ることが出来なかったことも重なり延び延びになっていましたが、今年になって時間を確保出来ようやく力を入れて構築とテストを始めました。

都合が良いのは、Vyatta OSを利用することですが、私が使い始めた時は無料だったVyatta OSは買収されてしまい、今は有償となっています。引き続き無償で使えるVyOSという手もあるのですが、違いや使い方に関して未調査。今回はFreeBSDベースのものを優先して評価したいと考えています。

我が家のルーターに必要な機能は、

  • PPPoE機能
  • ファイヤーウォール、パケットフィルタリング機能
  • ネットワークモニタリング機能・リモート監視機能
  • HTTP Proxy機能

くらいで、ルーティングプロトコルやVLAN機能など、複数ネットワーク同士をつなぐ機能は必要ありません。なので、素のFreeBSD OS 標準機能と設定でルーター機能を実現出来ますが、私の設定ではパフォーマンスが出てくれません。同じハードウェアを使ってルーターアプライアンスOSを入れるだけで、素のOSを使った場合に比べて1.5倍くらいの通信速度が出ます。じゃあ、ルーターアプライアンスを使えば?となるのですが、ルーター専用OSは、通信以外の機能が使いにくい。パケットフィルタリングを設定しようとしても勝手が違うし、設定の考え方がOSの考え方と違う。
素のFreeBSD OSを使いたいところですが、こういう背景からルーターアプライアンスの最小設定で使ってきていました。そして、今、再び自作ルーターを選定中。ほぼ確定しているのはIntel Atom CPUや Raspberry Pi など消費電力が25W以下のハードウェアを使う事。今は、Stick PCをターゲットにテスト中です。

Stick PCを使用する前に、先日 AD2700-ITX の64bit OS動作確認を行うついでに、pfSenseをインストールしてどの程度の通信速度が出るのか事前に試しておきました。

  • CPU: Atom D2700 最大2.13GHz
  • メモリ: DDR3 8GB
  • HDD: SATA 250GB
  • LAN: 内蔵LAN + PCI 100BASE LANカード(ISPとの契約が100Mbpsなので、1000Base NICは意味なし。)

この構成でテストしたところ、契約中の通信速度100Mbpsをいっぱいまで使用出来たため、これ以上のスペックは必要無しと判明。また、pfSenseダッシュボードで使用メモリを確認したところ、最大でも2GB程度。これでもスワップは発生せず、CPU負荷は最大でも50%以下であり、HDD容量容量も10GB程度でした。

これで、100Mbps回線の場合、2GHz 程度のマルチコアCPU、メモリ 2GB、10GB程度のファイルシステムがあればルーターとして使えそうです。(Raspberry Pi 2/3 の場合、内蔵メモリ容量が1GBなので、もしラズパイを使用する場合は事前テストが重要。)

ルーターハードウェアとしてのSTCK1A32WFCR

上記を目安として、Intel compute stick STCK1A32WFCR を評価してみると、

  • CPU: Intel Atom Z3735F 4コア、1.33GHz(最大1.83GHz)
  • メモリ: DDR3 2GB
  • 内蔵SSD: 32GB
  • LAN: 内蔵WiFi のみ

CPU, メモリ, SSDは、とりあえず十分。問題はネットワーク。ルーターには最低1個の有線LANポート、できれば2個のLANポートが欲しいところ。しかも内蔵WiFiとMicro SDスロットはpfSenseが対応しておらず使えない模様。なので、USB LANポートx2 を使う必要があります。ここで更に問題になるのが STCK1A32WFCのUSBポート仕様。STCK1A32WFCは USB 2.0 仕様が1ポートあるだけ。キーボードも、USB LANアダプターも全部この1個のUSBポートを使う事になります。

intel stck1a32wfcr にはUSB2.0ポートが1個しか付いていない。

PPPoEポートから入ってきたパケットはUSBポートを経由してPCに取り込まれ、加工されて同じUSBポートを通って内部LANに転送されてゆくわけです。そのため、480Mbps のUSB2.0ポートの通信量がルーターの性能を決めることになります。

また、自作ルーターシステムの大きさもPC本体の2~3倍の大きさになります。(下図)

stick PCでルーターを構成するのに必要なパーツ

PC本体はこんなに小型なのに、そこに巨大なUSB HUB付きNICとNIC、それとキーボードドングルが必要になります。運用段階ではキーボードは不要になるでしょうけど、サイズ的にはこんなにも大きくなってしまいます。しかし、消費電力は2Aアダプターなので10W以下。

STCK1A32WFCRの性能はどれくらい?

さて、STCK1A32WFCRにpfSenseをインストールし、LANインタフェースの設定を行い、ルーターとして稼働させました。(HTTP Proxy稼働)

下図が転送速度。単位はM byte/sec は、100Mbps の契約で、60Mbps〜90Mbps くらいの性能です。AD2700-ITXでは、100Mbpsに貼り付きましたけど、USB2.0ポートに接続した LANの限界か、上限に貼り付くほどではありませんでした。

pfSense STCK1A32W の通信速度グラフ

この時の負荷は?(下図は、pfSenseダッシュボードの表示。)

pfSense STCK1A32W の通信時負荷

CPUは半分以下、メモリも200MB程度しか使用されていないようで、ハードウェアリソースは余っています。

入門クラスPCと考えられるStick PCですが、自宅ルーターとして使うに十分な性能を持っているようです。
Pentium III ベースの自作ルーターの3倍くらいの性能を出せるようですが、一番大切な安定稼働が出来るかどうかはもう少し使ってみなければわかりません。

また、OPNsense というpfSense同様 FreeBSDベースのルーターOSも試して見ようと思っています。
しばらく、このまま運用しながら、別のOSも検討したいところです。

2020/02/15 追記

Stick PCを自宅ルーターにしてから約20日間連続運用を続けてきました。ftpを使用する時にProxyとして少し問題が出るものの、ATXタイプPCを使用した旧自作ルーターより静かで、はるかにパフォーマンスが良い状態です。

特にプレイする予定は無い巨大ゲームソフトを、ルーターパフォーマンスを見るためにダウンロードしてみたところ・・・・契約している100Mbps(10MB/sec) の回線上限にほぼ貼り付きました。USB2.0タイプLANポートでも条件さえ整えば、帯域を使い切るようです。
この時のCPUとメモリですが、まだ半分も使用していない。(下図)

Intel Stick PCを自宅ルーターとして使用するのは、なかなか良い選択肢のようです。
ただ、OSがクラッシュすると全く手を出せないクローズPCなので、当面は旧自作ルーターをそのまま維持しておくことが必要そうです。

コメントを残す