【概要】
Path MTU-DiscoveryについてCiscoCMLを利用して構成を作り、絵を使ってまとめる。
Path MTU-Discoveryを理解する事で、トラブルシュートや身近ではPPPoEによるMTUの
仕組みが理解できると思う。
構成図
文字で説明すると
① PC2からData長 [1448byte]で送信
② R3でDF bitを 0 -> 1 に変更(PC2でDF bitを1にできなかったため)
- IP Headerの Don’t Fragment Set が1になる
③ R2のMTUが1000byteだが、受信したData長が [1448byte]でMTU値より大きかったため、R2はICMP Type3 Code4 でPC2に自身のMTUは1000byteであることを通知する。
- 通知MTUは、ICMP Header内に自身のMTU 1000byteが記載されている
- Wireshwrkでは、Infomationとして、Destination unreachable (Fragmentation need)
④ R3を経由して、PC2へ転送される。
- そもそも、ICMPをACLでフィルタリングしていると、Path MTU-Discoveryが動作しなくなるので注意
⑤ PC2はICMP Type3 Code4で得たMTUを考慮し、Data長を小さくして再送する。
- 今回、PC2はデータ長[948byte]で再送する
⑥ 再送されたデータ長[948byte]がMTU以下になったため、R2を通過してPC1へ転送される。
Config (Cisco CML利用)
※端末からのTCP通信にはiperfを利用
R1-config click
hostname R1 ! interface GigabitEthernet0/0 ip address 10.12.1.1 255.255.255.0 ! interface GigabitEthernet0/1 ip address 192.168.1.254 255.255.255.0 ! router ospf 1 passive-interface GigabitEthernet0/1 network 0.0.0.0 255.255.255.255 area 0 ! control-plane ! end
R2-config click
hostname R2 ! interface GigabitEthernet0/0 mtu 1000 ip address 10.12.1.2 255.255.255.0 ! interface GigabitEthernet0/1 ip address 10.23.1.2 255.255.255.0 ! router ospf 1 network 0.0.0.0 255.255.255.255 area 0 ! control-plane ! end
R3-config click
hostname R3 ! interface GigabitEthernet0/0 ip address 172.16.1.254 255.255.255.0 ! interface GigabitEthernet0/1 ip address 10.23.1.3 255.255.255.0 ! router ospf 1 passive-interface GigabitEthernet0/0 network 0.0.0.0 255.255.255.255 area 0 ! ip access-list extended ACL permit ip host 172.16.1.100 host 192.168.1.100 ! route-map R-MAP permit 10 match ip address ACL set ip df 1 ! control-plane ! endほ
DF bitについて
DF bit =0 (パケットのフラグメントOK)
DF bit =1 (パケットのフラグメントNG)
そもそも、DF bit =0のままであれば「Path MTU-Discovery」利用することはない。
データ通信においてNW機器の都合上、DF bit =1にしなければならない事は稀かと思う。
多くの場合、アプリケーションの都合上、パケットのフラグメントNGすることが多いと思う。
ip tcp adjust–mss と Path MTU-Discovery
管理範囲内のNW機器で、Data長を調整したければ「tcp adjust-mss」で対応が可能。
「Path MTU-Discovery」は、管理範囲外(他社ルータ)においてMTUを超過した場合に有効。
注意
「Path MTU-Discovery」は、MTUを超過と判断されたルータから送信元端末にICMP Type3 Code4が
送信されてくる。途中ルータのACLでセキュリティ上などICMPを全てフィルタリングしていると、当然
ICMP Type3 Code4もフィルタリングされ送信元端末に届かなくなる。
その場合、MTUを超過したルータ内でパケットが破棄されるので、宛先まで通信ができない。
以下、1~3の場合はICMP Type3 Code4だけフィルタリングしないようにするも解決となる。
- DF bit =1のパケットあり
- 「Path MTU-Discovery」が必要な可能性がある
- ICMPをACLでフィルタリングしている