RE: Problematic Approaches

From: [email protected]
Date: Thu Aug 07 1997 - 21:11:41 EDT


> From [email protected] Thu Aug 7 17:49:59 1997
> Date: Thu, 7 Aug 1997 17:49:24 -0700 (PDT)
> From: Kacheong Poon <[email protected]>
> Subject: RE: Problematic Approaches
> To: [email protected]
> Cc: [email protected], [email protected]
>
> > So, when 1/2 the window is ACKd and there's nothing left to send, the
> > window slams shut.
>
> I guess I was wrong. In BSD, the sender decides whether to restart slow start
> when sending by checking the idle time. The idle time is approximately the
> interval between current (send) time and the last time a segment is received.
>
> The interesting thing is that when a server receives a new request, which is a
> new segment, the idle timer is reset. So I was wrong in saying that the client
> has just 1/2 RTT to parse the page. It can parse it as long as it wants! The
> server will not slow start for the next request anyway, unless it takes the
> server more than 1 RTT to generate the response. Even a user does not need to
> rush in reading a page to avoid slow start. Everyone is happy (-:

Huh?

Sender is sending data, and receiving ACKs.

At some point it stops sending data and is still receiving ACKs.

If the client sends ACKs for more than 1/2 the window
then the window at the server slams shut when they're received,
unless:

        client sends followup request
        server parses it
        server starts sending and the window advances and resumes
                'ack clocking' BEFORE the 1/2 window rule comes into play

There's still a round trip involved there.

I looked back at the BSD code (2.2.1 FreeBSD, in specific), and
the code that 'decides whether the connection has been idle'
does NOT involve a timer.

It is:

        idle = (tp->snd_max == tp->snd_una);
        if (idle && tp->t_idle >= tp->t_rxtcur)
                /*
                 * We have been idle for "a while" and no acks are
                 * expected to clock out any data we send --
                 * slow start to get ack "clock" running again.
                 */
                tp->snd_cwnd = tp->t_maxseg;

i.e., if the unacknowledged data and max window sent are the same,
in this case, then the system IS idle (no timer!).

Joe
----------------------------------------------------------------------
Joe Touch - [email protected] http://www.isi.edu/~touch/
ISI / Project Leader, ATOMIC-2, LSAM http://www.isi.edu/atomic2/
USC / Research Assistant Prof. http://www.isi.edu/lsam/



This archive was generated by hypermail 2b29 : Mon Feb 14 2000 - 16:14:29 EST