proxying and introduction: the two fundamental operations of emergent networks (was: Re: [p2p-hackers] Morpheus, Freenet, MojoNation (was Semantic Routing BOF))

zooko at zooko.com zooko at zooko.com
Thu Aug 30 08:17:01 UTC 2001


 Sam Joseph writes:
>
> Oskar Sandberg wrote:
> 
> > On Thu, Aug 30, 2001 at 03:40:58PM +0900, Sam Joseph wrote:
> > <>
> > > Okay so could anybody from MojoNation comment on what makes their routing
> > > methodology different from Freenet.  I understand the Freenet does depth first
> > > greedy search when routing.  MojoNation routes like Morpheus, or Gnutella perhaps?
> >
> > Can a single step match of data UID against node UIDs really be called
> > routing?
> 
> Well if you're forwarding a message as a result of the match, then I'd say yes.  However
> the important point, for me, is what criteria is being used to forward messages.

No, Mojo Nation does not use information from the higher-layer (file operations
or metadata operations) to do routing at the message layer.  We do not use
proxying to extend the network horizon, we use introducing.  Freenet's concept
of "routing" is an implementation of proxying of file operations.


I've wanted to write an essay for p2p-hackers but never had the time.  In
brief, there are two fundamental operations that can extend your network
horizon: proxying and introducing.


Imagine three nodes named Akira, Bakunin and Constantine.  Akira has a link
with Bakunin (all links are bi-directional), and Bakunin has a link with
Constantine.  So Akira's "network horizon" is of size 1: he only knows one node
other than himself.  Now there are two possible ways to make Constantine become
part of Akira's network.

The first, proxying, is where Akira sends a query to Bakunin, who forwards it
to Constantine, receives the response from Constantine, and forwards the
response back to Akira.

Akira now *thinks* that his network horizon is only 1, but it is actually 2.  

The other technique is introduction: Bakunin tells Akira and Constantine how to
talk to each other, and now each person on the network has two links.


There are lots of interesting technical differences between these two
techniques and how the resulting emergent network behaves, but that's the part
that I don't have the time to write about.  ;-)


Oh, by the way, there are two ways that Mojo Nation *does* do proxying
behavior, but neither is its primary mechanism of doing file operations.

The first is message-relaying, which allows arbitrary higher-layer operations
to bypass firewalls (currently "higher-layer operations" include file
operations and metadata operations, but also any other kind of protocol could
be written on the higher layer and it would transparently bypass firewalls).
(Also message-relaying provides a nice starting point for someone who wants to
implement Chaumian message mixes.)

The second is what we call "block wholesaling", which is a batched operation in
which each block server launches a recursive query (but *only* 1-level deep
recursion) for blocks which many people have requested of it.  That happens
once a day, or once a week or something depending on how the user has
configured their block server.


Regards,

Zooko

P.S.  Thanks to Oskar Sandberg, Adam Langley and Bram Cohen for arguing about
"Mojo Nation's scalability" a few months ago on p2p-hackers, which got me
thinking, and to Mark Miller for teaching me about the fundamental necessity of
the Granovetter Operation (== introduction).




More information about the P2p-hackers mailing list