経路MTU探索に関する問題
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/05 02:02 UTC 版)
「Maximum Transmission Unit」の記事における「経路MTU探索に関する問題」の解説
経路MTU探索は、RFC 1191で定義されたとおりに動作すれば、断片化を必要としない最大のMTUを検出することができる。しかし現実には、設定の問題で正常に機能しない場合が珍しくない。問題がある場合の典型的な挙動は、通信を開始することはできるが、経路MTUより大きなサイズのフレームが現れた時点でタイムアウトするというものである。主な問題と対応策はRFC 2923にまとめられている。 いくつかある問題の中でも、Path MTU Discovery Black Hole(経路MTU探索ブラックホール)と呼ばれるケースは特に有名である。このケースはファイアウォール等でICMPパケットをフィルタしている場合に発生する。「Datagram Too Big」メッセージが送信元に届かないため、送信元はパケットが失われたことに気付かず、タイムアウトしてしまう。ICMPをフィルタする場合でも、少なくとも上記のType 3 Code 4のものだけは通す必要がある。もしそれができないのであれば、経路MTU探索をやめて断片化を許す設定に変更することになるだろう。 ただし現実には、自ホストの設定を変更することはできても、通信相手に問題を理解させて修正してもらうことは難しい。そこで、設定に問題がある場合でも通信するための回避策として、TCPのMaximum Segment Size(MSS)オプションを使う方法が知られている。TCPはコネクションを開始する際、自ホストが受信できる最大のセグメント長(TCPおよびIPのヘッダは除く)を通知することができる。通信相手からMSSオプションが送られてきた場合、その長さを超えるTCPデータグラムを送出してはならない。IPv4の場合、通常はTCPヘッダ20バイト、IPヘッダ20バイトなので、MSS + 40バイトがMTUに相当する。前述のフレッツ網を例にとると、MSSとして1414バイトを送っておけば、相手が経路MTU探索の候補とする値を1414 + 40 = 1454バイト以内に制限することができる。 MSSは本来、TCPコネクションの両端が設定する項目である。しかし最近のブロードバンドルーター等は、TCPセグメントの転送時にMSSオプションを書き換える機能を持っている。この機能を使えば、さらにMTUの小さな伝送路を通ったり、通信相手がMSSオプションを無視したりしない限り、経路MTU探索に由来する問題を回避できる。
※この「経路MTU探索に関する問題」の解説は、「Maximum Transmission Unit」の解説の一部です。
「経路MTU探索に関する問題」を含む「Maximum Transmission Unit」の記事については、「Maximum Transmission Unit」の概要を参照ください。
- 経路MTU探索に関する問題のページへのリンク