pingコマンドでMTUサイズを調べる

 通信回線ごとにMTUサイズが決まっているので、パケット長よりもMTUが小さい通信経路にパケットを通過させる場合、パケットを小さい側のMTUのサイズに合わせてフラグメンテーション(分割化処理)を行います。

 しかし、フラグメンテーションを行うと以下の問題が発生し、ネットワークの利用効率が悪化してしまいます。

  • フラグメンテーションのオーバヘッドが発生する。
  • パケットを分割するので、パケットの数が増加する。
  • 分割したパケットのいずれかが破損した場合は、分割する前の元のIPパケットが全てが台無しになる。

この問題を解決するには、経路の途中で分割されないサイズでパケットを送信する必要があります。

ping コマンドを使用すれば、宛先までの最適なMTU値を調査することができます。

ping コマンドの使用方法は以下の通りです。

Windowsの場合
【使用法】
ping [-t] [-a] [-n 要求数] [-l サイズ] [-f] [-i TTL] [-v TOS][-r ホップ数] [-s ホップ数] [[-j ホスト一覧] | [-k ホスト一覧]][-w タイムアウト] [-R] [-S ソースアドレス] [-4] [-6] ターゲット名

コマンドプロンプト上から、

C:\>ping -f -l [サイズ] <宛先>

サイズには、1,450、1,400など、数値を徐々に小さくしていきながら試して行きます。

 -f : パケットの断片化を行わないようにするオプション
 -l : パケットサイズを指定するオプション

上の例では、フラグメント化が必要なので、まだ、小さいサイズを指定してping コマンドを試す必要があります。

そこで、pingが成功するまで、サイズを小さくして試してゆきます。

そうすると、今回は、サイズが「1,426」でping コマンドが成功しました。