Christian Decker [ARCHIVE] on Nostr: 📅 Original date posted:2019-01-08 📝 Original message: Fabrice Drouin ...
📅 Original date posted:2019-01-08
📝 Original message:
Fabrice Drouin <fabrice.drouin at acinq.fr> writes:
> I think there may even be a simpler case where not replacing updates
> will result in nodes not knowing that a channel has been re-enabled:
> suppose you got 3 updates U1, U2, U3 for the same channel, U2 disables
> it, U3 enables it again and is the same as U1. If you discard it and
> just keep U1, and your peer has U2, how will you tell them that the
> channel has been enabled again ? Unless "discard" here means keep the
> update but don't broadcast it ?
Excellent point, that's a simpler example of how it could break down.
>> I think all the bolted on things are pretty much overkill at this point,
>> it is unlikely that we will get any consistency in our views of the
>> routing table, but that's actually not needed to route, and we should
>> consider this a best effort gossip protocol anyway. If the routing
>> protocol is too chatty, we should make efforts towards local policies at
>> the senders of the update to reduce the number of flapping updates, not
>> build in-network deduplications. Maybe something like "eager-disable"
>> and "lazy-enable" is what we should go for, in which disables are sent
>> right away, and enables are put on an exponential backoff timeout (after
>> all what use are flappy nodes for routing?).
>
> Yes there are probably heuristics that would help reducing gossip
> traffic, and I see your point but I was thinking about doing the
> opposite: "eager-enable" and "lazy-disable", because from a sender's
> p.o.v trying to use a disabled channel is better than ignoring an
> enabled channel.
That depends on what you are trying to optimize. Your solution keeps
more channels in enabled mode, potentially increasing failures due to
channels being unavailable. I was approaching it from the other side,
since failures are on the critical path in the payment flow, they'd
result in longer delays and many more retries, which I think is annoying
too. It probably depends on the network structure, i.e., if the fanout
from the endpoints is large, missing some channels shouldn't be a
problem, in which case the many failures delaying your payment weighs
more than not finding a route (eager-disable & lazy-enable). If on the
other hand we are really relying on a huge number of flaky connections
then eager-enable & lazy-disable might get lucky and get the payment
through. I'm hoping the network will have the latter structure, because
we'd have really unpredictable behavior anyway.
We'll probably gain more insight once we start probing the network. My
expectation is that today's network is a baseline, whose resiliency and
redundancy will improve over time, hopefully swinging in favor of
trading off the speed gains over bare routability.
Cheers,
Christian
Published at
2023-06-09 12:53:52Event JSON
{
"id": "8578980e4f0d3f4b1cda9ae44bb09aca9a5cb3518d32d0d9c31e78033dad7a8c",
"pubkey": "72cd40332ec782dd0a7f63acb03e3b6fdafa6d91bd1b6125cd8b7117a1bb8057",
"created_at": 1686315232,
"kind": 1,
"tags": [
[
"e",
"fd0da5dbd5383b525edc98216d5094b180c1b831bf7af1f8df8ca35294a8c8fd",
"",
"root"
],
[
"e",
"c1a43dcfeb5877537683ce64c9534d20dbaee322003a353f96be0f651f043b8b",
"",
"reply"
],
[
"p",
"81c48ba46c211bc8fdb490d1ccfb03609c7ea090f8587ddca1c990676f09cfd3"
]
],
"content": "📅 Original date posted:2019-01-08\n📝 Original message:\nFabrice Drouin \u003cfabrice.drouin at acinq.fr\u003e writes:\n\n\u003e I think there may even be a simpler case where not replacing updates\n\u003e will result in nodes not knowing that a channel has been re-enabled:\n\u003e suppose you got 3 updates U1, U2, U3 for the same channel, U2 disables\n\u003e it, U3 enables it again and is the same as U1. If you discard it and\n\u003e just keep U1, and your peer has U2, how will you tell them that the\n\u003e channel has been enabled again ? Unless \"discard\" here means keep the\n\u003e update but don't broadcast it ?\n\nExcellent point, that's a simpler example of how it could break down.\n\n\u003e\u003e I think all the bolted on things are pretty much overkill at this point,\n\u003e\u003e it is unlikely that we will get any consistency in our views of the\n\u003e\u003e routing table, but that's actually not needed to route, and we should\n\u003e\u003e consider this a best effort gossip protocol anyway. If the routing\n\u003e\u003e protocol is too chatty, we should make efforts towards local policies at\n\u003e\u003e the senders of the update to reduce the number of flapping updates, not\n\u003e\u003e build in-network deduplications. Maybe something like \"eager-disable\"\n\u003e\u003e and \"lazy-enable\" is what we should go for, in which disables are sent\n\u003e\u003e right away, and enables are put on an exponential backoff timeout (after\n\u003e\u003e all what use are flappy nodes for routing?).\n\u003e\n\u003e Yes there are probably heuristics that would help reducing gossip\n\u003e traffic, and I see your point but I was thinking about doing the\n\u003e opposite: \"eager-enable\" and \"lazy-disable\", because from a sender's\n\u003e p.o.v trying to use a disabled channel is better than ignoring an\n\u003e enabled channel.\n\nThat depends on what you are trying to optimize. Your solution keeps\nmore channels in enabled mode, potentially increasing failures due to\nchannels being unavailable. I was approaching it from the other side,\nsince failures are on the critical path in the payment flow, they'd\nresult in longer delays and many more retries, which I think is annoying\ntoo. It probably depends on the network structure, i.e., if the fanout\nfrom the endpoints is large, missing some channels shouldn't be a\nproblem, in which case the many failures delaying your payment weighs\nmore than not finding a route (eager-disable \u0026 lazy-enable). If on the\nother hand we are really relying on a huge number of flaky connections\nthen eager-enable \u0026 lazy-disable might get lucky and get the payment\nthrough. I'm hoping the network will have the latter structure, because\nwe'd have really unpredictable behavior anyway.\n\nWe'll probably gain more insight once we start probing the network. My\nexpectation is that today's network is a baseline, whose resiliency and\nredundancy will improve over time, hopefully swinging in favor of\ntrading off the speed gains over bare routability.\n\nCheers,\nChristian",
"sig": "5dfad72307050e8155ecf67dbcd399ec5dff5eb2931a246d2422ab0c0c3254783b0da4d9f4402f62cde575782d72c6982a7d18e32b71debc31ff7141f548beeb"
}