10Gスイッチが高すぎなので中古PCで自作してみた 【概要編】

発端はネットワークトラフィック情報を取得できるマネージドな10Gスイッチが欲しいと思ったこと。

8月下旬に自宅のインターネット回線を1Gbps から10Gbpsに切替えました。 手元に 10Gbps のポートを持つ機器は1台しかないものの今後増えていくだろうし、トラフィックの監視や可視化を考えるとSNMPやxFlowが利用出来るマネージドスイッチが欲しいなと物色したのですが当たり前だけど高い・・・。 ということで中古PCで自作することにしました。

なお、今回自作したのは 10Gルータではなく10Gスイッチです。 目的はISPとの接続を担うルータではなく、ブリッジさせてトラフィックを可視化することです。  もし10GルータとしてISPと接続するためのノウハウの情報を探している場合はここにはありません。

この概要編では10Gスイッチが必要な理由や実際にどのようなパーツで自作したのか、最終的に1.5万円で構築した中古PCのスループット実測値を紹介します。

なぜトラフィックを可視化したいと思ったのか

結論を先に言えば、1つは”自宅の10ギガ回線の実力を知りたい”こと。もう1つは今後問題が起きているかどうかを見定めるための”ベースラインを見定めたい”、の2点がトラフィックを可視化したい理由です。

先日、ソフトバンク光の1ギガ回線からソフトバンク光+の10ギガ回線に変更しました。  

最初に思ったことは”我が家はどれくらいの速度がでるのか?”でした。 世の中にインターネット回線の速度測定サイトは沢山あるので色々試してみました。 PCのWebブラウザからの測定で下りで3.9Gbps、上りで3.2Gbpsとまあそんなものか、という結果でした。 この結果に特に不満はなく、ベストエフォート回線なので居住地域やプロバイダーによるものとわかってもいたので結構速い!と思いました。

次に考えたのは”時間帯や曜日によって変動するのか?”。  言い換えると我が家の普通の速度、ベースラインを認識したい、そこを大きく下回ったら何かプロバイダー側で問題が起きていると問題を検知できる状態にしたい、ということでした。  

ベースラインを定めるためには継続的にトラフィックを測定する必要があります。 これが今回トラフィックを可視化したいと思った理由となります。

なぜ中古PCで構築しようと思ったのか

こちらも先に結論を言えば、コストパフォーマンスです。  付け加えるならば壊れる事前提で、壊れても被害が小さい構成として中古PCを選びました。  

わたしの基本的な考え方は餅は餅屋で、出来れば人気がある餅屋です。  得意な人、メーカが作っていて世の中で人気があるプロダクトを利用するのが総合的に間違いないことが多いです。 ただ、ちゃんとしたメーカが作っている10Gスイッチは高かったのです。

10Gポートは最低2つ、3~5年くらいのハードウェアの保証があって、SNMPやxFlowが使えて、国産または米国産で調べてみると最低でも10万円くらいの出費が必要(新品の場合)。 

中古やメルカリ、ヤフオクだと新品の半額以下で出品されていることもあるみたいですが私が見たタイミングでは見つからず。  また、自宅の設置場所は専用のエアコンがあるわけでもないので熱での故障を考慮すると中古でも3~5万円は投資に見合わないと判断。 そもそも、トラフィックの可視化は必須要件ではなく、無くてもこまらない自己満足の世界のため。

また、自分の中で1万円から1.5万円位であればコスト投下してもよいなという感覚がありました。  このコスト感で Gemini にも相談しつつ、中古PCに 10G NIC やその他必要なNICを増設する構成であれば1~1.5万円でも実現できそうだなという算段がついたので計画をすすめることにしました。  

熱問題での故障は中古PCでも同様にあるのですがすべてのパーツが同時に壊れる可能性は低いことも中古PCでの自作を選んだ理由です。 10G NICが壊れたらそこだけ交換、CPUやメモリが壊れたらそこだけ交換することが可能です。 一方、10Gスイッチの場合、3~5万円で再購入が必要になります。

自作PCと市販のスイッチの比較です。 お金があればハードウェア故障時に交換できる新品が良いですが、壊れた場合の被害が一番低い自作PCを今回選択することにしました

自作PC中古
10Gマネージドスイッチ
新品
10Gマネージドスイッチ
コスト10,000~15,000円30,000~50,000円100,000円~
保証××
熱問題
性能
トラフィック可視化

システム構成

システム構成を絵にするとこんな感じです。 中央の10Gスイッチを中古PCに10G NICを積んで、Ubuntu をインストールしてブリッジを構築します。 

中古PCのシステム構成はこんな感じです。 HP の ProDesk に RJ45の10Gbpsを2ポートもつ x540-t2のLANカードと 2.5Gbps を1ポート持つLANカードの2枚を増設しています。

