Re: Window Scale option

"Kevin M. Lahey" <kml@nas.nasa.gov> Tue, 05 May 1998 01:09 UTC

Delivery-Date: Mon, 04 May 1998 21:09:38 -0400
Return-Path: tcplw-relay@services.BSDI.COM
Received: from cnri.reston.va.us (ns.cnri.reston.va.us [132.151.1.1]) by ietf.org (8.8.5/8.8.7a) with ESMTP id VAA16174 for <ietf-archive@ietf.org>; Mon, 4 May 1998 21:09:37 -0400 (EDT)
Received: from services.BSDI.COM (services.BSDI.COM [205.230.225.19]) by cnri.reston.va.us (8.8.5/8.8.7a) with ESMTP id VAA06181 for <IETF-archive@cnri.reston.va.us>; Mon, 4 May 1998 21:12:02 -0400 (EDT)
Received: (from daemon@localhost) by services.BSDI.COM (8.8.7/8.8.8) id TAA03785 for tcplw-list@bsdi.com; Mon, 4 May 1998 19:08:55 -0600 (MDT)
Received: from mailfilter.bsdi.com (mailfilter.BSDI.COM [205.230.225.21]) by services.BSDI.COM (8.8.7/8.8.8) with ESMTP id TAA03779; Mon, 4 May 1998 19:08:52 -0600 (MDT)
Received: from gecko.nas.nasa.gov (gecko.nas.nasa.gov [129.99.34.45]) by mailfilter.bsdi.com (BSDI-MF 1.0) with ESMTP id TAA21051 env-from (kml@gecko.nas.nasa.gov); Mon, 4 May 1998 19:07:49 -0600 (MDT)
Received: from gecko.nas.nasa.gov (kml@localhost) by gecko.nas.nasa.gov (8.8.7/NAS8.8.7) with ESMTP id SAA05984; Mon, 4 May 1998 18:08:46 -0700 (PDT)
Message-Id: <199805050108.SAA05984@gecko.nas.nasa.gov>
To: David Borman <dab@bsdi.com>
cc: braden@isi.edu, tcplw@bsdi.com
Subject: Re: Window Scale option
In-reply-to: Your message of "Mon, 04 May 1998 17:11:12 CDT." <199805042211.RAA27660@frantic.bsdi.com>
Date: Mon, 04 May 1998 18:08:45 -0700
From: "Kevin M. Lahey" <kml@nas.nasa.gov>

In message <199805042211.RAA27660@frantic.bsdi.com>David Borman writes
>A couple of points.  First, you don't have to have large buffers
>to use the window scale option.  In reality, what the window scale
>option does is change the granularity of the window updates.  As long
>as that granularity is smaller than your threshhold for silly window
>syndrom avoidance, things will work just fine.  A window shift of 4
>allows a megabyte of window, with a window update granularity of 16
>bytes, which is well below any SWS threshhold value.  So, using
>typical 8K buffers, you can use window scale values of at least
>5 or 6 without having any impact on performance.

I guess I agree.  My only thought is that if we have window scales
of up to 11 (1 GB/sec over 100ms link = 27 bits worth of window)
we could get into a situation in which the scaling would be over the
top.  Obviously, hosts behind slow links that use small windows
could decide not to echo back the value, or could echo back a
smaller value.  It isn't clear to me that this is a real big problem.
I just like the idea of dynamically changing the value, so perhaps
I've got a hammer looking for a pretty rare nail...

>So, if bulk-data transfer clients send a window shift option, and
>the server automatically turns it around, it shouldn't cause any
>problems on the server.  In BSD/OS I turn around the window scale,
>but I limit it to no more than 4 (changable by sysctl) to keep us from
>getting into trouble if we receive a window scale of 13 or 14 and our
>receive buffer is only 8K...

Sounds great to me.  I think that this'll help out enormously as
more and more people try to deal with LFNs...

>The only reason you don't want to always send a window scale option
>of at least 3 or 4 in the SYN is to avoid possible interoperability
>problems with older TCPs that don't properly ignore unknown TCP
>options, especially if there is no way that the application will ever
>be able to take advantage of it (i.e, it doesn't have a lot of data
>to transfer).

Heck, since we're supposed to send the option even when we set the 
shift value to 0, we might as well start to default to setting the 
value to 3 or 4.  I'm up for it!

Kevin
kml@nas.nasa.gov