Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Tor Tor
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 325
    • Issues 325
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 30
    • Merge requests 30
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • The Tor Project
  • Core
  • TorTor
  • Issues
  • #40444
Closed
Open
Issue created Aug 04, 2021 by Mike Perry@mikeperryDeveloper7 of 7 checklist items completed7/7 checklist items

Connect Prop#324 using ProtoVer and Prop#332 ntor handshake

We need to write code that enables the congestion control code only if FlowCtrl=2 ProtoVer is present, and the circuit handshake from Prop 332 agrees that the consensus says that congestion control is enabled.

Here's a checklist of properties to make sure we hit:

  • Congestion control is off by default (cc_alg=0 by default)
  • Onion Service Descriptor can list equivalent of FlowCtrl=2 Protover
  • Client does not attempt negotiation unless Exit or Onion Service lists FlowCtrl=2 and consensus says cc_alg != 0
  • If exit sees cc_alg=0, but it got a negotiation attempt, it replies with a nack, and both endpoints MUST free their congestion control object (to use the old fixed sendme code).
  • Negotiate the 'sendme_inc' value to agree using Prop#332 (formerly called cc_circwindow_inc).
  • Send 'cc_xon_rate' for future drop cell enforcement of XON/XOFF ratelimits
  • One-sided (non-negotiated) bounds limits on consensus parameters wrt each other (See Prop#324 Section 6.5)

See #40377 (closed) for previous discussions about negotiation.

Cc: @nickm @dgoulet

Edited Jan 24, 2022 by Mike Perry
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking