Hi everyone, We noticed CWND is growing much slower than expected during congestion avoidance with new reno, and we came to this piece of code in cc_ack_received() at tcp_input.c:353
if (type == CC_ACK) { .... if (tp->snd_cwnd > tp->snd_ssthresh) { tp->t_bytes_acked += min(tp->ccv->bytes_this_ack, nsegs * V_tcp_abc_l_var * tcp_maxseg(tp)); if (tp->t_bytes_acked >= tp->snd_cwnd) { tp->t_bytes_acked -= tp->snd_cwnd; tp->ccv->flags |= CCF_ABC_SENTAWND; } The increment of t_bytes_acked is capped at 2*maxseg. The description of the sysctl variable tcp_abc_l_var(default value 2) is "Cap the max cwnd increment during slow-start to this number of segments" After reading RFC3465, it doesn't look like this cap should be applied here since this is clearly not during slow-start. We've seen in some cases the receiver is ACKing every 16 packets, and CWND is growing at 1/8 of the expected rate because of this. I would appreciate your opinion on this. Thanks a lot. Regards, Liang _______________________________________________ freebsd-net@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/freebsd-net To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"