FreeBSD-6.1 modification about tcp_input fast recovery

Blue Susan.Lan at zyxel.com.tw
Mon Jun 26 10:39:46 UTC 2006


Hi, all:

In FreeBSD-6.1, line 1878 - 1894 in tcp input() have been newly added 
like below

if (tp->sack_enable && IN_FASTRECOVERY(tp)) {
                        int awnd;
                       
                        /*
                         * Compute the amount of data in flight first.
                         * We can inject new data into the pipe iff
                         * we have less than 1/2 the original window's    
                         * worth of data in flight.
                         */
                        awnd = (tp->snd_nxt - tp->snd_fack) +
                            tp->sackhint.sack_bytes_rexmit;
                        if (awnd < tp->snd_ssthresh) {
                            tp->snd_cwnd += tp->t_maxseg;
                            if (tp->snd_cwnd > tp->snd_ssthresh)
                                tp->snd_cwnd = tp->snd_ssthresh;
                        }
                    } else
                         tp->snd_cwnd += tp->t_maxseg;

I am wondering why not just increase congestion window size by 1 when 
receiving duplicated ACK when doing fast recover? I digged into RFC 3782 
(NeReno) and RFC 3517 (SACK based loss recovery) and could not find 
anything related to the modification. Could not we just follow RFC 3782 
and simply increment congestion window size by one?

Best regards,

blue




More information about the freebsd-net mailing list