Node discovery.

I tried several times running a freenet (transient) node.  I noticed the
following items:

-The first times i failed to get even one working node in my nodelist.
It took a maillist/irc chat to get the first node refererences that did
work.
- After that i did not notice any new  nodereferenced added to my list
even as i found data in the network.
-After some time i dailed in again and only a few of the original nodes
still worked.
-Quite some of the nodes that did work did not successfully answer
replies. The one that do seem overloaded a lot of the time.
-The new seed node file on the website helps this a lot, but for some
reason i seem to find not a lot of data on this seeds.

Looking at the freenet protocol documents notice the following:
So there are 3 methods to find other nodes:
-Seed files (out off band)
-Data requests. This one is not yet clear to me. Does a node not always
pretend he is the originator of the data and cache it?
-Announcements.

Out of band now works fine for me. But freenet by design does not rely
on this.
Successfully request does not work for me.
I am not sure if announcement work for transient nodes. I think not.

I suppose the method "request" should be the main method.
>From the original documentation:

"Finally, as nodes process requests, they create new routing
tableentries for previously-unknown nodes that supply files, increasing
connectivity.  This helps new nodes to discover more of the
network(although it does not help the rest of the network to discover
them; for that, the announcement mechanism described in section  3.5is
necessary).  Note that direct links to data sources are created,
bypassing the intermediate nodes used.  Thus, nodes that successfully
supply data will gain routing table entries and be contacted more often
than nodes that do not."

>From this text (and from the source) it is not clear to me how unknown
nodes can supply files. How does a node that supplies data get routing
enrtries? I can only understand how a node that retreives data or routes
(proxy's) data gets an route entry.

However this not the best p2p scaleable method:
-Nodes that supply a lot of files get added to other nodes until they
get overloaded and throtling happens because datarequests fail.
-Sucking nodes (transients) or nodes that are not fully integrated Or
nodes that do supply very small amounts of diskspace or "upload"
bandtwith are not punished for this. It is even worse: if a node gets
more then it makes available to the network it is rewarded for this: it
has more nodereferences, and its routing table is filled better. Even if
this is not intentional this is not the wanted behaviour of any p2p
network.
-There are no facilities now for improving the mapping of the freenet
network to the real network topology. i.e. 2 clients in the same
subnet/lan can be very far apart from each other. putting them close
together would improve the network latenecy(-> low latency )

I am thinking about a solution. But any improvement bring along a
problem of making a node public.
One way would be to add a request type: Give me all the nodereferences
you know are working right now. (And add some stuff to prevent this data
to be related to a request just made). This however would make it
possible to create a spider that harverst all the nodes in the freenet
network. Any evil entity would have a possiblity to create a internet
filter to block any network to the inetadress/port he just harvested.
(Free university networks are already throttle  data on well known ports
for  p2p napster like software )
Is there any protocol thinkable that will prevent spidering by any bad
entity? (One reason i am writing this is that the company i work for has
just blocked access to slashdot.org on the proxy. So far 2-1 for the
BOFH)

I am aware of only one protocol that will prevent the overloading.
see http://blocks.sourceforge.net/protocol.html
basically if the maximum numbers of connections is reached all the next
connections will be refferied to a secondary server. One possible
network improvement might be is that a node automaticlly
services(announces) you nodes in the same subnet as your node.

A way to prevent leeching may be in changing the routing a little. If a
node requeust data, and your node does not have AND fails to find in in
the next node than add a routing entry to the node that requested it
(with a certain weight depending on the HTL it passed). There is a
bigger change that the node that requested it finds the data somewhere
else and in effect s likely to have htat that data. (Do you know enough
from the node that request data to add it to your node reference pool?).
This solves the leeching problem: a node that request a lot of data will
be added to a lot of routing tables and gets be default more request. It
would also not a bad idea to keep statistics of the behaviour of
neighbourhood nodes. (Response time might be valueable. )

I would like to add/test some of these theories myelf but so far i am
lost in the code of freenet: It is big, and I am lost in all the code.
This has 2 reasons: I am a C programmer, the object-oriented nature of
java gives me problems. There is no document (i could find) that
explains what is what in the source and why certain choices were made.
First time i even downloaded the wrong source (Freenet is obsolete, i
should have goitten freenet.). It would be useful if someone created a
version of the paper
http://freenetproject.org/cgi-bin/twiki/view/Main/ICSI in the way it in
the current development.  (I think only the main developers are capable
of this, sorry, even more work for you). But now the freenet source is
secure: it is obscure for someone who want to make a fast hack.


My questions:
-Please poke (big) holes in my story above. (and link link link!)
-Does anyone know more methods of creating better loadbalancing ?
-How do make nodes know eachother without letting the Basterd operator
from hell you are running a evil freenet node. Or  will freenet never be
resisted against network filtering?
-Why are nodes that request something from a node now not automattically
added to the requested node? (or are they?)
-Any other methods to prevent leeching p2p nodes? (how do you want to do
that in the distrinet?)
-Does anybody know where p2p discussions are made that surpass: "what is
the best p2p client to get my pr0n, C is better than java"

Maarten




_______________________________________________
freenet-tech mailing list
[EMAIL PROTECTED]
http://lists.freenetproject.org/mailman/listinfo/tech

Reply via email to