On Wednesday 06 June 2007 22:19, vive wrote: > On Wed, Jun 06, 2007 at 09:43:52PM +0100, Matthew Toseland wrote: > > X-Spam-Checker-Version: SpamAssassin 3.1.7-deb (2006-10-05) on > > emu.dh.bytemark.co.uk > > X-Spam-Level: > > X-Spam-Status: No, score=-106.9 required=5.0 tests=AWL,BAYES_00, > > FORGED_RCVD_HELO,USER_IN_WHITELIST autolearn=ham version=3.1.7-deb > > From: Matthew Toseland <toad at amphibian.dyndns.org> > > To: Discussion of development issues <devl at freenetproject.org> > > Date: Wed, 6 Jun 2007 21:43:52 +0100 > > Subject: Re: [freenet-dev] Getting stuck down rabbit holes > > > > After a long discussion with vivee, new proposal: > > On a request, we should, in addition to HTL and best-so-far, track the 3 > > best locations of nodes we have seen, could have visited, but haven't. > > > > When we run out of HTL, this indicates that we are either a) lost in a > > pocket, or b) have actually reached the end of the request. We send a > > DataNotFound to our previous node, just as now. But the previous node can > > fork a request - provided that the node it would fork to is at least as > > close to the target than the 3rd-best not visited node. It could be one > > of the nodes we didn't visit, or it could be a new option because a node > > came out of swapping. > > Part of the idea to store the 3 best positions seen-so-far but not > *visited* (by the query taking greedy routing) is also to have 3 chances of > backtracking and continue at a good place (instead of just backtracking and > forking to a best-possible neighbor at a node as soon as possible). > > If the backtrack does not hit a node with a neighbor closer than the 3rd > best position seen, then we backtrack until the query first reaches any(*) > of the 3 nodes that had the closest neighbors-seen-so-far. From this node > the query can continue to the neighbor that was not previously visited > (2nd-best for greedy routing, and next step should have higher chances of > leading to the destination).
I don't see why we need this special case: We can simply fork if the fork is at least as closer to the target as the 3rd-best. This will normally result in 3 forks but it might be more or it might be less. > > (*) If we take the first one encountered out of these three, then we dont > have to "un-backtrack" (e.g. go down the branch again that we backtracked > up from in the first case) if the query reaches *another* dead end :-) > > > This should severely limit the amount of forking that happens after a > > normal completion, while still enabling us to backtrack our way out of > > rabbit holes. > > /vive -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available URL: <https://emu.freenetproject.org/pipermail/devl/attachments/20070606/780901af/attachment.pgp>