Hi Matt,
Appreciate your responses. Hope you'll bear with me as I'm a bit new to this.
> Instead of trying to make sure everyone’s gossip acceptance matches exactly,
> which as you point it seems like a quagmire, why not (a) do a sync on startup
> and (b) do syncs of the *new* things.
I'm not opposed to this technique, and maybe it ends up as a better solution.
The rationale for not going full Erlay approach was that it's far less overhead
to maintain a single sketch than to maintain a per-peer sketch and associated
state for every gossip peer. In this way there's very little cost to adding
additional gossip peers, which further encourages propagation and convergence
of the gossip network.
IIUC Erlay's design was concerned for privacy of originating nodes. Lightning
gossip is public by nature, so I'm not sure we should constrain ourselves to
the same design route without trying the alternative first.
> if we're gonna add a minisketch-based sync anyway, please lets also use it
> for initial sync after restart
This was out of the scope of what I had in mind, but I will give this some
thought. I could see how a block_height reference coupled with set
reconciliation could provide some better options here. This may not be all that
difficult to shoe-horn in.
Regardless of single sketch or per-peer set reconciliation, it should be easier
to implement with tighter rules on rate-limiting. (Keep in mind, the node's
graph can presumably be updated independently of the gossip it rebroadcasts if
desired.) As a thought experiment, if we consider a CLN-LDK set reconciliation,
and that each node is gossiping with 5 other peers in an evenly spaced
frequency, we would currently see 42.8 commonly accepted channel_updates over
an average 60s window along with 11 more updates which LDK accepts and CLN
rejects (spam.)[1] Assuming the other 5 peers have shared 5/6ths of this gossip
before the CLN/LDK set reconciliation, we're left with CLN seeing 7 updates to
reconcile, while LDK sees 18. Already we've lost 60% efficiency due to lack of
a common rate-limit heuristic.
I understand gossip traffic is manageable now, but I'm not sure it will be that
long before it becomes an issue. Furthermore, any particular set reconciliation
technique would benefit from a simple common rate-limit heuristic, not to
mention originating nodes, who may not currently realize their channel updates
are being rejected by a portion of the network due to differing criteria across
implementations.
Thanks,
Alex
[1] https://github.com/endothermicdev/lnspammityspam/blob/main/sampleoutput.txt
------- Original Message -------
On Thursday, April 21st, 2022 at 3:47 PM, Matt Corallo [email protected]
wrote:
> On 4/21/22 1:31 PM, Alex Myers wrote:
>
>> Hello Bastien,
>>
>> Thank you for your feedback. I hope you don't mind I let it percolate for a
>> while.
>>
>> Eclair doesn't do any rate-limiting. We wanted to "feel the pain" before
>> adding
>> anything, and to be honest we haven't really felt it yet.
>>
>> I understand the “feel the pain first” approach, but attempting set
>> reconciliation has forced me to
>> confront the issue a bit early.
>>
>> My thoughts on sync were that set-reconciliation would only be used once a
>> node had fully synced
>> gossip through traditional means (initial_routing_sync / gossip_queries.)
>> There should be many
>> levers to pull in order to help maintain sync after this. I'm going to have
>> to experiment with them
>> a bit before I can claim they are sufficient, but I'm optimistic.
>
> Please, no. initial_routing_sync was removed from most implementations (it
> sucks) and gossip queries
> is broken in at least five ways. May we can recover it by adding yet more
> extensions but if we're
> gonna add a minisketch-based sync anyway, please lets also use it for initial
> sync after restart
> (unless you have no channels at all, in which case lets maybe revive
> initial_routing_sync...)
>
> Matt
_______________________________________________
Lightning-dev mailing list
[email protected]
https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev