Bufferbloat

When a router or switch is configured to use excessively large buffers, even very high-speed networks can become practically unusable for many interactive applications like voice over IP (VoIP), audio streaming, online gaming, and even ordinary web browsing.

In such equipment, bufferbloat occurs when a network link becomes congested, causing packets to become queued for long periods in these oversized buffers.

In a first-in first-out queuing system, overly large buffers result in longer queues and higher latency, and do not improve network throughput.

[2] According to some sources the most frequent cause of high latency ("lag") in online video games is local home network bufferbloat.

The size of the buffer serving a bottleneck can be measured using the ping utility provided by most operating systems.

[7] Most TCP congestion control algorithms rely on measuring the occurrence of packet drops to determine the available bandwidth between two ends of a connection.

So that the algorithms can select a suitable transfer speed, the feedback about packet drops must occur in a timely manner.

On older routers, buffers were fairly small so they filled quickly and therefore packets began to drop shortly after the link became saturated, so the TCP protocol could adjust and the issue would not become apparent.

The TCP algorithm is unaware the link is congested and does not start to take corrective action until the buffer finally overflows and packets are dropped.

Since the continuation of a TCP download stream depends on acknowledgement (ACK) packets in the upload stream, a bufferbloat problem in the upload can cause failure of other non-related download applications, because the client ACK packets do not timely reach the internet server.

[16] Notable examples include: Notable examples of solutions targeting the endpoints are: The problem may also be mitigated by reducing the buffer size on the OS[10] and network hardware; however, this is often not configurable and optimal buffer size is dependent on line rate which may differ for different destinations.

[21] For the longest delay TCP connections to still get their fair share of the bandwidth, the buffer size should be at least the bandwidth-delay product divided by the square root of the number of simultaneous streams.