Path MTU Discovery black hole



 ◆ Path MTU Discoveryブラックホールの問題解決 その1

 異なるMTU値が定義されたルータ上で適正なMSSサイズを定義することにより、通信開始となる
 3 way-handshakeの時に、ルータに設定された
MSSサイズが宛先に通知されるため、送信元で
 作成されるIPデータグラムが、ルータのMTU値を超えることなく正常に通信することができます。

 ルータ上でMTU値を小さく設定した場合でも、自動的にMSS値が調整されてインターフェースに
 適用されるわけではないので、MTU値が小さくなるインターフェースのルータ上でMSS値を設定
 することは必須です。以下の設定で、Ciscoルータを通過するTCP SYNのMSSが「1360」となり
 宛先へ通知されます。この解決方法が最もポピュラーであり、最適な解決策の設定だと言えます。

 Cisco(config-if)# ip tcp adjust-mss 1360



 


 ◆ Path MTU Discoveryブラックホールの問題解決 その2

 DF=1(分割禁止)で受信したIPデータグラムを、着信インターフェース上でDFビットをクリアする
 こと(
DF=0)によって、ルータ上でフラグメントが可能にすることでも、この問題を解決できます。
 ただし着信パケットに対してその都度IPフラグメントを発生させるとスループットが著しく落ちます。
 ※ 送信元PCによるデータ分割と、ルータでの着信パケットに対するデータ分割とでは負荷が違います。

 問題解決 1 の方法でも解決せず、PMTUD Black Holeによって通信できなくなる状態が発生した時の
 苦肉の策として使用する手法と言えます。以下はCiscoでroute-mapを使用し DF=0 にする設定例です。


 Cisco(config)# interface fastethernet 0/0
 Cisco(config-if)# ip policy route-map R-df

 Cisco(config)# route-map R-df permit 10
 Cisco(config-route-map)# match ip address 101
 Cisco(config-route-map)# set ip df 0

 Cisco(config)# access-list 101 permit ip any any



  


 その他、ネットワーク上でGREトンネリングを実装しているルータのTunnelインターフェース上で
 MTU値を1500に上げる手法もありますが、この手法でもルータ上でIPフラグメントが発生します。

 ちなみに、Path MTU Discoveryが有効になっているホストでは一般的に全てのTCP/IPパケットに
 DFビットが立ちます(DF=1)が、例えばPINGのICMP datagramにはIPでDFビットが立っておらず
 WindowsからDFビットを立ててPINGするためには「-f」のパラメータがPINGコマンドで必要です。



 ◆ ICMP(type3 code4)メッセージの制限

 Ciscoルータでは、DoS攻撃に対してCPUを保護するために、送信するICMP(type 3 code 4)の
 メッセージを1秒につき2パケット(=500msあたり1パケット)に制限しています。デフォルトで
 Ciscoルータでは「ip icmp rate-limit unreachable DF 500」と定義されています。

 1秒につき2パケット以上のICMP(type3 code4)メッセージを出す必要のある環境ではこの値を
 調整するか、以下のように「no」で打ち消してICMPメッセージの制限を無効にする事もできます。

 Cisco(config)# no ip icmp rate-limit unreachable DF




 ◆ ICMPのフィルタリング設定について

 Path MTU Discoveryが失敗するのは、一般的にICMPのフィルタリング設定が原因とされています。
 システム管理者は、ICMPフィルタリングをACLなどで実装する時、特定のICMPのメッセージタイプ
 だけのブロックでなく、全てのICMPタイプをブロック(deny icmp any any)する傾向があります。
 ICMPのフィルタリング設定を実装する場合は、Cisco機器では以下のACL101で実装しているように
 最低限「code3=unreachable」「type11=time-exceed」は、許可することが推奨とされています。


 Cisco(config)# access-list 101 permit icmp any any unreachable
 Cisco(config)# access-list 101 permit icmp any any time-exceeded
 Cisco(config)# access-list 101 deny icmp any any
 Cisco(config)# access-list 101 permit ip any any





← Path MTU Discovery PPTP / L2F / L2TP →

ネットワークエンジニアとして

Copyright (C) 2002-2024 ネットワークエンジニアとして All Rights Reserved.