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

bug and fix in sack1



 
I ran across a bug in the sack1 TCP variant this afternoon.  When
reseting a sack TCP connection the scoreboard is not cleared.  In
turn, this can really confuse things when sending resumes (or
doesn't resume, as in the case I was looking at).  As far as I can
tell this problem only happens when the connection is in loss
recovery when it ends (otherwise the scoreboard is cleared
naturally).  

I am not running the absolute latest version of ns, but I just
checked the daily snapshot and it looks like it would still have
this problem (but, I didn't compile it and try).  The quick change I
made that fixed the problem is to add a reset function to the
Sack1TcpAgent class as follows:

void Sack1TcpAgent::reset ()
{
	scb_.ClearScoreBoard();
	TcpAgent::reset ();
}

I didn't check any of the other SACK TCP variants (FACK,
rate-halving, etc.), but this could be a problem with them, as well.

allman