Author: toad
Date: 2006-03-10 16:51:21 +0000 (Fri, 10 Mar 2006)
New Revision: 8216
Modified:
trunk/docs/fnet.tex
Log:
implementation; opennet
Modified: trunk/docs/fnet.tex
===================================================================
--- trunk/docs/fnet.tex 2006-03-10 16:38:22 UTC (rev 8215)
+++ trunk/docs/fnet.tex 2006-03-10 16:51:21 UTC (rev 8216)
@@ -397,6 +397,53 @@
\section{Implementation}
+We have an early implementation of this new algorithm. So far it appears
+to function, but the network is far too small, and the load on it is
+far too low, to draw any certain conclusions. Also so far this has not
+been a true darknet; users have not connected to those whom they have
+a pre-existing trust connection to, in general, rather to whomever
+happened to be around.
+
+This represents the biggest problem with the new algorithm: it relies on
+users creating "friend-to-friend" connections. This is not likely to
+happen except in specialized fragments of the real world, until the code
+reaches a certain level of usability, and the network reaches a certain
+size. So we have a chicken and egg problem: no darknet connections until
+the network is big, no big network until we have lots of darknet
+connections. The solution is to provide an alternative, interoperable
+"opennet".
+
+Nodes will either participate in the opennet or the darknet, or both. On
+the darknet, as we have discussed, connections are formed manually in a
+"friend to friend" fashion, based on pre-existing trust (however marginal).
+On the opennet, connections are dynamically formed and broken by the
+network, based on a Least Recently Used algorithm; when an opennet node
+successfully fetches a datum, it returns the node reference (identity plus
+IP address, essentially) of the original data source. This will
+occasionally be reset along the route. The node receiving the datum may
+then open a connection to the referred-to node; if it does it will probably
+have to throw out an existing connection as routing tables are of limited
+size, so it disconnects from the node which least recently provided data.
+Actual routing will still be done via the location swapping and greedy
+routing algorithm described above, and care needs to be taken to ensure the
+network is not so dynamic that routing can never settle. But this mechanism
+is known to work; it is very close to the original Freenet routing algorithm
+[1], and it will produce a small world network [2], which the algorithm we
+describe above should be able to route on.
+
+Thus, we have a hybrid network which can get large quickly, on the basis of an
+open network, and which can then expand at the edges and internally in darknet
+form. If many users have even the opennet freenet, then somebody looking to
join
+in darknet mode should be able to find people he knows who are already running
+it, knowing that his node will not be exposed, because he connects as a pure
+darknet node. The hope is that once a certain critical density is reached, the
+majority of new nodes will have at least some darknet connections.
+
+Also the network is a "testnet", meaning that nodes report their status to a
+central point, and that developers can remotely log into nodes to browse logs;
+this makes debugging significantly easier and it is hoped that we can run a
+testnet in parallel with the production network for some time.
+
\section{Conclusion}
We have described a new version of Freenet based on constructing an