[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [circle] scraping off the cruft
From: |
Jiri Baum |
Subject: |
Re: [circle] scraping off the cruft |
Date: |
Sat, 21 Jan 2006 11:42:57 +1100 |
User-agent: |
KMail/1.7.2 |
Hello,
Matthew Wilson:
> I'd like to get more involved, but the problem I have is that I don't
> *really* understand how the Circle should work.
Well, the basic algorithm is implemented, so you can just treat it as a black
box that works more or less like python's "dictionary" type... the details of
the DHT are interesting, but not very important most of the time.
More important are the secondary issues that make circle not very live:
* The political statement it was intended to make is passé.
* It works poorly with NAT.
* It clashes with smart firewalls (it needs to receive packets from hosts it's
never talked to before).
* At a key time in its growth, the key developer had to take a leave of
absence.
At the height of its popularity, the circle had perhaps two dozen users, with
maybe half a dozen on-line at times. Currently, I'm not even sure there is a
(public) network out there.
> Is there anyone generous enough to explain the algorithms in simple
> english?
As I wrote above, from the programmer's point of view the DHT works more or
less like the dictionary type: it stores (key, value) pairs. The main
difference is that it can store several values with the same key.
The nodes and all the keys are arranged in a circle. The nodes pick their
positions at random, the keys in a fixed way so you can find them again. Each
node is responsible for all the keys to its right, up to the next node, and
stores the associated values.
To store a (key, value) pair, your node finds the position of the key on the
circle, and asks the nearest node to the left of that position to keep it.
To retrieve, your node finds the position of the key on the circle, and asks
the nearest node to the left of that position for the corresponding value(s).
To avoid everyone storing the complete (potentially large) list of nodes, each
node instead stores just a few, concentrating more on its immediate
neighbourhood on the circle. When looking for a node (based on its position
or on the position of a key), you contact the nearest node to that position
that you know of, and ask it for further directions; repeat as necessary.
Jiri
--
Jiri Baum <address@hidden> http://www.baum.com.au/~jiri
MAT LinuxPLC project --- http://mat.sf.net --- Machine Automation Tools