Window Scale option
David Borman <dab@BSDI.COM> Mon, 04 May 1998 20:17 UTC
Delivery-Date: Mon, 04 May 1998 16:17:23 -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 QAA13125 for <ietf-archive@ietf.org>; Mon, 4 May 1998 16:17:22 -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 QAA05264 for <IETF-archive@cnri.reston.va.us>; Mon, 4 May 1998 16:19:50 -0400 (EDT)
Received: (from daemon@localhost) by services.BSDI.COM (8.8.7/8.8.8) id OAA07791 for tcplw-list@bsdi.com; Mon, 4 May 1998 14:16:01 -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 OAA07786 for <tcplw@bsdi.com>; Mon, 4 May 1998 14:16:00 -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 OAA18297 for <tcplw@bsdi.com> env-from (dab@frantic.bsdi.com); Mon, 4 May 1998 14:14:58 -0600 (MDT)
Received: (from dab@localhost) by frantic.bsdi.com (8.8.8/8.8.8) id PAA27478 for tcplw@bsdi.com; Mon, 4 May 1998 15:15:58 -0500 (CDT)
Date: Mon, 04 May 1998 15:15:58 -0500
From: David Borman <dab@BSDI.COM>
Message-Id: <199805042015.PAA27478@frantic.bsdi.com>
To: tcplw@BSDI.COM
Subject: Window Scale option
There is a change that I would like to add to RFC 1323 about the Window Scale Option. The current text on page 10 has: * The connection state is augmented by two window shift counts, Snd.Wind.Scale and Rcv.Wind.Scale, to be applied to the incoming and outgoing window fields, respectively. * If a TCP receives a <SYN> segment containing a Window Scale option, it sends its own Window Scale option in the <SYN,ACK> segment. * The Window Scale option is sent with shift.cnt = R, where R is the value that the TCP would like to use for its receive window. * Upon receiving a SYN segment with a Window Scale option containing shift.cnt = S, a TCP sets Snd.Wind.Scale to S and sets Rcv.Wind.Scale to R; otherwise, it sets both Snd.Wind.Scale and Rcv.Wind.Scale to zero. I'd like to change this to: * The connection state is augmented by two window shift counts, Snd.Wind.Scale and Rcv.Wind.Scale, to be applied to the incoming and outgoing window fields, respectively. ! * When sending a <SYN> segment, the Window Scale option is ! sent with shift.cnt = R, where R is the value that the TCP ! would like to use for its receive window. ! * If a TCP receives a <SYN> segment with a Window Scale option ! containing shift.cnt = S, it sends its own Window Scale option ! with shift.cnt = R in the <SYN,ACK>. If R has not been set by ! the application, either explicitly or implicitly by changing ! the receive buffer space from its default value, a TCP may set ! R = S before generating the <SYN,ACK>. The TCP then sets ! Snd.Wind.Scale to S and sets Rcv.Wind.Scale to R. ! * Upon receiving a <SYN,ACK> segment with a Window Scale option containing shift.cnt = S, a TCP sets Snd.Wind.Scale to S and sets Rcv.Wind.Scale to R; otherwise, it sets both Snd.Wind.Scale and Rcv.Wind.Scale to zero. I have implemented this in both UNICOS and BSD/OS, with no ill effects. The reason for wanting to recommend turning around the scale value is that it can only be negotiated during the initial 3-way handshake, and on the passive side, the application that is doing the listen()/accept() may not be the one that knows that the receive buffer should be increased to get the a window scale value sent as non-zero. E.g, it is inetd that accepts the connection, which then execs rshd, which in turn execs rcp, which is the application that knows we're doing a bulk data transfer so the buffers should be made larger, but by then its too late. One way to address this is to modify inetd to allow it to set the receive buffers large for rshd. However, rshd is used for other things besides rcp. If the receive buffers are made large in inetd, and the application changes them back to the default values, then you have an outstanding advertised window from the initial window when the buffers were larger, which TCP can't retract. -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