Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Connectd throttle #7366

Merged
merged 8 commits into from
Jul 10, 2024
Merged

Conversation

rustyrussell
Copy link
Contributor

Builds on #7365 and #7364

This makes connectd serve gossip and gossip query responses with a ratelimit of 1MB/second. This at least puts some limit on how fast they stream gossip from us. It also includes a few optimizations and removes support for decoding compressed scids (dropped from spec and implementations in 2022).

@rustyrussell rustyrussell added this to the v24.08 milestone Jun 4, 2024
Copy link
Member

@cdecker cdecker left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK 8a52e9e

ccan/ccan/io/benchmarks/Makefile Outdated Show resolved Hide resolved
@rustyrussell
Copy link
Contributor Author

Simple rebase now prerequisites are merged!

We currently stream gossip as fast as we can, even if they start at
timestamp 0.  Instead, use a simple token bucket filter and only let
them have 1MB per second (500 bytes per second for testing).

Signed-off-by: Rusty Russell <[email protected]>
Changelog-Protocol: connectd: we now throttle outgoing gossip at 1MB/second per peer.
gossipd no longer connects directly to per-peer daemons, so remove old file.

Signed-off-by: Rusty Russell <[email protected]>
This is more efficient in a few ways:
1. It's trivial to get to the end of the gossip_store, we don't have
   to iterate.
2. It tends to be mmaped so we don't have to call pread().

Signed-off-by: Rusty Russell <[email protected]>
This was removed from the spec on Apr 25, 2022.  We stopped ever sending them
in 0.12.0 (2022-08-23).  Now we remove receive support.

Changelog-Protocol: Removed support for zlib-compressed short-channel-ids in query responses.
Signed-off-by: Rusty Russell <[email protected]>
This basically means moving the code from gossipd to connectd to handle
these queries.

This will get connectd have finer control over ratelimiting them.

Signed-off-by: Rusty Russell <[email protected]>
A bit tricky, since we get more than one message at a time.  However,
this just means we go over quota for a bit, and will get caught when
those are sent (we do this for a single message already, so it's not
that much worse).

Note: this not only limits sending, but it limits the actuall query
processing, which is nice.

Signed-off-by: Rusty Russell <[email protected]>
For some reason CI now hits a race where it tries to analyze a still-being-generated file:

```
tools/headerversions.c:52:30: error: syntax error [syntaxError]
 new = tal_fmt(NULL, template,
                             ^
make: *** [Makefile:552: check-cppcheck] Error 123
```

Restrict it to real source files instead.

Signed-off-by: Rusty Russell <[email protected]>
@rustyrussell rustyrussell merged commit 242ecbc into ElementsProject:master Jul 10, 2024
35 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants