昨今の環境では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.jpyahoo.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 コメント:
コメントを投稿