[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bug in TCP/ECN code in ns



I believe this is a bug in all versions of ns (although most people here
will probably never exercise it).  The bug appears in all TCP
variations
and deals with the use of explicit congestion notification.  In ::recv,
the
following code exists....

        if (pkt->flags_ & PF_ECN)
                quench(1);
        if (pkt->seqno_ > last_ack_) {
                newack(pkt);
                opencwnd();
        }

The bug is the fact that even upon explicit congestion notification, the
source is still able to perform opencwnd().  This bug is insidious since
it can effectively make the minimum window size of the TCP source 2
segments, instead of one.  This can (and does) have a profound
effect on performance for TCP enabled with ECN.  The fix is rather
trivial.

Wu