World Library  
Flag as Inappropriate
Email this Article

Bufferbloat

Article Id: WHEBN0030353647
Reproduction Date:

Title: Bufferbloat  
Author: World Heritage Encyclopedia
Language: English
Subject: Flow control (data), Queuing delay, Latency (engineering), Gogo Inflight Internet, Quality of service
Collection:
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Bufferbloat

Bufferbloat is a phenomenon in packet-switched networks, in which excess buffering of packets causes high latency and packet delay variation (also known as jitter), as well as reducing the overall network throughput. When a router device is configured to use excessively large buffers, even very high-speed networks can become practically unusable for many interactive applications like voice calls, chat, and even web surfing.

The bufferbloat phenomenon was initially described as far back as in 1985,[1] and gradually became more recognized as an issue. It gained more widespread attention starting in 2009.[2][3][4]

Overly large buffers have been placed in some models of equipment by their manufacturers. In such equipment, bufferbloat occurs when a network link becomes congested, causing packets to become queued in buffers for too long. In a first-in first-out queuing system, overly large buffers result in longer queues and higher latency, but do not improve network throughput and may even reduce goodput to zero in extreme cases.

Buffering

Bufferbloat as an issue is caused mainly by router and switch manufacturers making incorrect assumptions and buffering packets for too long in cases where they should be dropped, in an attempt to keep a congested link as busy as possible.

The rule of thumb for the network equipment manufacturers was to provide buffers large enough to accommodate 250 ms (or more) worth of traffic passing through a device. For example, that way, a router's 1 Gbit/s Ethernet interface requires a huge 32 MB buffer.[5] Such sizing of the buffers can lead to TCP's congestion-avoidance algorithms breaking, causing problems such as high and variable latency, and choking network bottlenecks for all other flows as the buffer becomes full of the packets of one TCP stream and other packets are then dropped.[6] The buffers then take some time to drain, before the TCP connection ramps back up to speed and then floods the buffers again.[7]

A bloated buffer has an effect only when this buffer is actually used. In other words, oversized buffers have a damaging effect only when the link they buffer for becomes a bottleneck. When the current bottleneck on the route from or to another host is not contended, it is easy to check whether it is bloated or not using the ping utility provided by most operating systems. First, the other host should be pinged continuously; then, a several-seconds-long download from it should be started and stopped a few times. By design, the TCP congestion avoidance algorithm rapidly fills up the bottleneck on the route. If downloading (and uploading, respectively) correlates with a direct and important increase of the round trip time reported by ping, then it proves that the buffer of the current bottleneck in the download (and upload, respectively) direction is bloated. Since the increase of the round trip time is caused by the buffer on the bottleneck, the maximum increase gives a rough estimation of its size in milliseconds.[8]

In the previous example, using an advanced traceroute tool instead of the simple pinging (for example, MTR) will not only demonstrate the existence of a bloated buffer on the bottleneck, but will also pinpoint its location in the network. Traceroute achieves this by displaying the route (path) and measuring transit delays of packets across the network. The history of the route is recorded as round-trip times of the packets received from each successive host (remote node) in the route (path).[9]

Mechanism

The TCP congestion avoidance algorithm relies on packet drops to determine the available bandwidth. It speeds up the data transfer until packets start to drop, then slows down the transmission rate. Ideally, it keeps speeding up and slowing down the transmission rate, until it finds an equilibrium to the speed of the link. However, for this to work, the packet drops must occur in a timely manner, so that the algorithm can select a suitable transfer speed. With a large buffer that has been filled, the packets will arrive at their destination, but with a higher latency. The packet is not dropped, so TCP does not slow down once the uplink has been saturated, further filling the buffer. Newly arriving packets are dropped only when the buffer is fully saturated. TCP may even decide that the path of the connection has changed, and again go into the more aggressive search for a new operating point.[10]

Packets are queued within a network buffer before being transmitted; in problematic situations, packets are dropped only if the buffer is full. 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. On newer routers, buffers have become large enough to hold several megabytes of data, which translates to time amounts in seconds required for emptying the buffers. This causes the TCP algorithm that shares bandwidth on a link to react very slowly as its behavior depends on actually having packets dropped when the transmission channel becomes saturated.

