* Matthew Toseland <toad at amphibian.dyndns.org> [2007-11-30 01:26:40]:

> PROPOSAL:
> 
> Requests are by default queued. Queued is in fact a stage which requests go 
> through once it is decided they need to be routed. Requests MAY have 
> deadlines, this is an interesting question which we should examine later: it 
> has some serious disadvantages in terms of traffic identification and 
> applying different policy to different requests, but it may have some major 
> advantages too. In any case, there is initially no timeout for a request, or 
> a very long timeout.
> 
> When a node has spare capacity in terms of the number of requests it can 
> carry, it sends a message to this effect, inviting requests, to each of its 
> peers. A node receiving such a message will normally send the queued request 
> closest location-wise to the sender, although timing concerns may factor in 
> also. Within a short period several requests will have been received, and the 
> node will accept one and reject the others.
> 
> How to define spare capacity? Initially we simply have an arbitrary number of 
> requests. We can tune this, or introduce an algorithm to tune it, later.
> 
> How to prevent all requests from going to the fastest nodes rather than those 
> best suites for them? Calculate the rate of acceptance of requests for each 
> node. Calculate the median, double it, and don't let any node accept requests 
> faster than this. Obviously this is a tunable heuristic! The point is that we 
> want to route to the node with the best location, rather than the fastest 
> node, but we don't want to have to always wait for the slowest node.
> 
> One obvious problem is that requests which are not close to any of our nodes 
> may not get sent for a very long time, and worse, they may clog up the node 
> so that requests which are closer to the target don't get through. Partly the 
> answer is that this won't happen in a non-perverse network: a node's location 
> should be reasonably close to that of its peers. The other part of the 
> solution is to implement a timeout: after a request has been queued for a 
> certain period and not made any progress, it backtracks to try to find a 
> better node. We can keep the existing HTL mechanism: if we backtrack, our HTL 
> is reduced, if we make progress, our HTL is reset. And there may be a request 
> deadline imposed also, although as I said there are issues with this.
> 
> 
> 
> Obviously I expect the above will evolve over time. However, IMHO it would be 
> significantly better at matching demand to supply than the current algorithm 
> while not sacrificing routing, and would therefore be a major improvement in 
> performance, which is one of the most important problems Freenet needs to 
> deal with.

You proposal is far away from tit-for-tat ... How do you prevent
leachers from forgetting to send a "I want to process requests" flag ?

NextGen$
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20071130/8f5711d6/attachment.pgp>

Reply via email to