Client performance similar to C tor, using congestion control
Since we haven't yet implemented Tor's full suite of fairness/performance optimizations (see #68 (closed)), there are probably be a few pain points in network performance when a client is under really heavy load. We should identify these points using whatever tooling works for us, and fix them using the techniques that we're using in C tor.
Based on discussions, these items are likely to be important at the current stage:
- The congestion control design from ~"Sponsor 61" (which is also under that sponsor, I think)
-
Finish ntorv3 for protocol negotiation (16h) -
Parsing/encoding for protocol negotiation messages (16h) -
Decode, use, and pass consensus parameters for protocol negotiation (16h) -
Implement clock heuristics (8h) -
Variable sendme increments based on negotiation and parameters (12h) -
Per-circuit estimate of RTT (24h) -
Per-circuit estimate of bandwidth-delay product (24h) -
Implement vegas algorithm for cc; use it to decide the congestion window (16h) -
Use congestion window and inflight count to decide when to stop sending cells. (16h) -
Actually use ntorv3 and negotiate cc as appropriate (8h)
-
- Moved to #534
-
The flow-control design from~"Sponsor 61" Support for a per-TCP-stream token-bucket rate-limiting implementation (est 16h)
-
Edited by eta