Network Health Improvements... I've been thinking about ways to improve the gnet, and have come up with a possible way to help.
Allow servents to share partial downloads.
Before you grab the noose to string me up to the nearest tree, hear me out...
If we modify the protocol slightly, then servents can receive query responses with partial downloads and know that they're partial.
In this way, a servent that is capable of downloading from multiple hosts can grab the partial file from host A while downloading the remainder from host B. This should allow files to propogate more quickly, since host A would provide download slots before it has successfully downloaded from host B. The hosts that A provides the partial download to would likewise be able to share their partial downloads to others. The end result is that files that would otherwise be rare would flow through the network in a pipelined manner, much like instructions on a processor.
I mentioned that the protocol would need to be modified slightly. I would imagine that the query response message would have to be modified a tad to make sure that servents which are not partial-file-aware would not download the partial files, thinking that they were getting complete files, and then start sharing the partials as completes. That would clearly be a "Bad Thing." I'll leave the particulars up to the real gnet development geniuses, but I honestly believe that this would greatly improve the distribution of large files in particular.
I do have one particular though...
Require servents to be share any file segment they have. For example, if servent A is downloading a 10KB file F from hosts B and C, then it is reasonable to assume that A will have file segments F[0..5KB-n] and F[5KB-10KB-n]. If host Q comes along to A and asks for segment 6KB-7KB, then A should be able to handle the request.
Comments? Suggestions?
-- Early |