Date: Wed, 4 Sep 2002 15:00:14 -0700 (PDT) From: Jeff Behl <jeff@expertcity.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/42137: Path MTU broken - initial too-large packet continuously resent Message-ID: <200209042200.g84M0Ew5041961@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/42137; it has been noted by GNATS. From: Jeff Behl <jeff@expertcity.com> To: freebsd-gnats-submit@FreeBSD.org, jeff@expertcity.com Cc: Subject: Re: kern/42137: Path MTU broken - initial too-large packet continuously resent Date: Wed, 04 Sep 2002 14:52:04 -0700 below is a note i sent out privately to some who responded about the problem. Please contact me if you need any more information; i'd be more than happy to work with someone on this problem. I have tcpdumps of pmtu working and not working, including the icmps sent by the router. thanks. so we left out some information which has proven to be quite salient...though it still seems there is a bug lurking, though very subtle... our web servers are behind a layer two load balancer (aha everyone exclaims! but wait), i.e. it transparently re-writes the ip headers of packets and sends them to the web server. upon reply, they are again re-written and sent to the client. It turns out that on reguests made directly to the web server, pmtud works fine. As you have guessed, when requests go through the load balancer, pmtud doesn't work. Why? I don't know. On requests that do go through the load balancer we see the same traffic pattern as requests that don't. In both cases ICMPs are received by the actual server (verified by sniffing from the web server). In both cases the cloned route table (is this the correct way to say this?) shows the correct, lower MTU for the host (1420 in our case). The difference is that when directly accessing the web server the original too-large packet is re-segmented and sent with the correct MTU whereas when going through the load balancer, the too-large packet is repeatedly sent. Please see the attached trace, taken from the server. So TCP is not noticing/being notified about the new MTU? Further connections through the load balancer to the server use the current MTU as long as the cloned host route with the correct mtu exists (netstat -nalr). It's just the initial too-large packet that is being continuously resent. I've looked through the ICMPs and they appear to be correctly rewritten by the load balancer (and FBSD does get the correct new MTU in both cases). ideas??! I tried looking through the ip stack some but I'm not real C savvy and couldn't figure it out. I'd be more than happy to provide dumps of the actual exchange to anynoe who is interested. thanks for any help...this is hurting my head. jeff To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200209042200.g84M0Ew5041961>