6 万円で 1L サイズ 6 コア 10G x2 サーバを組む方法
10G NIC は未だ PC に標準搭載となっておらず、比較的大きいシャーシに PCIe NIC を積む必要がありました。
FTTH で 10G が家庭用に出てきている現在、これでは検証ができません。
これをコンパクトかつ低コストに組み、ついでに 10G x2 のトラフィックジェネレータをインストールします。
目的とできること
10G NIC で高速な通信が可能
- Synology NAS に ESXi VM のバックアップを高速に取得
ESXi をインストールして多用途に使えるようにする
- EVE-NG で NW OS の検証
- Cisco Trex を VM としてインストールし、10G x2 のトラフィックジェネレータを構築
コンパクトな PC に構築することで、ハンドキャリーできるサーバを作る
- トラフィックジェネレータで 10G 速度測定
- EVE-NG と実機を接続して検証
ソフトウェアルータをインストールすることで、CLI を持つ 10G 対応ルータを安価に作る
- スループットを検証したい候補を、雑にリストアップ
- SEIL/x86
- VyOS
ハードウェア構成
以下は実際の購入品。メモリと NVMe のグレードを下げると、もっとお安くなります。
メーカー | 型式 | 内容 | 入手先 | 価格 | 数量 | 備考 | |
---|---|---|---|---|---|---|---|
本体 | Lenovo | M720q Tiny | Core i5-8400T 6C6T
8GB メモリ HDD なし AC アダプタなし |
ヤフオク | \22,660 | 1 | Trex を使いたい場合は、VT-d 対応を選ぶこと
M720q , M920q 以降に PCIe が存在する |
オプション | Lenovo | 01AJ940 | PCIe x16 ライザーカード | eBay | \6,109 | 1 | Superbuy のほうが安かった
2.5 HDD スペースは犠牲になる 他に PCIe x8 のものが存在する (M720q 側は x8 なので、どちらでも良い) |
オプション | Lenovo | 5M10U50350 | PCIe LP パネル | Superbuy | \2,000 | 1 | i350-T4 用
なくても OK , あると色が揃う |
メモリ | Crucial | CT16G4SFS8266 | DDR4 16GB | Amazon | \7,980 | 2 | トラフィックジェネレータ用途は 8GB でも問題ないはず |
NVMe | Solidigm
(Intel) |
SSDPEKNW010T8X1 | 1TB | Amazon | \13,863 | 1 | WD だと ESXi7 が対応しない
Intel が鉄板らしい |
NIC | Intel | X520-DA2 | 10G x2 SFP+
PCIe LP |
ヤフオク | \7,980 | 1 | Fujitsu の互換カードが安かった
SFP+ のカードを買っておくと、 10G-T SFP+ でファイバとメタル両対応にできる |
合計 | \68,572 |
ソフトウェア構成
VMware vSphere 7 (ESXi7)
- CentOS7
- Cisco Trex v2.87
組み立て
筐体全面・背面
右上の RGB コネクタの部分を PCIe に変更できます。
この世代から背面に M.2 とメモリスロットが移動したので、交換がやりやすいです。
左に CPU ファン、右に 2.5 HDD ベイがあり、HDD ベイを PCIe に変更します。
小さい部品が PCIe ライザーカード。一番右のカードはテストで使った Mellanox 40G NIC.
PCIe ライザーカードを使って、Intel X520-DA2 10G NIC を搭載したところ。
ブラケットは NIC のまま。
NIC の LP ブラケットを、こいつに変更。
i350-T4 用のため完全には合わない (隙間がある) けど、やらないよりは良い感じに。
Trex テスト結果
ESXi7 に CentOS 7 VM を構築して 10G NIC を PCI パススルー、Trex v2.87 をインストールして、
10G ポート直結でトラフィックを印加してみました。
Mellanox-X4 40G NIC
Mellanox-X4 40G NIC | Gbps | ||||
---|---|---|---|---|---|
実効合計帯域幅 | Port1 Tx | Port1 Rx | Port2 Tx | Port2 Rx | |
01 1500Bytes 単方向 40G | 50.8 | 25.4 | 0 | 0 | 25.4 |
02 9000Bytes 双方向 40G | 55.0 | 13.7 | 13.7 | 13.8 | 13.8 |
01 1500Bytes 単方向 40G
MTU 1500Bytes 単方向だと 25Gbps 出た。実際には Rx 25Gbps もあるため、
受信を含めた帯域幅は合計 50Gbps となる。
MTU 9000 で 2Mpps -> 380Kpps に落としているが、13.7Gbps 双方向 x2 で 54.8Gbps とあまり変わっておらず、
pps よりも帯域幅によって限界スループットになる模様。
CPU 使用率は 100% になっていない + PCIe x8 はおおよそ双方向 128Gbps , 単方向 64Gbps [1]のため、
128 / 2 / 2 = 32Gbps 双方向 x2 が限界スループットの理論値になるはずだが・・・
発熱も 10G NIC と比べて大きいと考えられるため、40G NIC の搭載は諦めました。
Intel X520-DA2
Intel 10G NIC | Gbps | ||||
---|---|---|---|---|---|
実効合計帯域幅 | Port1 Tx | Port1 Rx | Port2 Tx | Port2 Rx | |
01 64Bytes 双方向 10G | 40 | 10 | 10 | 10 | 10 |
64 Bytes ショートパケットを双方向で印加。
L1 でヘッダも含めて 10G , L2 でヘッダオーバーヘッドを排除したペイロードで 7.63Gbps
14.88Mpps の 10G ワイヤレートを双方向で確認できました。
結果概要
IXIA などのように高精度のクロックジェネレータは無いため、
Trex では厳密な間隔でイーサネット フレームを送信することができません。
厳密なパケットドロップ数を計測する用途には向かないですが、以下の用途に使用できます。
- QoS を確認する際の、非優先トラフィックの印加
- 10G スループット測定
VyOS スループットテスト
VyOS 1.4 を VM としてインストール、10G ポートを接続し、
トラフィックを印加してスループットを測定してみました。
VyOS /w vSwitch | Gbps | ||||
---|---|---|---|---|---|
実効合計帯域幅 | Port1 Tx | Port1 Rx | Port2 Tx | Port2 Rx | |
01 1500Bytes 5Gbps 双方向 1Core | 17.2 | 4.9 | 4.3 | 4.9 | 4.3 |
02 1500Bytes 10G 双方向 4Core | 29.6 | 9.8 | 7.4 | 9.8 | 7.4 |
03 1500Bytes 10G 双方向 6Core | 29.6 | 9.9 | 7.7 | 9.9 | 7.1 |
vSwitch 経由
01 1500Bytes 5Gbps 双方向 1Core
手始めに 5Gbps 1500Bytes で双方向に印加。
1Core しか割り当てていないですが、4.3Gbps 双方向と結構速い。
02 1500Bytes 10G 双方向 4Core
1500Bytes 10G 双方向印加。7.3Gbps 双方向出てます。
03 1500Bytes 10G 双方向 6Core
1500Bytes 10G 双方向印加。7.0 - 7.7Gbps 平均 7.37Gbps 双方向出ましたが、
スループット面で 4 -> 6 にコア数を増やす意味はないですね。