Important detail:
On a DNF, we accept the DNF's list of best-so-far-not-visited locations, but 
we limit the number of forks to say 2. Thus we limit the possible damage 
caused by a node deliberately returning locations far away from the target.

On Thursday 07 June 2007 09:44, vive wrote:
> On Wed, Jun 06, 2007 at 11:44:32PM +0100, Matthew Toseland wrote:
> > On Wednesday 06 June 2007 22:19, vive wrote:
> > > On Wed, Jun 06, 2007 at 09:43:52PM +0100, Matthew Toseland wrote:
> > > > 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.
>
> What if a node that _seemed_ to be a good option has swapped position since
> then? Lets say we use the rule of comparing positions against the 3rd best
> seen. During backtracking we will no longer see that fork as a good one,
> but we know it seemed so recently (perhaps it was even better than the path
> selected, but a node could not receive traffic due to congestion or so).
> That information may also be used - even if its not strictly up to date.
>
> One way to extend the rule of comparing positions would be to also attempt
> querying in these directions that seemed good previously. But I agree on
> that it's not necessary, only comparing positions may be the first way to
> go and see how well it works.
>
> > > (*) 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.
>
> _______________________________________________
> Devl mailing list
> Devl at freenetproject.org
> http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl
-------------- 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/20070608/bee16961/attachment.pgp>

Reply via email to