Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 14 Oct 2005 05:04:29 -0500 (CDT)
From:      Mike Silbersack <silby@silby.com>
To:        on@cs.ait.ac.th
Cc:        freebsd-net@freebsd.org
Subject:   Re: FreeBSD NFS server not responding to TCP SYN packets from Linux/SunOS clients
Message-ID:  <20051014045824.V5343@odysseus.silby.com>
In-Reply-To: <20051014160128.hev160v52ossokg0@wwws.cs.ait.ac.th>
References:  <Pine.LNX.4.64.0510141021290.22064@corbeau.imag.fr> <20051014160128.hev160v52ossokg0@wwws.cs.ait.ac.th>

next in thread | previous in thread | raw e-mail | index | archive | help

On Fri, 14 Oct 2005, on@cs.ait.ac.th wrote:

> Nicolas KOWALSKI wrote:
>> Our FreeBSD 4.10 NFS server has some problems serving files by NFS on
>> TCP (no problem with UDP) when the Linux (2.6) or Solaris (5.9)
>> clients shut down in an unclean manner (power failure). When the clients 
>> try to mount the shares from the server after an
>> unclean shutdown, the mount process hang during several minutes (delay
>> is varying), then succeeds.
>
> That is just a wild guess, but NFS mounting would happen always at the same
> stage of the boot, so maybe with the same source port number and you could be
> facing the problem that the connection is waiting for termination on the 
> server
> (close_wait or fin_wait or something)... Se source port in working example is
> 798 and source port in failing example is 799 certainly not random.
>
> Olivier

The socket on the server would still be in the ESTABLISHED state, which is 
even worse than the close_wait or fin_wait states in this case.  The SYN 
will be accepted if it's greater than the previous sequence number, so 
that's a 50% chance it'll work.

Assuming that port reuse is the problem, there is no quick fix for this, 
just resetting connections when a SYN comes in would be a really big 
security problem.

Actually, there may be a quick fix for this specific machine.  If you set 
net.inet.tcp.keepidle to 1 minute (60*whatever kern.hz is), that'll cause 
keepalive packets to be sent every minute to an idle connection, rather 
than every 2 hours.  That would kill the stuck connections much quicker.

However, it's also possible that this could cause problems in normal 
operation if keepalive packets cause problems.  So, give it a shot, but be 
careful.

Mike "Silby" Silbersack



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20051014045824.V5343>