home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #26 / NN_1992_26.iso / spool / comp / dcom / cellrel / 708 < prev    next >
Encoding:
Text File  |  1992-11-12  |  9.3 KB  |  174 lines

  1. Newsgroups: comp.dcom.cell-relay
  2. Path: sparky!uunet!zaphod.mps.ohio-state.edu!cs.utexas.edu!qt.cs.utexas.edu!yale.edu!spool.mu.edu!sgiblab!sgigate!sgi!rigden.wpd.sgi.com!rpw3
  3. From: rpw3@rigden.wpd.sgi.com (Rob Warnock)
  4. Subject: Hop-by-hop flow control (was: Re: clarifying the role of SSCOP?)
  5. Message-ID: <s90ppd8@sgi.sgi.com>
  6. Sender: rpw3@rigden.wpd.sgi.com
  7. Organization: Silicon Graphics, Inc.  Mountain View, CA
  8. Date: Thu, 12 Nov 1992 11:28:50 GMT
  9. Lines: 163
  10.  
  11. craig@sics.se (Craig Partridge) writes:
  12. +---------------
  13. | Can we back up a little bit? ...the likelihood that the tried and true
  14. | principles of data networking would all get thrown out the window seemed
  15. | small.  So I've stuck to philosophy that what we have learned from experience
  16. | is right, until someone proves it wrong.  So I stick to using the end-to-end
  17. | argument (which is not TCP/IP specific and was formulated after TCP/IP was
  18. | developed), the principle that end-to-end error recovery is best, etc.
  19. +---------------
  20.  
  21. Craig, I completely agree: End-to-end error recovery is quite sufficient,
  22. *if* the likelihood of needing to use it is small. "Tried & true; learned
  23. from experience."
  24.  
  25. But when specific links are unreliable, then you do certain minimal local
  26. things to improve the unreliable links, so that your end-to-end error recovery
  27. remains useful. This is *also* a "tried and true principle of data networking"
  28. which many of us think we have "learned from experience". Otherwise, why is
  29. it that satellites use forward error-correcting codes? Because the uncorrected
  30. bit error rate is so high and the delay so long that end-to-end retransmission
  31. would yield practically no throughput. But even here, we know not to try and
  32. usurp the role of end-to-end error recovery: You put just enough FEC on your
  33. link that the errors "bunch up" into infrequent disastrous miscorrections,
  34. which are caught by an overall CRC (orthogonal to your FEC), and when that
  35. happens (*much* less often than a single bit error on the uncorrected link)
  36. you drop the whole packet and let the E2E retransmission handle it.
  37.  
  38. Or for a really noisy short-delay link, you might put an "invisible" (to the
  39. IP layer) small-fragmentation plus go-back-N-retransmission on just that link.
  40. It doesn't add much overall delay (because you fragmented into small pieces),
  41. but *significantly* reduces the required E2E retransmission rate... without
  42. eliminating it (because there are other sources of errors), and thus still
  43. leaving the necessity for E2E error recovery.
  44.  
  45. Likewise, when every hop a packet may take has similar buffering character-
  46. istics, end-to-end congestion avoidance makes sense. But when some hops have
  47. drastically different buffering characteristics -- for example, some ATM
  48. switches' output buffers might not even hold an AAL5 MTU's number of cells
  49. (64KB = 1366 cells) -- then you have to do something "local" to raise the
  50. link functionality to the level where your E2E congestion management can
  51. handle it. NOTE: I didn't say "solve" it locally, I just said do enough to
  52. make it "look like" the regime for which the E2E congestion management was
  53. designed and is suited.
  54.  
  55. In particular, many people are talking about and experimenting with various
  56. methods of "local" or hop-by-hop flow-control for ATM. I think this is useful,
  57. in general [but see below]. The "hop-by-hop" domain doesn't have to extend
  58. outside the small-buffered "core" ATM network, just to the next large-buffered
  59. thingies (whether they be traditional routers or special ATM switches with
  60. mongo buffers).
  61.  
  62. But most have proposed "credit" systems which keep a separate account of
  63. credits for each VPI/VCI, with the credits bubbling backwards through the
  64. network as user cells flow forward. I believe this is:
  65.  
  66. - entirely too complex,
  67. - will be hard (and thus expensive) to implement,
  68. - will be hard to get enough agreement to standardize
  69.   (since there are many proposals on the table),
  70. - will thus be too late to be deployed universally,
  71. - and is not needed anyway.
  72.  
  73. I'd like to propose a radically simpler hop-by-hop alternative to those credit
  74. systems, yet one which will I believe will interact well with traditional E2E
  75. congestion management, and one which I also hope "hop-by-hop critics" such as
  76. yourself will find acceptable as well.
  77.  
  78. Let every VC be declared at call-setup time to be either a "rate-limited" call
  79. [WILL NOT exceed "x" cells/averaging-interval] or a "bursty" call. And let
  80. every ATM switch output port have *two* buffers: one used only for "rate-
  81. limited" VCs and one used only for "bursty" calls. [The "only" is what keeps
  82. us from having to worry about re-ordering.] The "rate-limited" VCs get first
  83. dibs on outgoing cells; the "bursty" VCs fill in the gaps, consuming whatever
  84. cells are left over. Both buffers can be fairly small, if you like. [I don't.]
  85.  
  86. Now pick one of the the four (as-yet-undefined) "GFC" bits in the cell header,
  87. and call it "reverse bursty congestion experienced" (RBCE). This shall be a
  88. *link* signal, not specific to any VC, and when activated should be set in
  89. every cell regardless of VC [and it will probably have to include idle or
  90. empty cells, too]. When an output port sees RBCE coming back on the link
  91. (that is, to its associated input port), it simply quits sending cells from
  92. its "bursty" queue.
  93.  
  94. When a "bursty" queue exceeds a watermark on some output port (either because
  95. its output is shut off or because it has too much bursty input traffic), it
  96. sends the RBCE indication (out-of-band, internally to the switch, not in cells)
  97. back to *all* the input ports that have any "bursty" calls set up that go
  98. through this output port. [The table or bit-mask or whatever of which input
  99. ports have "bursty" calls to this output port need be adjusted only at call
  100. setup and teardown, i.e., it's not realtime.]  When an input port is thus
  101. notified, it tells its associated output port to start sending an RBCE back
  102. upstream [to wherever the input comes from]. That is, RBCE is a sort of
  103. "not-Clear-To-Send-bursty" signal that fans out to all bursty sources which
  104. could have caused the bursty output queue to hit the watermark.
  105.  
  106. And when a host or other end station sees RBCE, it quits sending cells for
  107. all "bursty" VCs (just like an "XOFF" or "CTS false" on an RS-232 port).
  108.  
  109. Now, at first, to certain purists, this may look horrid! Why, I'm proposing
  110. to block a host from sending *all* bursty traffic when perhaps only *one*
  111. bursty VC has experienced congestion!
  112.  
  113. Yep, that's exactly what I'm proposing. That's also exactly what happens to
  114. bursty traffic today on LANs, be they Ethernet or FDDI or Token Ring or ARCnet.
  115. When a host experiences congestion, *all* of its connection experience con-
  116. gestion. And we live with it today; we can live with it in an ATM fabric.
  117.  
  118. Why? Because, in fact, "bursty" traffic is *bursty*! It is extremely rare for
  119. a high-speed host to be sending congestion-creating bursts for multiple con-
  120. nections at the same instant [provided that the link data rate is high enough].
  121. And why is that? Because high-speed hosts connected to high-speed links tend
  122. to send their bursty data directly from the process that originated it, during
  123. that process's scheduled run time. And anyway, even if the LAN or link is busy,
  124. data from other processes is queued (almost universally) in FIFO order waiting
  125. to go out. So what you see on the LAN (or link) is a burst of data from one
  126. process (in TCP, usually a 1/2-window's worth or so), then a burst of data
  127. from another, etc. [Or else a continuous link-saturating stream all from one
  128. process, as with many vendors' "ttcp" these days, but that's another story!
  129. ...and even supports the argument further.]
  130.  
  131. I am assuming that hosts will be able to continuously saturate the access
  132. line to the ATM switch with useful data. Count everybody who can do close to
  133. 100 Mb/s of FDDI today (several workstation vendors), and it doesn't take
  134. a mystic to see that the entire next generation of workstations will easily
  135. be able to saturate a 155 Mb/s link (or for the "big, fast guys", a 622 Mb/s
  136. link) with ordinary TCP and UDP data (and the like).
  137.  
  138. Therefore, since (repeating my short list of assumptions):
  139.  
  140. 1. The ATM switch buffers are *SMALL* (perhaps not even a single AAL5's MTU,
  141.    or at most a few MTUs),
  142.  
  143. 2. Over a time span that *exceeds* the size of the switch buffers, but is less
  144.    than the transport protocol's "window" size (64 KB for TCP, but can easily
  145.    be *megabytes* for TCP with RFC 1323 large windows), a fast host is in fact
  146.    usually sending traffic for only one connection (from the process that's
  147.    running "right now"),
  148.  
  149. 3. [New one:] Congestion created by a given host (or set of hosts) will be
  150.    worst relatively near to the host (or to the first switch they have in
  151.    common), and will decrease as you get farther into the network fabric
  152.    away from the host(s) [think about it -- local flow-control makes for
  153.    lots of leaky buckets leading away from the trafiic source],
  154.    
  155. I claim that blocking *all* bursty traffic from a host when congestion is
  156. experienced due to *any* of his (or even his neighbors') bursty traffic
  157. is perfectly reasonable, and the (or at least, a) right thing to do.
  158.  
  159. Implementing it is certainly simple enough.
  160.  
  161. And yet [punchline for Craig], to get reasonable overall flow on bursty
  162. traffic, I believe you still do need end-to-end congestion avoidance on
  163. top of the above-suggested hop-by-hop flow control.
  164.  
  165.  
  166. -Rob
  167.  
  168. -----
  169. Rob Warnock, MS-9U/510        rpw3@sgi.com
  170. Silicon Graphics, Inc.        (415)390-1673
  171. 2011 N. Shoreline Blvd.
  172. Mountain View, CA  94043
  173.  
  174.