New default congestion control parameters and other fixups
In https://gitlab.torproject.org/mikeperry/tor/-/blob/cc_shadow_experiments_v2/SHADOW_EXPERIMENTS.txt (aka #40404 (closed)), we have learned a lot about good parameter values for Congestion Control, and have found some issues. We may find more. This ticket is for changing those defaults and any other fixups we have made.
Right now:
-
Make Vegas parameters be based on the number of hops in a circuit. and also handle Single Onions. These should be separate consensus params for SoS, vg-lite, and vg onion service for alpha, beta, and gamma, just in case in reality is it not a clean function of the number of hops. -
Set default cwnd_max very high (200k? INT32_MAX?) -
Allow min cwnd_init as low as sendme_inc -
circwindow increment during slow start always at least 2 sendme_inc -
Make more consensus params globals instead of struct members -
Only update the cwnd faster after slow start -
Don't cannibalize for rends or exits. (Only cannibalize HSDIR and INTRO) -
SENDME window mod 1000 fix: mikeperry/tor@d8fa5091 -
RTT clock jump heuristic ratio tweak: mikeperry/tor@28c950f2 -
Safeguard for 0-delta clock (only triggered in shadow, but lets merge it for other researchers) mikeperry/tor@f54cf2c8 -
NULL ptr deref in exit logline: mikeperry/tor@97c4c50c -
Add param to cap RTT N_EWMA, and change ewma multiplier to divisor
We can split this into child tickets later if we like.
Edited by Mike Perry