On Sat, May 26, 2001 at 07:15:05PM +0100, Adam Langley wrote:
<> 
> Maybe satisfied requests could pass on a YouShouldHave message. This
> would cause the node to start up a request if it doesn't have the
> data, or forward a YouShouldHave if it does.

No abuse possible there....

> An since with an announce protocol the node knows it's center of
> keyspace (COKS) it can tell when it has hit a local epicenter and
> maybe forward to a random node.

The fact that we initialize it as something does not mean that we want to
it be static.

<>


-- 
'DeCSS would be fine. Where is it?'
'Here,' Montag touched his head.
'Ah,' Granger smiled and nodded.

Oskar Sandberg
oskar at freenetproject.org

_______________________________________________
Devl mailing list
Devl at freenetproject.org
http://lists.freenetproject.org/mailman/listinfo/devl

>From - Tue May 29 05:42:47 2001
X-UIDL: 3adbdd6c00000669
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
Return-Path: <devl-admin at freenetproject.org>
Received: from hawk.freenetproject.org (postfix@[4.18.42.11])
        by funky.danky.com (8.9.3/8.8.7) with ESMTP id OAA22334
        for <danello at danky.com>; Sat, 26 May 2001 14:47:17 -0400
Received: from hawk.freenetproject.org (localhost [127.0.0.1])
        by hawk.freenetproject.org (Postfix) with ESMTP
        id E8ECC5801B; Sat, 26 May 2001 12:16:22 -0700 (PDT)
Delivered-To: devl at freenetproject.org
Received: from finney.org (226-132.adsl2.netlojix.net [207.71.226.132])
        by hawk.freenetproject.org (Postfix) with ESMTP id 070C157B37
        for <devl at freenetproject.org>; Sat, 26 May 2001 12:15:12 -0700 (PDT)
Received: (from hal at localhost)
        by finney.org (8.9.3/8.9.3) id LAA08550;
        Sat, 26 May 2001 11:48:07 -0700
From: h...@finney.org
Message-Id: <200105261848.LAA08550 at finney.org>
To: devl at freenetproject.org
Cc: nurf at wuzzle.org
Subject: [freenet-devl] Re: Fwd: Some musings on Freenet
Sender: devl-admin at freenetproject.org
Errors-To: devl-admin at freenetproject.org
X-BeenThere: devl at freenetproject.org
X-Mailman-Version: 2.0.3
Precedence: bulk
Reply-To: devl at freenetproject.org
List-Help: <mailto:devl-request at freenetproject.org?subject=help>
List-Post: <mailto:devl at freenetproject.org>
List-Subscribe: <http://lists.freenetproject.org/mailman/listinfo/devl>,
        <mailto:devl-request at freenetproject.org?subject=subscribe>
List-Id: Discussion of information related to Freenet development 
<devl.freenetproject.org>
List-Unsubscribe: <http://lists.freenetproject.org/mailman/listinfo/devl>,
        <mailto:devl-request at freenetproject.org?subject=unsubscribe>
List-Archive: <http://lists.freenetproject.org/pipermail/devl/>
Date: Sat, 26 May 2001 11:48:07 -0700
Status: O
Content-Length: 8328
Lines: 175

Ray Heasman wrote:
> 3. Insertion of data
>
> My understanding is that FreeNet performs a depth-first backtracking graph
> traversal of nodes on the network.

Technically, yes, but keep in mind that backtracking happens only in
two circumstances: if you hit a dead node (hopefully rare), or if you
hit a node which is already working on this search request (common).

> Insertion has two stages: first, a search
> to check that the data to be inserted does not already exist, second, an
> insertion phase that tunnels data to the last point at which the search
> failed.

...and caches it along the way.

> During the request phase, each node forwards a request to nodes it thinks
> most likely of having the data being inserted. This is done by making an
> estimate of how close the key describing the search is to the keys usually
> handled by the nodes it knows about.

Isn't it still just a matter of choosing the node which holds the
key closest to the target one?  This description makes it sound like
a more elaborate algorithm is used.

> Unique IDs are used so that requests
> are never processed twice by the same node (i.e. They are used by the search
> algorithm to change the graph of nodes into a dynamically generated tree
> that contains no loops). This eliminates redundant searching.

Right, this is the main source of the "backtracking" above.

> Search packets also contain a "hops to live" parameter (HTL), which is
> decremented every time the search packet is forwarded to a node.
>
> Assuming the data to be inserted is not already on the network, eventually
> HTL drops to 0, and the lucky node thus found signals the search failed. At
> this point, the originating node starts streaming the data back along the
> path searched (sans backtracks) to the lucky node.

Keeping in mind that the main cause of backtracks is that we hit the path
already, the "sans backtracks" is not really meaningful here in that you
are considering the same set of nodes whether you count backtracks or not.

> What I find interesting about this is that we are storing data in the last
> place the network looked (rather than the first).

This is not true.  The data is stored in the first place the network
looked, namely the best neighbor of the initiating node.  It is stored in
the second place the network looked, namely the best neighbor of this next
node.  And so on, all the way up to the last place the network looked.
This is entirely because of caching during insertion.

Reducing caching, as proposed later, will make it less true that we
store data in the first place we looked.  That may or may not be a good
idea but it is important to understand the role of caching.

> 5. Search keys
>
> Keys are 160 bit hashs of the data to be stored. This means that data with
> similar keys may not be associated in terms of content at all. This is a
> good thing as data are not clustered on servers by subject, making the loss
> of a node less damaging. However for searching to work, there has to be a
> concept of "closeness" of keys. Adam Langley provides a rough description of
> how this is currently done in [AL1]. This combines the test of whether one
> key is "less" than another with a binary tree to find the closest key in a
> group. Closeness is defined as the distance between leaves on this tree.

I thought the tree based search was just a speed optimization.  The
basic heuristic is still to define relative closeness, right?  We can
tell if A is closer to B or to C.  This should be irrespective of what
other keys D, E, F, ... are present on the node.

> 5.1 Reservations
>
> One thing that worries me about this definition of closeness is that it is
> entirely dependent on what keys a node currently holds. An outside observer
> with knowledge of only a subset of keys on the node would not be able to
> predict the closeness of two keys calculated by that node. It also means
> that as each node prunes and updates its node routing list it will change
> the behaviour of future routing decisions in unpredictable ways.

I believe that the only real issue is which key on the node is the closest
to the target one.  Any self-organizing network is going to change its
routing decisions over time based on the information present at each node,
so this is not really a cause for worry.

> 6. Potential problems
>
> The model mentioned in section 2 suggests a potential problem. In order to
> be a good self-organising network that routes requests to nodes containing
> their associated data, it is necessary for nodes in the vicinity of the
> insertion point to have many requests routed through them.

I don't understand this, and it may be based on the false assumption that
most requests "should" be satisfied by a node near the original insertion
point of the data.  But Freenet is not designed to follow this principle.
It is entirely possible that most requests will be satisfied by a node
far from the original insertion point.  In that case there is no reason
for nodes near the insertion point to see many requests for that data.

> In the current
> implementation, caching is very aggressive: a node caches data the first

Reply via email to