A discussion on #freenet leads me to suggesting this change to QueryReject 
behavior:

1. A sends B a request
2. B is overloaded, sends A a QueryReject, with an additional field indicating 
to wait until told otherwise.
3. A now assumes that B is overloaded, and any further requests to it will 
QueryReject, so it behaves as if they have without actually sending the 
message.
4. This state persists until B sends A a "go-ahead" message, or a timeout (1 
hour?) expires, in case B malfunctions and forgot who it owes a message.

The goal here is to reduce the message traffic to overloaded nodes without 
seriously changing network behavior.

The node needs a method for deciding when to send QRs and when to send 
go-aheads.  The node might keep a queue of nodes which have been sent QRs, and 
a list of nodes which have been sent goaheads, where it would pop a node off 
the QR list and send a goahead when it is not overloaded (at some reasonable 
rate), and send QRs to all requests from nodes in neither list, until the QR 
list is empty; then when the node becomes overloaded again, it would empty the 
goahead list, which would cause all requests to be QRed again.

Comments?

--
Benjamin Coates

_______________________________________________
Devl mailing list
[EMAIL PROTECTED]
http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to