Keeping to your example (TTL of 4, 3 connected hosts at each node), you gave us this:
Quote:
3**4 + 3**3 + 3**2 + 3**1 = 81 + 27 + 9 + 3 = 120
|
And that's is absolutely correct. You're also correct that if 70% out of 120 were freeloaders, you'd only have a mere 36 nodes that could give you a possible response.
BUT, that is only in the current scenario, where you send a query to each connected node, regardless it is a freeloader or not. Under the scenario you are proposing, to refrain sending a query to a node known as a freeloader, you will end up with a different number.
If 70% of the 3 connected nodes would be a freeloader (2.1 ~ 2), then you'll end up with 1 (0.9) non-freeloader per 3 nodes. So:
1^4 + 1^3 + 1^2 + 1^1 = 10.
10 possible nodes, in comparision to 36 possible nodes is a drastic reduction in my opinion. In both your and my case, we're also assuming an even spread of freeloaders, which is obviously never the case. What if 3 out of 3 connected nodes turn out to be freeloaders - you'd not be sending out *any* queries to anyone.
However, I can agree that you could have a preference for nodes that seem to return more results on average, although you should never refrain from sending a Query message.
-- Mike
-- Mike