On Jan 24, 2008, at 12:45 PM, Matthew Toseland wrote:

We take the median of the average ping time for each node. Then we smooth it
over a bit over time.

And because of the calculation both remote and local requests were
being rejected.

I don't see how this is possible.

Since this appears to be exploitable as a DoS, I have changed the
calculation to be based on the source (or average if a local request)
[r17235], which makes more sense to me anyway.

Does it? The average ping time is a reliable indicator of the node being
severely overloaded on CPU, network or some other vital resource.


Well, in this case it was a reliable indication that one of our peers maybe being overloaded (or defunct); and supposing that this node appears consistently bad to all it's peers, then as a whole the network does route around this node, but at one-extra-peer radius (it does so because my node is rejecting requests in his favor).

With respect to measuring CPU/network/etc. A ping average is a ping average, you're only measuring packet ack times (and then... available bandwidth). Think about it backwords... If an overloaded node with a high CPU load has a high ping average, then we should not route to them (backoff?). Not start refusing requests from our peers.

The underlying problem might be that the ping average is a feedback loop that can somehow be stuck ON. If a peer is marked as being super- latent, we will not send any packets to them, and thus we can't see that the latency is wrong. If the code is even written to such a respect, if that peer would then want to send us anything he would be ack'ing old packets (possibly making us think he is more latent???).

--
Robert Hailey

_______________________________________________
Devl mailing list
[email protected]
http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to