昨今の環境ではMTUを設定しなくても、速度がそれなりに出るので調整必要無いです。
しかし、偶に手動で設定した場合が良い事もあるので。
基本事項として、Ethernet 1フレームは全体で1518バイトです。
これに、色んな情報が付加されていく関係で、実際のデータ分が減って行きます。
IPとして使えるのはEthernetHeader(18byte)分を引いた分となります。
1518byte - (Header 14byte + FCS 4byte) = 1500byte
これが、良く出てくるMTU1500の意味です。
この1500byteから更に、IP HeaderやPPPoE Headerが使用していきます。
ここから自分の通信環境のMTUを算出して行く訳ですが、pingで調査して行きます。
IP Headerは標準で20byte消費します。
1500byte-20byte=1480byte
pingで使用するICMPのHeaderは8byteです。
1480byte-8byte=1472byte
ping使用時に最高1472byte以下が、1フレーム内で流す事の出来るデータ量になります。
では、実際の調査方法(Windows)
fオプションでパケット分割させない(DFセット)、lオプションでデータサイズ指定します。
ping -f -l 送信サイズ 接続先
e.g.)ping -f -l 1472 yahoo.co.jp
データサイズ+IP/ICMP Header 28byteがMTU値となります。
それでは測定例
ping -f -l 1473 yahoo.co.jp
yahoo.co.jp [183.79.135.206]に ping を送信しています 1473 バイトのデータ: パケットの断片化が必要ですが、DF が設定されています。 パケットの断片化が必要ですが、DF が設定されています。 パケットの断片化が必要ですが、DF が設定されています。 パケットの断片化が必要ですが、DF が設定されています。 183.79.135.206 の ping 統計: パケット数: 送信 = 4、受信 = 0、損失 = 4 (100% の損失)、ping -f -l 1472 yahoo.co.jp
yahoo.co.jp [183.79.135.206]に ping を送信しています 1472 バイトのデータ: 183.79.135.206 からの応答: バイト数 =1472 時間 =89ms TTL=51 183.79.135.206 からの応答: バイト数 =1472 時間 =79ms TTL=51 183.79.135.206 からの応答: バイト数 =1472 時間 =97ms TTL=51 183.79.135.206 からの応答: バイト数 =1472 時間 =98ms TTL=51 183.79.135.206 の ping 統計: パケット数: 送信 = 4、受信 = 4、損失 = 0 (0% の損失)、 ラウンド トリップの概算時間 (ミリ秒): 最小 = 79ms、最大 = 98ms、平均 = 90ms上記結果は、Docomo網でPingした結果です。
1473byteでは断片化して流れ無いが、1472byteでは流れたと言う結果です。
なので、1472byte+28byte=1500byteとなり、MTU1500となります。
この場合、LAN上に設置されたEthernetと同じMTUです。
ちなみにWindowsのpingオプション一覧です。
-t 中断されるまで、指定されたホストを Ping します。 統計を表示して続行するには、Ctrl+Break を押してください。 停止するには、Ctrl+C を押してください。 -a アドレスをホスト名に解決します。 -n 要求数 送信するエコー要求の数です。 -l サイズ 送信バッファーのサイズです。 -f パケット内の Don't Fragment フラグを設定します (IPv4 のみ)。 -i TTL Time To Live です。 -v TOS Type Of Service (IPv4 のみ。この設定はもう使用されておらず、 IP ヘッダー内のサービス フィールドの種類に影響しません)。 -r ホップ数 指定したホップ数のルートを記録します (IPv4 のみ)。 -s ホップ数 指定したホップ数のタイムスタンプを表示します (IPv4 のみ)。 -j ホスト一覧 一覧で指定された緩やかなソース ルートを使用します (IPv4 のみ)。 -k ホスト一覧 一覧で指定された厳密なソース ルートを使用します (IPv4 のみ)。 -w タイムアウト 応答を待つタイムアウトの時間 (ミリ秒) です。 -R ルーティング ヘッダーを使用して逆ルートもテストします (IPv6 のみ)。 RFC 5095 では、このルーティング ヘッダーは使用されなくなり ました。このヘッダーが使用されているとエコー要求がドロップ されるシステムもあります。 -S ソースアドレス 使用するソース アドレスです。 -c コンパートメント ルーティング コンパートメント識別子です。 -p Hyper-V ネットワーク仮想化プロバイダー アドレスを ping します。 -4 IPv4 の使用を強制します。 -6 IPv6 の使用を強制します。Docomo網ってMTU1500で流れる事に驚いた。
参考までに、Linuxだとコマンドオプション違います。
e.g.)ping -s 1472 -M do -c 4 yahoo.co.jp
意味:データサイズ1472byteでDFセットして4回計測
Linuxの方が括弧内に28byte足した値(MTU)出るので便利なんだけど。(下だと1行目1420の隣の括弧)
ping -s 1420 -M do -c 4 yahoo.co.jp
PING yahoo.co.jp (183.79.135.206) 1420(1448) bytes of data. 1428 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=1 ttl=44 time=139 ms 1428 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=2 ttl=44 time=139 ms 1428 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=3 ttl=44 time=139 ms 1428 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=4 ttl=44 time=139 ms --- yahoo.co.jp ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 139.258/139.431/139.895/0.376 ms更にFreeBSDも違う
sオプション使うのにroot権限じゃないと通らないと思う。
e.g.)ping -s 1472 -D -c 4 yahoo.co.jp
DオプションがDFセットです。
0 コメント:
コメントを投稿