Path MTU Discovery 2
TCPを使用した通信に限定した解決方法になりますが、異なるMTU値が定義されたルータにて
![]() DF=1( 分割禁止 ) にて受信したIPデータグラムを、着信インターフェースにてDFビットをクリアする こと ( DF=0 ) により、ルータ上でフラグメントが可能にすることによってもこの問題を解決できます。 但し、着信パケットに対してその都度、IPフラグメントを発生させるとスループットが著しく落ちます。 ※ 送信元PCによるデータ分割とルータ上での着信パケットに対するデータ分割は意味が違います。 問題解決1の方法でも解決せず、PMTUD Black Holeにより通信できなくなる状態が発生した時の 苦肉の策として使用する手法と言えます。以下はCiscoでroute-mapを使用してDF=0にする例です。
![]() その他、ネットワーク上でGREトンネリングを実装しているルータのTunnelインターフェース上で MTU値を1500に上げる手法もありますが、この手法でもルータ上でIPフラグメントが発生します。 因みに、Path MTU Discoveryが有効になっているホストでは一般的に全てのTCP/IPパケットに DFビットが立ちます(DF=1)が、例えばPINGのICMP datagramにはIPでDFビットが立っておらず WindowsからDFビットを立ててPINGするためには [ -f ] のパラメータをPINGコマンドに必要です。 Ciscoルータでは、DoS攻撃に対してCPUを保護するために、送信するICMP ( type3 code4 ) の メッセージを1秒につき2パケット( = 500msあたり1パケット ) に制限しています。デフォルト設定で Ciscoルータでは [ ip icmp rate-limit unreachable DF 500 ] と定義されています。従いまして、 1秒につき2パケット以上のICMP( type3 code4 )メッセージを出す必要のある環境では、この値を 調整するか、以下のように [ no ] で打ち消してICMPメッセージの制限を無効にする事もできます。
Path MTU Discoveryが失敗するのは、一般的にICMPのフィルタリングが原因とされています。 ネットワーク管理者は、ICMPフィルタイングをACLなどで実装する時、特定のICMPのメッセージ タイプだけのブロックではなく全てのICMPをブロック [ deny icmp any any ] にする傾向があると 言われています。ICMPのフィルタリングを実装する場合は、以下のACL101で実装しているように 最低限 [ code3=unreachable ] [ code11=time-exceed ] は許可することが推奨とされています。
|
← Path MTU Discovery 1 PPTP / L2F / L2TP →
ネットワークエンジニアとして
Copyright(C) 2002-2009 Cool. All Rights Reserved