m0davis suggested that we should use pSearchFailed (or more detailed stats), despite backoff. The reason we don't do this is that if we did, a node in the RT would get a few queries and then its pSearchFailed would increase, and subsequently it would not be routed to at all for a very long time, because of it's very high estimate. This is the reason that the running averages are not appropriate for QRs and timeouts - because they don't recover. If we did use them, we would have to also have a mechanism to ensure that the nodes were contacted after they ceased to be backed off, DESPITE their bad estimates. This was a significant part of the justification behind instating backoff in the first place.
Let me try to put my suggestion for reinstating pSearchFailed in context. Implicit in my derivation of estimate() was that all of the estimators used in the formula were as accurate as reasonably possible. The worse the estimators, the worse routing will be. Therefore, it is out of the question to be unrealistically optimistic about new nodes. For a completely new node, we should either use the global estimators, or ask other nodes for estimator data on the it.
I don't know what the objections to this proposal might be. It suppose some might say that we would not route to new nodes often enough. But exactly how much is "enough"?
It might also be objected that we would eventually not route to new nodes if we used global estimators. But that simply isn't true. Since global estimators are based on the nodes we actually route to, they are a bit more optimistic than average. However, for any particular key, the global estimator isn't more optimistic than our best node. Therefore, new nodes would be queried if we got QRs or DNFs in the top "half" of the "specialized" bunch.
-Martin
_______________________________________________ Devl mailing list [EMAIL PROTECTED] http://dodo.freenetproject.org/cgi-bin/mailman/listinfo/devl
