2.6.18 mss negotiation and path mtu discovery mostly broken?

From: Ristuccia, Brian
Date: Tue Apr 24 2007 - 16:15:51 EST

I'm seeing a problem where the kernel attempts to send packets with a
MSS larger than the one negotiated when the TCP connection is

In /proc/sys/net/ipv4:

The interface MTU is 9000. The destination host has a MTU of 1500. There
is one router between the hosts which will drop packets with the "DF"
flag when they don't fit the destination interface's MTU and generates
the required icmp can't fragment message.

The dump shows the initial handshake with correct mss options sent. Then
I see the system send larger packets (larger than the mss), provoking a
"can't fragment" from the router. The host sends a smaller packet, which
is delivered, and then sends a bigger one again. The system oscillates
between sendng undeliverable 2896 byte packets and deliverable 1448 byte
ones. Since the router will only generate ICMP's at a limited rate, for
two hosts on gigabit ethernet, one on a MTU 1500 subnet and another on a
MTU 9000 subnet, I can move only 40-50KB/sec over an affected TCP

I was unable to find any reference to this problem in the kernel
changelogs, or even any reports of anyone else having a similar problem.
I was unable to reproduce this problem with the 2.6.9-42.0.10.ELsmp
kernel which ships in RHEL4.

I can provide copies of my dump via private mail to anyone else who's
working on this specific issue or a similar problem.

Brian Ristuccia

"This email message and any attachments are confidential information of Starent Networks, Corp. The information transmitted may not be used to create or change any contractual obligations of Starent Networks, Corp. Any review, retransmission, dissemination or other use of, or taking of any action in reliance upon this e-mail and its attachments by persons or entities other than the intended recipient is prohibited. If you are not the intended recipient, please notify the sender immediately -- by replying to this message or by sending an email to postmaster@xxxxxxxxxxxxxxxxxxx -- and destroy all copies of this message and any attachments without reading or disclosing their contents. Thank you."
To unsubscribe from this list: send the line "unsubscribe linux-net" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html