Skip site navigation (1)Skip section navigation (2)
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>