Matthew Toseland wrote:
> On Tuesday 21 August 2007 00:13, Matthew Toseland wrote:
>> On Monday 20 August 2007 21:59, Malkus Lindroos wrote:
>>> Of course it depends on what the ping time is supposed to reflect? At
>>> least for my nodes it seems to reflect the load of the network the node
>>> is connected to, not the load of the node or its internet connection.
>> It's a combination of the round trip time under ideal conditions (<0.2ms on 
> my 
>> LAN), and the effect of the traffic on the links between the nodes 
> (including 
>> rate limiting).
> 
> Sorry, not just network load, ping time is highly sensitive to CPU load on 
> both ends too. This is why it's such a useful metric; we can't easily 
> directly measure CPU load, and even if we create platform specific hacks, 
> we'd be fooled by idle-time processes etc.

OK - so there comes the problem. My node CPU load is only about 5-10%.
It has clearly idle time, and the maxpingtime is the primary limiter.
Some connected nodes have lower ping times than others - while many
nodes have ping times of 3000-4000 ms, some stay at 500. My node also
has plenty of free bandwidth and its hard disk is not overloaded.

So in effect, the average ping is reflecting the CPU loads, bandwiths,
disk usage, etc. of my node + the nodes is connected to. This eliminates
load distribution among the nodes, as my node does not take more work
from the overloaded nodes because the overloaded nodes are limiting it.
When the load of the neighbouring nodes worsens, they also limit my
nodes ability to take load. I.e. the main problem in the ping times is
that it is determined not only by my node, but also the nodes that it is
connected to. In addition, the ping time is determined by a principle of
the weakest link - the ping time of a node becomes high if only one of
the nodes is overloaded.

This also provides a possibility for a denial of service attack against
the 0.7 network - from the code it is not too difficult for someone
wishing to impede free speech (or the 0.7 against 0.5 networks) to
create bogus nodes that report way too high ping times. This would
severely hurt the 0.7 network from reaching its potential.

Because of this, there should at least be an option to disable the use
of maxpingtimes in the config for now and see if the network would
become faster.

Over time, the mechanism could be divided to several parts:
 - pinging (configurable) internet servers outside freenet to determined
the limit for bandwith
  - could only be done for the first time the node is run to determine a
bw -based limit for the node
 - pinging self within freenet to determine true load based only on the
load of the node

-- 
Malkus Lindroos


Reply via email to