MTUの最適値を求める方法
今回の記事は、以前「WiFiルータ経由でVPN接続がつながらなかった時の話」で宿題にしていた「MTUの最適値を求める方法」についてです。
おさらいから、MTU(Maximum Transmission Unit)は、通信機器などが一度に送信できるデータの最大値を表します。(Windowsだと1500)
通信経路に、MTU値が1500以下の機器があるにも関わらず通信を行うと、
通信の分割が起こりパフォーマンスが低下します。この問題を回避するため、MTU値を求め調整する必要があります。
それでは、手順の説明
通信対象に、以下のオプションを付けたPingコマンド使います。
”-l” 送信バッファーのサイズ
”-f” パケットの分割禁止
実際のNoteへPingを「1500」で実施します。DF(Don't Fragment)設定により、分割ができず通信ができませんでした。
"-l"の値を少なくしていくと「1472」でPingが通りました。
MTUは、データに通信用の情報「ヘッダーで28バイト」を加えた値になります。したがって、NoteへのMTUは「1472+28」で「1500」です。
結果が「1500」でない場合は、Windows側の設定をする必要があります。
例えば、調査でMTU値が「1400」だった場合。
コマンドプロンプトを管理者権限で立ち上げ、
「netsh interface ipv4 show interface」コマンドを実行します。
利用中のインタフェースの番号がわかったので、あとは設定です
「netsh interface ipv4 set interface Idx番号 mtu=MTU値」で出来ます
再度「netsh interface ipv4 show interface」コマンドを実行し、変更を確認。
P.S.
今では、Path MTU Discoveryによる自動検出により設定されますので、よほど行儀の悪い危機でない限り問題は発生しないです。