MTUの最適化でLANとインターネットそれぞれを高速・安定化

LAN(Ethernet)とインターネットをできるだけ速くしたい、またはオンラインゲームなどの通信を安定させたい場合は下記を見直す必要があります。
 
【LAN(Ethernet)側】 ※NAS環境などでLAN側のみ速くしたい場合はこれだけでOK

①PCなどの端末のLANアダプターをGigabit対応にする。
②ルーターやハブをGigabit対応にする。
③LANケーブルをCAT5e以上(Gigabit対応)にする。
④MTU(Maximum Transmission Unit)を最適値にする。※殆どの場合初期値が最適値


【インターネット側】

①回線とISP(Internet Service Provider)を見直す。
②MTU(Maximum Transmission Unit)を最適値にする。※殆どの場合で変更する必要がある。

※LAN側とインターネット側ではMTUを設定するところが異なるため注意。インターネット側のMTUを最適化しようとしてLAN側(ネットワーク側)のMTUを下げるとLAN側が遅くなります。
※MTUが最適でないと後述するフラグメンテーションにより輻輳してしまい接続エラーが発生することが有るようです。特にオンラインゲームをされる方で接続が安定しない場合はMTUを最適化することをおすすめします。


【LAN(Ethernet)側】

①~③ Gigabit対応
 LAN内の端末同士である程度大きなデータをやり取りする場合は、 Gigabit対応にすることで飛躍的に効果が出ます。最近はほとんどのPCがGigabit対応(1000Base-T)ですが、ハブやルーター(厳密にはルーターに付属するハブ機能)については頻繁に買い換えるものでもないので未だに100Base-Tを使用していることも多いと思います。特にNASなどのネットワークドライブを使用する場合は100Base-Tだと結構致命的です。
 私の場合は nasneでテレビ番組を録画することが多いのですが、nasneからBDに書き込む際にはnasne→PC→BD書き込みというプロセスになるため、nasneとPC間のネットワーク速度が書き込み速度にダイレクトに影響します。実際にはネットワーク速度以外にも制限があるため、単純に書き込み速度が10倍になることはありませんが、確実に速くはなります。
 なお、Gigabit対応にするためには①~③のすべてを実施する必要があるため、一つでも100Base-Tのままだとあまり意味がなくなります。

 
④ MTU(Maximum Transmission Unit)を最適値にする。 ※殆どの場合初期値が最適値

 データを送受信する際には一つの大きなデータを幾つかの小さなデータに分割するパケット化を行いますが、そのパケット一つ一つの最大の大きさがMTUとなります。このため、MTUが大きいほど1個のパケット送信でより多くのデータが遅れるため回線速度(bps)は速くなると思われますが、実はそうでもありません。
  MTUの値はそれぞれのネットワーク機器で決めていますが、例えばデータの受信側のMTU値が送信側のMTU値より小さいと、そのままのパケットサイズでは送信できないため、パケットをさらに分割するフラグメンテーションという操作が行われます。フラグメンテーションが発生してしまうと、受信側ではさらに元のパケットに戻すという操作が必要となるため、ネットワーク速度が低下します。このため、フラグメンテーションを防ぎ、かつ、パケットにより効率よくデータの送受信を行うにはMTUの値を同じ値にすることが必要となります。(殆どの環境では初期値1500)

  MTUの最適値は以下の通りpingを用いることで求めることができます。
 まずはコマンドプロンプトを用いてPCからLAN内の他の機器(ルーターや他のPCなど)に下記のコマンドを送ります。 なお、ルーターのIPアドレスはwindows10の場合、"ネットワーク"→"インフラストラクチャ"に表示されるルーターを右クリックしプロパティから確認することができます。

ping -f (接続先のIPアドレス) -l 1500        ※1500は送信するデータサイズ
例. ping -f 192.168.11.1 -l 1500 など

上記コマンドを実行すると

"パケットの断片化が必要ですが、DF が設定されています。"

とでると思います。これはフラグメンテーションが必要なデータサイズだけどコマンドオプション"-f"でフラグメンテーションが禁止されているため送信できなかったぞという意味です。このため、1500から徐々に値を小さくしていき、pingが成功するギリギリの値を見つければ、 最適なMTUが分かります。なお、MTUの最適値は上の方法で見つけた値に28を加えた値になります。

MTU最適値=ping送信に成功した最大データサイズ+28

 なぜ28を加えるかというと、パケットを送信する際にはデータに加えてプロトコルなどの情報を示したヘッダが追加され、これが合わせて28bit有るためです。
おそらく 、殆どの環境では
ping -f (接続先のIPアドレス) -l 1472
でpingが成功して


(接続先のIPアドレス)  からの応答: バイト数 =1472 時間 <1ms TTL=64


のように表示されると思います。
1472で成功した場合はこれに28を加えた1500が最適なMTUとなりますが、通常、Ethernetではデフォルトが1500に設定されているため現状が最適な値となっています。ちなみに現在PC側で設定されているMTUは下記のコマンドで確認できます。

netsh interface ipv4 show interface

 もし1500以外が最適な値であれば下記のコマンドで変更することができます。

netsh interface ipv4 set interface "(LANアダプター名)" mtu=(MTUの最適値)
例. netsh interface ipv4 set interface " ローカル エリア接続" mtu=1500

LANアダプター名は "コントロールパネル"→"ネットワークと共有センター"→"アダプターの設定の変更"から現在LANに使用しているものを選んでください。



 【インターネット側】

①回線とISP(Internet Service Provider)を見直す。 
 回線は今はあまりないADSLから光に変えることや、光の中でもギガビット対応のものに変えることで速くなると思われますが、ISP(プロバイダ)については運によることが多いと思います。インターネットの速度は、通信に使用する回線そのものと、その回線を使用してインターネットへの接続を提供するISPの両方が影響します。このためISPについても速度には重要なのですが、同じISPでも地域による差が大きく一概にどこが速いとは言えず、IPSを変えてみたはいいものの逆に遅くなったといったことも起こり得ます。なのでISPの変更は最終手段にしましょう。


②MTU(Maximum Transmission Unit)を最適値にする。
 LANのMTUの最適化と同様にpingを使用する方法と、ここから確認する方法があります。pingの場合はインターネット上のどこかのサーバー(google.comやよく使用するゲームサーバーなど)を送信先にします。

ping -f google.com -l 1472

上のリンク先のサイトで確認する場合は"MTU = ○○"の○○の値が最適なMTUとなります。こちらの場合は28を足す必要はありません。
私の場合は最適なMTUが1454となりました。(ping送信データに28加えたもの)

最適なMTUが求められたらルーターでMTUを設定します。
使用するルーターによってMTUの設定方法は異なりますが、ブラウザのアドレスバーにルーターのIPアドレスを打ち込むか、"ネットワーク"からルーターをダブルクリックすることでルーターの設定画面を開き、インターネット側設定(PP側の設定)の拡張設定などでMTUを設定します。
なお、MTU変更後はルーターを再起動してください。


ちなみに、
ルーターのMTUを1454等の値に設定すると、PC側1500と数値が合わなくなってしまいますが、これは問題ありません。詳しい説明は他のサイトに任せることにしますが、インターネットの場合はPC側が自動的にルーターのMTUに合わせてくれるためです。一方でLANの場合は1500で通信されるためLAN側とインターネット側の両方が最適化されることになります。

1 件のコメント: