見出し画像

MTUの最適値を求める方法

今回の記事は、以前「WiFiルータ経由でVPN接続がつながらなかった時の話」で宿題にしていた「MTUの最適値を求める方法」についてです。

おさらいから、MTU(Maximum Transmission Unit)は、通信機器などが一度に送信できるデータの最大値を表します。(Windowsだと1500)

通信経路に、MTU値が1500以下の機器があるにも関わらず通信を行うと、
通信の分割が起こりパフォーマンスが低下します。この問題を回避するため、MTU値を求め調整する必要があります。

それでは、手順の説明
通信対象に、以下のオプションを付けたPingコマンド使います。
 ”-l”  送信バッファーのサイズ
 ”-f” パケットの分割禁止

実際のNoteへPingを「1500」で実施します。DF(Don't Fragment)設定により、分割ができず通信ができませんでした。

この結果で、MTU値が1500以下かというと違います(後述)

"-l"の値を少なくしていくと「1472」でPingが通りました。

この結果で、MTUが1472と言うわけではないです。

MTUは、データに通信用の情報「ヘッダーで28バイト」を加えた値になります。したがって、NoteへのMTUは「1472+28」で「1500」です。

結果が「1500」でない場合は、Windows側の設定をする必要があります。

例えば、調査でMTU値が「1400」だった場合。
コマンドプロンプトを管理者権限で立ち上げ、
「netsh interface ipv4 show interface」コマンドを実行します。

PCの状況に依存しますが、利用中のインタフェースの番号がわかりました。

利用中のインタフェースの番号がわかったので、あとは設定です
「netsh interface ipv4 set interface Idx番号 mtu=MTU値」で出来ます

成功のメッセージはかなりあっけないです

再度「netsh interface ipv4 show interface」コマンドを実行し、変更を確認。

改めて確認するとちゃんとなっております。

P.S.
今では、Path MTU Discoveryによる自動検出により設定されますので、よほど行儀の悪い危機でない限り問題は発生しないです。

この記事が気に入ったらサポートをしてみませんか?