最適なMTU値を調べるサイトと設定を変更するコマンドでネットワークを高速化(Windows10)

一部のサイトだけ開けない

Windows10のPCで、他のサイトは見れるのに、一部サイトだけ見れないとか、開けても表示が遅いということがありました。原因はネットワークのMTUの設定がデフォルトの1500だったことでした。

最適なMTU値を確認するサイト

MTUとは、Maximum Transfer Unitの略で、ネットワーク機器(ホスト)が1度に送受信できる、IPヘッダを含めた最大サイズ(バイト数)で一度に送信可能なパケットのデータ量のことを表します。以下のサイトにアクセスするだけで、現在の通信環境における最適なMTU値を知ることができます。

https://www.speedguide.net/analyzer.php

うちの環境はフレッツ光ネクストで、最適なMTUの値は1454でした。

ちなみに赤字で書いてある部分の翻訳は以下の通りです。

MTU optimized for some PPPoE and PPPoA applications, also used with some VPN tunnels. If not, consider increasing your MTU to 1500 for better throughput. If you are using a router, it could be limiting your MTU regardless of Registry settings.

一部のPPPoEおよびPPPoAアプリケーション用に最適化されたMTU。一部のVPNトンネルでも使用されます。 そうでない場合は、スループットを向上させるためにMTUを1500に増やすことを検討してください。 ルーターを使用している場合、レジストリ設定に関係なくMTUが制限される可能性があります。

回線業者各社のMTU値

日本のインターネット通信においてMTU値は1500が最も安定し、最速の設定だそうです。

回線業者 MTU値
NURO光 1500
auひかり 1492
フレッツ光(v6プラス対応) 1460
フレッツ光 1454

PINGコマンドでMTU値の変更が必要か調べる

コマンドプロンプトでMTUの値を指定してPINGコマンドを実行すれば、MTU値の変更が必要かどうかがわかります。

変更が必要な場合の例

以下のコマンドでヤフーに1500のパケットサイズでPINGを飛ばしてみた例です。

ping /f /l 1500 www.yahoo.co.jp

「パケットの断片化が必要ですが、DFが設定されています。」と表示され、更に「損失=4」とありますので、MTU値の最適化が必要です。グーグル(www.google.co.jp)も同様でした。

最適なMTU値は本当に1454で良いか確認

SG TCP/IP Analyzerでは最適なMTU値が1454となっていましたが、本当かどうか確認するためには以下の計算式で出た値(設定するMTU値から28引いた値)でPING応答の状態を見ればわかります。

式 1454 - 20(IPヘッダ部) - 8(TCPヘッダ部) = 1426

1454からIPヘッダ部の20バイトと、TCPヘッダ部の8バイト合計28バイトを引いた1426以下の数字でPINGを飛ばし、正常な応答があればMTUの値は1454でOKということになります。逆に言えば、PINGの応答に成功した値に28を足した値をMTU値に設定すればよいということになります。

ちなみに、1427にしたところ、損失が出たので1426 + 28 =1454で間違いないということがわかります。

IPsecたL2TPなどのVPNを使用している場合

フレッツを使用している普通の家庭であれば上記のようにIPヘッダ部とTCPヘッダ部の28バイト分でPINGの応答が成功すると思いますが、IPsecなどのVPNが絡んでくるとカプセル化のデータが加わってくるので話は変わるみたいです。その場合のMTU値やヘッダ部のバイト数は以下のページが参考になります。

mtu / mss を最適化する | yabe.jp

https://yabe.jp/gadgets/optimizing-mtu-mss/

現在のMTUの設定値を確認するコマンド

以下のコマンドで、PCに設定されている現在のMTU値を知ることができます。

netsh interface ipv4 show interface

MTUの値を変更するコマンド

いろいろなサイトを参考に、フレッツ光ネクスト隼は1454にしたほうがいいみたいなので、以下のコマンドで設定します。これを実行する際は、コマンドプロンプトを管理者として実行することが必要です。

netsh interface ipv4 set interface 9 mtu=1454

私の環境ではIdxの番号9でしたが、この番号はPCによって異なりますので、ご自分の環境に合わせて変更してください。

MTU値変更後の確認してみたところ、ちゃんと変更されていました。

無事解決

これで、見れなかったサイトが正常に表示されるようになり、表示が遅かったページはサクッと表示されるようになりました。

参考サイト

mtu / mss を最適化する | yabe.jp

https://yabe.jp/gadgets/optimizing-mtu-mss/

mtuの最適値を調べる mtuの設定をコマンドプロンプトをつかって設定する:ちゃうちゃうのブロマガ - ブロマガ

https://ch.nicovideo.jp/tyautyau007/blomaga/ar1250575

mtuとmssで、パケットサイズを指定 [現場で必要なネットワーク技術入門]

https://network.oreda.net/knowledge/mtu-mss.html

便利なコマンド

MTUを1500~1000まで自動でPINGを飛ばすコマンド

SG TCP/IP Analyzerに頼らず、手動でPINGを送信して最適なMTU値を割り出したいとき、何度もコマンドを打つのは面倒ですが、以下のコマンドを使えば楽にできます。

for /l %i in (1500,-1,1000) do ping -w 1 -n 1 -f -l %i www.google.com >> %USERPROFILE%\Desktop\result.txt

このコマンドはパケットサイズが1500から-1ずつ1000になるまでwww.google.comに繰り返しPINGを送信するコマンドです。実行後はデスクトップにできるresult.txtに結果が出力されますので、「応答」「TTL」の文字列を検索すれば、応答のあったMTU値がわかります。

PAGETOP