夢幻泡影 - 源本舗

趣味の日記

 
 ジャンボフレームの効果はいかに?
2017年01月20日(Fri)

無事にギガビット・イーサネット(GbE)化できた自宅LAN。
納得のいく性能向上を果たせたものの…
1000Mビット中480Mビットと、その帯域にはまだまだ余裕がある状態。
今回はジャンボフレームを用いたスピードアップに取り組みます。


まず、ジャンボフレームとはどのようなものかをおさらい。
イーサネットのフレーム長は通常、ペイロード長1500バイト(ヘッダ込み1518バイト)。
大きなファイルは、1500バイトのパケットに小分けした上にそれぞれにヘッダがつけられて、ちまちま送信されます。
ジャンボフレームを利用することで一度に転送するデータサイズが大きくでき、送信回数も少なくなって、いちいちヘッダをつける回数も減るので、速度アップにつながる…といった仕組み。
ただしジャンボフレームを利用する機器は、経路にあるハブを含めて対応したものが必要。
また、規格化されている訳ではない為、設定には充分な注意が必要です。
もっとも通常の機器もネットワーク内に混在可能なので、ハブさえしっかりしたものを選べばそれほど難しく考える必要はありません。


1フレームで送信するデータの最大値は、MTU(Maximum Transmission Unit)で設定します。
今回、使用するハブ「LSW5-GT-8NS」は最大16000バイト(ヘッダ含む)まで対応。
サーバ機に使用しているLANアダプタ(NIC)「LGY-PCI-GT」は最大7154バイト(ヘッダ込み7172バイト)まで。
これを参考に、クライアントとなるWindows機が幾らに設定できるかを確認します。


デバイスマネージャーからネットワークアダプターを開き、LANアダプタの詳細設定でジャンボフレーム(英語で「Jumbo Flame」だったりも)を探して設定します。
とりあえず、ドロップダウンリストで2KBから4KBまで設定があったので、最大となる4KB(4096バイト)を選択。
選択後にOKを押してやると、すぐにネットワーク接続がリセットされ設定が反映されます。
確認のため、スタートメニューを右クリックしてコマンドプロンプトを管理者権限でひらき、netshコマンドでチェック。

>netsh interface ipv4 show interfaces
Idx Met MTU 状態 名前
--- --- ---------- --------- ---------------------------
1 75 4294967295 connected Loopback Pseudo-Interface 1
7 25 1500 connected イーサネット
11 35 1500 connected VMware Network Adapter VMnet1
3 35 1500 connected VMware Network Adapter VMnet8

…だが、イーサネットのMTU値が変わっていない。
他の数値に変更したり、再起動したりしても駄目。
あーでもない、こーでもない…と悩みまくること1時間。
色々調べると、マザーボードのオンボードLANドライバが古いことが判明。
Windows 10の導入時、自動インストールされたものをそのまま使っていたのが悪かった様で、マザボの公式にはより新しいバージョンのドライバが公開されていた。
こちらをインストールしたことで、それまで英語だった詳細設定も日本語になり、ジャンボフレームの設定値も2KBから9KBまで選択できるように。


20170120a
ジャンボフレームに7KBを選択


7KBを選択してnetshコマンドで確認すると、今度はちゃんとMTUが反映されていました。
7168(1024×7)-18(ヘッダ)と思われる『7150』が設定されています。

>netsh interface ipv4 show interfaces
Idx Met MTU 状態 名前
--- --- ---------- --------- ---------------------------
1 75 4294967295 connected Loopback Pseudo-Interface 1
7 25 7150 connected イーサネット
11 35 1500 connected VMware Network Adapter VMnet1
3 35 1500 connected VMware Network Adapter VMnet8

次にサーバ機側を設定。
ネットワーク設定内のデバイスeth0の設定より「MTUを設定」にチェックを入れ、Windows機に合わせて『7150』を入力します。


20170120b
MTUを7150に設定


設定後にネットワーク設定を終了させて設定を保存したのち、ネットワークサービスを再起動。

# service NetworkManager stop
# service network stop
# service network start
# service NetworkManager start

これで設定完了。
試しに、pingコマンドでちゃんと設定されているか確認します。
設定されたMTU値7150からヘッダ分28バイト(ICMPヘッダ8+IPヘッダ20)を引いた、7122を送信。

>ping -f -l 7122 -n 1 192.168.3.10(サーバ機のローカルIP)
192.168.3.10 に ping を送信しています 7122 バイトのデータ:
192.168.3.10 からの応答: バイト数 =7122 時間 <1ms TTL=64
192.168.3.10 の ping 統計:
パケット数: 送信 = 1、受信 = 1、損失 = 0 (0% の損失)、
ラウンド トリップの概算時間 (ミリ秒):
最小 = 0ms、最大 = 0ms、平均 = 0ms

正常に送れたことを確認して、次は1バイト増やした7123を送信してみる。

>ping -f -l 7123 -n 1 192.168.3.10
192.168.3.10 に ping を送信しています 7123 バイトのデータ:
パケットの断片化が必要ですが、DF が設定されています。
192.168.3.10 の ping 統計:
パケット数: 送信 = 1、受信 = 0、損失 = 1 (100% の損失)、

こちらはエラーとなるので、MTUが7150できちんと設定できていることが確認できました。


早速、CrystalDiskMarkでネットワークドライブの転送速度を計測すると…
シーケンシャルリードでは、ジャンボフレーム適用前より1.6倍となる100MB(800Mbit)。
他の数値も、2〜3割増しくらい速度アップしていました。


20170120c
ジャンボフレーム適用(MTU:7150)
シーケンシャルリードは適用前と比べて1.6倍の速度アップ。


4KBでほぼ変化なかったのは、小さいサイズでは差が出にくい為かな。
先と同じ2.5GBのファイルをコピーしてみたところ、30〜40秒程度でコピー完了。
当初の100BASE-TXから比較すると、およそ9倍の速さとなり、目的通りさらなる速度アップを果たせました。


このファイルサーバは複数のPCで共通して利用できるメディアサーバー的な使い方をしています。
圧倒的に速度が速くなったことで、動画類の管理がかなり楽になったのはうれしいところ。
また現在は単一のHDDで運用しており冗長性がない為、いずれはスキルアップもかねてRAIDの導入にも挑戦してみたいかな。


>関連リンク
 源本舗 夢幻泡影 - 2017年01月19日
 @IT - イーサネットを高速化するジャンボ・フレーム技術

名前  URL 

よろしければ『書き込み』ボタンをクリックしてください(戻る