6 万円で 1L サイズ 6 コア 10G x2 サーバを組む方法

提供: hkatou_Lab
2022年3月13日 (日) 11:01時点におけるHkatou (トーク | 投稿記録)による版 (→‎VyOS スループットテスト)
ナビゲーションに移動 検索に移動

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 のグレードを下げると、もっとお安くなります。

BOM
メーカー 型式 内容 入手先 価格 数量 備考
本体 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

組み立て

筐体全面・背面

M720q 前面パネル
M720q 背面パネル (デフォルト)

右上の RGB コネクタの部分を PCIe に変更できます。

M720q 下部 M.2・メモリスロット

この世代から背面に M.2 とメモリスロットが移動したので、交換がやりやすいです。

M720q 内部

左に CPU ファン、右に 2.5 HDD ベイがあり、HDD ベイを PCIe に変更します。

小さい部品が PCIe ライザーカード。一番右のカードはテストで使った Mellanox 40G NIC.

M720q 10G NIC 搭載

PCIe ライザーカードを使って、Intel X520-DA2 10G NIC を搭載したところ。

ブラケットは NIC のまま。

M720q PCIe i350-T4 用ブラケット

NIC の LP ブラケットを、こいつに変更。

M720q PCIe i350-T4 用ブラケット搭載後

i350-T4 用のため完全には合わない (隙間がある) けど、やらないよりは良い感じに。

Trex テスト結果

ESXi7 に CentOS 7 VM を構築して 10G NIC を PCI パススルー、Trex v2.87 をインストールして、

10G ポート直結でトラフィックを印加してみました。

Mellanox-X4 40G NIC

Mellanox 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

Trex 40G 単方向 印加

MTU 1500Bytes 単方向だと 25Gbps 出た。実際には Rx 25Gbps もあるため、

受信を含めた帯域幅は合計 50Gbps となる。


Trex 40G 9000 Bytes 双方向 印加

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 結果概要
Intel 10G NIC Gbps
実効合計帯域幅 Port1 Tx Port1 Rx Port2 Tx Port2 Rx
01 64Bytes 双方向 10G 40 10 10 10 10
Trex 10G 64 Bytes 双方向

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

VyOS_01_5G_1500Bytes_1Core

手始めに 5Gbps 1500Bytes で双方向に印加。

1Core しか割り当てていないですが、4.3Gbps 双方向と結構速い。

02 1500Bytes 10G 双方向 4Core

VyOS_02_10Gbps_1500Bytes_4Core

1500Bytes 10G 双方向印加。7.3Gbps 双方向出てます。

03 1500Bytes 10G 双方向 6Core

VyOS_03_1500Bytes_10G_6Core

1500Bytes 10G 双方向印加。7.0 - 7.7Gbps 平均 7.37Gbps 双方向出ましたが、

スループット面で 4 -> 6 にコア数を増やす意味はないですね。


引用