Skip to content

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