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)
-