Possible burst from TCP NewReno when a partial ACK is received

Matthew Dillon dillon at apollo.backplane.com
Mon Jul 4 09:53:07 PDT 2005


:I think TCP NewReno in DragonFlyBSD has a bug which may send
:a burst of data when a partial ACK is received.
:
:More precisely, when a partial ACK is received, if acked bytes is
:larger than congestion window, new congestion window becomes awfully
:huge value.
:
:This bug is the same as the one reported in the following mail:
:http://lists.freebsd.org/pipermail/freebsd-net/2005-June/007723.html
:
:I think tcp_newreno_partial_ack() should be modified as below.
:Through my experiences, I observed that in somecases (ocwnd > acked)
:is false (I inserted printf() there for test).  Without the change
:below, snd_cwnd would become awfully huge value.
:
:Regards,
:Noritoshi Demizu
:...
:
:-	tp->snd_cwnd = ocwnd - acked + tp->t_maxseg;
:+	if (ocwnd > acked)
:+		tp->snd_cwnd = ocwnd - acked + tp->t_maxseg;
:+	else
:+		tp->snd_cwnd = tp->t_maxseg;

    I'm not an expert on TCP but that patch looks reasonable.  I would
    like to wait for Jeff (who is traveling right now) to take a look at
    it before we make any commits.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>







More information about the Bugs mailing list