Re: returning results for partial downloads
Michael Rogers <[email protected]>
| Newsgroups | gmane.network.gnutella.devel |
|---|---|
| Message-ID | <[email protected]> |
Serguei Osokine wrote: > Nice to see someone doing some math on that subject. However, > after the first cursory reading I was not able to understand - what > is it exactly that you are aiming to maximize? Is it your goal to > maximize the cumulative upload rate of the network, or you also > want to divide it between the downloaded in some fair way? What > is your definition of fair, if this is the case? I mean, you need > to calculate a single one-dimensional value (call it the algorithm > quality or utility) for each algorithm to compare them, right? What > is this value and how is it calculated? Hi Serguei, Each node is selfishly trying to maximise the number of bytes downloaded per byte uploaded - the expected utility of uploading a byte is the number of bytes you can expect to download in return, based on the number of bytes uploaded to and downloaded from each peer so far. I've tended to interpret that in terms of maximising the download speed for a given upload speed, but as far as I can see you could use the same strategies to minimise the upload speed for a given download speed. Because there's no explicit choke/unchoke signalling and the utilities are cheap to calculate, the selection could be made very frequently (send a packet, choose the recipient of the next packet, repeat). I haven't explicitly aimed to maximise the total download speed, but I'm hoping the best selfish strategies will also be Pareto efficient as in the prisoner's dilemma. Fairness is harder, especially since there seem to be two contradictory definitions - "equal benefit for all" or "benefit proportional to contribution" - so I tend to steer clear of that word. ;-) In terms of comparing strategies, you could compare bytes downloaded per byte uploaded or bytes downloaded in a given time. Cheers, Michael