Hi all, I just fixed yet another bug and uploaded a new version of tcp-socket-base.cc to http://heim.ifi.uio.no/michawe/romavisit/tcp-socket-base.cc (Angelo - this is the bug that I showed you today) The bug was related to how my code is “hooked” into the ns-3 code: for some strange reason, despite forbidding to parse DupACKs and preventing timeouts, there is a condition under which ns-3 still decides to retransmit some old packets on its own. But it must not do so, only we are allowed to retransmit!!! So I added a simple if condition to stop it from doing this. The code is marked with this comment: // MICHAEL WELZL: Don't retransmit on your own! Only TEB may do it! in the function TcpSocketBase::SendDataPacketThis caused an endlessly growing cwnd in a test - because we let it grow further and further in the post-recovery-pacing phase until we finally get a new ACK, but I think the problem was that this new ACK never came as it was already sent earlier, in response to a retransmit that my code didn’t expect. Sorry for having so many bugs! But then, this just shows how hard it is to update this part of TCP … it’s its most complicated part and we replace it altogether while still asking ns-3 to use the correct sequence numbers for new data, well… Cheers, Michael |
Archivio con motore MhonArc 2.6.16.