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

[ns] dup ACK behavior with SACK



Attached is a patch modifying the behavior of Sack1 TCP regarding duplicate
ACKs.  This patch causes NS to ignore any dup ACKs that do not contain *new*
SACK information when counting dup ACKs for fast restransmit.

The existing ns implementation counts every incoming dup ACK toward fast
retransmit, which causes ACKs duplicated and/or reordered on the network to
cause unecessary fast retransmits.  With SACK, we can trivially solve this
problem merely by ensuring that an incoming dup ACK contains new SACK data.

This doesn't show up in ns as it stands, as network reordering and
duplication are generally not a problem.  With the addition of DSACK,
however, all of the sudden we are receiving ACK packets containing no new
SACK information (DSACK does not count).  If we count these packets as dup
ACKs toward Fast Retransmit...  Bang, *obviously* false and easily
unavoidable retransmissions.

The attached patch adds a facility to ScoreBoard that tracks whether or not
the last UpdateScoreBoard() changed the scoreboard information...  If it did
not, dupacks_ is not incremented.

This patch breaks one validation test, test-suite-ecn's ecn_noBugfix_sack.
I have put up "before and after" traces and plots at
http://jarok.cs.ohiou.edu/~eblanton/ns-2/.  The files ending in -original
are the existing ns-2 code (as of 7/17/2000), the files ending in -BUGFIX
contain this patch.

Please review this and let me know what you think.
Ethan

-- 
I know, I know...  You've been sent by the gods to be my wife.  So listen
up:  I like my eggs over easy, don't bother me when I'm watchin' wrestlin',
and most of all - give me my space, baby.
		-- Johnny Bravo