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 have switched Shadow to use guards, but we will also need to run multiple instances of the guard-based onionperf models, taking care to discard those results from graphing, similar to how we did for onionperf.
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).