home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / protocol / nfs / 3044 < prev    next >
Encoding:
Internet Message Format  |  1993-01-05  |  4.9 KB

  1. Path: sparky!uunet!olivea!spool.mu.edu!umn.edu!noc.msc.net!uc.msc.edu!shamash!easyaspi.udev.cdc.com!gsa
  2. From: gsa@easyaspi.udev.cdc.com (gary s anderson)
  3. Newsgroups: comp.protocols.nfs
  4. Subject: Re: NFS packet size
  5. Message-ID: <51022@shamash.cdc.com>
  6. Date: 5 Jan 93 16:34:17 GMT
  7. References: <peterd.726170584@pjd.dev.cdx.mot.com>
  8. Sender: usenet@shamash.cdc.com
  9. Reply-To: gsa@easyaspi.udev.cdc.com (gary s anderson)
  10. Lines: 91
  11.  
  12. In article <peterd.726170584@pjd.dev.cdx.mot.com>, peterd@pjd.dev.cdx.mot.com (Peter Desnoyers) writes:
  13. |> vjs@rhyolite.wpd.sgi.com (Vernon Schryver) writes:
  14. |> 
  15. |> >In article <1993Jan1.115015.17311@prl.dec.com>, boyd@prl.dec.com (Boyd Roberts) writes:
  16. |> >> ...
  17. |> >> > A dropped TCP fragment can result in a large amount of resending too.
  18. |> >> 
  19. |> >> True, but that all happens at the TCP/IP level which is far more
  20. |> >> responsive than NFS's 1, 2, 4, 8 ... _second_ exponential backoff
  21. |> >> when a datagram gets lost.
  22. |> 
  23. |> >In other implementations of NFS, the NFS timeout starts at 0.7 seconds
  24. |> >not 1.0, and can be reduced to 0.1 seconds.  Please compare 0.1 seconds
  25. |> >with the standard TCP timeouts.
  26. |> 
  27. |> It still doesn't compare very well, at least on paper. With one second
  28. |> timeouts and 8K blocks, exponential retransmission ala NFS falls off
  29. |> to 50% throughput at an Ethernet packet loss rate of 0.001, and to 25%
  30. |> throughput at a loss rate of 0.004. With a 100 mS starting timeout,
  31. |> throughput falls to 50% at a loss rate of 0.01, and 25% at 0.025 or
  32. |> so. (all figures from eyeballing gnuplot graphs...)
  33. |> 
  34. |> With TCP on a local net, however, the retransmission timer should
  35. |> adapt to somewhere in the range of say 3 to 6 packet times (correct me
  36. |> if I'm wrong...), and so in the worst case (loss rate 0.025, timer = 6
  37. |> packet times) the throughput would be about 87%.
  38. |> 
  39. |> >> We had a flakey drop cable here a while back.  When it was bad it would
  40. |> >> take in the order of a minute to write an 8K block.  You could see the
  41. |> >> fragments being dropped and the NFS retries.  I _never_ want to see
  42. |> >> that again -- it was _awful_.
  43. |> 
  44. |> >It could have been as bad or worse if you had been using NFS or TCP.
  45. |> >Your TCP connections would have been timing-out and being recreated,
  46. |> >throwing away any successfully moved data, and forcing the systems to
  47. |> >attempt the extra packet exchanges that are required to start a TCP
  48. |> >connection, incurring even more grief.
  49. |> 
  50. |> If you lose a segment in TCP, you only need to get one frame through
  51. |> correctly for the connection to make progress, while for NFS with 8K
  52. |> blocks you need to get 6 frames through. In fact, a year or two ago we
  53. |> had some network problems that killed NFS, but never dropped telnet
  54. |> connections or X sessions. (in fact, you didn't really notice a
  55. |> problem with TCP services - FTP performance was only slightly
  56. |> degraded, while NFS throughput was terrible. )
  57. |> 
  58. |> It looks like there are several explanations for this:
  59. |> 
  60. |> - NFS works a block at a time, and so has an effective error rate
  61. |> about six times higher (for 8K blocks) than TCP, since the entire
  62. |> block gets retransmitted if any packet is in error. In particular, TCP
  63. |> only needs to get the first packet of the window through in order to
  64. |> keep from resetting the connection.
  65. |> 
  66. |> - Even if NFS didn't retransmit much more data than TCP (it does, due
  67. |> to the larger effective packet size) it also spends most of its time
  68. |> idle under error conditions, while TCP only waits a few round-trip
  69. |> times (i.e. 10-20 mS) to retransmit.
  70.  
  71. I'm not sure about your version of TCP, but 1 sec tends to be a
  72. nominal value for determining when to retransmit.  You must also
  73. accommodate "delayed acks" (200 msecs comes to mind for this value)
  74. when determining when to retransmit.
  75.  
  76. You will also discover that NFS has an interesting delay pattern when
  77. using TCP because of "delayed acks" (i.e. the last packet
  78. is not a full MSS).  Disabling Nagle's algorithm does eliminate this delay
  79. (some implementations allow you to do this).
  80.  
  81. I guess you can turn off "delayed ACKS" and set timers to fire every few 
  82. milli-seconds in order to get the behavior you just described.  My 
  83. question:  Is this what your code is doing and, if so, is this part
  84. of a recent BSD release??
  85.  
  86. |> 
  87. |> - Even through TCP may have a large maximum window size (e.g. 60K), on
  88. |> a LAN (with <<1 packet time latency) the actual window size is very
  89. |> small, as is the adaptive retransmission timer.
  90. |> 
  91. |>                 Peter Desnoyers
  92. |> -- 
  93.  
  94. If packet loss is a major problem in a net, one can lower the 
  95. rsize/wsize to a value less than the MTU size in order to minimize the 
  96. retransmission impact.
  97.  
  98. Finally, I thought the, NFS over TCP versus UDP, differences had been debated
  99. enough times in this news group to satiate most individuals.  I believe
  100. most (if not all) believe that TCP is generally superior in WAN's and
  101. lossy networks and that UDP works "good enough" in most LAN environments.
  102. Is there some major point that needs rehashing?
  103.