Rusty Russell [ARCHIVE] on Nostr: 📅 Original date posted:2022-04-22 📝 Original message: Matt Corallo <lf-lists at ...
📅 Original date posted:2022-04-22
📝 Original message:
Matt Corallo <lf-lists at mattcorallo.com> writes:
>> Allowing only 1 a day, ended up with 18% of channels hitting the spam
>> limit. We cannot fit that many channel differences inside a set!
>>
>> Perhaps Alex should post his more detailed results, but it's pretty
>> clear that we can't stay in sync with this many differences :(
>
> Right, the fact that most nodes don't do any limiting at all and y'all have a *very* aggressive (by
> comparison) limit is going to be an issue in any context.
I'm unable to find the post years ago where I proposed this limit
and nobody had major objections. I just volunteered to go first :)
> We could set some guidelines and improve
> things, but luckily regular-update-sync bypasses some of these issues anyway - if we sync once per
> block and your limit is once per block, getting 1000 updates per block for some channel doesn't
> result in multiple failures in the sync. Sure, multiple peers sending different updates for that
> channel can still cause some failures, but its still much better.
Nodes will want to aggressively spam as much as they can, so I think we
need a widely-agreed limit. I don't really care what it is, but
somewhere between per 1 and 1000 blocks makes sense?
Normally I'd suggest a burst, but that's bad for consensus: better to
say "just create your update N-6 blocks behind so you can always create a
new one 6 blocks behind".
>>> gossip queries is broken in at least five ways.
>>
>> Naah, it's perfect if you simply want to ask "give me updates since XXX"
>> to get you close enough on reconnect to start using set reconciliation.
>> This might allow us to remove some of the other features?
>
> Sure, but that's *just* the "gossip_timestamp_filter" message, there's several other messages and a
> whole query system that we can throw away if we just want that message :)
I agree. Removing features would be nice :)
>> But we might end up with a gossip2 if we want to enable taproot, and use
>> blockheight as timestamps, in which case we could probably just support
>> that one operation (and maybe a direct query op).
>>
>>> Like eclair, we don’t bother to rate limit and don’t see any issues with it, though we will skip relaying outbound updates if we’re saturating outbound connections.
>>
>> Yeah, we did as a trial, and in some cases it's become limiting. In
>> particular, people restarting their LND nodes once a day resulting in 2
>> updates per day (which, in 0.11.0, we now allow).
>
> What do you mean "its become limiting"? As in you hit some reasonably-low CPU/disk/bandwidth limit
> in doing this? We have a pretty aggressive bandwidth limit for this kinda stuff (well, indirect
> bandwidth limit) and it very rarely hits in my experience (unless the peer is very overloaded and
> not responding to pings, which is a somewhat separate thing...)
By rejecting more than 1 per day, some LND nodes had 50% of their
channels left disabled :(
This same problem will occur if *anyone* does ratelimiting, unless
*everyone* does. And with minisketch, there's a good reason to do so.
Cheers,
Rusty.
Published at
2023-06-09 13:05:54Event JSON
{
"id": "6d6a45ae56e5478b1873e3d753a296c050d79a73ecac24088336546030d96ec5",
"pubkey": "13bd8c1c5e3b3508a07c92598647160b11ab0deef4c452098e223e443c1ca425",
"created_at": 1686315954,
"kind": 1,
"tags": [
[
"e",
"90c8a22893d09190339208f6b0eb636d6de40a2b6c7cff5708a261796a93b71e",
"",
"root"
],
[
"e",
"e9b252cd817493146d87b685ce92f07983222f61e08e81d7bec2699ef7ebc35e",
"",
"reply"
],
[
"p",
"cd753aa8fbc112e14ffe9fe09d3630f0eff76ca68e376e004b8e77b687adddba"
]
],
"content": "📅 Original date posted:2022-04-22\n📝 Original message:\nMatt Corallo \u003clf-lists at mattcorallo.com\u003e writes:\n\u003e\u003e Allowing only 1 a day, ended up with 18% of channels hitting the spam\n\u003e\u003e limit. We cannot fit that many channel differences inside a set!\n\u003e\u003e \n\u003e\u003e Perhaps Alex should post his more detailed results, but it's pretty\n\u003e\u003e clear that we can't stay in sync with this many differences :(\n\u003e\n\u003e Right, the fact that most nodes don't do any limiting at all and y'all have a *very* aggressive (by \n\u003e comparison) limit is going to be an issue in any context.\n\nI'm unable to find the post years ago where I proposed this limit\nand nobody had major objections. I just volunteered to go first :)\n\n\u003e We could set some guidelines and improve \n\u003e things, but luckily regular-update-sync bypasses some of these issues anyway - if we sync once per \n\u003e block and your limit is once per block, getting 1000 updates per block for some channel doesn't \n\u003e result in multiple failures in the sync. Sure, multiple peers sending different updates for that \n\u003e channel can still cause some failures, but its still much better.\n\nNodes will want to aggressively spam as much as they can, so I think we\nneed a widely-agreed limit. I don't really care what it is, but\nsomewhere between per 1 and 1000 blocks makes sense?\n\nNormally I'd suggest a burst, but that's bad for consensus: better to\nsay \"just create your update N-6 blocks behind so you can always create a\nnew one 6 blocks behind\".\n\n\u003e\u003e\u003e gossip queries is broken in at least five ways.\n\u003e\u003e \n\u003e\u003e Naah, it's perfect if you simply want to ask \"give me updates since XXX\"\n\u003e\u003e to get you close enough on reconnect to start using set reconciliation.\n\u003e\u003e This might allow us to remove some of the other features?\n\u003e\n\u003e Sure, but that's *just* the \"gossip_timestamp_filter\" message, there's several other messages and a \n\u003e whole query system that we can throw away if we just want that message :)\n\nI agree. Removing features would be nice :)\n\n\u003e\u003e But we might end up with a gossip2 if we want to enable taproot, and use\n\u003e\u003e blockheight as timestamps, in which case we could probably just support\n\u003e\u003e that one operation (and maybe a direct query op).\n\u003e\u003e \n\u003e\u003e\u003e Like eclair, we don’t bother to rate limit and don’t see any issues with it, though we will skip relaying outbound updates if we’re saturating outbound connections.\n\u003e\u003e \n\u003e\u003e Yeah, we did as a trial, and in some cases it's become limiting. In\n\u003e\u003e particular, people restarting their LND nodes once a day resulting in 2\n\u003e\u003e updates per day (which, in 0.11.0, we now allow).\n\u003e\n\u003e What do you mean \"its become limiting\"? As in you hit some reasonably-low CPU/disk/bandwidth limit \n\u003e in doing this? We have a pretty aggressive bandwidth limit for this kinda stuff (well, indirect \n\u003e bandwidth limit) and it very rarely hits in my experience (unless the peer is very overloaded and \n\u003e not responding to pings, which is a somewhat separate thing...)\n\nBy rejecting more than 1 per day, some LND nodes had 50% of their\nchannels left disabled :(\n\nThis same problem will occur if *anyone* does ratelimiting, unless\n*everyone* does. And with minisketch, there's a good reason to do so.\n\nCheers,\nRusty.",
"sig": "14a76b90e29099a8d2b45516b1da4a18ee82700483b5cffcf52be0322c3d3e9a28a70b1d3f623b44468f49267ecb738517224decf9bdd4999b64c18699e64032"
}