From owner-freebsd-fs@FreeBSD.ORG Fri Oct 14 08:25:10 2005 Return-Path: X-Original-To: freebsd-fs@freebsd.org Delivered-To: freebsd-fs@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0727116A41F; Fri, 14 Oct 2005 08:25:10 +0000 (GMT) (envelope-from Nicolas.Kowalski@imag.fr) Received: from imag.imag.fr (imag.imag.fr [129.88.30.1]) by mx1.FreeBSD.org (Postfix) with ESMTP id 60C5343D46; Fri, 14 Oct 2005 08:25:08 +0000 (GMT) (envelope-from Nicolas.Kowalski@imag.fr) Received: from mail-veri.imag.fr (mail-veri.imag.fr [129.88.43.52]) by imag.imag.fr (8.13.0/8.13.0) with ESMTP id j9E8OwmQ008634 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NO); Fri, 14 Oct 2005 10:24:58 +0200 (CEST) Received: from corbeau.imag.fr ([129.88.43.162]) by mail-veri.imag.fr with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA:32) (Exim 4.50) id 1EQKs6-0002o8-2o; Fri, 14 Oct 2005 10:24:58 +0200 Date: Fri, 14 Oct 2005 10:24:58 +0200 From: Nicolas KOWALSKI To: freebsd-fs@freebsd.org, freebsd-net@freebsd.org Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-1.6 (imag.imag.fr [129.88.30.1]); Fri, 14 Oct 2005 10:24:58 +0200 (CEST) X-IMAG-MailScanner: Found to be clean X-IMAG-MailScanner-Information: Please contact the ISP for more information Cc: Subject: FreeBSD NFS server not responding to TCP SYN packets from Linux/SunOS clients X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Oct 2005 08:25:10 -0000 Hello, This is a repost of a question I sent to freebsd-questions 10 days ago. I "crosspost" it to freebsd-fs and freebsd-net, because the question is about both... 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. I used ethereal on a Linux client, just after an unclean shutdown, and it looks like the client is sending SYN packets to the 2049 port of the server, but the server does not respond to this ; the client retries a few seconds later, and the server still does not acknoledge it ; and it continues several times, until succeeding. Here is a trace ; the frames showing the problem are 33-36, when the client request a SYN to the 2049 port. No. Time Source Destination Protocol Info 16 0.001774 MOUNT V3 MNT Call (Reply In 17) 17 0.001983 MOUNT V3 MNT Reply (Call In 16) 18 0.002013 TCP 909 > 805 [ACK] Seq=105 Ack=73 Win=5840 Len=0 TSV=4294748848 TSER=1226883802 19 0.002233 TCP 911 > sunrpc [SYN] Seq=0 Ack=0 Win=5840 Len=0 MSS=1460 TSV=4294748848 TSER=0 WS=2 20 0.002418 TCP sunrpc > 911 [SYN, ACK] Seq=0 Ack=1 Win=57344 Len=0 MSS=1460 WS=0 TSV=1226883802 TSER=4294748848 21 0.002447 TCP 911 > sunrpc [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=4294748848 TSER=1226883802 22 0.002579 Portmap V2 GETPORT Call (Reply In 23) 23 0.002782 Portmap V2 GETPORT Reply (Call In 22) 24 0.002807 TCP 911 > sunrpc [ACK] Seq=61 Ack=33 Win=5840 Len=0 TSV=4294748849 TSER=1226883802 25 0.002941 TCP 911 > sunrpc [FIN, ACK] Seq=61 Ack=33 Win=5840 Len=0 TSV=4294748849 TSER=1226883802 26 0.003042 TCP sunrpc > 911 [ACK] Seq=33 Ack=62 Win=57920 Len=0 TSV=1226883803 TSER=4294748849 27 0.003057 TCP sunrpc > 911 [FIN, ACK] Seq=33 Ack=62 Win=57920 Len=0 TSV=1226883803 TSER=4294748849 28 0.003105 TCP 911 > sunrpc [ACK] Seq=62 Ack=34 Win=5840 Len=0 TSV=4294748849 TSER=1226883803 29 0.003264 TCP 909 > 805 [FIN, ACK] Seq=105 Ack=73 Win=5840 Len=0 TSV=4294748849 TSER=1226883802 30 0.003417 TCP 805 > 909 [ACK] Seq=73 Ack=106 Win=57920 Len=0 TSV=1226883803 TSER=4294748849 31 0.003433 TCP 805 > 909 [FIN, ACK] Seq=73 Ack=106 Win=57920 Len=0 TSV=1226883803 TSER=4294748849 32 0.003480 TCP 909 > 805 [ACK] Seq=106 Ack=74 Win=5840 Len=0 TSV=4294748849 TSER=1226883803 33 0.003881 TCP 798 > 2049 [SYN] Seq=0 Ack=0 Win=5840 Len=0 MSS=1460 TSV=4294748850 TSER=0 WS=2 34 3.004094 TCP 798 > 2049 [SYN] Seq=0 Ack=0 Win=23360 Len=0 MSS=1460 TSV=4294751850 TSER=0 WS=2 35 9.003506 TCP 798 > 2049 [SYN] Seq=0 Ack=0 Win=23360 Len=0 MSS=1460 TSV=4294757850 TSER=0 WS=2 36 21.001319 TCP 798 > 2049 [SYN] Seq=0 Ack=0 Win=23360 Len=0 MSS=1460 TSV=4294769850 TSER=0 WS=2 Is there something I can set on the server (sysctl variable perhaps), to make it accept the SYN packets from the clients ? As an counter-example, here is a trace when the same Linux client, after an unclean shutdown, tries to mount a previously (before the powerfailure) NFS mounted share from a SunOS 5.9 server. The SYN packet is acknowledged by the server (frames 36-37), so the client does not hang mounting the share. No. Time Source Destination Protocol Info 17 0.002257 MOUNT V3 MNT Call (Reply In 19) 18 0.002391 TCP 32785 > 911 [ACK] Seq=1 Ack=93 Win=49140 Len=0 TSV=613133117 TSER=4294753259 19 0.006256 MOUNT V3 MNT Reply (Call In 17) 20 0.006280 TCP 911 > 32785 [ACK] Seq=93 Ack=77 Win=5840 Len=0 TSV=4294753263 TSER=613133117 21 0.006514 TCP 913 > sunrpc [SYN] Seq=0 Ack=0 Win=5840 Len=0 MSS=1460 TSV=4294753264 TSER=0 WS=2 22 0.006670 TCP sunrpc > 913 [SYN, ACK] Seq=0 Ack=1 Win=49232 Len=0 TSV=613133117 TSER=4294753264 MSS=1460 WS=0 23 0.006700 TCP 913 > sunrpc [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=4294753264 TSER=613133117 24 0.006838 Portmap V2 GETPORT Call (Reply In 26) 25 0.007020 TCP sunrpc > 913 [ACK] Seq=1 Ack=61 Win=49172 Len=0 TSV=613133117 TSER=4294753264 26 0.007452 Portmap V2 GETPORT Reply (Call In 24) 27 0.007475 TCP 913 > sunrpc [ACK] Seq=61 Ack=33 Win=5840 Len=0 TSV=4294753265 TSER=613133117 28 0.007598 TCP 913 > sunrpc [FIN, ACK] Seq=61 Ack=33 Win=5840 Len=0 TSV=4294753265 TSER=613133117 29 0.007712 TCP 911 > 32785 [FIN, ACK] Seq=93 Ack=77 Win=5840 Len=0 TSV=4294753265 TSER=613133117 30 0.007766 TCP sunrpc > 913 [ACK] Seq=33 Ack=62 Win=49232 Len=0 TSV=613133118 TSER=4294753265 31 0.007816 TCP sunrpc > 913 [FIN, ACK] Seq=33 Ack=62 Win=49232 Len=0 TSV=613133118 TSER=4294753265 32 0.007839 TCP 913 > sunrpc [ACK] Seq=62 Ack=34 Win=5840 Len=0 TSV=4294753265 TSER=613133118 33 0.007893 TCP 32785 > 911 [ACK] Seq=77 Ack=94 Win=49232 Len=0 TSV=613133118 TSER=4294753265 34 0.008012 TCP 32785 > 911 [FIN, ACK] Seq=77 Ack=94 Win=49232 Len=0 TSV=613133118 TSER=4294753265 35 0.008145 TCP 911 > 32785 [ACK] Seq=94 Ack=78 Win=5840 Len=0 TSV=4294753265 TSER=613133118 36 0.008553 TCP 799 > 2049 [SYN] Seq=0 Ack=0 Win=5840 Len=0 MSS=1460 TSV=4294753266 TSER=0 WS=2 37 0.008790 TCP 2049 > 799 [SYN, ACK] Seq=0 Ack=1 Win=49232 Len=0 TSV=613133118 TSER=4294753266 MSS=1460 WS=0 38 0.008836 TCP 799 > 2049 [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=4294753266 TSER=613133118 Thanks, -- Nicolas