システム要件

今回の自作にあたってのシステム要件も紹介します。

機能要件

機能要件とか言うと堅苦しいですが、ざっくりと以下の機能の実現を考えました。

  1. 複数のポートをブリッジしスイッチングハブのように使えること
  2. 最低 10Gbps を2ポートを備えること (1つはソフトバンク光のルータへ、もう1つは自宅NWの10Gbps 対応機器を接続)
  3. 1Gbps または 2.5Gbps を1ポート備えること (WiFiルータや各居室への有線接続、別にある1G/2.5Gスイッチ経由)
  4. ポートはすべてRJ-45 (接続機器はすべてRJ-45しか対応できない)
  5. ポートのトラフィックを測定できること、また、測定したトラフィックデータを外部に転送できること
  6. LANカードのハードウェア的なオフロードは利用出来たらベター (無くても現代のCPUなら Loss 無しでいける)

非機能要件

  1. 【信頼性・可用性】中古のPC、中古のNICなので信頼性はもとめない。 故障したら手動でソフトバンク光+ルータにつなぎ替えて復旧する。ブリッジ構成なのでつなぎ替えだけで簡単。
  2. 【性能】20Gbps以上のスイッチング性能があればベター (厳密には20Gbps に加えて 1Gbpsや2.5Gbpsの分も必要ですがそこまで厳密には考えていない)
  3. 【拡張性】今回は不要。 机上で CPU は Core i3-8100(4core,3.60GHz)で十分な性能、メモリも4GBで十分。 NICをもっと増設できるようPCIスロットの空きはあればベターであるが筐体サイズや発熱、消費電力など考慮事項も増える)
  4. 【運用・保守性】安定稼働するまでは定期的にパッケージ最新化とバックアップを手動で実施する
  5. 【セキュリティ】ブリッジ動作で必要な最低限のパッケージ構成とし、L4レベルのパケットフィルタ、SSH接続のアクセス元制限、OSSによるシステムファイルの改ざんチェックなどを構成
  6. 【設置場所】自宅内のNW機器設置専用スペース(幅 75cm、高さ30cm、奥行き、40cm)に設置できること。 ソフトバンク光+のONUやルータ、1Gスイッチ2台、2.5Gスイッチ1台、電源タップなどとあわせて設置できること。 

コスト

  • まず、コストは1万円から1.5万円を想定 (アンマネージド10Gスイッチの半額位、かつ、壊れてもまあいいかと思える位)
  • PC本体とNICをあわせて上記の費用におさめる

購入機器と選定ポイント

購入機器は以下の通りです。 ちょうど 15,000円位でした。 

PCパーツ製品型番・スペック選定ポイントコスト
PC本体HP ProDesk 400 G5 SFF
CPU:Intel Core i3-8100
(4C/4T, 3.6GHz)
メモリ: DDR 4GB
HDD: 500GB HDD
NIC: 1Gbps RJ45 ×1
省スペース
PCIeスロット搭載
第8世代CPU
約 8,000円
10G NICIntel X540-T2
(10Gbsp RJ45 × 2)
デュアル10Gポート約 5,000円
2.5G NICRTL8125B
(2.5Gbsp RJ45 × 1)
2.5G LAN(宅内別ルーター/スイッチ等)への接続用約 2,000円
OSUbuntu Server 24.04 LTS0円

PC本体の選定ポイント①:省スペース

中古PCの設置場所には物理的な制約がありました。 自宅内のNW機器設置専用スペース(幅 75cm、高さ30cm、奥行き、40cm)におけるサイズです。  

また、拡張性や熱問題を考えるとこのスペースに収まる範囲であれば筐体は大きければ大きいほど良いと考えました。

その結果選定したのが HP ProDesk 400 G5 SFF(小型デスクトップ)のサイズ感(およそ幅95mm×奥行き296mm×高さ270mm)がぴったりでした。  ミニタワーも入らなくはないのですがエアフローやその他ISPのルータやONU、NWスイッチや電源タップなどもありこの小型デスクトップに決めました。

PC本体の選定ポイント②:PCIeスロット搭載

10Gbps の NICとなる x540-t2 の帯域を損ねないためには PCI Express で x8 (8レーン)が必要です。 2.5 Gbps の NICには x1 (1レーン)が必要です。 今回は 2つの PCIe スロットで片方は x8以上のレーンを備える中古PCを探しました。

HP ProDesk 400 G5 SFF がその条件を満たしました。

PC本体の選定ポイント③: 第8世代CPU

CPUは第8世代以上で中古PCを探しました。 性能の観点で先に 4core は欲しいと考えて、かつ安価なCPUとなると第8世代の Core i3 がぴったりでした。 ブリッジしたパケットはKernelレベルで複数のCPUコアで分散処理されていくため、CPUコアが多い方がよいのです。 自分の実体験、感覚として 2core でもいけそうなとは思いましたが後でCPUだけ買い直しと面倒ということもありました。

