Re: returning results for partial downloads

"Zlatin Balevsky" <[email protected]>
Newsgroups gmane.network.gnutella.devel
Message-ID <[email protected]>
I believe most of these ideas are already implemented in the current
download mesh.  What is missing are the ideas for queueing discipline.
 That is a very interesting topic, and it would be a very exciting
challenge to come up with schemes that can beat bittorrent's
tit-for-tat.

Z

On 10/5/07, Philippe Verdy <[email protected]> wrote:
>
>
>
>
>
>
>
>
>  > -----Message d'origine-----
>  > De : [email protected] [mailto:[email protected]] De la part
>  > de Zlatin Balevsky
>  > Envoyé : vendredi 5 octobre 2007 20:22
>  > À : [email protected]
>  > Objet : [the_gdf] returning results for partial downloads
>
>  >
>  > Christian suggested that it would help rare file distribution if
>  > search results are returned for partial downloads.  After a little
>  > deliberation, it seems like this idea is very feasible.  The results
>  > will have to contain the bitprint and the ranges which have been
>  > successfully verified.  On the receiving side, clients can use the
>  > range information to determine if the entire file is available over
>  > the network and use that to decide if the result should be displayed.
>  >
>  > Comments?
>
>  I have also suggested this since long (about 3 years ago), it was debated
>  several times, but not implemented since, most probably because it caused
>  problems in the reliability of swarmed downloaded.
>
>  But in fact this was caused by implementation bugs, causing swarmed
>  downloads to fail quite often if the same source was changing during the
>  transfer the set of ranges it currently has for a file and if the range
>  supported by a source was not contiguous from the start of the file.
>
>  But if we want to support fast and reliable swarmed downloads, we must be
>  able to support downloading from any source not necessarily from the start
>  of the file, but from any position; so as long as the swarmed download does
>  not complete, our local file will have as many "holes" in it as the number
>  of active sources we have used, so our local copy will contain multiple, non
>  contiguous fragments.
>
>  But even in this case, we can still share the fragments we already have
>  downloaded provided that they have been FULLY checked according to the
>  fragment of TigerTree data that represents it. This is possible for each
>  localfile fragment that is FULLY covered by a node in the TigerTree data,
>  and of course, it requires having this TigerTree data ready for this check.
>
>  But the TigerTree datamay be downloaded asynchronously in a separate time
>  after the first fragments have been downloaded from one source (because that
>  source may not have TigerTree data for this file, and we need to find
>  another source for that TigerTree data).
>
>  Consequently, we'll have locally some fragments that are still missing, some
>  fragments that have been downloaded but can't be checked because they are
>  not fully covered by some matching TigerTree data node, and some fragments
>  that have been downloaded and that now match with the tigertree data. Only
>  these last fragments can be shared safely and immediately even if the file
>  is not complete.
>
>  For any fragment that was previously downloaded, but that reveal later to be
>  corrupted according to the TigerTree data node we have now and that covers
>  it completely, such fragments must be dropped and reloaded from another
>  source. But this will continue to work because we have still not shared it.
>
>  This scheme works only because file fragments are checked before being
>  shares. And it benefits not only to rare files (allowing the number of
>  sources supporting a rare file to augment during the download by multiple
>  clients that still don't have a complete copy), but for ALL files on general
>  More generally it will avoid one client to steal ALL the upload bandwidth
>  from any uploader, because the uploader will be able to distribute its own
>  workload to lots of clients, if it only gives them a limited fragment size
>  before queueing again multiple clients with ongoing transfers):
>
>  the idea is to have for example N clients with active uploads in progress
>  plus N (or 2N: this is tuneable) clients temporarily idled in the requeueing
>  list. All the other newcoming candidate clients are queued with a lower
>  priority with the existing mechanism. In fact I would militate for an
>  implementation where each file can only have at most one active upload in
>  progress to any source, so this upload should be as fast as possible, but
>  limited to a small fragment size that can be checked immediately by the
>  receipinet according to TreeData.
>
>  Then that client is requeued, and other clients are served, but will be able
>  to use also the upload resources of the first served clients even if what
>  they have is partial. Each client that has successfully downloaded a
>  fragment will need to inform as soon as possible the uploading source so
>  that it can inform the other candidate clients to the same file that another
>  supplementary source is available that will help supporting the charge.
>  Rapidely this system will converge to faster speed for everybody.
>
>
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.