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 328
    • Issues 328
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 32
    • Merge requests 32
  • 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
  • #24666
Closed
Open
Issue created Dec 19, 2017 by David Goulet@dgoulet🐼Owner

sched: Store the circuit ID instead of the full DESTROY cell in the destroy queue

Tor currently keeps the DESTROY cells it needs to relay on the cmux->destroy_queue but it keeps the entire packed_cell_t which is a full 514 bytes usually.

Instead, we should keep the circid_t because this is really only what we need which would shrink down the used memory by a factor of 128x.

We've observed this on very loaded relays getting DoS with CREATE/DESTROY cells at high rate by many clients which is filling the DESTROY queue while tor is struggling to flush them on the network towards a relay that is also struggling.

This needs to be backported as far as we can in order to avoid relays being memory DoS too hard. The next step is to make our OOM consider those DESTROY cells but that is a bit more involving.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking