diff options
author | Mike Perry <mikeperry-git@torproject.org> | 2022-07-31 16:38:34 +0000 |
---|---|---|
committer | David Goulet <dgoulet@torproject.org> | 2022-08-11 09:26:51 -0400 |
commit | 08c3ee8eca4bf60f3218daeb65acf97da554e80f (patch) | |
tree | 2c97b0871d484ec0a674d3a5a3edf40460f56fe2 | |
parent | 832a1d9fae9a006d9f5fcf26718901395d197703 (diff) | |
download | tor-08c3ee8eca4bf60f3218daeb65acf97da554e80f.tar.gz tor-08c3ee8eca4bf60f3218daeb65acf97da554e80f.zip |
Create slow-start max for n_ewma_cnt.
Since slow-start now checks every sendme, lower EWMA is better.
-rw-r--r-- | src/core/or/congestion_control_common.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/core/or/congestion_control_common.c b/src/core/or/congestion_control_common.c index 8f09a80bae..c1a62cada0 100644 --- a/src/core/or/congestion_control_common.c +++ b/src/core/or/congestion_control_common.c @@ -52,6 +52,7 @@ #define N_EWMA_CWND_PCT_DFLT (50) #define N_EWMA_MAX_DFLT (10) +#define N_EWMA_SS_DFLT (2) /* BDP algorithms for each congestion control algorithms use the piecewise * estimattor. See section 3.1.4 of proposal 324. */ @@ -108,6 +109,11 @@ static uint8_t n_ewma_cwnd_pct; static uint8_t n_ewma_max; /** + * Maximum number N for the N-count EWMA averaging of RTT in Slow Start. + */ +static uint8_t n_ewma_ss; + +/** * Minimum number of sendmes before we begin BDP estimates */ static uint8_t bwe_sendme_min; @@ -196,6 +202,14 @@ congestion_control_new_consensus_params(const networkstatus_t *ns) N_EWMA_MAX_DFLT, N_EWMA_MAX_MIN, N_EWMA_MAX_MAX); + +#define N_EWMA_SS_MIN 2 +#define N_EWMA_SS_MAX (INT32_MAX) + n_ewma_ss = + networkstatus_get_param(NULL, "cc_ewma_ss", + N_EWMA_SS_DFLT, + N_EWMA_SS_MIN, + N_EWMA_SS_MAX); } /** @@ -452,8 +466,18 @@ dequeue_timestamp(smartlist_t *timestamps_u64_usecs) static inline uint64_t n_ewma_count(const congestion_control_t *cc) { - uint64_t ewma_cnt = MIN(CWND_UPDATE_RATE(cc)*n_ewma_cwnd_pct/100, + uint64_t ewma_cnt = 0; + + if (cc->in_slow_start) { + /* In slow-start, we check the Vegas condition every sendme, + * so much lower ewma counts are needed. */ + ewma_cnt = n_ewma_ss; + } else { + /* After slow-start, we check the Vegas condition only once per + * CWND, so it is better to average over longer periods. */ + ewma_cnt = MIN(CWND_UPDATE_RATE(cc)*n_ewma_cwnd_pct/100, n_ewma_max); + } ewma_cnt = MAX(ewma_cnt, 2); return ewma_cnt; } |