Comparison of RTTs generated from different DelACK Timestamps

An Experimental delay-based congestion control algorithm ("delay-based AIMD") is in use here. Briefly, this backs cwnd off where 50msec of queueing is detected and tunes the back off to empty the queue. This demonstrates the difference in RTT signal using the undelayed ACK to calculate RTT and ignoring packets which acknowledge only one packet, particularly for small Cwnd.

BW=10Mb/sec, Two flows, basertt=(20,110)msec. Graph shows delay signal from packet timestamps (red, green) and from the modified tcp_clean_rtx_queue() linux 2.6.23 (blue, purple) which uses the internally stored timestamp of the packet which triggered the acknowledgement.

BW=10Mb/sec, Two flows, basertt=20msec(green), 110msec(red). Graph shows Cwnd for each flow.

TCP_CONG_RTT_STAMP rtts

Unfixed. BW=10Mb/sec, Two flows, basertt=20msec(blue,red), 110msec(green,purple), TSO on. Graph shows RTT for each flow from timestamps and from tcp_clean_rtx_queue() with TCP_CONG_RTT_STAMP flag set.

Fixed. BW=10Mb/sec, Two flows, basertt=20msec(blue,red), 110msec(green,purple), TSO on. Graph shows RTT for each flow from timestamps and from tcp_clean_rtx_queue() with TCP_CONG_RTT_STAMP flag set. You can see the tcp_clean_rtx_queue() signal (purple, blue) has lost delayed acking noise while the timestamps (correctly) retain it.