FreeBSD NFS server not responding to TCP SYN packets from Linux/SunOS clients

Nicolas KOWALSKI Nicolas.Kowalski at imag.fr
Tue Oct 4 02:56:22 PDT 2005


Hello,

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    <client-ip>          <server-ip>          MOUNT    V3 MNT Call (Reply In 17)
     17 0.001983    <server-ip>          <client-ip>          MOUNT    V3 MNT Reply (Call In 16)
     18 0.002013    <client-ip>          <server-ip>          TCP      909 > 805 [ACK] Seq=105 Ack=73 Win=5840 Len=0 TSV=4294748848 TSER=1226883802
     19 0.002233    <client-ip>          <server-ip>          TCP      911 > sunrpc [SYN] Seq=0 Ack=0 Win=5840 Len=0 MSS=1460 TSV=4294748848 TSER=0 WS=2
     20 0.002418    <server-ip>          <client-ip>          TCP      sunrpc > 911 [SYN, ACK] Seq=0 Ack=1 Win=57344 Len=0 MSS=1460 WS=0 TSV=1226883802 TSER=4294748848
     21 0.002447    <client-ip>          <server-ip>          TCP      911 > sunrpc [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=4294748848 TSER=1226883802
     22 0.002579    <client-ip>          <server-ip>          Portmap  V2 GETPORT Call (Reply In 23)
     23 0.002782    <server-ip>          <client-ip>          Portmap  V2 GETPORT Reply (Call In 22)
     24 0.002807    <client-ip>          <server-ip>          TCP      911 > sunrpc [ACK] Seq=61 Ack=33 Win=5840 Len=0 TSV=4294748849 TSER=1226883802
     25 0.002941    <client-ip>          <server-ip>          TCP      911 > sunrpc [FIN, ACK] Seq=61 Ack=33 Win=5840 Len=0 TSV=4294748849 TSER=1226883802
     26 0.003042    <server-ip>          <client-ip>          TCP      sunrpc > 911 [ACK] Seq=33 Ack=62 Win=57920 Len=0 TSV=1226883803 TSER=4294748849
     27 0.003057    <server-ip>          <client-ip>          TCP      sunrpc > 911 [FIN, ACK] Seq=33 Ack=62 Win=57920 Len=0 TSV=1226883803 TSER=4294748849
     28 0.003105    <client-ip>          <server-ip>          TCP      911 > sunrpc [ACK] Seq=62 Ack=34 Win=5840 Len=0 TSV=4294748849 TSER=1226883803
     29 0.003264    <client-ip>          <server-ip>          TCP      909 > 805 [FIN, ACK] Seq=105 Ack=73 Win=5840 Len=0 TSV=4294748849 TSER=1226883802
     30 0.003417    <server-ip>          <client-ip>          TCP      805 > 909 [ACK] Seq=73 Ack=106 Win=57920 Len=0 TSV=1226883803 TSER=4294748849
     31 0.003433    <server-ip>          <client-ip>          TCP      805 > 909 [FIN, ACK] Seq=73 Ack=106 Win=57920 Len=0 TSV=1226883803 TSER=4294748849
     32 0.003480    <client-ip>          <server-ip>          TCP      909 > 805 [ACK] Seq=106 Ack=74 Win=5840 Len=0 TSV=4294748849 TSER=1226883803
     33 0.003881    <client-ip>          <server-ip>          TCP      798 > 2049 [SYN] Seq=0 Ack=0 Win=5840 Len=0 MSS=1460 TSV=4294748850 TSER=0 WS=2
     34 3.004094    <client-ip>          <server-ip>          TCP      798 > 2049 [SYN] Seq=0 Ack=0 Win=23360 Len=0 MSS=1460 TSV=4294751850 TSER=0 WS=2
     35 9.003506    <client-ip>          <server-ip>          TCP      798 > 2049 [SYN] Seq=0 Ack=0 Win=23360 Len=0 MSS=1460 TSV=4294757850 TSER=0 WS=2
     36 21.001319   <client-ip>          <server-ip>          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    <client-ip>          <solaris-server>         MOUNT    V3 MNT Call (Reply In 19)
     18 0.002391    <solaris-server>         <client-ip>          TCP      32785 > 911 [ACK] Seq=1 Ack=93 Win=49140 Len=0 TSV=613133117 TSER=4294753259
     19 0.006256    <solaris-server>         <client-ip>          MOUNT    V3 MNT Reply (Call In 17)
     20 0.006280    <client-ip>          <solaris-server>         TCP      911 > 32785 [ACK] Seq=93 Ack=77 Win=5840 Len=0 TSV=4294753263 TSER=613133117
     21 0.006514    <client-ip>          <solaris-server>         TCP      913 > sunrpc [SYN] Seq=0 Ack=0 Win=5840 Len=0 MSS=1460 TSV=4294753264 TSER=0 WS=2
     22 0.006670    <solaris-server>         <client-ip>          TCP      sunrpc > 913 [SYN, ACK] Seq=0 Ack=1 Win=49232 Len=0 TSV=613133117 TSER=4294753264 MSS=1460 WS=0
     23 0.006700    <client-ip>          <solaris-server>         TCP      913 > sunrpc [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=4294753264 TSER=613133117
     24 0.006838    <client-ip>          <solaris-server>         Portmap  V2 GETPORT Call (Reply In 26)
     25 0.007020    <solaris-server>         <client-ip>          TCP      sunrpc > 913 [ACK] Seq=1 Ack=61 Win=49172 Len=0 TSV=613133117 TSER=4294753264
     26 0.007452    <solaris-server>         <client-ip>          Portmap  V2 GETPORT Reply (Call In 24)
     27 0.007475    <client-ip>          <solaris-server>         TCP      913 > sunrpc [ACK] Seq=61 Ack=33 Win=5840 Len=0 TSV=4294753265 TSER=613133117
     28 0.007598    <client-ip>          <solaris-server>         TCP      913 > sunrpc [FIN, ACK] Seq=61 Ack=33 Win=5840 Len=0 TSV=4294753265 TSER=613133117
     29 0.007712    <client-ip>          <solaris-server>         TCP      911 > 32785 [FIN, ACK] Seq=93 Ack=77 Win=5840 Len=0 TSV=4294753265 TSER=613133117
     30 0.007766    <solaris-server>         <client-ip>          TCP      sunrpc > 913 [ACK] Seq=33 Ack=62 Win=49232 Len=0 TSV=613133118 TSER=4294753265
     31 0.007816    <solaris-server>         <client-ip>          TCP      sunrpc > 913 [FIN, ACK] Seq=33 Ack=62 Win=49232 Len=0 TSV=613133118 TSER=4294753265
     32 0.007839    <client-ip>          <solaris-server>         TCP      913 > sunrpc [ACK] Seq=62 Ack=34 Win=5840 Len=0 TSV=4294753265 TSER=613133118
     33 0.007893    <solaris-server>         <client-ip>          TCP      32785 > 911 [ACK] Seq=77 Ack=94 Win=49232 Len=0 TSV=613133118 TSER=4294753265
     34 0.008012    <solaris-server>         <client-ip>          TCP      32785 > 911 [FIN, ACK] Seq=77 Ack=94 Win=49232 Len=0 TSV=613133118 TSER=4294753265
     35 0.008145    <client-ip>          <solaris-server>         TCP      911 > 32785 [ACK] Seq=94 Ack=78 Win=5840 Len=0 TSV=4294753265 TSER=613133118
     36 0.008553    <client-ip>          <solaris-server>         TCP      799 > 2049 [SYN] Seq=0 Ack=0 Win=5840 Len=0 MSS=1460 TSV=4294753266 TSER=0 WS=2
     37 0.008790    <solaris-server>         <client-ip>          TCP      2049 > 799 [SYN, ACK] Seq=0 Ack=1 Win=49232 Len=0 TSV=613133118 TSER=4294753266 MSS=1460 WS=0
     38 0.008836    <client-ip>          <solaris-server>         TCP      799 > 2049 [ACK] Seq=1 Ack=1 Win=5840 Len=0 TSV=4294753266 TSER=613133118


Thanks,
-- 
Nicolas


More information about the freebsd-questions mailing list