home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / protocol / streaming.msg < prev    next >
Text File  |  2020-01-01  |  49KB  |  1,158 lines

  1. 13-Nov-97 13:22:37-GMT,1089;000000000005
  2. Return-Path: <jaltman>
  3. Received: (from jaltman@localhost)
  4.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id IAA24115;
  5.     Thu, 13 Nov 1997 08:22:36 -0500 (EST)
  6. Date: Thu, 13 Nov 97 8:22:36 EST
  7. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  8. Reply-To: jaltman@columbia.edu
  9. To: fdc@watsun.cc.columbia.edu
  10. Subject: some strange results
  11. Cc: jrd@cc.usu.edu, jaltman@watsun.cc.columbia.edu
  12. Message-ID: <CMM.0.90.4.879427356.jaltman@watsun.cc.columbia.edu>
  13.  
  14. watsun to powerpc2    streaming    349525 cps
  15.             non-streaming    524288 cps
  16.  
  17. powerpc2 to watsun    streaming    524288 cps
  18.             non-streaming    262144 cps
  19.  
  20. This will have to be looked at with the Sniffer to determine what is
  21. going on.  Although I think it probably has something to do with the
  22. Delayed Acks.
  23.  
  24. ---
  25.  
  26. powerpc2 is AIX 4.1 running on a 150MHz Personal Power system.
  27.  
  28.  
  29.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  30.                  The Kermit Project * Columbia University
  31.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  32.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  33.  
  34.  
  35. 13-Nov-97 14:06:37-GMT,1185;000000000005
  36. Return-Path: <jaltman>
  37. Received: (from jaltman@localhost)
  38.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id JAA02794;
  39.     Thu, 13 Nov 1997 09:06:36 -0500 (EST)
  40. Date: Thu, 13 Nov 97 9:06:36 EST
  41. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  42. Reply-To: jaltman@columbia.edu
  43. To: fdc@watsun.cc.columbia.edu
  44. Subject: AIX ckcnet.h
  45. Cc: jaltman@watsun.cc.columbia.edu
  46. Message-ID: <CMM.0.90.4.879429996.jaltman@watsun.cc.columbia.edu>
  47.  
  48. Do we have a #define for AIX?
  49.  
  50. the include files <sys/xti.h> and <sys/tiuser.h> both include defines
  51. for:
  52.  
  53. #define TCP_NODELAY     0x1
  54. #define TCP_MAXSEG      0x2
  55. #define TCP_KEEPALIVE   0x8
  56.  
  57. We either want to conditionally include one of the files or just copy
  58. these #defines into ckcnet.h conditionally for AIX.
  59.  
  60. BTW, ftp transfers between watsun and powerpc2 are:
  61.  
  62. watsun to powerpc2    binary        >1000cps
  63.             ascii          792cps
  64.  
  65. powerpc2 to watsun    binary          942cps
  66.             ascii          738cps
  67.  
  68.  
  69.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  70.                  The Kermit Project * Columbia University
  71.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  72.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  73.  
  74.  
  75. 13-Nov-97 16:12:55-GMT,3354;000000000015
  76. Return-Path: <JRD@cc.usu.edu>
  77. Received: from GRUMPY.USU.EDU (grumpy.usu.edu [129.123.1.86])
  78.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id LAA29915;
  79.     Thu, 13 Nov 1997 11:12:54 -0500 (EST)
  80. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  81.  id <01IPYEKBTKHC9EJMLL@cc.usu.edu>; Thu, 13 Nov 1997 09:12:42 -0600 (MDT)
  82. Date: Thu, 13 Nov 1997 09:12:42 -0600 (MDT)
  83. From: Joe Doupnik <JRD@cc.usu.edu>
  84. Subject: Re: fast stuff
  85. To: fdc@watsun.cc.columbia.edu
  86. Cc: JALTMAN@watsun.cc.columbia.edu
  87. Message-id: <01IPYEKBTP769EJMLL@cc.usu.edu>
  88. X-VMS-To: IN%"fdc@watsun.cc.columbia.edu"
  89. X-VMS-Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU,JRD
  90. MIME-version: 1.0
  91. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  92. Content-transfer-encoding: 7BIT
  93.  
  94. Frank and Jeff,
  95.     Thinking about the streaming stuff overnight...
  96.     I suspect this is all way off base so far, including that ZD
  97. article (especially that confused piece of writing). Let me expand a
  98. little.
  99.     Kermit ACKs piling up in a reverse channel send buffer do not
  100. cause TCP ACKs to occur less frequently than if no Kermit ACKs were
  101. present. If anything TCP ACKs will occur more frequently to flush a
  102. full MSS to the file sender.
  103.     A 200ms delayed ACK queue can work a couple of ways. One is
  104. to accumulate ACK needs and then five times per second send an ACK.
  105. That is what your MS statements suggest. Well, suppose that's the
  106. case. Then the file sender could, at max, send a whole TCP window
  107. five times per second, 5 x 32KB = 150KB/sec, lots lots less for
  108. smaller windows such as in MS products.
  109.     The other way is to queue one ACK and when another is queued
  110. see that a queue is outstanding and do a formal transmission. Thus
  111. guys standing in line cause the queue to be flushed. This is the
  112. ACK every other packet scheme in most large TCP stacks. There is no
  113. limit on the transmission throughput in this case. Every arriving
  114. segment with data generates an ACK need, every second generates an
  115. ACK transmission. The very first and very last segments *may* experience
  116. the 200ms delay, as well as first segments after serious congestion
  117. recovery. The TCP window is normally larger than two TCP segments, and 
  118. thus the two machines go into full max rate streaming.
  119.     There is one more TCP effect I haven't mentioned yet. Window
  120. opening. If the receiver's TCP window closes then in big stacks it
  121. is reported as still closed until it is half empty. Hysterisis. In
  122. lieu of other requests a window opening transmission will be sent by
  123. the receiver when the window suddenly is declared available again.
  124. Clearly, the file transmitter is blocked by a closed window, though it
  125. can probe if it gets anxious (MSK does). MSK's TCP receiver does not hold
  126. down window reports that strongly.
  127.     What I think is happening is CK is committing too many resources
  128. trying to read Kermit ACKs. This is not a TCP problem at all.
  129.     One can easly see if the file receiver is using ACK plan A or 
  130. plan B by watching the packet trace timing. One can easily see closed
  131. window blockages the same way. One can also see if TCP is blocked in any
  132. way rather than CK spinning its wheels, as I think it is.
  133.     That ZD article has matters all confused.
  134.     Note, older SUN TCP stacks have a bug in window handling such that
  135. they drive themselves into a corner and nibble at the data stream. I have
  136. a paper on the matter, and SUN has compendium patches which cure it.
  137.     Joe D.
  138.  
  139. 13-Nov-97 16:45:15-GMT,1496;000000000005
  140. Return-Path: <JRD@cc.usu.edu>
  141. Received: from GRUMPY.USU.EDU (grumpy.usu.edu [129.123.1.86])
  142.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id LAA11536;
  143.     Thu, 13 Nov 1997 11:45:13 -0500 (EST)
  144. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  145.  id <01IPYFYSEN0M9LXGDG@cc.usu.edu>; Thu, 13 Nov 1997 09:44:31 -0600 (MDT)
  146. Date: Thu, 13 Nov 1997 09:44:30 -0600 (MDT)
  147. From: Joe Doupnik <JRD@cc.usu.edu>
  148. Subject: Re: fast stuff
  149. To: fdc@watsun.cc.columbia.edu
  150. Cc: JALTMAN@watsun.cc.columbia.edu
  151. Message-id: <01IPYFYSEOW89LXGDG@cc.usu.edu>
  152. X-VMS-To: IN%"fdc@watsun.cc.columbia.edu"
  153. X-VMS-Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU,JRD
  154. MIME-version: 1.0
  155. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  156. Content-transfer-encoding: 7BIT
  157.  
  158. Frank,
  159.     I still suspect it's all in Kermit and the o/s scheduler. Sweet
  160. spots and all that jazz.
  161.     Packet traces will resolve TCP heuristic issues, presuming the 
  162. traces reveal timing to millisec resolution. Again, FTP runs without
  163. high level ACKs and thus generates TCP ACKs *less often* than a scheme
  164. which sends back info. This will be plain in the traces. Getting caught
  165. looking for, and/or dealing with, returned information is the most likely
  166. difficulty in this problem.
  167.     Test the returned info situation with streaming CK. Read the bytes
  168. and discard them at as low a level as you can manage. Ditto, but decimate
  169. the look rate. See if the read routine leads to blockages or context 
  170. switches that steal time. Try again with Kermit ACKs padded to one MSS.    
  171.     Joe D.
  172.  
  173. 13-Nov-97 16:57:33-GMT,2004;000000000005
  174. Return-Path: <jaltman>
  175. Received: (from jaltman@localhost)
  176.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id LAA13603;
  177.     Thu, 13 Nov 1997 11:57:33 -0500 (EST)
  178. Date: Thu, 13 Nov 97 11:57:32 EST
  179. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  180. Reply-To: jaltman@columbia.edu
  181. To: Frank da Cruz <fdc@watsun.cc.columbia.edu>
  182. Cc: Joe Doupnik <JRD@cc.usu.edu>, jaltman@watsun.cc.columbia.edu
  183. Subject: Re: fast stuff
  184. In-Reply-To: Your message of Thu, 13 Nov 97 11:27:45 EST
  185. Message-ID: <CMM.0.90.4.879440252.jaltman@watsun.cc.columbia.edu>
  186.  
  187. I threw the Ziff Davis article in because I found it.  It really has
  188. nothing to do with what I have observed with the Sniffer.
  189.  
  190. Joe, as you say the Delayed Ack can occur on the very last segment.
  191.  
  192. Here is the scenario that I have seen.  I don't have access to the
  193. Sniffer until Monday and plan to do much more serious documentation of
  194. the behavior at that time.
  195.  
  196. The TCP Window from the Sender is full or close to it.  
  197.  
  198. The Receiver sends a Kermit ACK (small segment triggering Nagle) with
  199. a TCP ACK piggybacked with a Window size smaller than one half the MSS.
  200. The Sender stops sending data.
  201.  
  202. The Receiver does not ACK the last received segment and does not send
  203. any more Kermit ACKs because of Nagle and therefore waits to timeout
  204. 200ms.   
  205.  
  206. The Sender gets the TCP ACK containing a Kermit ACK and the larger
  207. Window size but doesn't send anything yet.  It waits 200 ms and then
  208. TCP ACKs the last ACK and the data starts to flow again.
  209.  
  210. ---
  211.  
  212. Again this is not really a problem with the RTT is close to the order
  213. of the delay time but when we are talking orders of magnitude between
  214. the delay time and the RTT we hit a serious bottleneck.
  215.  
  216. I will send something much more precise next week.
  217.  
  218.  
  219.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  220.                  The Kermit Project * Columbia University
  221.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  222.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  223.  
  224.  
  225. 13-Nov-97 17:03:17-GMT,1727;000000000005
  226. Return-Path: <jaltman>
  227. Received: (from jaltman@localhost)
  228.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id MAA14630;
  229.     Thu, 13 Nov 1997 12:01:17 -0500 (EST)
  230. Date: Thu, 13 Nov 97 12:01:16 EST
  231. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  232. Reply-To: jaltman@columbia.edu
  233. To: Joe Doupnik <JRD@cc.usu.edu>
  234. Cc: fdc@watsun.cc.columbia.edu, jaltman@watsun.cc.columbia.edu
  235. Subject: Re: fast stuff
  236. In-Reply-To: Your message of Thu, 13 Nov 1997 09:44:30 -0600 (MDT)
  237. Message-ID: <CMM.0.90.4.879440476.jaltman@watsun.cc.columbia.edu>
  238.  
  239. > Frank,
  240. >     I still suspect it's all in Kermit and the o/s scheduler. Sweet
  241. > spots and all that jazz.
  242. >     Packet traces will resolve TCP heuristic issues, presuming the 
  243. > traces reveal timing to millisec resolution. Again, FTP runs without
  244. > high level ACKs and thus generates TCP ACKs *less often* than a scheme
  245. > which sends back info. This will be plain in the traces. Getting caught
  246. > looking for, and/or dealing with, returned information is the most likely
  247. > difficulty in this problem.
  248. >     Test the returned info situation with streaming CK. Read the bytes
  249. > and discard them at as low a level as you can manage. Ditto, but decimate
  250. > the look rate. See if the read routine leads to blockages or context 
  251. > switches that steal time. Try again with Kermit ACKs padded to one MSS.    
  252. >     Joe D.
  253.  
  254. Even so, an ACKless protocol will always be faster than an ACKing
  255. protocol on Ethernet because Ethernet is half duplex.
  256.  
  257.  
  258.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  259.                  The Kermit Project * Columbia University
  260.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  261.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  262.  
  263.  
  264. 13-Nov-97 17:26:11-GMT,3914;000000000005
  265. Return-Path: <JRD@cc.usu.edu>
  266. Received: from barney.usu.edu (barney.usu.edu [129.123.1.89])
  267.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id MAA19289
  268.     for <FDC@WATSUN.CC.COLUMBIA.EDU>; Thu, 13 Nov 1997 12:26:10 -0500 (EST)
  269. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  270.  id <01IPYH1M80Y09LX9CT@cc.usu.edu>; Thu, 13 Nov 1997 10:25:10 -0600 (MDT)
  271. Date: Thu, 13 Nov 1997 10:25:08 -0600 (MDT)
  272. From: Joe Doupnik <JRD@cc.usu.edu>
  273. Subject: Re: fast stuff
  274. To: jaltman@columbia.edu
  275. Cc: FDC@WATSUN.CC.COLUMBIA.EDU
  276. Message-id: <01IPYH1M82U29LX9CT@cc.usu.edu>
  277. X-VMS-To: IN%"jaltman@columbia.edu"
  278. X-VMS-Cc: FDC@WATSUN.CC.COLUMBIA.EDU,JRD
  279. MIME-version: 1.0
  280. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  281. Content-transfer-encoding: 7BIT
  282.  
  283. >Even so, an ACKless protocol will always be faster than an ACKing
  284. >protocol on Ethernet because Ethernet is half duplex.
  285.  
  286.     Jeff, may I politely suggest "rubbish"? You guys are not
  287. hitting the limits of the wire. That means you aren't pushing 1MB/sec
  288. of user (Kermit) data. Kermit ACK packets are tiny and use very little
  289. wire capacity.
  290.     I have pushed the wire to the limits, with (IPX) ACKs. And I've
  291. done it at both 10Mbps and 100Mbps Ethernets, and the user data rates
  292. involved are 1MB/sec and 10+MB/sec.
  293.  
  294.     On the other message.
  295.  
  296. >The TCP Window from the Sender is full or close to it.  
  297.  
  298.     Actually you don't know this. The sender's transmit buffer
  299. is not advertised on the wire. Only receive windows are advertised.
  300.  
  301. >The Receiver sends a Kermit ACK (small segment triggering Nagle) with
  302. >a TCP ACK piggybacked with a Window size smaller than one half the MSS.
  303. >The Sender stops sending data.
  304.  
  305.     The file sender is in Kermit sliding windows mode. It presumably
  306. has more Kermit data to send. If it stops it either stopped itself at
  307. Kermit level for Kermit reasons or it found that the TCP stack declined
  308. to accept further data or the TCP stack was blocked from transmitting
  309. (and Nagle's algorithm has long since faded from the scene, forget it).
  310.     The file sender stopped for a reason. It can do so if the receiver
  311. says its window is closed. That window size is in every TCP segment, so
  312. it's visible in the sniffer. If the window did close then the receiver
  313. is falling way behind at the application level. Falling behing reading
  314. is part of what I suggested is really wrong; CK gets stuck with reading,
  315. perhaps because of o/s side effects.
  316.  
  317. >The Receiver does not ACK the last received segment and does not send
  318. >any more Kermit ACKs because of Nagle and therefore waits to timeout
  319. >200ms.   
  320.     TCP itself ACKs TCP data, always. Every TCP transmission will
  321. carry as much user data as the other side's window, moderated by 
  322. congestion avoidance, will allow. Nagle's algorithm does not reduce
  323. this at all. That arriving file data will cause those pent-up Kermit
  324. ACKs to be transmitted; this has nothing at all to do with Nagle.
  325. If the Kermit transmitter + its TCP stack decides to stop sending
  326. for its own reasons then things get sluggish.
  327.     Now to your sentence above.
  328.     So a last segment arrives and its TCP ACK is put on the 200ms
  329. timer queue. So what? There are many other previous segments which have
  330. been ACK'd, and Kermit ACKs going out with them. All the sentence refers
  331. to is the very trailing end of the sliding window material, and the rest
  332. of the window has been cleaned up and should be raring to send more data.
  333.  
  334. >The Sender gets the TCP ACK containing a Kermit ACK and the larger
  335. >Window size but doesn't send anything yet.  It waits 200 ms and then
  336. >TCP ACKs the last ACK and the data starts to flow again.
  337.  
  338.     So why is the transmitter sitting idle for 200ms? There must
  339. be a reason, such as the transmitter does not have control of the
  340. machine (scheduler, app busy doing something else, bug in the software
  341. such that it has not continued to fill the Kermit sliding window stream,
  342. receiver's window is closed and won't say open until that end catches up).
  343.     Joe D.
  344.  
  345. 13-Nov-97 18:23:03-GMT,2189;000000000005
  346. Return-Path: <JRD@cc.usu.edu>
  347. Received: from barney.usu.edu (barney.usu.edu [129.123.1.89])
  348.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id NAA02406
  349.     for <FDC@WATSUN.CC.COLUMBIA.EDU>; Thu, 13 Nov 1997 13:23:02 -0500 (EST)
  350. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  351.  id <01IPYJD1S5S09EJTSO@cc.usu.edu>; Thu, 13 Nov 1997 11:22:27 -0600 (MDT)
  352. Date: Thu, 13 Nov 1997 11:22:26 -0600 (MDT)
  353. From: Joe Doupnik <JRD@cc.usu.edu>
  354. Subject: Re: fast stuff
  355. To: jaltman@columbia.edu
  356. Cc: FDC@WATSUN.CC.COLUMBIA.EDU
  357. Message-id: <01IPYJD1T7G29EJTSO@cc.usu.edu>
  358. X-VMS-To: IN%"jaltman@columbia.edu"
  359. X-VMS-Cc: FDC@WATSUN.CC.COLUMBIA.EDU,JRD
  360. MIME-version: 1.0
  361. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  362. Content-transfer-encoding: 7BIT
  363.  
  364. >I will send you summations of the Sniffer logs when I get them back.
  365.  
  366.     Rog. That should help.
  367.  
  368. >The reason the sender stops sending is because the TCP receive window
  369. >is closed.  The Kermit Window is not.
  370.  
  371.     Now we are getting somewhere. File receiver falls well behind
  372. and tries to catch up. When it does drain most/much/half of its TCP
  373. receive buffer a window opening packet should be emitted. Perhaps it
  374. is not being emitted, leading to the 200ms deadlock.
  375.     Here's the MSK piece of code on the matter (translation below it):
  376.  
  377.             /* send a window update if crossing a boundry */
  378.     if (s->rdatalen < (TCP_RBUFSIZE / 2) &&
  379.         (s->rdatalen + x) >= TCP_RBUFSIZE / 2)
  380.             tcp_send(s);        /* send opening update */
  381.  
  382.     Send absolutely (now) a window opening message if the TCP receive
  383. buffer drains across the half-full watermark.
  384.     If a brand X stack put this message on a 200ms wait queue it
  385. should show up in the sniffer logs and delay matters by 200ms. Such
  386. a delay would be a design error.
  387.  
  388. >C-Kermit does not just blast data, it checks for socket write
  389. >availability with select() before attempting any write.  Same for reads.
  390. >
  391. >The sniffer logs show that this behavior never occurs to FTP streams.
  392. >FTP streams are continuous with one TCP ACK for every four TCP Data
  393. >Segments.
  394.   
  395.     Ok, so if Kermit reading causes delays then we are close to
  396. the observations.
  397.     I'll wait for the sniffer logs and spare us more speculation
  398. this morning.
  399.     Thanks,
  400.     Joe D.
  401.  
  402. 13-Nov-97 21:28:06-GMT,815;000000000005
  403. Return-Path: <jrd>
  404. Received: (from jrd@localhost)
  405.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id QAA11625;
  406.     Thu, 13 Nov 1997 16:28:05 -0500 (EST)
  407. Date: Thu, 13 Nov 97 16:28:05 EST
  408. From: "Joe R. Doupnik" <jrd@watsun.cc.columbia.edu>
  409. To: fdc@watsun.cc.columbia.edu, jaltman@watsun.cc.columbia.edu
  410. Cc: jrd@watsun.cc.columbia.edu
  411. Subject: Solaris TCP window bugs
  412. Message-ID: <CMM.0.90.4.879456485.jrd@watsun.cc.columbia.edu>
  413.  
  414. Frank and Jeff,
  415.     In ~jrd on watsun is file probing.TCP.ps.Z, the paper by Doug
  416. Comer on shortcomings of Solaris regarding zero TCP windows. It's 10
  417. pages of paper. Sun has subsequently fixed their TCP stack to overcome
  418. this defect (has been observed here in spades with a fellow's Sun
  419. speaking eventually over a phone line to a Win95 machine at home). One
  420. needs to obtain the Sun patch.
  421.     Joe D.
  422.  
  423. 14-Nov-97  2:35:48-GMT,2713;000000000005
  424. Return-Path: <JRD@cc.usu.edu>
  425. Received: from SLEEPY.USU.EDU (sleepy.usu.edu [129.123.1.85])
  426.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id VAA02168;
  427.     Thu, 13 Nov 1997 21:35:47 -0500 (EST)
  428. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  429.  id <01IPZ00M22MC9LXQPC@cc.usu.edu>; Thu, 13 Nov 1997 19:35:33 -0600 (MDT)
  430. Date: Thu, 13 Nov 1997 19:35:33 -0600 (MDT)
  431. From: Joe Doupnik <JRD@cc.usu.edu>
  432. Subject: Misc ramblings on streaming tests
  433. To: FDC@WATSUN.CC.COLUMBIA.EDU
  434. Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU
  435. Message-id: <01IPZ00M23K69LXQPC@cc.usu.edu>
  436. X-VMS-To: FDC@WATSUN.CC.COLUMBIA.EDU
  437. X-VMS-Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU,JRD
  438. MIME-version: 1.0
  439. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  440. Content-transfer-encoding: 7BIT
  441.  
  442. Frank and Jeff,
  443.     A few observations from here on the streaming stuff.
  444.  
  445.     My normal Kermit setup, CK on netlab1 to CK on watsun: 25KB/sec.
  446.     Ftp between the same places: 100KB/sec.
  447.     Look at Kermit settings and see 2KB x 4. That's 8KB of windowing
  448. whereas netlab1's TCP stack has 32KB buffers, a 1:4 dilution by Kermit.
  449.     MSK to watsun gives the same transfer rates, and MSK has only
  450. 4KB TCP buffers. Again, the Kermit protocol side is the throttle so the
  451. TCP buffer size doesn't make all that much difference in this test.
  452.  
  453.     Check assumptions later in the day, USU to CU again.
  454.     CKermit 1.5KB x 20 on both ends: 120KB/sec 
  455.     Quick ftp: 180KB/sec. Given CK's formatted screen etc that is close.
  456.     Conclusion: on long distances we starve in the Kermit buffer arena
  457. compared to the underlying TCP transport channel. Not much new about that,
  458. but the scaling above does work out. Good old pipe filling.
  459.  
  460.     MSK check. Bypass decoding and writing to disk. No significant 
  461. change when disk is a RAM drive, some change if using a real hard drive.
  462. So MSK's decoder is faster than a SCSI Seagate Barracuda under DOS.
  463.  
  464.     CK check. Create a Unix RAM drive (memfs). No change for local
  465. transfers. Conclusion: I dunno.
  466.  
  467.     FTP check. Ftp to adjacent NW file server. 500-700KB/sec either
  468. way. About right when that server is only a 486-33.
  469.  
  470.     I Had a quick look at the wire while within Windows (ugh), and saw
  471. CK send to MSK with pauses of 60-120 millisec periodically. MSK does the same
  472. when it sends the file, and that is to read disk, construct Kermit packets,
  473. etc. It turns out those pauses are large consumers of time. I won't be
  474. able to repeat this until the weekend when I can steal my student lab to 
  475. run clean DOS machines and the wire snoop independently of the file xfer.
  476.     The wermit involve here was the regular test item, not the streaming
  477. edition. To beat FTP on long distance is no problem: just use enough buffering
  478. to fill the pipe. To beat FTP locally don't bother.
  479.         Joe D.
  480.  
  481. 14-Nov-97  2:47:28-GMT,1027;000000000005
  482. Return-Path: <JRD@cc.usu.edu>
  483. Received: from SNEEZY.USU.EDU (sneezy.usu.edu [129.123.1.87])
  484.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id VAA03273;
  485.     Thu, 13 Nov 1997 21:47:27 -0500 (EST)
  486. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  487.  id <01IPZ15DULPS9IB80O@cc.usu.edu>; Thu, 13 Nov 1997 19:46:24 -0600 (MDT)
  488. Date: Thu, 13 Nov 1997 19:46:24 -0600 (MDT)
  489. From: Joe Doupnik <JRD@cc.usu.edu>
  490. Subject: Rambling, part two
  491. To: FDC@WATSUN.CC.COLUMBIA.EDU
  492. Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU
  493. Message-id: <01IPZ15DV3LU9IB80O@cc.usu.edu>
  494. X-VMS-To: FDC@WATSUN.CC.COLUMBIA.EDU
  495. X-VMS-Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU,JRD
  496. MIME-version: 1.0
  497. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  498. Content-transfer-encoding: 7BIT
  499.  
  500. Frank and Jeff,
  501.     The last of tonight's "putting the numbers in" experiments.
  502.  
  503.     MSK to watsun. 2KB x 4: 22KB/sec.
  504.             2KB x 20: 45KB/sec.
  505.  
  506.     Modify MSK to use a 31KB TCP buffer, repeat MSK to watsun.
  507.         2KB x 20: 125KB/sec
  508.  
  509.     So the large TCP buffer let MSK fill the pipe and that was that.
  510.         Joe D.
  511.  
  512. 14-Nov-97  4:17:30-GMT,2048;000000000005
  513. Return-Path: <JRD@cc.usu.edu>
  514. Received: from barney.usu.edu (barney.usu.edu [129.123.1.89])
  515.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id XAA13435;
  516.     Thu, 13 Nov 1997 23:17:29 -0500 (EST)
  517. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  518.  id <01IPZ41WQOMO9IBEKQ@cc.usu.edu>; Thu, 13 Nov 1997 21:17:24 -0600 (MDT)
  519. Date: Thu, 13 Nov 1997 21:17:24 -0600 (MDT)
  520. From: Joe Doupnik <JRD@cc.usu.edu>
  521. Subject: Streaming, last comment for tonight
  522. To: FDC@WATSUN.CC.COLUMBIA.EDU
  523. Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU
  524. Message-id: <01IPZ41WQY1U9IBEKQ@cc.usu.edu>
  525. X-VMS-To: FDC@WATSUN.CC.COLUMBIA.EDU
  526. X-VMS-Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU,JRD
  527. MIME-version: 1.0
  528. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  529. Content-transfer-encoding: 7BIT
  530.  
  531. Frank and Jeff,
  532.     Upon a little reflection it seems that the way to compete with
  533. FTP on local wiring is to join the club. And that means avoid touching
  534. bytes as much as possible.
  535.     A suggestion is to assure an 8-bit clean channel, use regular
  536. Kermit packets for all but the D packet. The D packet has a normal
  537. Kermit framing but the real data is raw block stuff. To further reduce
  538. touching bytes we need to open a second TCP channel which has no Telnet
  539. processor at each end, ftp-data style. Send all the Kermit packets via
  540. that channel. Use a linear checksum to save time, a la TCP, to double 
  541. check byte slippage in parsing frames from the stream.
  542.     Channel closing needs finesse to keep it open over files within
  543. a group, and thus lower session setup overhead. 'B' packet ought to do
  544. nicely as a terminator.
  545.         You've probably thought of this too so I will claim zero originality.
  546.     We claim advantage of: Kermit attributes, character set handling, 
  547. and similar bells and whistles, but ftp speed for bulk data.
  548.     The only problem I have with this I can't afford 32KB TCP buffers
  549. very easily, but one can be found to absorb file transfer traffic on a
  550. single session at a time. I also have an administrative mess in the code
  551. dealing with two sessions simultaneously, but I presume there's a way.
  552.     Joe D.
  553.  
  554. 14-Nov-97  5:40:56-GMT,1048;000000000005
  555. Return-Path: <jaltman>
  556. Received: (from jaltman@localhost)
  557.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id AAA25610
  558.     for fdc; Fri, 14 Nov 1997 00:40:56 -0500 (EST)
  559. Date: Fri, 14 Nov 97 0:40:56 EST
  560. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  561. Reply-To: jaltman@columbia.edu
  562. To: fdc@watsun.cc.columbia.edu
  563. Subject: streaming
  564. Message-ID: <CMM.0.90.4.879486056.jaltman@watsun.cc.columbia.edu>
  565.  
  566. something that occurred to me.  There was something ringing in my ear,
  567. something Joe said earlier.  He said that when the TCP Window closes
  568. it won't open again until the recv buffer is half empty.  Well,
  569. C-Kermit on Unix only reads at most 4096 bytes at a time in myread().
  570. But the recvbuf for Sun TCP is 24K.  We need to increase the read
  571. buffer of C-Kermit in ckutio.c.
  572.  
  573.  
  574.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  575.                  The Kermit Project * Columbia University
  576.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  577.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  578.  
  579.  
  580. 14-Nov-97  8:27:36-GMT,972;000000000005
  581. Return-Path: <jaltman>
  582. Received: (from jaltman@localhost)
  583.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id DAA25218
  584.     for fdc; Fri, 14 Nov 1997 03:27:35 -0500 (EST)
  585. Date: Fri, 14 Nov 97 3:27:35 EST
  586. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  587. Reply-To: jaltman@columbia.edu
  588. To: fdc@watsun.cc.columbia.edu
  589. Subject: more streaming
  590. Message-ID: <CMM.0.90.4.879496055.jaltman@watsun.cc.columbia.edu>
  591.  
  592. I increased the MYBUFSIZ in ckutio.c to 32678 and with Streaming on I
  593. consistently transmit data from watsun to powerpc2 at 1mb/sec.
  594.  
  595. With streaming off the data rate is 0.5mb/sec.
  596.  
  597. ---
  598.  
  599. you might want to compare the TCP RTO detection algorithm with the one
  600. you wrote for Kermit.  RFC 1122.
  601.  
  602.  
  603.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  604.                  The Kermit Project * Columbia University
  605.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  606.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  607.  
  608.  
  609. 16-Nov-97  2:06:51-GMT,1007;000000000005
  610. Return-Path: <JRD@cc.usu.edu>
  611. Received: from SNEEZY.USU.EDU (sneezy.usu.edu [129.123.1.87])
  612.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id VAA01060
  613.     for <FDC@WATSUN.CC.COLUMBIA.EDU>; Sat, 15 Nov 1997 21:06:51 -0500 (EST)
  614. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  615.  id <01IQ1SFNWEI89ELOQ5@cc.usu.edu> for FDC@WATSUN.CC.COLUMBIA.EDU; Sat,
  616.  15 Nov 1997 19:06:48 -0600 (MDT)
  617. Date: Sat, 15 Nov 1997 19:06:48 -0600 (MDT)
  618. From: Joe Doupnik <JRD@cc.usu.edu>
  619. Subject: Streaming, a possible aid
  620. To: FDC@WATSUN.CC.COLUMBIA.EDU
  621. Message-id: <01IQ1SFNWJ829ELOQ5@cc.usu.edu>
  622. X-VMS-To: FDC@WATSUN.CC.COLUMBIA.EDU
  623. X-VMS-Cc: JRD
  624. MIME-version: 1.0
  625. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  626. Content-transfer-encoding: 7BIT
  627.  
  628. Frank,
  629.     On netlab1 I built tcpdump (/opt/bin/tcpdump) as an aid in your
  630. streaming tests. It works best in non-promiscous mode (tcpdump -p ...)
  631. but does run in promiscous mode if desired. For the time being I made
  632. it suid so it could be run by non-root (yes, I know).
  633.     Joe D.
  634.  
  635. 20-Nov-97  5:17:01-GMT,972;000000000005
  636. Return-Path: <jaltman>
  637. Received: (from jaltman@localhost)
  638.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id AAA29623
  639.     for fdc; Thu, 20 Nov 1997 00:17:01 -0500 (EST)
  640. Date: Thu, 20 Nov 97 0:17:00 EST
  641. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  642. Reply-To: jaltman@columbia.edu
  643. To: fdc@watsun.cc.columbia.edu
  644. Subject: streaming notes
  645. Message-ID: <CMM.0.90.4.880003020.jaltman@watsun.cc.columbia.edu>
  646.  
  647. -I flag should set 'streaming' to 1
  648.  
  649. I thhink Streaming mode should be displayed to the user as a 'Message'
  650. and not as a protocol type.  The results of other protocol
  651. negotiations should be displayed as messages as well.  This will be
  652. important for KUI.
  653.  
  654. Other than that looks really good.
  655.  
  656.  
  657.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  658.                  The Kermit Project * Columbia University
  659.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  660.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  661.  
  662.  
  663. 20-Nov-97 15:50:54-GMT,1132;000000000011
  664. Return-Path: <jaltman>
  665. Received: (from jaltman@localhost)
  666.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id KAA02703
  667.     for fdc; Thu, 20 Nov 1997 10:50:54 -0500 (EST)
  668. Date: Thu, 20 Nov 97 10:50:54 EST
  669. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  670. Reply-To: jaltman@columbia.edu
  671. To: fdc@watsun.cc.columbia.edu
  672. Subject: streaming
  673. Message-ID: <CMM.0.90.4.880041054.jaltman@watsun.cc.columbia.edu>
  674.  
  675. I am using the code from last night.  wermit -Ig ckoco3.c with my
  676. modification to turn streaming on when -I is specificied.
  677.  
  678. The connection is one which drops out periodicly with very long
  679. delays.  Using autodownload server on K95.  
  680.  
  681. K95 reported the file successfully transfered, however, it really only
  682. transfered 70059 out of 517768 bytes and wermit only received about
  683. 66000 bytes.
  684.  
  685. It is not clear why it failed.
  686.  
  687. I am going to try to reproduce it.
  688.  
  689.  
  690.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  691.                  The Kermit Project * Columbia University
  692.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  693.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  694.  
  695.  
  696. 20-Nov-97 15:55:18-GMT,1223;000000000001
  697. Return-Path: <fdc>
  698. Received: (from fdc@localhost)
  699.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id KAA03386;
  700.     Thu, 20 Nov 1997 10:55:16 -0500 (EST)
  701. Date: Thu, 20 Nov 97 10:55:16 EST
  702. From: Frank da Cruz <fdc@watsun.cc.columbia.edu>
  703. To: jaltman@columbia.edu
  704. Subject: Re: streaming
  705. In-Reply-To: Your message of Thu, 20 Nov 97 10:50:54 EST
  706. Message-ID: <CMM.0.90.4.880041316.fdc@watsun.cc.columbia.edu>
  707.  
  708. > I am using the code from last night.  wermit -Ig ckoco3.c with my
  709. > modification to turn streaming on when -I is specificied.
  710. What modification?  Streaming *is* used when -I is specified, as long as
  711. you haven't changed the default SET STREAMING value, which is AUTO.
  712.  
  713. > The connection is one which drops out periodicly with very long
  714. > delays.  Using autodownload server on K95.  
  715. > K95 reported the file successfully transfered, however, it really only
  716. > transfered 70059 out of 517768 bytes and wermit only received about
  717. > 66000 bytes.
  718. > It is not clear why it failed.
  719. > I am going to try to reproduce it.
  720. Well... packet logs, etc.  It might be just a case of not reporting the
  721. failure on the file-transfer display -- that's where I left off last night.
  722. What does "stat" tell you after such a failure.
  723.  
  724. - Frank
  725.  
  726. 21-Nov-97  2:49:24-GMT,4361;000000000005
  727. Return-Path: <JRD@cc.usu.edu>
  728. Received: from SNEEZY.USU.EDU (sneezy.usu.edu [129.123.1.87])
  729.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id VAA00747;
  730.     Thu, 20 Nov 1997 21:49:23 -0500 (EST)
  731. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  732.  id <01IQ8S9BODY89EOBB5@cc.usu.edu>; Thu, 20 Nov 1997 19:49:14 -0600 (MDT)
  733. Date: Thu, 20 Nov 1997 19:49:14 -0600 (MDT)
  734. From: Joe Doupnik <JRD@cc.usu.edu>
  735. Subject: Re: Streaming - Draft 3
  736. To: fdc@watsun.cc.columbia.edu
  737. Cc: JALTMAN@watsun.cc.columbia.edu
  738. Message-id: <01IQ8S9BOHPU9EOBB5@cc.usu.edu>
  739. X-VMS-To: IN%"fdc@watsun.cc.columbia.edu"
  740. X-VMS-Cc: JALTMAN@WATSUN.CC.COLUMBIA.EDU,JRD
  741. MIME-version: 1.0
  742. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  743. Content-transfer-encoding: 7BIT
  744.  
  745. Frank,
  746.     Thanks for the most recent streaming draft.
  747.     It still bothers me, as you can guess. Let me sketch my concerns
  748. without getting into debate mode.
  749.     ACK's aren't bad, they cost almost nothing in bandwidth except
  750. for the particular situation of half duplex style connections. Such
  751. might occur with modem technology attempting to use the entire bandwidth
  752. one-way to drain transmit buffers, but I don't think this is actually
  753. true even for the 56Kbps schemes on the market.
  754.     Nagle is a red herring. The scenario is a Kermit puts its small
  755. ACK into the TCP buffer and Nagle's algorithm says wait. Incoming packets
  756. carrying any data, as they do for file transfers, mandate a reply from
  757. the receiver and that reply includes all available data up to TCP limits.
  758. Thus incoming file packets cause transmission of Kermit ACKs.
  759.     Of course this brings up the subject of 200ms delayed ACK queues.
  760. I think, subject to correction from experiments, that only one entry can
  761. remain in the queue, and the second entry causes the queue to be flushed.
  762. If this were not true then FTP data would progress at the rate of 5 ACKs/sec,
  763. and we know there are many more per second than that even in the absence
  764. of data in the ACK. If I am correct then the 200ms delay affects the first
  765. and/or last ACK but not the ones in the middle. Yes, every other ACK may
  766. be delayed, but only until the next packet arrival and hence well within
  767. the window jitter budget.
  768.     Putting these together says the file transfer rolls full blast,
  769. as indeed FTP data does. Kermit ACKs would be free payload fitting easily
  770. within the Ethernet padding budget.
  771.         I suspect error correcting modems also use similar triggered ACKs
  772. as automatic flow control. With those ACKs go queued reverse channel data.
  773. I don't know this to be the case, but it seems likely.
  774.     Underlying some of what you are trying to accomplish is avoiding
  775. retaining many packets in retry buffers, enough to fill the pipe round
  776. trip. I can understand that. Why not let the transport provider supply
  777. those buffers, as TCP does already, is what I hear in the proposal. Given 
  778. TCP the buffer sizes are typically 32KB and less, some cases of 64KB 
  779. (SGI machines) and a very few cases of larger values. That says Kermit 
  780. needs matching retry/out-of-order-reception buffering capacity, and when 
  781. it does the system streams at full rate, with ACKs. I demonstrated that
  782. last weekend with MSK to CK on watsun, yielding the same rates as FTP.
  783. Thus providing Kermit buffers is not a big deal. Local links have short
  784. pipes and the Kermit buffer count remains small, even for fat pipes.
  785. Long distance links are most often very skinny indeed and Kermit's bit
  786. capacity is still more than that in the pipe. A middle sized pipe,
  787. USU to CU on a quiet day, appears to be less than 32KB capacity and we
  788. can (I have) fill it with ACK-ful Kermits.
  789.     Interestingly, Kermits can readily have larger packet storage
  790. capacity than an underlying transport provider. 32KB TCP windows are
  791. easily exceeded; modems have much less storage. What's the problem?
  792.     Were I to go about this business I would mimic FTP's behavior of
  793. "raw" data in one channel and control in another, and dispense with
  794. packet framing in the data channel. That itself takes away a measurable
  795. overhead. There is the difficulty, however, of serial comms having only
  796. one channel. But on modems I don't think we have a difficulty with even
  797. ordinary buffers (4 window slot style) and hence no need to give up ACKs
  798. and trust the world.
  799.         So I remain dubious of the need to remove Kermit ACKs. The case
  800. for removal just has not been made as far I am aware.
  801.     Joe D.
  802.  
  803. 21-Nov-97  2:59:19-GMT,1804;000000000005
  804. Return-Path: <jaltman>
  805. Received: (from jaltman@localhost)
  806.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id VAA01522;
  807.     Thu, 20 Nov 1997 21:59:17 -0500 (EST)
  808. Date: Thu, 20 Nov 97 21:59:17 EST
  809. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  810. Reply-To: jaltman@columbia.edu
  811. To: Joe Doupnik <JRD@cc.usu.edu>
  812. Cc: fdc@watsun.cc.columbia.edu
  813. Subject: Re: Streaming - Draft 3
  814. In-Reply-To: Your message of Thu, 20 Nov 1997 19:49:14 -0600 (MDT)
  815. Message-ID: <CMM.0.90.4.880081157.jaltman@watsun.cc.columbia.edu>
  816.  
  817. Joe:
  818.  
  819. Kermit ACKs have almost zero cost on long haul connections, but not
  820. when there are extremely short Round Trip Times and there are hard
  821. coded Delayed ACKs.   Don't test from USU to CU, test from between two
  822. machines on the same segment where one of those machines is running
  823. Microsoft TCP/IP and the other is something other than MSK.
  824.  
  825. FTP does not result in TCP ACKs for every data segment.  When using
  826. FTP one ACK is sent for every four data segments.
  827.  
  828. The combination of Nagle and Delayed ACKs can be disasterous.  Look at
  829. some of John Nagle's postings on the subject in recent months.  (I
  830. think I have one, if I can find it I will forward it.)
  831.  
  832. As soon as I can get the Sniffer back I will send you log summaries.
  833. We are having some serious problems with some equipment from Lucent
  834. that is preventing me from being able to borrow it.
  835.  
  836. In the meantime, the demonstrative performance gains that both Frank
  837. and I have been able to see by implementing Streaming will have to do
  838. as evidence of its worthiness.
  839.  
  840. -Jeff
  841.  
  842.  
  843.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  844.                  The Kermit Project * Columbia University
  845.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  846.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  847.  
  848.  
  849. 21-Nov-97  3:24:01-GMT,2874;000000000005
  850. Return-Path: <JRD@cc.usu.edu>
  851. Received: from SNEEZY.USU.EDU (sneezy.usu.edu [129.123.1.87])
  852.     by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id WAA04289
  853.     for <FDC@WATSUN.CC.COLUMBIA.EDU>; Thu, 20 Nov 1997 22:24:00 -0500 (EST)
  854. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556)
  855.  id <01IQ8U0400289IHD0I@cc.usu.edu>; Thu, 20 Nov 1997 20:23:57 -0600 (MDT)
  856. Date: Thu, 20 Nov 1997 20:23:57 -0600 (MDT)
  857. From: Joe Doupnik <JRD@cc.usu.edu>
  858. Subject: Re: Streaming - Draft 3
  859. To: jaltman@columbia.edu
  860. Cc: FDC@WATSUN.CC.COLUMBIA.EDU
  861. Message-id: <01IQ8U0402W29IHD0I@cc.usu.edu>
  862. X-VMS-To: IN%"jaltman@columbia.edu"
  863. X-VMS-Cc: FDC@WATSUN.CC.COLUMBIA.EDU,JRD
  864. MIME-version: 1.0
  865. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  866. Content-transfer-encoding: 7BIT
  867.  
  868. Jeff,
  869.     Thanks for John's comments. I think I have a copy of them in the
  870. archives (use them later in my networking course). I wish they applied
  871. here but I don't think they do because the file transfer keeps forcing
  872. replies, 1:2 or even 1:4, and isn't send-send-wait unless the receive
  873. window is two segments long (and even then window opening triggers a
  874. reply).
  875.     I'm groping here, but from what I gather on your observations
  876. with the MS Windows TCP/IP stack is it has a small TCP buffer. I should
  877. find a way of looking at it, except I never use that item from MS. And,
  878. to complete the picture, I presume the buffer is smaller than the ACK queue
  879. depth. Is that right? Hence the transmitter sends everything and the ACKs 
  880. sit in the receiver's 200ms delay queue and there aren't enough ACKs to 
  881. force the queue to flush without a timeout. Right? If wrong please help
  882. me understand the environment. That would put them into the 5 ACKs/sec
  883. situation; burst wait, burst wait, etc.
  884.     If this is about right then enlarging the MS TCP buffer should
  885. turn things around. A guess is the buffer is 4KB, about 2.5 full length
  886. local Ethernet packets, and hence under the 4 and go threshold for ACKs.
  887. Then 8KB should be enough to make it roll. We should be able to measure 
  888. this effect from the outside, and maybe you have already.
  889.     Maybe there's yet another MS blunder in the picture: excessive
  890. hold down of window opening ACK. Perhaps they sit on each window opening
  891. announcement until NT 5 is ready. Sorry, couldn't resist. But I am
  892. serious about maybe delaying even that piece of bookkeeping.
  893.     To my way of thinking the TCP stack part of things is testable
  894. by regular FTP, as the slowest of the transfer methods. By slow I mean
  895. there is no reverse channel data to stimulate replies quicker than done
  896. by arriving file data.
  897.     I'll stop here to keep the discussion a discussion, and when your
  898. data become available perhaps I will learn a thing or two. My problem,
  899. you see, is I approach these things rationally, what I would have done
  900. in their position, rather than what MS hacks together and declares to
  901. be revealed truth.
  902.     Thanks,
  903.     Joe D.
  904.  
  905. 21-Nov-97  3:30:37-GMT,1340;000000000005
  906. Return-Path: <jaltman>
  907. Received: (from jaltman@localhost)
  908.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id WAA05284;
  909.     Thu, 20 Nov 1997 22:30:35 -0500 (EST)
  910. Date: Thu, 20 Nov 97 22:30:35 EST
  911. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  912. Reply-To: jaltman@columbia.edu
  913. To: Joe Doupnik <JRD@cc.usu.edu>
  914. Cc: FDC@watsun.cc.columbia.edu
  915. Subject: Re: Streaming - Draft 3
  916. In-Reply-To: Your message of Thu, 20 Nov 1997 20:23:57 -0600 (MDT)
  917. Message-ID: <CMM.0.90.4.880083035.jaltman@watsun.cc.columbia.edu>
  918.  
  919. Joe:
  920.  
  921. I thank you for your patience.
  922.  
  923. The MS TCP/IP stack defaults to a 8K in, 8K out set of buffers.  I
  924. have tried increasing the window size but it does not help
  925. significantly.  It only puts off the eventual problem.
  926.  
  927. I will get you the logs as soon as I can.  (Before the next NT 5 beta
  928. is shipped.)
  929.  
  930. In the meantime, if you have Win95 or NT4, the latest cknker.exe (k95
  931. beta) may be found in watsun in ~kermit/os2test/bean/cknker.exe.
  932. You can use that to test the performance differences between Streaming
  933. and non-streaming on Microsoft TCP/IP.
  934.  
  935. - Jeff
  936.  
  937.  
  938.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  939.                  The Kermit Project * Columbia University
  940.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  941.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  942.  
  943.  
  944. 21-Nov-97  3:54:13-GMT,2635;000000000005
  945. Return-Path: <jaltman>
  946. Received: (from jaltman@localhost)
  947.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id WAA08664
  948.     for fdc; Thu, 20 Nov 1997 22:54:13 -0500 (EST)
  949. Resent-Message-Id: <199711210354.WAA08664@watsun.cc.columbia.edu>
  950. Received: from mailrelay1.cc.columbia.edu (mailrelay1.cc.columbia.edu
  951.         [128.59.35.143]) by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP
  952.         id WAA08193 for <jaltman@watsun.cc.columbia.edu>; Thu, 20 Nov 1997
  953.         22:47:47 -0500 (EST)
  954. Received: from barney.usu.edu (barney.usu.edu [129.123.1.89]) by
  955.         mailrelay1.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id WAA14418 for
  956.         <jaltman@columbia.edu>; Thu, 20 Nov 1997 22:47:46 -0500 (EST)
  957. Received: from cc.usu.edu by cc.usu.edu (PMDF V5.0-5 #11556) id
  958.         <01IQ8V4OEC0W9EPFEG@cc.usu.edu> for jaltman@columbia.edu; Thu, 20 Nov
  959.         1997 20:47:38 -0600 (MDT)
  960. Date: Thu, 20 Nov 1997 20:47:38 -0600 (MDT)
  961. From: Joe Doupnik <JRD@cc.usu.edu>
  962. Subject: Re: Streaming - Draft 3
  963. To: jaltman@columbia.edu
  964. Message-id: <01IQ8V4OEFSI9EPFEG@cc.usu.edu>
  965. X-VMS-To: IN%"jaltman@columbia.edu"
  966. X-VMS-Cc: JRD
  967. MIME-version: 1.0
  968. Content-type: TEXT/PLAIN; CHARSET=US-ASCII
  969. Content-transfer-encoding: 7BIT
  970. Resent-To: fdc@watsun.cc.columbia.edu
  971. Resent-Date: Thu, 20 Nov 97 22:54:12 EST
  972. Resent-From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  973.  
  974. Jeff,
  975.     I have Win95 and NT 4 so we are in luck on that part. I'll wait
  976. for the packet traces as being more economical of my time rather than 
  977. testing product to product for half a day initially. Plus I'm out of spare
  978. machines to act as a packet snoop on the same wire.
  979.     Curiously, in class I'm discussing sliding windows flavors. The
  980. weekend lab project is to use my special packet zappers in IP and Kermit
  981. protocols to view how each deals with losses (go back to N vs selective
  982. repeat, etc). Tomorrow introduces pipe measurements, and packet versus
  983. byte counting, etc for general nameless protocols.
  984.     Oh yes, for Frank. Saturday I may have netlab1 up and down a
  985. bit while I sort out some details in a beta lan driver from Intel. I'm
  986. discussing things with the authors of same. Outages will be to regen
  987. the box, hence a few minutes, and I work around existing connections.
  988. About 2/3 of the tries result in receive but can't send situations,
  989. and then I back away and put in a working configuration for awhile.
  990.     Thanks,
  991.     Joe D.
  992.  
  993.  
  994.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  995.                  The Kermit Project * Columbia University
  996.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  997.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  998.  
  999.  
  1000. 21-Nov-97  3:55:45-GMT,1043;000000000005
  1001. Return-Path: <jaltman>
  1002. Received: (from jaltman@localhost)
  1003.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id WAA08789;
  1004.     Thu, 20 Nov 1997 22:55:42 -0500 (EST)
  1005. Date: Thu, 20 Nov 97 22:55:42 EST
  1006. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  1007. Reply-To: jaltman@columbia.edu
  1008. To: Joe Doupnik <JRD@cc.usu.edu>
  1009. Subject: Re: Streaming - Draft 3
  1010. In-Reply-To: Your message of Thu, 20 Nov 1997 20:47:38 -0600 (MDT)
  1011. Cc: fdc@watsun.cc.columbia.edu
  1012. Message-ID: <CMM.0.90.4.880084542.jaltman@watsun.cc.columbia.edu>
  1013.  
  1014. I don't expect you to spend half a day performing traces.
  1015.  
  1016. Try a transfer once with streaming and once without just to prove that
  1017. the performance difference exists. 
  1018.  
  1019. SET TCP ? may be used to adjust the send and recv buffers if you
  1020. decide you want to play.
  1021.  
  1022.  
  1023.  
  1024.  
  1025.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  1026.                  The Kermit Project * Columbia University
  1027.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  1028.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  1029.  
  1030.  
  1031. 21-Nov-97 15:17:29-GMT,768;000000000005
  1032. Return-Path: <jaltman>
  1033. Received: (from jaltman@localhost)
  1034.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id KAA13853
  1035.     for fdc; Fri, 21 Nov 1997 10:17:29 -0500 (EST)
  1036. Date: Fri, 21 Nov 97 10:17:28 EST
  1037. From: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  1038. Reply-To: jaltman@columbia.edu
  1039. To: fdc@watsun.cc.columbia.edu
  1040. Subject: streaming
  1041. Message-ID: <CMM.0.90.4.880125448.jaltman@watsun.cc.columbia.edu>
  1042.  
  1043. skipped files (ie, because of date) show up in the Error Count on the
  1044. full screen display.
  1045.  
  1046.  
  1047.     Jeffrey Altman * Sr.Software Designer * Kermit-95 for Win32 and OS/2
  1048.                  The Kermit Project * Columbia University
  1049.        612 West 115th St #716 * New York, NY * 10025 * (212) 854-1344
  1050.     http://www.columbia.edu/kermit/k95.html * kermit-support@columbia.edu   
  1051.  
  1052.  
  1053. 21-Nov-97 15:34:54-GMT,3420;000000000005
  1054. Return-Path: <fdc>
  1055. Received: (from fdc@localhost)
  1056.     by watsun.cc.columbia.edu (8.8.5/8.8.5) id KAA18425;
  1057.     Fri, 21 Nov 1997 10:34:44 -0500 (EST)
  1058. Date: Fri, 21 Nov 97 10:34:44 EST
  1059. From: Frank da Cruz <fdc@watsun.cc.columbia.edu>
  1060. To: Joe Doupnik <JRD@cc.usu.edu>
  1061. Cc: Jeffrey Altman <jaltman@watsun.cc.columbia.edu>
  1062. Subject: Streaming
  1063. Message-ID: <CMM.0.90.4.880126484.fdc@watsun.cc.columbia.edu>
  1064.  
  1065. Lively correspondence!  Can't turn my back for minute...  Well, as they say,
  1066. the proof is in the putting (FTP pun).  There are two ways to approach this;
  1067. bottom-up analysis of many kinds of connections and TCP stacks, or top-down
  1068. observations of performance.  Both are fine, but you guys seem to have the
  1069. former covered nicely, so I'll concentrate on the latter -- I'm mainly
  1070. interested in refining the definition, getting it to work as advertised, and
  1071. then doing a lot of measurements.  If I can find situations in which streaming
  1072. improves matters, then it will not have been a waste of time.  After all, it
  1073. is not the user's fault if the underlying transport is implemented poorly or
  1074. behaves badly, and even less their responsibility to understand or fix it;
  1075. Kermit has always tried to give them a way to overcome any nastiness below,
  1076. and this could be just another way.
  1077.  
  1078. Perhaps more interestingly, it might be used with IBM mainframe Kermit to
  1079. achieve performance improvements that could not be easily gained any other
  1080. way.
  1081.  
  1082. In any case, it is another knob to turn, among many.  "Kermit as lab" gets
  1083. a new piece of equipment:
  1084.  
  1085. declare \&s[2] off on
  1086. set file display brief
  1087. set control unprefix all
  1088. set control prefix 0 1 255
  1089. set transfer bell off
  1090. if open write close write
  1091. open write bench.log
  1092. for \%w 1 31 1 {
  1093.     set window \%w
  1094.     for \%p 480 9000 480 {
  1095.         for \%i 1 2 1 {
  1096.         set streaming \&s[\%i]
  1097.             remote set rec pack \%p
  1098.             if fail stop 1 {REMOTE SET FAILED: \&s[\%i] \%w \%p}
  1099.             echo S=\&s[\%i] W=\%w P=\%p
  1100.         send x
  1101.             if fail stop 1 {TRANSFER FAILED: \&s[\%i] \%w \%p}
  1102.         writeln file -
  1103. \flpad(\v(cps),8) -
  1104. \flpad(\&s[\%i],4) -
  1105. \flpad(\%w,3) -
  1106. \flpad(\%p,4)
  1107.         }
  1108.     }
  1109. }
  1110. close write
  1111.  
  1112. Running this now, on fully loaded network and host computers, just the first
  1113. few passes thru the loop (not surprisingly) show streaming to be way faster
  1114. than not streaming (on a TCP connection Kermit-to-Kermit, no Telnet server;
  1115. x is a 1MB Sparc executable).  Here is the first bit of the log:
  1116.  
  1117.      CPS Stream W  Pkt
  1118.    33825  off   1  480
  1119.   209715   on   1  480   <- six times faster
  1120.    65536  off   1  960
  1121.   349525   on   1  960   <- 5.3 times faster
  1122.    69905  off   1 1440
  1123.   209715   on   1 1440   <- 3 times faster
  1124.    58254  off   1 1920
  1125.   174762   on   1 1920   etc etc..
  1126.    95325  off   1 2400
  1127.   349525   on   1 2400
  1128.    80659  off   1 2880
  1129.   349525   on   1 2880
  1130.    87381  off   1 3360
  1131.   262144   on   1 3360
  1132.    69905  off   1 3840
  1133.   349525   on   1 3840
  1134.    41943  off   1 4320
  1135.   524288   on   1 4320   <- 9.5 times faster!
  1136.    55188  off   1 4800
  1137.   349525   on   1 4800
  1138.    58254  off   1 5280
  1139.   209715   on   1 5280
  1140.    43690  off   1 5760
  1141.   349525   on   1 5760
  1142.    52428  off   1 6240
  1143.   262144   on   1 6240   <- 9.5 times faster...
  1144.    27594  off   1 6720
  1145.  
  1146. Obviously we need more controlled tests (e.g. on a dedicated network with
  1147. unloaded hosts, on serial connections, etc), as well as sniffer results.
  1148.  
  1149. But at least we're having some fun for a change :-)
  1150.  
  1151. - Frank
  1152.  
  1153.