I propose the following congestion control algorithm: Each node tracks all requests passing through it, and uses them to establish a current request send rate by AIMD (for each type of request). It sends a request every time it can, using a fair queueing algorithm - one queue from each node, and one queue from each local client (or one queue for all local clients). This may be biased by the utility of the nodes, so nodes which hardly ever answer requests *could* be deprioritized (this provides an incentive for them to get their act together). If a request from a remote node spends more than 10 seconds on the queue, we generate a RejectedOverload. This causes that node to back us off for a while, and hopefully to reduce their send rate, and gives them enough time to look elsewhere.
Advantages: - Flooding sources will be automatically quenched. - No leak of information on which requests are locally originated. - Can provide an incentive for nodes to answer requests (apart from the obvious anonymity advantages of doing so). Questions: - Can it work? I think so. The AIMD will automatically adjust to minimize the number of timeouts and RejectedOverload's. -- Matthew J Toseland - [EMAIL PROTECTED] Freenet Project Official Codemonkey - http://freenetproject.org/ ICTHUS - Nothing is impossible. Our Boss says so.
signature.asc
Description: Digital signature
_______________________________________________ Devl mailing list Devl@freenetproject.org http://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl