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