Dave Cridland wrote:
On Wed Feb 13 13:13:26 2008, Lauri Kaila wrote:
If I understood you, a client should know its network capacity. Then
it tells that infromation to the other end so they can agree on the
best media fromat that doesn't exceed the limit. But isn't it almost
impossible to know actual end-to-end bandwidth beforehand unless some
kind of QoS is present?

Sometimes the user knows the bandwidth of the immediate upstream link. Often, though, they don't - people usually know the advertized maximum downlink bandwidth, but usually don't know either the upstream, nor the actual bandwidth of either direction.

The actual device may know it's immediate link rate. Sometimes, at least - often actual link rates are deeply buried inside weird APIs, and finding overhead, latency, and other somewhat related link characteristics isn't usually possible.

But there is indeed no practical way to know the end to end bandwidth short of measuring it, and that measurement is quite tricky. There's a very interesting paper on the subject of intermediate link measurement by van Jacobson, actually. People interested in this sort of thing can probably find it with a Google for pathchar, or download pchar (an open source implementation). You'll note it takes several minutes for each hop, and uses quite a bit of traffic to do so.
Fortunately, actually knowing the bandwidth is not necessary:

while (incoming_packet_loss)
{
   advertise_less_bandwidth();
   wait_for_a_bit();
}

--

Paul


Reply via email to