From r.pickhardt at googlemail.com Thu Mar 1 15:13:43 2018 From: r.pickhardt at googlemail.com (=?UTF-8?Q?Ren=C3=A9_Pickhardt?=) Date: Thu, 1 Mar 2018 16:13:43 +0100 Subject: [Lightning-dev] Pinging a route for capacity In-Reply-To: References: Message-ID: Hey everyone, disclaimer I am new here and have not a full understanding of the complete specs yet - however since I decided to participate in lighting dev I will just be brave and try to add my ideas on the problem jimpo posed. So even in case by ideas are complete bs please just tell me in a friendly way and I know I need to read more code and specs in order to participate. Reading about the described problem techniques like IP-Fragmentation ( https://en.wikipedia.org/wiki/IP_fragmentation ) come to my mind. The setting is a little bit different but in from my current understanding it should still be applicable and also be the favorable solution in comparison to the proposed ping: 1.) IP setting: In IP-Fragmentation one would obviously just split the IP-package in order to utilize a link layer protocol that doesn't have enough bandwidth for a bigger size package. 2.) Lightning case: When the capacity of a channel during routing is not high enough - which means that the channel balance on that side is somewhere between 0 and the size of the payment - one would have to to send the second part of the fragmented package on a different route. This is obvious since the insufficient channel balance cannot come out of thin air (as in IP-Routing). My first intuition was that this would become a problem for onion routing since the router in question does not know the final destination but only knows the next hop which can't be utilized as the channel doesn't have enough funds. However I imagine one could just encapsulate the second part of the fragmented payment in a new onion routed package that goes on a detour (using different payment channels) to the original "next" hop und progresses from there as it was originally thought of. Not sure however how the impacts to the HTLC would be and if it would actually be possible to fragment a payment that is encapsulated within the onion routing. If possible the advantage in comparison to your proposed ping method is that fragmentation would be highly dynamic and still work if a channel runs out of funds while routing payment. In your ping scenario it could very well happen that you do a ping for a designated rout, everything looks great, you send a payment but while it is on its way a channel on that way could run dry. best Rene On Thu, Mar 1, 2018 at 3:45 PM, Jim Posen wrote: > My understanding is that the best strategy for choosing a route to send > funds over is to determine all possible routes, rank them by estimated fees > based on channel announcements and number of hops, then try them > successively until one works. > > It seems inefficient to me to actually do a full HTLC commitment handshake > on each hop just to find out that the last hop in the route didn't have > sufficient remaining capacity in the first place. Depending on how many > people are using the network, I could also forsee situations where this > creates more payment failures because bandwidth is locked up in HTLCs that > are about to fail anyway. > > One idea that would likely help is the ability to send a ping over an > onion route asking "does every hop have capacity to send X msat?" Every hop > would forward the onion request if the answer is yes, or immediately send > the response back up the circuit if the answer is no. This should reveal no > additional information about the channel capacities that the sender > couldn't determine by sending a test payment to themself (assuming they > could find a loop). Additionally, the hops could respond with the latest > fee rate in case channel updates are slow to propagate. > > The main benefit is that this should make it quicker to send a successful > payment because latency is lower than sending an actual payment and the > sender could ping all possible routes in parallel, whereas they can't send > multiple payments in parallel. The main downside I can think of is that, > by the same token, it is faster and cheaper for someone to extract > information about channel capacities on the network with a binary search. > > -jimpo > > _______________________________________________ > Lightning-dev mailing list > Lightning-dev at lists.linuxfoundation.org > https://lists.linuxfoundation.org/mailman/listinfo/lightning-dev > > -- www.rene-pickhardt.de Skype: rene.pickhardt mobile: +49 (0)176 5762 3618 -------------- next part -------------- An HTML attachment was scrubbed... URL: