The Circle

Screen shot

The Circle is a decentralized peer to peer application written in Python. It currenly runs on Linux, but porting should not be too difficult.

Features:

At the core of the Circle is a decentralized hashtable. This is used to allow things like keyword searching. The use of the decentralized hashtable should mean that it won't have the scalability problems of a Gnutella style network, while also avoiding the need for a central server and therefore a single point of failure. Details of its operation are given in the "Technical Details" section below.

The searching mechanism should scale to millions of nodes. Well, that's the theory. In practice, I have no idea: that's where you come in :-) Help me find out!

Download

The Circle is somewhat beta at the moment, but it's improving all the time.

Or available by anonymous CVS:

  export CVSROOT=:pserver:anonymous@bowman.csse.monash.edu.au:/home/cvsroot
  cvs login
  # Password is `anonymous'.
  cvs checkout circle

Related projects

Here are two similar projects:

  • Chord: These guys came up with a very similar idea to Circle, looks like they beat me to it. Sigh. There's a very good analysis of Circle-like networks available from this page.
  • GISP: An implementation of a decentralized hashtable as part of Sun's JXTA protocol.

    Technical Details

    For an overview of how the Circle works see these slides for a talk I will be giving at linux.conf.au 2002.

    There is also some documentation in the Circle code itself. To see this, run the Circle and select the "Help/Developer Documentation" menu item. There is currently documentation for node.py, and I plan to add documentation for other modules in the not-too-distant future.

    Back to Paul Harrison's home page


    Disclaimer:
    This is a personal page published by the author. The ideas and information expressed on it have not been approved or authorised by Monash University either explicitly or impliedly. In no event shall Monash University be liable for any damages whatsoever resulting from any action arising in connection with the use of this information or its publication, including any action for infringement of copyright or defamation.