性能の次に気にしたのは消費電力です。 24時間365日稼働するものなので消費電力は低い方がコスト面でも熱問題の観点でもよいわけです。 第8世代より前だと消費電力が多いということがありました。 

あとは地味なところでDDR4メモリへの対応や PCIe 3.0への対応などもGoodなところでした。

10G NIC の選定ポイント: デュアルポートのNIC

今回の10Gルーター(L2ブリッジ)作成にあたり、最初に検討していたのは「シングルポートの10G NICを2枚挿す」という構成でした。安価な10G NICを2枚調達する方が手軽に思えたからです。

しかし、実際に中古PCを探し始めるとすぐに「筐体サイズとPCIeスロットの壁」にぶち当たりました。

  • PCIe 8レーン以上のスロットが2つ必要 10G NICを2枚挿すには、PCIe x8(またはx16)スロットが2基載ったマザーボードが必要。
  • 筐体が大きくなってしまう そうした拡張性の高いマザーボードを搭載した中古PCはタワー型など筐体が巨大になりがちで、中古市場での選択肢も狭まるし、そもそも我が家の設置スペースに入らない可能性が高まる。
  • 狙い目は「リース落ちの小型デスクトップ」 省スペースで設置しやすく、中古市場(ヤフオクやメルカリなど)で圧倒的にタマ数が多く安価に手に入るのは、企業で大量に使われていたスモールフォームファクター(SFF)のオフィスPC(HP ProDeskなど)でした。

狙っていたSFFサイズの小型PCには、基本的にPCIe x16スロットが1基しかありません。そこで、1枚のカードに10Gポートが2つ載っている「Intel X540-T2(デュアルポート)」を選択する方針に切り替えました。

もちろん、10GのデュアルポートNICは単体ポートのものより価格が高めですし、何より「ただでさえ熱い10GBASE-Tが1枚に2ポート詰まっていて熱問題は大丈夫か?」という不安はありました。ですが、これは自宅での実験的な挑戦でもあります。「ダメなら冷却を工夫すればいい、まずはやってみよう!」という精神で導入を決定しました。

実測値

構築した環境での実測値を紹介していきます。 

測定は3段階で行っていきます。 まず、今回作った中古PCのブリッジを介さずに10ギガ回線の実力(スループット)を確認します。 次に、Windows 11 のPCで中古PCのブリッジ無とブリッジ有の2パターンでスループットを測定します。

測定結果サマリ

先に測定結果(結論)を書きますと、中古PCのブリッジを介しても明確なスループットの低下は確認されない=中古PCでも十分に実用になる、という結果でした。 (ただし、後述しますが要追試ではある)

中古PCを経由しない場合中古PCを経由する場合
ダウンロード6.2~6.6 Gbps約 6.0~6.3Gbps
アップロード5.9~6.2 Gbps約 6.0~6.3Gbps

要追試とした理由は以下の2点です。

  1. 測定元の Windows 11 では10ギガ回線の実力値(8Gbps)を測定出来ない
  2. 稼働して数日しかたっておらず、安定して動作するか数週間は様子を見る必要がある

1つ目の話は、中古PCのブリッジを介さない場合でもWindows 11 では 6Gbps程度のスループットしか確認できず、8Gbps のUbuntuとの差がありました。 中古PCのブリッジを経由しても 6Gbps からの低下は見られなかったのですが、8 Gbps だと低下しないかどうかは実測しないとまだなんとも言えません。 まあ、 Ubuntu のCPUなどの利用状況(ほとんど使っていない)からは 6Gbpsが 8Gbps になっても処理できるだろうと予測はしていますが実際に確認したいところ。

2つ目の話は、24時間365日稼働させるネットワーク機器としての継続性、安定性の話です。 OS上の様々なレイヤ、スタックでバッファをもっており、今は問題ないけどどこかで問題が顕在化するかもしれません。 また、RJ-45 の 10Gbps の熱の心配です。 今は動いているが明日も動くかはまだ安心出来ないということです。

ソフトバンク光+ 10ギガの実力値  by Ookla Speedtest

まずは中古PCのブリッジ(10Gスイッチ)の性能測定の前にソフトバンク光+の回線速度を実力値を測定します。

測定元はソフトバンク光+のルータ(10G EWMTA1.0)に直結している中古PCです。 ここからOokla のSpeedtest をUbuntu上で実行します。 

このとき、Webブラウザ版ではなくネイティブアプリを利用することが重要です。 Webブラウザ版はオーバヘッドがあり、回線速度の実力が測れないことがあるためです。 まあ、わたしの Ubuntu は GUI をインストールしていないのでGUI上でのWebブラウザでのテストはそもそも行えないですが・・。

