Shadow Experiments for Congestion Control
For congestion control, we will want to do a series of experiments in Shadow to determine behavior of the algorithms. See section 6 of the proposal: https://gitlab.torproject.org/tpo/core/torspec/-/blob/master/proposals/324-rtt-congestion-control.txt#L723
To start, we'll want to run some basic simulations of shadow v2 with current Tor, and extract baseline metrics on the TTFB and throughput of downloads. We will also want to get statistics on time spent in queues on relays, and length of cell queues and edge connection buffering quantity. I am hoping for the latter, @dgoulet can give suggestions based on the things he studied for KIST, EWMA, and circuitmux.
We'll also want to implement the simple RTT measurement using SENDMEs, and start outputting stats on how stable that is over circuit lifetime, and determine if we need more frequent SENDME acks.
Once we get some baselines we are satisfied with, we will begin testing actual congestion control algorithms and see how they change things. We'll start simple, with sims of just one algorithm at a time, but eventually we will want to see how they behave in mixed networks in competition with each other. See also: https://github.com/shadow/tornettools/issues/10
I also have questions about how Shadow v2 simulates exit TCP connections, as that interaction may impact results (and we want to know if it is realistic).