Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Jun 2002 18:27:39 +0800
From:      "ef90b7323131bdf05e" <lguohan00@mails.tsinghua.edu.cn>
To:        freebsd-net@freebsd.org
Subject:   How cwnd is set after a loss in FreeBSD TCP?
Message-ID:  <20020618102912.DAA3237B40D@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help
Hi,

I use freebsd 4.5, and find a really unexplainable behavior of TCP.
If there is no loss, TCP grows its cwnd and finally reaches the maximum window
size advertised by the receiver, for example 12 packets, after a while a packet is
lost. When the loss is recovered, TCP will begin its another windows increase
cycle. As I thought, TCP should enter congestion avoidance when its cwnd reaches 7
(7=12/2+1). However, I found that TCP may still in slow start even when the cwnd
is 8 or even greater. And it seems that the longer TCP stays in rcv_wnd before the
loss, the larger beginning cwnd of AI is.

For example:
31680 is the max rcv_wnd

<-  139.817066 . 5385601:5387040(1440) ack 1 win 65535 owin 31680
then detect a loss...
then slow start...
until 
<-  143.046655 . 5444641:5446080(1440) ack 1 win 65535 owin 24480 
TCP enters congestion avoidance, where 24480 >> 31680/2 = 15840


My explanation to this is that the ssthresh is not exactly half of the cwnd after
detecting the loss. However, the explanation seems contradicts with RFC2581, which
say ssthresh must be no more than max( FlightSize /2, 2*SMSS). The behavior
puzzled me for a while. Is it a bug or just the right behavior? Can anyone help to
explain it?

I have dump file the the figure of this behavior, if anyone want, I will email
it.

**************************************
Lu Guohan
Department of Electronical Engineering
Tsinghua University,        P.R. China
lguohan00@mails.tsinghua.edu.cn
**************************************



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020618102912.DAA3237B40D>