| [Network] | ||||||||||||
pingでMTUサイズを調査する
|
||||||||||||
|
||||||||||||
| 解説 |
ネットワークのMTUサイズとは
ネットワークで通信を行う場合、(通常は)一度に送信可能なデータ(パケット)のサイズには上限がある。例えば、TCP/IPプロトコルで利用されているIPプロトコルでは、1つのIPパケットでは最大64Kbytesまでしか送信できない(IPv4の場合)。しかし、このような大きなサイズのIPデータを1つのパケットで送信することのできる物理ネットワーク媒体はない。例えばイーサネット(および相互互換性を持つ無線LANなど)では、1パケット(1フレーム)のサイズは最大1500bytesだし、FDDI(光ファイバ)では4352bytesというのが普通である。このように、一度に送信することができるデータのサイズを「MTU(Maximum Transmission Unit)」といい、ネットワークのプロトコルや媒体ごとに固有の値がある。
|
MTUサイズよりも大きなサイズのIPパケットを送信しようとすると、MTUサイズに収まるように、IPパケットをいくつかに分割して送信しなければならない。これを「IPフラグメンテーション(IP fragmentation)」といい、MTUサイズに合わせてIP送信時やルータ経由時に自動的に行われる。そして、分割されたそれぞれのパケット(「フラグメント」という)は、最終的な受信先で合成されて元のIPパケットに復元される。このようにして、MTUサイズの違いによらず、ネットワーク上でIPパケットは送受信されている。
![]() |
| MTUサイズとIPフラグメンテーション |
| 送信しようとした(もしくはルーティングしようとした)IPパケットのサイズ(ヘッダ+データの合計サイズ)が、送信先ネットワーク媒体のMTUサイズを超えている場合、MTUサイズに収まるように、いくつかに分割してから送信(ルーティング)する。MTUサイズが小さくなるたびにさらに細かく分割されていく。分割されたパケットは、最終的なあて先で全部集められ、再構成される。 |
IPフラグメンテーション機能があるため、(アプリケーションは)MTUサイズを意識せずに送信することができるし、MTUサイズが異なるネットワーク・メディアを経由しても、パケットが最終目的地まで正しく届けられることになる。
IPフラグメンテーションによる問題点
だが、IPフラグメンテーションが起こると、フラグメント化(分割)と再構成(結合)のためにオーバーヘッドが生じるという問題がある。フラグメント化されたパケットは、最終的なあて先(IPパケットのあて先IPアドレスのコンピュータ)で再構成が行われるが、この作業はすべてのフラグメント・パケットがそろうまで実行することができない(すべてがそろわない限り、上位プロトコルへは渡されない)。そのため、フラグメンテーションが発生しないように、MTUサイズに収まるようなパケットだけを送信する方がパフォーマンスが向上する。
また、こちらの方がより問題であるが、フラグメンテーションが発生すると、場合によっては通信できなくなる場合がある。ファイアウォールによっては、フラグメント化されたパケットは受け取らないように設定されていることがあるからだ。IPフラグメンテーションはTCP/IPにおける基本的な機能であるが、意味のない大きなIPパケットを送信してDoS攻撃に使われることがある。またフラグメント化したパケットのうちの一部分(最後の部分)だけを送信して、受信側に再構成用の準備をさせ、システム・リソースを無駄に消費させるといった攻撃にも使われることがある。このような事情があるため、フラグメント化したパケットの受信を拒否するようにしている場合がある。
このようなファイアウォールが使われていると、正常な通信までもが拒否されることになる。すべてのインターネット上のサイトがこのような運用をしているわけではないが、実際にこうしているところは少なからず存在する。そのため、相手によってはWebサーバにつながらない、メールが送れない、というトラブルが発生することがある。
この問題を避けるため、可能ならばIPパケットのサイズをMTUサイズ以下になるように調整するのがよい。TCP/IPの規格では、MTUの最小サイズは576bytesと決められているが、イーサネットやPPPoEなどではより大きなサイズが使われている。上で述べたとおり、フラグメンテーションを起こさずに送信できる、可能な限り大きなパケットを使うのが望ましい。
本TIPSでは、pingコマンドを使って、MTUサイズを調査する方法について解説する。調査したMTUサイズに基づいて、TCP/IPプロトコルを調整する方法についてはTIPS「ネットワークのMTUサイズを変更する」を参照していただきたい。
| 操作方法 |
pingコマンドは、ICMP Echoパケットの送受信を行うためのプログラムである。ICMPプロトコルはIPプロトコルの上に実装されており、ICMP Echoでデータを送信すると、そのままICMP Echo Replyで送り返してくるだけの単純な機能を持っている。もしMTUサイズを超えるような大きなパケットをpingのデータとして送信すると、途中でフラグメント化されて相手に届くことになる。
|
IPヘッダのサイズはデフォルトでは20bytes、ICMPのヘッダは8bytesなので、イーサネット(MTU=1500bytes)では、最大で1472bytesのデータ・サイズまでならフラグメント化せずに送信することができる。もしpingで1473bytes以上のデータを指定すると、IPヘッダ/ICMPヘッダと合わせて1501bytes以上となり、フラグメント化しなければ送信することはできない。
IPフラグメントを禁止するping -fオプション
pingコマンドのオプションとして「-f」を指定すると、IPフラグメントをしてはいけないという指定になる。具体的には、-fオプションを指定するとIPヘッダ中のDF(Don't Fragment)bitがオンになる。DF bitがオンのパケットは、フラグメント化が禁止され、フラグメント化してから(あて先へ)ルーティングする代わりに、送信元に対してエラーを返すことになっている。
-fと-lオプションを使ってMTUサイズを調査する
ネットワークのMTUサイズを調査するには、pingのデータ・サイズを変えながら、-fオプションを付けたpingコマンドを実行すればよい。データ・サイズが小さいうちはMTUサイズに収まるので、pingのパケットは正しく相手先まで届くし、戻ってもくるだろう。だがMTUサイズに収まらないサイズになると、IPフラグメント化ができないので、ルータからエラーが返ってくる。これにより、MTUサイズを調査することができる。例えば、以下はイーサネットだけで構成されたLAN上で調査した場合の例である(「-n 1」オプションは、1回だけpingするという指定)。
C:\>ping -f -l 1472 -n 1 10.20.1.11 …サイズ=1472bytesで実行 |
2つ目のpingでは、1473bytesのデータ長でpingを実行しようとしたが、「Packet needs to be fragmented but DF set.(パケットはフラグメント化する必要があるが、DF bitがセットされているのでできなかった)」というエラー・メッセージが表示されている(これは、実際にはパケットの送信前に、ローカル・コンピュータ自身で表示している)。
1472bytesのデータまでは正しく送受信できていることから、このネットワークのMTUサイズは、「1472(データ・サイズ)+8(ICMPヘッダ)+20(IPヘッダ)=1500bytes」より、イーサネットのMTUサイズ(1500bytes)と一致していることが分かる。
MTUサイズが制限されているネットワークの例
以上はローカルのイーサネットの例であったが、例えばPPPoE(xDSLや光ファイバ・インターネット回線などで使われているプロトコル)などが使われていると、それらのプロトコルの分だけ、MTUサイズが制限されることになる。以下は、あるADSL回線サービスとPPPoEを使ったインターネット・アクセス回線における例である。
C:\>ping -f -l 1438 -n 1 61.XX.XX.XX …サイズ=1438bytesで実行 |
この例では、1438bytesまではpingが通ることから、MTUサイズは「1438+8+20=1466bytes」であることが分かる。イーサネットのMTUサイズと比べると34bytes少ないが、これがPPPoEなどのヘッダ・サイズの分である。NTTのFLET'Sなどではもう少し大きく、46bytes(MTUサイズ=1454bytes)となっている。
なお、途中にMTUサイズが異なるネットワーク・メディアが複数存在していると、経路中で最も小さいMTUサイズが得られることになる。特定のルータ(に接続されているネットワーク・メディア)までのMTUサイズを調査したければ、pingのあて先をそのルータに設定して実行する必要がある。どのルータを経由しているかを調べるには、tracert.exeやpathping.exeコマンドなどを使えばよい。
フラグメント・パケットに対するエラー応答を禁止している場合
以上は、DFフラグ付きのIPパケットに対して、途中のルータやあて先コンピュータがエラーを返している場合の例であったが、ファイアウォールの設定によっては、エラーを返さずに、単にパケットを捨てている場合もある。DoS攻撃のようなものに対していちいちエラーを返していると、余計な問題を引き起こす可能性があるからだ(送信元IPアドレスが詐称されていれば、そのIPアドレスに対してエラー・メッセージが送られてしまうため)。このような場合は、pingの応答は「Packet needs to be fragmented but DF set.」ではなく、単に「Request timed out.(応答がない)」となる。![]()
|
||||||||||||||||||||||||||||
| 「Windows TIPS」 |
ホワイトペーパー(TechTargetジャパン)
- WindowsTIPS (2010/3/19)
− [シャットダウン]ボタンの設定を変更する
− WINSサーバをインストールする
− WINSサーバをnetshコマンドで管理する - Windows 7のファイアウォール機能 (2010/3/18)
Win 7のファイアウォールの概要解説。ルールセットを切り替えるプロファイル機能が強化され、ドメインでもVPNでも、適切なルールが自動選択される - 第212話 プリンタ用紙 (2010/3/16)
致命的なディスク・クラッシュが起きる確率は、クラッシュによってもたらされる被害の大きさに比例する… - WindowsTIPS (2010/3/12)
− 不要なアドオンを無効化してIE8の起動を高速化する
− IE8のソース表示エディタを変更する
− RRASのNATでポートマッピングを定義する
|
|
スキルアップ/キャリアアップ(JOB@IT)
スポンサーからのお知らせ
- - PR -
| 「いつかは壊れるサーバ」そんな故障に 迅速で安価に手軽に対応する方法とは? New! |
| 「特権ユーザー」の事件を防げ! 万能権限を持つユーザーの管理方法とは? New! |
| 仮想環境の構築とデータ保護の特効薬?! 実績と信頼性の高いパッケージで安心運用 |
| 仮想環境のバックアップもこれまでどおり 「まるごと取ってまるごと戻す」簡単運用 |
| おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |
| その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |
| 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |
| 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |
- - PR -
お勧め求人情報

**先週の人気講座ランキング**
〜CCNA編〜
| ◆ | TomcatやJBossなどAPサーバ環境に関する 情報を集約! “業務”用APサーバ大百科 New! |
| ◆ | 一気に解説! 最新のクラスタストレージ 「RAIDを超えたストレージ基準」……など New! |
| ◆ | クラウド的ユーザー体験の変化は脅威か? 仮想化技術を使いこなす運用管理術を紹介 New! |

| ◆ | 上司や部下、部署内メンバーとの情報共有 を“ガラッ”と変えるコラボツールとは? New! |
| ◆ | おばかアプリ選手権、第4弾開催中!! ムダにカッコよくてくだらない作品求ム! |
| ◆ | 社内ファイルサーバを“クラウド”に統合 VPN直結「クラウド型ストレージ」を紹介 |

| ◆ | Twitterのアカウントはなぜ突破された? メールによる新手の攻撃手法とその対策 |
| ◆ | もう仮想化のお試しフェイズは終わりだ! Hyper-V 2.0が基幹システムも仮想化 |
| ◆ | 美人!? まあまあ? 気になる いやし系!! PV急増で「美人時計」がとった手段とは? |

| ◆ | クライアント企業から求められる人材 ⇒IT技術と経営戦略を併せ持つ「戦略家」 |
| ◆ | .NET編集長が実践する「技術情報検索術」 サンプル・コードを簡単に探す“技”は? |
| ◆ | 業務効率と情報セキュリティ対策を両立! 手間なく確実に機密情報を守る方法とは? |

| ◆ | 進化を続ける富士通ストレージETERNUS DX 製品開発者の自信を裏付けるものとは何か |
| ◆ | 運用管理の課題を“2つの観点”から分析 ユーザー満足度の高い「仮想環境」とは? |

| ◆ | 【CTC事例】約30の基幹システムを統合! 膨大なバッジジョブを制御した方法は? |
| ◆ | 仮想化すればコストは削減できるか? 仮想化に必要な「3つの視点」を解説する |
| ◆ | その数、なんと400台以上! グループ内 サーバの「統合管理」によるメリットは? |








