Freigeben über


On Bandwidth and Latency

High bandwidth = good.
Low latency = good.

There is, however, no direct relationship between the two – bandwidth is measured in (multiples of) “bits per second”, whilst latency is measured in milliseconds (the time between a packet being sent and it arriving at the destination).

Analogies with IT-related technologies invariably fail, and are most commonly (in my experience) made with cars, so who am I to fly in the face of fashion – a simplistic way to understand the difference between bandwidth and latency could be to imagine a motorway (or highway, if in the US):

The number of lanes in the motorway are analogous with the bandwidth, and its length is analogous with the latency.

A route between 2 locations may involve several hops (switching between motorways) – the “number of lanes used end-to-end” is the lowest common denominator all of them, and the latency is the sum of all the lengths.

 

When it comes to TCP communication we rely on acknowledgements (ACKs) so that the sender is informed which packets have been successfully received and it knows when it is able to send the next packet in the sequence.

In an environment where every TCP packet must be ACK’d, high latency leads to poor performance as the server is waiting for a lot of the time, ready to send the next block of data.

Windows has the concept of “TCP ACK frequency” which determines how many packets are acknowledged with 1 ACK – the default is 2 (every other packet).
If this is reduced to 1 then transferring a large amount of data across a high latency network will take longer.
If this is increased then on low latency networks (LANs) the rate of transfer will much higher.

For the most part, “streaming” data is sent via UDP which does not have the concept of acknowledgements (instead, the application may transmit UDP packets in the opposite direction, or utilize a separate TCP stream to act as a “keepalive”) – this allows high bandwidth, high latency networks to stream media without delays.

A lot of online games also use UDP for communication, so the latency is the bottom line and not much you can do about it – however there are some (such as World of Warcraft) which are TCP-based and use very little bandwidth but rely heavily on (low) latency.
Such games may benefit from reducing the TCP ACK frequency to 1 for an improved turnaround time for 2-way communication, but bear in mind that this is a global setting per network interface, so local networking is affected at the same time and file transfers may suffer as a result.

 

The control registry value to define TCP ACK Frequency for network interface with ID “{GUID}”:

Key: HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{GUID}
Value name: TcpAckFrequency
Value type: REG_DWORD

See the following TechNet article for detailed information on this key, and many more:
https://technet.microsoft.com/en-us/library/bb463205.aspx