The problem also affects other protocols. All packets passing through a simple buffer implemented as a single queue will experience the same delay, so the latency of any connection that passes through a filled buffer will be affected. Available channel bandwidth can also end up being unused, as some fast destinations may not be reached due to buffers clogged with data awaiting delivery to slow destinations — caused by contention between simultaneous transmissions competing for some space in an already full buffer. This also reduces the interactivity of applications using other network protocols, including UDP or any other datagram protocol used in latency-sensitive applications like VoIP and games.[11] In extreme cases, bufferbloat may cause failures in essential protocols such as DNS.

Impact on applications

Any type of a service which requires consistently low latency or jitter-free transmission (whether in low or high traffic bandwidths) can be severely affected, or even rendered unusable by the effects of bufferbloat. Examples are voice calls (Voice over IP), networked gaming, video chat programs, and other interactive applications such as instant messaging and remote login. Latency has been identified as more important than raw bandwidth for many years.[12]

When the bufferbloat phenomenon is present and the network is under load, even normal web page loads can take many seconds to complete, or simple DNS queries can fail due to timeouts.[13]

Diagnostic tools

The ICSI Netalyzr[14] is an on-line tool that can be used for checking networks for the presence of bufferbloat, together with checking for many other common configuration problems.[15] The CeroWrt project also provides an easy procedure for determining whether a connection has excess buffering that will slow it down.[16]

Mitigations

The problem may be mitigated by reducing the buffer size on the OS[13] and network hardware; however, this is not configurable on most home routers, broadband equipment and switches, nor even feasible in today's broadband and wireless systems.[13] Some other mitigation approaches are also available:

Network scheduler

The network scheduler arbiter program that manages the sequence of network packets. It has been successfully used to significantly mitigate the bufferbloat phenomenon when employing the CoDel or the Fair Queue CoDel queuing discipline, because these algorithms drop at the head.

There are several other queuing disciplines available for active queue management, used in general for traffic shaping, but none of them fundamentally changes the situation, as although HTTP and VoIP may be buffered independently, each buffer will still be independently susceptible to bufferbloat. In practice, though, this may help mitigate,[13] for example as a result of one large buffer being split into multiple smaller buffers, or isolation of bufferbloat queues combined with prioritisation.

  • CeroWrt is an open source project based on OpenWrt with AQM.[13]
  • CoDel is the scheduler algorithm, with which a significant improvement can be achieved

See also

References

  1. ^
  2. ^
  3. ^
  4. ^
  5. ^
  6. ^
  7. ^
  8. ^
  9. ^
  10. ^
  11. ^
  12. ^
  13. ^ a b c d e f g
  14. ^
  15. ^
  16. ^
  17. ^

External links

  • Bufferbloat.net, a central repository for bufferbloat researchers
  • Dashboard over Bufferbloat, a monitoring tool for self-interested people
  • BufferBloat: What's Wrong with the Internet? A discussion with Vint Cerf, Van Jacobson, Nick Weaver, and Jim Gettys
  • Google Tech Talk on YouTube April, 2011, by Jim Gettys, introduction by Vint Cerf
  • Bufferbloat: Dark Buffers in the Internet — Demonstrations Only on YouTube April, 2011, by Jim Gettys, introduction by Vint Cerf
  • Bufferbloat: Dark Buffers in the Internet — Demonstrations and Discussions on YouTube 21 minute demonstration and explanation of typical broadband bufferbloat
  • LACNIC - BufferBloat on YouTube May 2012, by Fred Baker (IETF chair) in Spanish, English slides available [1]
  • tech-net - network queue lengths, a March 2009 discussion concerned with buffer bloat
  • TSO sizing and the FQ scheduler (Jonathan Corbet, LWN.net)
  • Mitigations and Solutions of Bufferbloat in Home Routers and Operating Systems
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 


Copyright © World Library Foundation. All rights reserved. eBooks from Project Gutenberg are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.