Linux NFS development
 help / color / mirror / Atom feed
From: Paolo Galtieri <pgaltieri-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>
To: linux-nfs@vger.kernel.org
Cc: "Scott A. Ikenaga"
	<sikenaga-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>,
	Yuksel Tokuz <ytokuz-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>
Subject: NFS over TCP behavior in older 2.6 kernel
Date: Thu, 28 Aug 2008 10:36:06 -0700	[thread overview]
Message-ID: <48B6E206.1020401@mvista.com> (raw)

Folks,
  I have a question regarding the behavior of nfsd v3 running over TCP.  
Specifically how should the NFS server behave if the clock is moved 
backwards on the server.  I've tried to find references to what the 
correct behavior should be and have been unable to, so I'm posting to 
this list with the hope someone can point me to where I can find it.

I'm running a 2.6.10 kernel on 2 systems, one acting as an NFS server 
the other as the client (obviously).  I advertise to the client a 
directory that contains several files which I mount on the client as /app

On the server I run the following test:

while ;
do
   date 022910002008;
   sleep 10;
   date 022910102008;
   sleep 10;
done

on the client I run the following in /app

while :
do
  ls
  sleep 10
done

What I observe is that often I see long pauses when doing the ls before 
it actually displays the data.

I ran tcpdump and what I observed is that the NFS server closed the 
connection when the timestamp of ACK for a packet sent by the client is 
earlier than the timestamp for the original packet, i.e. between the 
receipt of the original packet and the sending of the ACK the clock went 
backwards.  For example:

Frame 1019 contains this packet

TCP      nfs > legent-1 [FIN, ACK] Seq=961 Ack=937 Win=1448 Len=0 
TSV=979162569 TSER=979004710

0000  00 14 f8 ec 30 2f 00 14  f8 ec 47 11 08 00 45 00   ....0/.. ..G...E.
0010  00 34 2a 2c 40 00 40 06  ba 95 a9 fe 01 01 a9 fe   .4*,@.@. ........
0020  01 05 08 01 01 75 03 a6  6d a7 a9 d3 d4 ff 80 11   .....u.. m.......
0030  05 a8 69 d4 00 00 01 01  08 0a 3a 5c d5 c9 3a 5a   ..i..... ..:\..:Z
0040  6d 26 

and is time stamped (using wireshark) 2008-02-29 02:00:00.911651.  The 
original packet for which this is the ACK is frame 924 and contains:

TCP      legent-1 > nfs [ACK] Seq=937 Ack=961 Win=1460 Len=0 
TSV=979004710 TSER=979159895

0000  00 14 f8 ec 47 11 00 14  f8 ec 30 2f 08 00 45 00   ....G... ..0/..E.
0010  00 34 2b e9 40 00 40 06  b8 d8 a9 fe 01 05 a9 fe   .4+.@.@. ........
0020  01 01 01 75 08 01 a9 d3  d4 ff 03 a6 6d a7 80 10   ...u.... ....m...
0030  05 b4 74 3b 00 00 01 01  08 0a 3a 5a 6d 26 3a 5c   ..t;.... ..:Zm&:\
0040  cb 57                                              .W             

Wireshark reports the RTT as:

[The RTT to ACK the segment was: -7.377099000 seconds]

After the server disconnects the client has to reconnect and it is looks 
like the delay is occurring during this disconnect/reconnect process.

Can someone point me to any documentation, either for NFS or TCP that 
explains the behavior?  Note that this problem does not occur with UDP 
so I suspect it's a consequence of the connection oriented aspects of 
the TCP protocol vs UDP, but it would nice to see it in writing.

I appreciate any assistance, flames, or other comments :-)

Thank you,
Paolo

             reply	other threads:[~2008-08-28 17:36 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-28 17:36 Paolo Galtieri [this message]
     [not found] ` <48B6E206.1020401-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org>
2008-08-28 17:41   ` NFS over TCP behavior in older 2.6 kernel Tom Tucker
2008-08-29 17:25     ` Chuck Lever
2008-08-29 18:03       ` Tom Tucker
2008-08-30  0:54     ` Tom Tucker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=48B6E206.1020401@mvista.com \
    --to=pgaltieri-igf4poytycdqt0dzr+alfa@public.gmane.org \
    --cc=linux-nfs@vger.kernel.org \
    --cc=sikenaga-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org \
    --cc=ytokuz-Igf4POYTYCDQT0dZR+AlfA@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox