「6 万円で 1L サイズ 6 コア 10G x2 サーバを組む方法」の版間の差分
編集の要約なし |
|||
308行目: | 308行目: | ||
== 引用 == | == 引用 == | ||
<references /> | <references /> | ||
[[カテゴリ:ラボ]] | |||
[[カテゴリ:サーバ]] |
2022年3月13日 (日) 11:07時点における版
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
組み立て
筐体全面・背面
![](/images/thumb/3/39/M720q-01.jpg/300px-M720q-01.jpg)
![](/images/thumb/6/6e/M720q-02.jpg/300px-M720q-02.jpg)
右上の RGB コネクタの部分を PCIe に変更できます。
![](/images/thumb/4/4f/M720q-03.jpg/300px-M720q-03.jpg)
この世代から背面に M.2 とメモリスロットが移動したので、交換がやりやすいです。
![](/images/thumb/6/6a/M720q-04.jpg/300px-M720q-04.jpg)
左に CPU ファン、右に 2.5 HDD ベイがあり、HDD ベイを PCIe に変更します。
小さい部品が PCIe ライザーカード。一番右のカードはテストで使った Mellanox 40G NIC.
![](/images/thumb/a/aa/M720q-05.jpg/300px-M720q-05.jpg)
PCIe ライザーカードを使って、Intel X520-DA2 10G NIC を搭載したところ。
ブラケットは NIC のまま。
![](/images/thumb/b/be/M720q-06.jpg/300px-M720q-06.jpg)
NIC の LP ブラケットを、こいつに変更。
![](/images/thumb/b/b8/M720q-07.jpg/300px-M720q-07.jpg)
i350-T4 用のため完全には合わない (隙間がある) けど、やらないよりは良い感じに。
Trex テスト結果
ESXi7 に CentOS 7 VM を構築して 10G NIC を PCI パススルー、Trex v2.87 をインストールして、
10G ポート直結でトラフィックを印加してみました。
Trex 考慮事項
IXIA などのように高精度のクロックジェネレータは無く、校正もできないため、
Trex では厳密な間隔でイーサネット フレームを送信することができません。
厳密なパケットドロップ数を計測する用途には向かないですが、以下の用途に使用できます。
- QoS を確認する際の、非優先トラフィックの印加
- 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
![](/images/thumb/6/6e/20220313_Trex_40G_01_Unidirectional.png/800px-20220313_Trex_40G_01_Unidirectional.png)
MTU 1500Bytes 単方向だと 25Gbps 出た。実際には Rx 25Gbps もあるため、
受信を含めた帯域幅は合計 50Gbps となる。
![](/images/thumb/c/cf/20220313_Trex_40G_02_9000_bidirectional.png/800px-20220313_Trex_40G_02_9000_bidirectional.png)
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 |
![](/images/thumb/4/48/20220313_Trex_10G_01_64Bytes_bidirectional.png/800px-20220313_Trex_10G_01_64Bytes_bidirectional.png)
64 Bytes ショートパケットを双方向で印加。
L1 でヘッダも含めて 10G , L2 でヘッダオーバーヘッドを排除したペイロードで 7.63Gbps
14.88Mpps の 10G ワイヤレートを双方向で確認できました。
VyOS スループットテスト
VyOS 1.4 を VM としてインストール、10G ポートを接続し、
トラフィックを印加してスループットを測定してみました。
vSwitch 経由
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 |
01 1500Bytes 5Gbps 双方向 1Core
![](/images/thumb/7/70/20220313_VyOS_01_5G_1500Bytes_1Core.png/800px-20220313_VyOS_01_5G_1500Bytes_1Core.png)
手始めに 5Gbps 1500Bytes で双方向に印加。
1Core しか割り当てていないですが、4.3Gbps 双方向と結構速い。
02 1500Bytes 10G 双方向 4Core
![](/images/thumb/f/f7/20220313_VyOS_02_5Gbps_1500Bytes_4Core.png/800px-20220313_VyOS_02_5Gbps_1500Bytes_4Core.png)
1500Bytes 10G 双方向印加。7.3Gbps 双方向出てます。
03 1500Bytes 10G 双方向 6Core
![](/images/thumb/a/ae/20220313_VyOS_03_1500Bytes_10G_6Core.png/800px-20220313_VyOS_03_1500Bytes_10G_6Core.png)
1500Bytes 10G 双方向印加。7.0 - 7.7Gbps 平均 7.37Gbps 双方向出ましたが、
スループット面で 4 -> 6 にコア数を増やす意味はないです。
SR-IOV 経由
TBD