On 31 Aug 2007, [EMAIL PROTECTED] wrote:

> I'd prefer a less draconian approach of sharing resources equally
> between peers too. There are too many limits and too many reasons to
> get punished. I doubt anyone has the slightest clue about the global
> real-world effect of the diverse queing and limiting strategies,
> especially if you take all the bugs and corner cases into
> account. Furthermore, everyone has different aims and
> motivation. Some want to improve fairness whereas there's little
> agreement about what is fair and what isn't in this context. Others
> just want to maximize the throughput.

There are several deterministic versions of fair.

   - First come, first serve.
   - Minimize time from request to completion.
   - Maximize content diversity.
   - Maximize throughput.

All of these can be on a per request or per peer basis.  There are
also bounds on resources such as the number of sockets/file
descriptors that will be open at one time.

The problem with the "first come, first serve" is that large files
will tend to dominate the queue.  As the shorter files finishes, they
can be replaced with large requests.  However, this is easiest to
implement.

In a queue with only one served file the minimized wait is to put
shortest requests first.  This has the problem that the downloading
peer might be bandwidth limited.  I believe that the multiple serving
is really only to deal with a limit bandwidth peer.  Ie, the multiple
serving is actually to maximize throughput.  Certainly another case is
that several slow peers dominate the active set, while faster peers
are left waiting in the queue.

A better single served file algorithm would require accurate estimates
of bandwidth between peers as well as the file size.  This is actually
the real time for the download.

There are several active and passive bandwidth measurement techniques.

  "http://www.caida.org/tools/taxonomy/performance.xml";
  "http://www.cs.ucla.edu/NRL/CapProbe/";

I have been investigating these to see if it is possible to
dynamically determine the "level 1" bandwidth of a node.  This would
allow for better ultra/leaf decision making.  Possibly automatic (and
dynamic) bandwidth limits.  However, most of the methods in the URLs
are concerned with node to node bandwidth and capacity measurements.
Unfortunately many of the mechanisms require pcap type functionality
and/or root access.  Co-operation of both sender and receiver can
remove this requirement.

Another reason for multiple file serving is to leverage multiple
downloads of the same source.  This and dmesh further complicate any
analysis of the minimum wait time.  However, peers requesting rare
content are less likely to be able to find alternate sources.  A
semblance of rarity is in upload_stats as "bytes_sent-low/size".  At
least this is the contribution we have made to replicating this part
of our library on gnet.

Another good reason to measure the bandwidth is to match bandwidth of
peers.  This will help to minimize the open sockets and file
descriptors.  Consider a T1 host serving files to DSL and dialup
nodes.  If everyone is fair, it is best for the T1 host to serve the
DSL nodes and let them distribute the content to the dialup nodes.

Anyways, most of these goals seem to be in competition.  However, I
think there is a win if we could add bandwidth measurements to the
queuing algorithm.  Having a large number of sockets and fds dedicated
to this is just a way to try and get around measuring bandwidth.
However, laggards downloading large files at a slow rate will
eventually start to dominate the queue without bandwidth measurement.

... ok, I will stop now so Christian can blow holes in everything I
have said.

Regards,
Bill Pringlemeir.



-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
gtk-gnutella-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel

Reply via email to