<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx</link><description>So yesterday , I commented on how I was glossing over lots of details about how to make a client/server protocol operate efficiently on a network. After I wrote it, I realized that while it's out of scope for a single post, how to make a client/server</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594027</link><pubDate>Wed, 10 May 2006 01:32:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594027</guid><dc:creator>Carlos</dc:creator><description>There's a minor typo:&lt;br&gt;&lt;br&gt;&amp;quot;which is exactly the same as if the receiver hadn't received the ack in the first place&amp;quot;&lt;br&gt;&lt;br&gt;s/ack/data/&lt;br&gt;</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594132</link><pubDate>Wed, 10 May 2006 04:54:41 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594132</guid><dc:creator>KJK::Hyperion</dc:creator><description>Personally, the single most enlightening thing I've ever heard about networking and congestion control is Raymond's &amp;quot;the pipe (in bits) is bandwidth (in bits/second) multiplied by latency (in seconds); you want your window to be as large as your pipe&amp;quot;. Not even Stevens could have put it more clearly and concisely</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594350</link><pubDate>Wed, 10 May 2006 10:48:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594350</guid><dc:creator>Heine</dc:creator><description>Larry,&lt;br&gt;&lt;br&gt;&amp;quot;There is an interesting consequence to that last guarantee: &amp;nbsp;It turns out that the sender can't start transmitting B until after it knows that the receiver has received A. &amp;nbsp;Why is that?&amp;quot;&lt;br&gt;&lt;br&gt;Probably a minor mix up. This makes no sense until you read the following paragraph.&lt;br&gt;&lt;br&gt;&lt;br&gt;</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594351</link><pubDate>Wed, 10 May 2006 10:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594351</guid><dc:creator>Heine</dc:creator><description>Apologies, I should learn how to read properly or work on my attention span.</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594427</link><pubDate>Wed, 10 May 2006 12:54:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594427</guid><dc:creator>nick</dc:creator><description>&amp;quot;Personally, the single most enlightening thing I've ever heard about networking and congestion control is Raymond's &amp;quot;the pipe (in bits) is bandwidth (in bits/second) multiplied by latency (in seconds); you want your window to be as large as your pipe&amp;quot;. Not even Stevens could have put it more clearly and concisely&amp;quot;&lt;br&gt;&lt;br&gt;Its also known as the bandwidth-delay product, refer &lt;br&gt;&lt;a rel="nofollow" target="_new" href="http://www.speedguide.net/bdp.php"&gt;http://www.speedguide.net/bdp.php&lt;/a&gt; for a simple BDP calculator.&lt;br&gt;&lt;br&gt;</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594439</link><pubDate>Wed, 10 May 2006 13:43:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594439</guid><dc:creator>nick</dc:creator><description>&amp;quot;Remember from my comment yesterday: It takes effectively the exact same amount of time to send 1 byte of data as it does 1400 bytes.&amp;quot;&lt;br&gt;&lt;br&gt;Just a note there for anybody reading that...thats true as you said on an ethernet network. Not so on the Internet. In other words, we're talking about (as you rightly titled this post) making stuff go fast on &amp;quot;a&amp;quot; network, not a bunch of networks connecting two endpoints.&lt;br&gt;&lt;br&gt;</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594583</link><pubDate>Wed, 10 May 2006 18:08:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594583</guid><dc:creator>Virgulino Ferreira</dc:creator><description>Another minor typo:&lt;br&gt;&lt;br&gt;&amp;quot;on Ethernet the maximum frame size (or MSS, Maximum Segment Size) is 1500 bytes&amp;quot;&lt;br&gt;&lt;br&gt;This is the Maximum Transmission Unit (MTU).</description></item><item><title>Interesting Finds</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594713</link><pubDate>Wed, 10 May 2006 20:29:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594713</guid><dc:creator>Jason Haley</dc:creator><description /></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#594987</link><pubDate>Thu, 11 May 2006 03:29:39 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:594987</guid><dc:creator>J.C.</dc:creator><description>Hi Larry. &amp;nbsp;I think you should perhaps expand or write another entry explaining why SMB performance over a WAN is so degraded, and maybe you could provide solutions/hacks on how to fix it. &amp;nbsp;Thx.&lt;br&gt;&lt;br&gt;-jc</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#595542</link><pubDate>Thu, 11 May 2006 21:14:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:595542</guid><dc:creator>Mike</dc:creator><description>&amp;quot;If the sender sends three packets in the order A-B-C&amp;quot;&lt;br&gt;&lt;br&gt;You should probably say messages instead of packets. &amp;nbsp;For TCP at least the sender has little if any control over how the message gets broken up into packets.&lt;br&gt;&lt;br&gt;It seems like a minor nit but network newbies have immense trouble understanding this point and write lots of buggy networking code because of it.</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#595959</link><pubDate>Fri, 12 May 2006 11:50:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:595959</guid><dc:creator>cnettel</dc:creator><description>nick: Really? Ok, we can have other fragmentation limits, but the latency should still stay much higher than the actual transmission time for the packet. (Of course, if everyone decides to inflate their bandwidth requirement by 139900 %, performance will suffer for all.)</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#596023</link><pubDate>Fri, 12 May 2006 14:04:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:596023</guid><dc:creator>nick</dc:creator><description>cnettel: &lt;br&gt;&lt;br&gt;Yup, was talking about fragmentation limits...what happens when you hit a network which can't handle large packets? &lt;br&gt;[ refer &lt;a rel="nofollow" target="_new" href="http://en.wikipedia.org/wiki/Maximum_segment_size"&gt;http://en.wikipedia.org/wiki/Maximum_segment_size&lt;/a&gt; ]&lt;br&gt;&lt;br&gt;Fragmentation occurs, and while that doesn't affect TCP delay since you aren't waiting for acks, the time taken to send the data now depends on the kind of network being transited. So the guarantee mentioned (1 bytes vs 1400 bytes taking the same amount of time) is no longer absolutely valid.&lt;br&gt;&lt;br&gt;</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#596041</link><pubDate>Fri, 12 May 2006 14:46:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:596041</guid><dc:creator>Mu</dc:creator><description>&amp;quot;It turns out that the sender can't start transmitting B until after it knows that the receiver has received A.&amp;quot;&lt;br&gt;&lt;br&gt;I'm not sure I believe this. Surely the axiom applies only to the interface to the connection oriented protocol? That is, the protocol guarantees to the layer above that it (the layer above) will receive the &amp;quot;message&amp;quot; in the correct order - but whether the connection protocol /itself/, internally, sends and receives everything in order or not is irrelevant.</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#596098</link><pubDate>Fri, 12 May 2006 16:19:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:596098</guid><dc:creator>LarryOsterman</dc:creator><description>Mu,&lt;br&gt; &amp;nbsp;That's right, but remember my comment about buffering - the stack &amp;lt;i&amp;gt;could&amp;lt;/i&amp;gt; send out of order and complete out of order IF AND ONLY IF it could guarantee that the receiver had resources to buffer up packet B until packet A is received. &amp;nbsp;Packet A might never be received, in which case the stack would have wasted the resources.&lt;br&gt;&lt;br&gt; &amp;nbsp;That means you have an easy way of mounting a denial of service attack against the server. &amp;nbsp;Send A.1, B.1-B.20, C.1-C.20, ... Z.1-Z.20. &amp;nbsp;The server would have to keep all those packets in memory waiting on A.2 to arrive.&lt;br&gt;&lt;br&gt; &amp;nbsp;All the connection oriented protocols I know of solve the out-of-order arrival by simply waiting on the ack of A before B is sent.&lt;br&gt;&lt;br&gt;It turns out that this ordering behavior is critical, and I'll be talking about this in the 3rd article in this series (I got nailed with a horrible cold so haven't written anything after this post).&lt;br&gt;</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#597813</link><pubDate>Mon, 15 May 2006 10:43:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:597813</guid><dc:creator>Mu</dc:creator><description>Ok, I sit corrected. I'd still change your &amp;quot;can't&amp;quot; to a &amp;quot;shouldn't&amp;quot; or &amp;quot;must not&amp;quot; though :)&lt;br&gt;</description></item><item><title>Making things go fast on a network, part 2</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#598182</link><pubDate>Mon, 15 May 2006 21:15:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:598182</guid><dc:creator>Larry Osterman's WebLog</dc:creator><description>Sorry about the delay - I got nailed by a nasty sinus infection on Tuesday night last week that took...</description></item><item><title>re: Making stuff go fast on a network, part 1</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#600958</link><pubDate>Thu, 18 May 2006 16:52:25 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:600958</guid><dc:creator>Tom H</dc:creator><description>Larry, I'm not sure I understand your discussion of the DOS attack above (or your original point, really). My viewpoint is pretty Internet-centric, so it may be that NetBEUI does that, but I don't think TCP does.&lt;br&gt;&lt;br&gt;First of all, TCP doesn't send anything that the user can identify as packets or frames; it sends a stream of bytes, and reserves the right to divvy those up arbitrarily into packets on the network; they're delivered to the receiver as a stream of bytes without any message boundaries. TCP is perfectly happy to start sending B.1 and B.2 even before it knows that A.20 has been received; that's part of what the sliding window is for. TCP handshake establishes the flow control window size, and every TCP header updates that window size, so the sender always knows whether or not the receiver can buffer the packets it's sending, and the receiver can bound the size of the DOS attack.&lt;br&gt;</description></item><item><title>Making things go fast on a network, part 3</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#630200</link><pubDate>Wed, 14 Jun 2006 03:11:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:630200</guid><dc:creator>Larry Osterman's WebLog</dc:creator><description>Now I want to pop the stack up a bit and talk about messages.&amp;amp;amp;nbsp; At their heart, connection oriented...</description></item><item><title>I wish Larry hadn't written that...</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#648106</link><pubDate>Tue, 27 Jun 2006 07:13:37 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:648106</guid><dc:creator>Tales from the Crypto</dc:creator><description>Oh, Larry, Larry, Larry...&lt;br&gt;Articles 1 and 2 were great - really necessary reading to a lot of would-be...</description></item><item><title> Larry Osterman s WebLog Making stuff go fast on a network part 1 |  Portable Greenhouse</title><link>http://blogs.msdn.com/larryosterman/archive/2006/05/09/593905.aspx#9676335</link><pubDate>Mon, 01 Jun 2009 13:23:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9676335</guid><dc:creator> Larry Osterman s WebLog Making stuff go fast on a network part 1 |  Portable Greenhouse</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://portablegreenhousesite.info/story.php?id=758"&gt;http://portablegreenhousesite.info/story.php?id=758&lt;/a&gt;&lt;/p&gt;
</description></item></channel></rss>