Linux 2.2.7-ac1 Path MTU bug

Rob van Nieuwkerk (robn@verdi.et.tudelft.nl)
Wed, 5 May 1999 11:18:43 +0200 (CEST)


Hi,

I think I have found a Path MTU Discovery bug in Linux-2.2.7-ac1.

1. Linux sends a packet > PMTU
2. "ICMP Host Unreachable - need to frag" received
3. PMTU-sized packet is sent
4. data which comes after the packet from 1. is sent in PMTU-sized
packets.

The problem is that the data remaining in the packet 1. which comes after
the PMTU length is never resent. So the TCP connection stalls at this point.
See the tcpdump example below (bytes 1510-1582 are not sent).

Sometimes the PMTU mechanism does work OK. The bug is easily reproducable.
The problem is not Ultrix related: it happens with HP-UX & Linux too.
I did not try a normal (non -ac) 2.2.7 kernel.

Please contact me if you want more info. Raw tcpdump data available.

Greetings,
Rob van Nieuwkerk

The three machines involved:
----------------------------
delphi: dual CPU Alpha, Linux-2.2.7-ac1 SMP
wormhole: Cyrix 486 DX2, Linux-2.2.5-ac4
moondawn: Ultrix V2.1

network setup:
--------------
delphi
|
| Ethernet MTU=1500
|
wormhole
|
| PPP MTU=576
|
blackdance
|
| Ethernet MTU=1500
|
moondawn