ブログ掲載のために手動でSpeedtest を実行します。 Download は約 8.0Gbps、Upload は約 7.4Gbpsです。 今は日中ですが、朝でも夜でも深夜でも大体これくらいのスループットが出ています。

bash
$ ./speedtest

   Speedtest by Ookla

[error] Error: [0] Cannot read from socket:
      Server: IPA CyberLab 400G - Tokyo (id: 48463)
         ISP: SoftBank Corp.
Idle Latency:     8.77 ms   (jitter: 0.41ms, low: 8.55ms, high: 9.31ms)
    Download:  7977.25 Mbps (data used: 9.4 GB)
                 80.55 ms   (jitter: 51.67ms, low: 8.28ms, high: 503.28ms)
      Upload:  7373.68 Mbps (data used: 9.6 GB)
                 12.53 ms   (jitter: 2.25ms, low: 7.93ms, high: 15.46ms)
 Packet Loss:     0.0%
  Result URL: https://www.speedtest.net/result/c/b92d15e2-6570-44ac-8552-7c0c6b4bd918
$

speedtest を実行すると結果にアクセスできる URL も発行されます。 そちらではこんな感じでちょっときれいにわかりやすく結果を確認することが出来ます。

中古PCのブリッジ無 by Ookla Speedtest

中古PCのブリッジ性能をテストするには Before / After を比較する必要があります。 つまり、自作した中古PCを介さずにテスト用のWindows 11 のPCをソフトバンク光+ルータに直結し、Ookla Speedtest での結果を測定します。

Windows 11 のPCでの Speedtest の結果ですが、3回測定してダウンロードが約6.2~6.6 Gbps、アップロードが5.9~6.2 Gbpsでした。 Speedtest は Store からインストールしたアプリ版です。

この結果、Ubuntuの中古PCよりも遅いですね・・・。 再度 中古PCで実行しても上りも下りも約8.0Gbpsだったので Windows 11 側に何が原因がありそうです。

まずはハードウェアスペックですが、このWindows 11 はCore i7-12700 (12世代,12core) / 32 GBメモリ と 第8世代のcore i3(4core)、4GBメモリより明らかにハイスペックです。 また、上記のスクリーンショットでもわかるようにCPUもメモリも特に不足はみられません。 気になるとしたらCPUリソースの消費はそれほどあがっていないことから Windows 11 版の Speedtest はスレッド処理がされずに 1つの CPUコアしか使っていないのかもしれません。

あと考えられるのは 10G NIC のChipの違いもあります。 Ubuntu は Intel x540ですが、Windows 11 は Marvell (Aquantia) 系の 10G NICです。 ドライバ設定(Receive Side Scaling: RSS の有効化や Large Send Offload: LSO などのオフロード設定)なども気になります。 Windows の TCP ウィンドウサイズ上限に起因している可能性もあります。

あとはSpeedtestでスレッド処理されていない可能性など。

とりあえず、ブリッジPCを介した場合と介さない場合のテストは行えるので次に進みます。

中古PCのブリッジあり

次は中古PCをブリッジした場合の speedtest の実測です。

中古PCの10Gbps ポートに Windows 11 のPCを直結し、Windows 11 上でネイティブアプリ版の speedtest を実行します。

結果ですが3回測定して、ダウンロードもアップロードも約 6.0~6.3Gbps でした。  ダウンロードが少し遅いかもですがインターネット越しなのであまり深く考えたり、調べても仕方ない系です。

まとめ

結果として、中古PCやLANカードを1.5万円で揃えることで十分実用的なスループットを実現することが出来ました。

また、元々やりたかったことはトラフィックの可視化です。  チラ見せですが、Ubuntu からトラフィックログを Alibaba Cloud の Simple Log Service (SLS) というものに転送し、そこに検索およびグラフなどで可視化可能な状態で保管も開始しています。 以下の感じです。 SLS の話はまた別に紹介する予定ですが、やっていることは大昔でいう MRTG や Cacti などと同じです。  Alibaba Cloud 以外での連携なども今後紹介する予定です。

今後、以下ネタを時間見て書いていく予定です。

  1. Intel x540-t2 、熱すぎ問題
  2. Intel x540-t2 、装着するとBIOSすら起動しない問題
  3. Intel x540-t2、リンクフラッピング問題
  4. Ubuntu のブリッジ設定、チューニング、セキュリティ強化の設定
  5. Alibaba Cloud SLS へのログ転送と可視化
  6. ログ転送先を Azure / AWS へ
  7. なぜにルータの役割ではなくブリッジにしたのか
  8. なぜ汎用OSの Ubuntu にしたのか

以上