From 481bcc74de14ef62ade8ad3cd229cde6992a49c6 Mon Sep 17 00:00:00 2001 From: Mike Perry Date: Fri, 30 Jul 2021 13:45:02 +0000 Subject: Prop 324: Fix fencepost error in SENDME BDP calculation --- proposals/324-rtt-congestion-control.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'proposals') diff --git a/proposals/324-rtt-congestion-control.txt b/proposals/324-rtt-congestion-control.txt index 25118a4..f98c28a 100644 --- a/proposals/324-rtt-congestion-control.txt +++ b/proposals/324-rtt-congestion-control.txt @@ -332,13 +332,19 @@ timestamps. With this, the calculation becomes: - BWE = num_sendmes * cc_sendme_inc / num_sendme_timestamp_delta + BWE = (num_sendmes-1) * cc_sendme_inc / num_sendme_timestamp_delta BDP = BWE * RTT_min -However, because the timestamps are microseconds, to avoid integer +Note that because we are counting the number of cells *between* the first +and last sendme of the congestion window, we must subtract 1 from the number +of sendmes actually recieved. Over the time period between the first and last +sendme of the congestion window, the other endpoint successfully read +(num_sendmes-1) * cc_sendme_inc cells. + +Furthermore, because the timestamps are microseconds, to avoid integer truncation, we compute the BDP using multiplication first: - BDP = num_sendmes * cc_sendme_inc * RTT_min / num_sendme_timestamp_delta + BDP = (num_sendmes-1) * cc_sendme_inc * RTT_min / num_sendme_timestamp_delta Note that the SENDME BDP estimation will only work after two (2) SENDME acks have been received. Additionally, it tends not to be stable unless at least -- cgit v1.2.3-54-g00ecf