[ns] [bug] Another ECN in FullTCP bug (dropped SYN+ACK)

Michele Weigle mcweigle@cs.unc.edu
Wed Jun 12 15:05:04 2002


[Bug Report]

-----------------------------
Category:  Other
Package:   ns ns-2.1b9
OS:        FreeBSD
Environment Variables:
LD_LIBRARY_PATH=
TCL_LIBRARY=
TK_LIBRARY=


-----------------------------
Description:

Description of Problem:

When a SYN+ECN is received, the receiver sets ect_. If the SYN+ACK is dropped and a timeout occurs, cong_action_ is set. Then, when the SYN+ACK is retranmitted, it has the CWR bit set, which is not a valid ECN SYN+ACK. 

Fix: Add the "else" below:

        if (ecn_ && syn && (pflags & TH_ACK)){
                pflags |= TH_ECE;
                pflags &= ~TH_CWR;
        }
        /* recvr sets ect_ and cong_action_ for a retransmitted SYN+ACK 
         * don't set CWR -MCW 6/12/02 */
        else if (ecn_ && ect_ && cong_action_) {
                /* set CWR if necessary */
                pflags |= TH_CWR;
        }
  
        /* set ECE if necessary */
        if (ecn_ && ect_ && recent_ce_ ) pflags |= TH_ECE;