Re: Window Scale option
David Borman <dab@BSDI.COM> Mon, 04 May 1998 22:12 UTC
Delivery-Date: Mon, 04 May 1998 18:12:30 -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 SAA14635 for <ietf-archive@ietf.org>; Mon, 4 May 1998 18:12:29 -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 SAA05825 for <IETF-archive@cnri.reston.va.us>; Mon, 4 May 1998 18:14:56 -0400 (EDT)
Received: (from daemon@localhost) by services.BSDI.COM (8.8.7/8.8.8) id QAA19056 for tcplw-list@bsdi.com; Mon, 4 May 1998 16:11:24 -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 QAA19053 for <tcplw@bsdi.com>; Mon, 4 May 1998 16:11:23 -0600 (MDT)
Received: from frantic.bsdi.com (frantic.BSDI.COM [205.230.227.254]) by mailfilter.bsdi.com (BSDI-MF 1.0) with ESMTP id QAA19709 for <tcplw@bsdi.com> env-from (dab@frantic.bsdi.com); Mon, 4 May 1998 16:10:20 -0600 (MDT)
Received: (from dab@localhost) by frantic.bsdi.com (8.8.8/8.8.8) id RAA27660; Mon, 4 May 1998 17:11:12 -0500 (CDT)
Date: Mon, 04 May 1998 17:11:12 -0500
From: David Borman <dab@BSDI.COM>
Message-Id: <199805042211.RAA27660@frantic.bsdi.com>
To: braden@isi.edu, kml@nas.nasa.gov
Subject: Re: Window Scale option
Cc: tcplw@BSDI.COM
> Subject: Re: Window Scale option > Date: Mon, 04 May 1998 14:34:50 -0700 > From: "Kevin M. Lahey" <kml@nas.nasa.gov> > > In message <199805042039.AA20137@gra.isi.edu>braden@isi.edu writes > >Hmmmm. It seems clear in retrospect that a host really wants to allow > >its applications to dynamically adjust the amount of receive buffering > >they can have, and thereby possibly adjust the window scaling. > > I'd certainly like to see this happen dynamically -- I often wind up > with windows on my HIPPI LAN that are either way too small or way too > large. Just specifying a large value is problematic, as it will wind > up, as Dave Borman points out, in burning buffer for small, slow I don't think I quite said that, but that is true. :-) > links. In the BSD stack, it is possible to associate socket buffer > sizes with routes, so this can take care of some of the problem. 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. 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... I guess what I'm really saying is that if you have a user interface to TCP to allow the application to specify the window scale value without having to set the buffer size, and the server turns around the window scale value, then you can make TCP connections that are ready to use large buffers if the application wants them, without having to pre-allocate any extra buffer space on either the client or the server (and thus have an initial large window). But typically the client will know whether or not large buffers are wanted, so having it set a large receive buffer, and having the server turn around the scale option (without changing the buffer size) is usually sufficient. 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). -David Borman, dab@bsdi.com
- Window Scale option David Borman
- Re: Window Scale option braden
- Re: Window Scale option David Borman
- Re: Window Scale option Kevin M. Lahey
- Re: Window Scale option David Borman
- Re: Window Scale option Kacheong Poon
- Re: Window Scale option braden
- Re: Window Scale option braden
- Re: Window Scale option Jason Thorpe
- Re: Window Scale option Kevin M. Lahey
- Re: Window Scale option Matt Mathis
- Re: Window Scale option braden
- Re: Window Scale option Matt Mathis
- Re: Window Scale option braden
- Re: Window Scale option braden
- Re: Window Scale option Jason Thorpe
- Re: Window Scale option braden
- Re: Window Scale option Matt Mathis
- Window Scale option -- what about null windows ? Christian Huitema