tcpdump data:
-------------
10:46:03.000000 moondawn.1015 > delphi.ssh: S 1743296000:1743296000(0) win 4096 <mss 1024>
10:46:03.000000 delphi.ssh > moondawn.1015: S 1690738603:1690738603(0) ack 1743296001 win 31744 <mss 1024> (DF)
10:46:03.000000 moondawn.1015 > delphi.ssh: . ack 1 win 4096
10:46:03.000000 delphi.ssh > moondawn.1015: P 1:34(33) ack 1 win 31744 (DF)
10:46:03.000000 moondawn.1015 > delphi.ssh: P 1:16(15) ack 34 win 4096
10:46:03.000000 delphi.ssh > moondawn.1015: . ack 16 win 31744 (DF)
10:46:05.000000 delphi.ssh > moondawn.1015: P 34:310(276) ack 16 win 31744 (DF)
10:46:05.000000 moondawn.1015 > delphi.ssh: . ack 310 win 4096
10:46:06.000000 moondawn.1015 > delphi.ssh: P 16:172(156) ack 310 win 4096
10:46:06.000000 delphi.ssh > moondawn.1015: . ack 172 win 31744 (DF)
10:46:06.000000 delphi.ssh > moondawn.1015: P 310:322(12) ack 172 win 31744 (DF)
10:46:06.000000 moondawn.1015 > delphi.ssh: P 172:192(20) ack 322 win 4096
10:46:06.000000 delphi.ssh > moondawn.1015: . ack 192 win 31744 (DF)
10:46:06.000000 delphi.ssh > moondawn.1015: P 322:334(12) ack 192 win 31744 (DF)
10:46:06.000000 moondawn.1015 > delphi.ssh: P 192:348(156) ack 334 win 4096
10:46:06.000000 delphi.ssh > moondawn.1015: P 334:474(140) ack 348 win 31744 (DF)
10:46:06.000000 moondawn.1015 > delphi.ssh: . ack 474 win 4096
10:46:06.000000 delphi.ssh > moondawn.1015: P 474:486(12) ack 348 win 31744 (DF)
10:46:06.000000 moondawn.1015 > delphi.ssh: . ack 486 win 4096
10:46:09.000000 moondawn.1015 > delphi.ssh: P 348:376(28) ack 486 win 4096
10:46:09.000000 delphi.ssh > moondawn.1015: P 486:498(12) ack 376 win 31744 (DF)
10:46:09.000000 moondawn.1015 > delphi.ssh: P 376:492(116) ack 498 win 4096
10:46:09.000000 delphi.ssh > moondawn.1015: P 498:510(12) ack 492 win 31744 (DF)
10:46:09.000000 moondawn.1015 > delphi.ssh: P 492:504(12) ack 510 win 4096
10:46:09.000000 delphi.ssh > moondawn.1015: . ack 504 win 31744 (DF)
10:46:09.000000 delphi.ssh > moondawn.1015: P 510:602(92) ack 504 win 31744 (DF)
10:46:09.000000 moondawn.1015 > delphi.ssh: . ack 602 win 4096
10:46:10.000000 delphi.ssh > moondawn.1015: P 602:814(212) ack 504 win 31744 (DF)
10:46:10.000000 moondawn.1015 > delphi.ssh: . ack 814 win 4096
10:46:11.000000 moondawn.1015 > delphi.ssh: P 504:524(20) ack 814 win 4096
10:46:11.000000 delphi.ssh > moondawn.1015: . ack 524 win 31744 (DF)
10:46:11.000000 delphi.ssh > moondawn.1015: P 814:834(20) ack 524 win 31744 (DF)
10:46:11.000000 moondawn.1015 > delphi.ssh: P 524:544(20) ack 834 win 4096
10:46:11.000000 delphi.ssh > moondawn.1015: P 834:854(20) ack 544 win 31744 (DF)
10:46:12.000000 moondawn.1015 > delphi.ssh: P 544:564(20) ack 854 win 4096
10:46:12.000000 delphi.ssh > moondawn.1015: . ack 564 win 31744 (DF)
10:46:12.000000 delphi.ssh > moondawn.1015: P 854:874(20) ack 564 win 31744 (DF)
10:46:12.000000 moondawn.1015 > delphi.ssh: . ack 874 win 4096
10:46:12.000000 moondawn.1015 > delphi.ssh: P 564:584(20) ack 874 win 4096
10:46:12.000000 delphi.ssh > moondawn.1015: . ack 584 win 31744 (DF)
10:46:12.000000 delphi.ssh > moondawn.1015: P 874:894(20) ack 584 win 31744 (DF)
10:46:12.000000 moondawn.1015 > delphi.ssh: . ack 894 win 4096
10:46:12.000000 moondawn.1015 > delphi.ssh: P 584:604(20) ack 894 win 4096
10:46:12.000000 delphi.ssh > moondawn.1015: . ack 604 win 31744 (DF)
10:46:12.000000 delphi.ssh > moondawn.1015: P 894:914(20) ack 604 win 31744 (DF)
10:46:13.000000 moondawn.1015 > delphi.ssh: P 604:624(20) ack 914 win 4096
10:46:13.000000 delphi.ssh > moondawn.1015: P 914:934(20) ack 624 win 31744 (DF)
10:46:13.000000 moondawn.1015 > delphi.ssh: . ack 934 win 4096
10:46:13.000000 moondawn.1015 > delphi.ssh: P 624:644(20) ack 934 win 4096
10:46:13.000000 delphi.ssh > moondawn.1015: . ack 644 win 31744 (DF)
10:46:13.000000 delphi.ssh > moondawn.1015: P 934:954(20) ack 644 win 31744 (DF)
10:46:13.000000 moondawn.1015 > delphi.ssh: . ack 954 win 4096
10:46:13.000000 moondawn.1015 > delphi.ssh: P 644:664(20) ack 954 win 4096
10:46:13.000000 delphi.ssh > moondawn.1015: . ack 664 win 31744 (DF)
10:46:13.000000 delphi.ssh > moondawn.1015: P 954:974(20) ack 664 win 31744 (DF)
10:46:13.000000 moondawn.1015 > delphi.ssh: . ack 974 win 4096
10:46:13.000000 delphi.ssh > moondawn.1015: P 974:1582(608) ack 664 win 31744 (DF)
10:46:13.000000 wormhole > delphi: icmp: moondawn unreachable - need to frag (mtu 576) [tos 0xc0]
10:46:13.000000 delphi.ssh > moondawn.1015: . 974:1510(536) ack 664 win 32696 (DF)
10:46:14.000000 delphi.ssh > moondawn.1015: P 1582:2118(536) ack 664 win 32696 (DF)
10:46:14.000000 delphi.ssh > moondawn.1015: P 2118:2654(536) ack 664 win 32696 (DF)
10:46:14.000000 delphi.ssh > moondawn.1015: P 2654:3190(536) ack 664 win 32696 (DF)
10:46:14.000000 delphi.ssh > moondawn.1015: P 3190:3726(536) ack 664 win 32696 (DF)
10:46:14.000000 delphi.ssh > moondawn.1015: P 3726:4262(536) ack 664 win 32696 (DF)
10:46:14.000000 delphi.ssh > moondawn.1015: P 4262:4798(536) ack 664 win 32696 (DF)
10:46:14.000000 moondawn.1015 > delphi.ssh: . ack 1510 win 4096
10:46:14.000000 delphi.ssh > moondawn.1015: P 4798:5210(412) ack 664 win 32696 (DF)
10:46:14.000000 moondawn.1015 > delphi.ssh: . ack 1510 win 4096
10:46:14.000000 moondawn.1015 > delphi.ssh: . ack 1510 win 4096
10:46:14.000000 moondawn.1015 > delphi.ssh: . ack 1510 win 4096
10:46:15.000000 moondawn.1015 > delphi.ssh: . ack 1510 win 4096
10:46:15.000000 moondawn.1015 > delphi.ssh: . ack 1510 win 4096

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/