Slashdot Mirror


Bufferbloat — the Submarine That's Sinking the Net

gottabeme writes "Jim Gettys, one of the original X Window System developers and editor of the HTTP/1.1 spec, has posted a series of articles on his blog detailing his research on the relatively unknown problem of bufferbloat. Bufferbloat is affecting the entire Internet, slowly worsening as RAM prices drop and buffers enlarge, and is causing latency and jitter to spike, especially for home broadband users. Unchecked, this problem may continue to deteriorate the usability of interactive applications like VOIP and gaming, and being so widespread, will take years of engineering and education efforts to resolve. Being like 'frogs in heating water,' few people are even aware of the problem. Can bufferbloat be fixed before the Internet and 3G networks become nearly unusable for interactive apps?"

525 comments

  1. Correction: JIM GETTYS by Anonymous Coward · · Score: 4, Informative

    http://en.wikipedia.org/wiki/X_Window_System

    1. Re:Correction: JIM GETTYS by Anonymous Coward · · Score: 0

      You mean Jim Getty7

    2. Re:Correction: JIM GETTYS by Anonymous Coward · · Score: 0

      Hung up on a getty?

  2. Really? by Anonymous Coward · · Score: 2, Insightful

    Latency is bad? Bigger buffers = more latency?

    1. Re:Really? by Anonymous Coward · · Score: 3, Informative

      I've no idea if this post explains it correctly or not (one of the replies implies that it doesn't), but if it does, it should be nearer the top of the page, hence my posting it here. :-)

    2. Re:Really? by jimbolauski · · Score: 1

      yes managing the buffer queue takes time, the larger the buffer the longer the line, the more time must be spent telling packets where to stand in line.

      --
      Knowledge = Power
      P= W/t
      t=Money
      Money = Work/Knowledge so the less you know the more you make
    3. Re:Really? by houstonbofh · · Score: 1

      But also, those buffers stack... As stated in the article, most of the Internet is on XP with a tiny buffer for the nic. As they move to Win7 or even Linux, the txqueuelen gets unreasonable large, and the problem gets worse. And also, telling those packets where to stand in line generates more packets.

    4. Re:Really? by Idbar · · Score: 1

      As someone that has been working on this topic for quite sometime, I have to admit, it's the first time I hear this term. Perhaps he's trying to coin it. But the Wikipedia article about Random Early Detection may lead to better understanding (and references) to the problem of congestion control in TCP networks.

    5. Re:Really? by Tubal-Cain · · Score: 1

      What's a good size for txqueuelen?

    6. Re:Really? by Shotgun · · Score: 1

      Yes. The ATM protocol was limited to 64byte packet for this very reason.

      --
      Aah, change is good. -- Rafiki
      Yeah, but it ain't easy. -- Simba
    7. Re:Really? by houstonbofh · · Score: 1

      I have been reading for the past hour to find that out, and it is not an easy answer. One guy actually found the e-mail discussion of when it was raised in the linux kernel to 1000. A txqueulen or 1000 is blindly fast on gig-e, fast on 100meg fast-e, and takes 1.2 seconds to clear on 10baseT. I know that no one uses 10baseT, but they use Wifi, and that can actually go down to 6 or even 1 meg...

      I looked in my access points, and the wifi side had a txqueulen of 199, and the ethernet side had one of 1000. I set both sides to 100, and I am monitoring now. So far I have heard a lot lest "Whats up with the wireless?" complaints, and it has been 30 minutes.

    8. Re:Really? by skids · · Score: 1

      Not really on the last point: there are a number of flow-snooping queueing algorithms which, when properly configured, could allow TCP flows to be shallowly buffered on a per-flow basis. Most CISCO gear implements WRED with per-flow buffers, but of course it is likely that an ISP trying to squeeze performance out of a core router will turn this off.

      Unfortunately it seems SFQ/SFB development has stalled and isn't appearing in vendor equipment anytime soon.

      Asking OSes to implement these queueing algorithms on their outbound buffers is not so much fiddling with the protocol as just recognizing that a network card can be modeled as a router with only one path through it.

    9. Re:Really? by houstonbofh · · Score: 1

      As stated in TFA, most networks are running no AQM at all. Not RED, not WIRED... Nothing. After all, you don't fear the dog till it bites you.

    10. Re:Really? by skids · · Score: 1

      My point being that the AQM technologies do not use packets to "tell those packets where to stand in line" irrespective of whether they are properly implemented or not. Even those technologies that do implement source-quench-style signalling do so in packet (or cell) overhead bits.

    11. Re:Really? by rgviza · · Score: 1

      ... and eventually you reach a point where you are spending more cycles managing the buffer queue than you spend processing it. There is definitely a point of diminishing returns with buffers.

      --
      Don't kid yourself. It's the size of the regexp AND how you use it that counts.
    12. Re:Really? by Unequivocal · · Score: 1

      Thank you. I wasn't familiar with that term but the article you provided helps clear up what the hay this is all about..

    13. Re:Really? by badkarmadayaccount · · Score: 1

      53 bytes, actually, and ATM sucks for a whole lot of reasons, which I'm not going to detail here - Google is your friend.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  3. Definition, please by Megane · · Score: 5, Insightful

    I'm so glad the term has been defined so that I know what the hell we're talking about here. Oh wait, no it hasn't.

    Okay, then I'll RTFA. Oh wait, two screens worth of text later and it still hasn't.

    I'd like to change the topic now to the submarine that's sinking the English language: jargonbloat.

    --
    #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    1. Re:Definition, please by Megane · · Score: 5, Informative

      For what it's worth, TFS seems to be linking into the middle of the story, so maybe that's part of my problem. Still, it's really annoying to be told about this new problem with new jargon word, that's going to make the sky fall any day now, without knowing just what the hell it is.

      The previous article seems to explain things a little better: http://gettys.wordpress.com/2010/12/03/introducing-the-criminal-mastermind-bufferbloat/

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    2. Re:Definition, please by shiftless · · Score: 1, Insightful

      Yeah, I see this a lot with nerds. It's pretty fucking annoying when someone launches in a long winded dissertation on some obscure subject, without even bothering to put an introductory paragraph at the top giving even the briefest overview of what the fuck they're even talking about. I shouldn't have to read fifteen paragraphs just to get a basic birds-eye view of what the problem is, a framework which I can then proceed to fill in by reading into the details.

    3. Re:Definition, please by drooling-dog · · Score: 4, Insightful

      They know something you don't, they want you to know it, and they want to keep it that way for as long as possible...

    4. Re:Definition, please by Nursie · · Score: 2

      He's written a whole series on this over the course of months, if he doesn't explain it a long way into the series then blame the slashdot summary, not the guy doing the research/testing and telling the world about it.

    5. Re:Definition, please by mcgrew · · Score: 3, Informative

      There are two reasons I can think of why people write like that. One is they're poor communicators, the second is they want to appear intelligent.

      It seems there are two kinds of stories posted here lately -- science and tech stories written for the non-nerd by non-nerds like one last week that explained what a CPU was (!), and stories like this that coin new jargon and don't explain it, or use an acronym that most folks here will misunderstand, like using BT when referring to Britich Telecom when most of us think of BitTorrent when we see BT.

      Maybe I'm just getting old.

    6. Re:Definition, please by Megane · · Score: 5, Insightful

      Actually, I blame the submitter. It is well known that Slashdot "editors" don't edit. They merely choose the least worthless articles out of the slush pile and push the button, sometimes using copy and paste to combine two similar submissions. Even my above link was still to the middle of the story, but it explains the core concept best.

      I also place a teensy bit of blame on the blogger, for not linking the first use of the word to the previous article. But he couldn't expect to get linked into the middle of the series.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    7. Re:Definition, please by nedlohs · · Score: 1

      There's a link to the definition in the first four words of the article. Do you want every peice of writing to repeat the definitions of every term it uses?

    8. Re:Definition, please by sunking2 · · Score: 1

      Not having read or ever heard of this term before my take on the word is that because people have so much memory and streamed apps can have such huge buffers and are so popular you constantly have a few people pegging their network connection to initially fill their buffer even though they don't have to, needlessly congesting the network and possibly impairing those who need low latency interactive connections.

      But that's just a guess.

    9. Re:Definition, please by Anne_Nonymous · · Score: 1

      A picture is worth a thousand words: bloatse.jpg

    10. Re:Definition, please by germansausage · · Score: 1

      In Canada references to the Bank of Canada in news stories have lately been abbreviated to BOC. When I read "BOC to raise interest rates" I always wonder why the Blue Oyster Cult is doing that.

    11. Re:Definition, please by jg · · Score: 5, Insightful

      You asked, I just provided:

      http://gettys.wordpress.com/what-is-bufferbloat-anyway/

      Good question.

      Bufferbloat is the cause of much of the poor performance and human pain using today’s internet. It can be the cause of a form of congestion collapse of networks, though with slightly different symptoms than that of the 1986 NSFnet collapse. There have been arguments over the best terminology for the phenomena. Since that discussion reached no consensus on terminology, I invented a term that might best convey the sense of the problem. For the English language purists out there, formally, you are correct that “buffer bloat” or “buffer-bloat” would be more appropriate.

      I’ll take a stab at a formal definition:

      Bufferbloat is existence of excessively large (bloated) buffers into systems, particularly network communication systems.

      Systems suffering from bufferbloat will have bad latency under load under some or all circumstances, depending on if and where the bottleneck in the communication’s path exists. Bufferbloat encourages congestion of networks; bufferbloat destroys congestion avoidance in transport protocols such as HTTP, TCP, Bittorrent, etc. Without active queue management, these bloated buffers will fill, and stay full.

      More subtlety, poor latency, besides being painful to users, can cause complete failure of applications and/or networks, and extremely aggravated people suffering with them.

      Bufferbloat is seldom detected during the design and implementations of systems as engineers are methodical people, seldom if ever test latency under load systematically, and today’s memory is so cheap buffers are often added without thought of the consequences, where it can be hidden in many different parts of network systems.

      You see manifestations of bufferbloat today in your operating systems, your home network, your broadband connections, possibly your ISP’s and corporate networks, at busy conference wireless networks, and on 3G networks.

      Bufferbloat is a mistake we’ve all made together.

      We’re all Bozos on This Bus.

    12. Re:Definition, please by Nefarious+Wheel · · Score: 3, Funny

      The Evil Buffer Stuffer Strikes Again!

      --
      Do not mock my vision of impractical footwear
    13. Re:Definition, please by c0lo · · Score: 1

      Actually, I blame the submitter. It is well known that Slashdot "editors" don't edit.

      This is how some commenters get their chance to be rated informative or insightful - part of the "rules of the game", I guess.
      The more comments, the better /. stats to show to advertisers. Given the fact that's free and also given the fact that it does have the purpose of wasting geek time, I can't complain.

      Besides, I really like the title of the linked blog entry "Whose house is of glasse, must not throw stones at another." - I didn't know the expression (so, no THAT worse of a linking place, not for me at least).

      --
      Questions raise, answers kill. Raise questions to stay alive.
    14. Re:Definition, please by Anonymous Coward · · Score: 0

      Blue Oyster Cult? I'd be getting mixed with the British Oxygen Company.

    15. Re:Definition, please by c0lo · · Score: 1

      Yeah, I see this a lot with nerds. It's pretty fucking annoying when someone launches in a long winded dissertation on some obscure subject

      Given that's a link on a personal blog and not in a newspaper or scientific journal, what's the basis of your whingeing? Author's blog, his choice of a style and subject... you don't like it you don't read but wait for an official publication.

      --
      Questions raise, answers kill. Raise questions to stay alive.
    16. Re:Definition, please by c0lo · · Score: 1

      There are two reasons I can think of why people write like that. One is they're poor communicators, the second is they want to appear intelligent.

      That's what I call "failure of imagination". Wouldn't it be more plausible that what you read is actually a personal blog?

      --
      Questions raise, answers kill. Raise questions to stay alive.
    17. Re:Definition, please by maroberts · · Score: 1

      The Evil Buffer Stuffer Strikes Again!

      I'd love to be the Evil Buffy Stuffer :-)

      --

      Donte Alistair Anderson Roberts - hi son!
      Karma: Chameleon

    18. Re:Definition, please by GooberToo · · Score: 4, Insightful

      Yeah, I see this a lot with nerds. It's pretty fucking annoying when someone launches in a long winded dissertation on some obscure subject, without even bothering to put an introductory paragraph at the top giving even the briefest overview of what the fuck they're even talking about.

      Its a series of blog articles. He presumes you've been following his series of articles whereby he introduces the topic and experimentally validates his assertions. If you didn't get the introduction, blame your own laziness or the failure of the poster to also provide a link to the first blog post in the series.

      Basically you're complaining because you jumped to the middle of a book and then bitched that the chapter you started reading doesn't have an introduction. Most people will wonder what the hell is wrong with you. To then attack the author for other's failings is bizarre to say the least. And all this ignores that blogs are frequently written to be familiar and causal reading; which also entirely invalidates your general tone.

    19. Re:Definition, please by GooberToo · · Score: 1

      How is this not an introduction?

      Each of these initial experiments were been designed to clearly demonstrate a now very common problem: excessive buffering in a network path. I call this "bufferbloat". We all suffer from it end-to-end, and not just in our applications, operating systems and home network, as you will see.

      And since you are too lazy or simple minded to read the original link and follow, here's the introductory blog post.

    20. Re:Definition, please by corbettw · · Score: 1

      Bufferbloat is existence of excessively large (bloated) buffers into systems, particularly network communication systems.

      What the hell does that even mean? I'll admit I'm no network expert, just a humble sysadmin. But this definition appears to be nothing more than a tautology. "Bufferbloat is the existence of bloated buffers." WTF?

      --
      God invented whiskey so the Irish would not rule the world.
    21. Re:Definition, please by Anonymous Coward · · Score: 0

      Guess what though, its still annoying to that person. Its his comment, not in a newspaper or scientific journal, what's the basis of your bitching about his bitching? Oh thats right, its conversation, and your post is completely irrelevant.

    22. Re:Definition, please by apoc.famine · · Score: 1

      No, they don't even choose the least worthless. Skim the firehose and it's clear that some very well worded, descriptive stories are left to rot in favor of nonsensical or blatantly incorrect ones. Hell, one of my submissions long ago was 2 short paragraphs with links and a solid summary. It got rejected for a one line factually incorrect story that linked to a blog which didn't have any links to the original source.

      --
      Velociraptor = Distiraptor / Timeraptor
    23. Re:Definition, please by Anonymous Coward · · Score: 0

      A third possibility is that they only want to talk to equals, not to everyone.

    24. Re:Definition, please by JWSmythe · · Score: 1

      ... except that was in the International section, and they were really referring to...

          Bank of China
          Bank of Chile
          Bank of Constantinople (now Bank of Istanbul)

          What is this oyster you are referring to, and why is it blue?

      --
      Serious? Seriousness is well above my pay grade.
    25. Re:Definition, please by ObsessiveMathsFreak · · Score: 1

      Systems suffering from bufferbloat will have bad latency under load under some or all circumstances, depending on if and where the bottleneck in the communication's path exists. Bufferbloat encourages congestion of networks; bufferbloat destroys congestion avoidance in transport protocols such as HTTP, TCP, Bittorrent, etc. Without active queue management, these bloated buffers will fill, and stay full.

      So, you're saying that buffers are like bureaucracies and no matter how large you make them they will always make enough busy work and red tape to keep themselves occupied, slowing down everything which passes through them? Hell's bells, the Iron Law of Bureaucracy even applies to computer networks.

      --
      May the Maths Be with you!
    26. Re:Definition, please by hairyfeet · · Score: 3, Interesting

      Now someone can point out if this humble repair guy is wrong, but from what I read of TFA it sounds to me like TCP is the problem and not the buffers. What TCP is doing is slamming the network until it drops packets, and then using that to determine speed, correct? Doesn't sound like an efficient way to allocate resources when even grandma has a fat cable or DSL pipe. It would be like everyone trying to shove their way to the front of a line and only backing off when getting punched in the face.

      So again feel free to correct if I'm missing something, but wouldn't the better solution be to come up with a new way to allocate space? Perhaps a packet every so often that says "Hi, how much bandwidth may I have please?" which the server or node would reply "You can have X" and then everyone wouldn't be trying to slam and your route would be based on which gives you the largest X.

      So maybe I'm missing something, but it seems to be a choice of that or rip every buffer out of everything from the home modem on up. Considering even the el crappo motherboards are gigabit now, and even the CCC (Cheapo Chinese Crap) home routers have decent sized buffers on them this would seem like a more doable solution. Because while the "slam and back off" method probably worked really well in the past I just don't see having millions of people trying to slam their way to the head of the line as the most efficient way to utilize a limited resource, and no matter how big a pipe you have it is still just that, limited.

      --
      ACs don't waste your time replying, your posts are never seen by me.
    27. Re:Definition, please by betterunixthanunix · · Score: 2

      I think the idea is that there is a certain size beyond which these buffers will create more problems than they solve, or perhaps more accurately that there is a threshold ratio of buffer size to the bandwidth of a link which, once exceeded, will create problems. Bufferbloat is just an easy term to refer to this condition.

      But I am not the author, so perhaps he can chime in.

      --
      Palm trees and 8
    28. Re:Definition, please by Anonymous Coward · · Score: 0

      Funny, I think of BlueTooth and British Telecomm before I think of BitTorrent. But Then, what do I know.

      By The way, I can't help But Think of the book, The BFG. It's a kids book.

    29. Re:Definition, please by davidbrit2 · · Score: 5, Informative

      I'll attempt to translate.

      TCP has to be able to estimate how fast* it can send data, because there's no way it can know definitively the link speed, capacity, and reliability between your system and a remote system. It does this by progressively getting faster until it starts detecting transmission problems between the two systems, at which point it backs off and slows down. Ideally, you hit a nice equilibrium at some point.

      On a proper network, if some router along the path is at capacity, either internally, or along one of its outgoing paths, it should drop the packets it can't handle in a timely fashion. This seems counterintuitive at first, but remember that TCP handles the guaranteed transmission already - it will retransmit packets that didn't arrive. If the router is holding these packets in a buffer, and sending them along once the links clear up, i.e. "when it gets around to it", the packets will reach their destination with hugely inflated latency. This in turn confuses TCP, as it can't get a reliable estimate of link capacity, and the whole speed negotiation falls apart. The latency becomes wild and unpredictable as packets are sometimes buffered, sometimes not, but they always reach their destination, so TCP thinks it's sending at an acceptable rate. So now you've got all the endpoints conversing through this router that's claiming, "No problem, I can handle it!" when it really can't, and the problem just compounds itself as the router gets slammed harder and harder.

      By getting timely notification of dropped packets, TCP can say, "Oh, I'm transmitting too fast for this link, time to shrink the sliding window and slow down." This both smooths out latency, and minimizes further dropped packets, not just for the two hosts involved, but for everyone else transmitting through the affected routes as well. This is how it's supposed to work, but excessive buffering of packets within routers prevents it from happening.

      Moral: Dropped packets are perfectly normal and in fact required for TCP to manage its own speed and latency. Stop trying to buffer and guarantee packet delivery - TCP is handling that already.

      (Disclaimer: I'm a DBA, not a network engineer. Feel free to clarify or correct anything I've mucked up.)

      * "Fast" in this case means "How many packets should I send at once before stopping to wait for acknowledgment of those packets getting where they're going". "Faseter" equates to "more of them".

    30. Re:Definition, please by eth1 · · Score: 1

      ...or use an acronym that most folks here will misunderstand, like using BT when referring to Britich Telecom when most of us think of BitTorrent when we see BT.

      Yeah, I hate it when those cases of AC come up, and the poster doesn't bother to explain their version of it.

    31. Re:Definition, please by gandhi_2 · · Score: 0

      Perhaps you prefer "buffer creep" or "second-buffer-syndrome"?

    32. Re:Definition, please by PseudonymousBraveguy · · Score: 1

      The problem is, that the server does not know the bandwidth himself, because the bandwidth cap is SOMEWHERE on the path (most likely between your DSL/cable modem and your ISP, but it could be anywhere else. Only the *routers* know when they are capped. This is why ECN was invented: It allows the routers to tell you thjey are capped. Only problem so far: Nobody uses ECN (Chicken,Egg,etc).

    33. Re:Definition, please by noidentity · · Score: 1

      Yes, it's idiotic. The summary acknowledges that it's an unrecognized problem, and spends several sentences dramatizing it, but fails to devote even a single sentence to describing what the hell it is. The best I could guess was that with lots of RAM in machines, they use large buffers, so that they preload lots of content, and thus put spikes in bandwidth usage, and also waste it when the user decides he doesn't want to view the entire clip after all. If they used smaller buffers, they wouldn't spike usage as much, yet still avoid underruns. Just a guess.

    34. Re:Definition, please by PenisLands · · Score: 0

      To be fair, if you're from the UK, if you see 'BT', British Telecom is likely to be the first thing you think of. So that particular story could well have been submitted by an English/British/etc person who didn't stop to think that Americans and others wouldn't be so familiar with BT. Heh! PENIS.

      PENIS FOREVER!!! !!! !!!

    35. Re:Definition, please by Archangel+Michael · · Score: 1

      Nicely done. Wish I had mod points

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    36. Re:Definition, please by Anonymous Coward · · Score: 0

      There are two reasons I can think of why people write like that. One is they're poor communicators, the second is they want to appear intelligent.

      It seems there are two kinds of stories posted here lately -- science and tech stories written for the non-nerd by non-nerds like one last week that explained what a CPU was (!), and stories like this that coin new jargon and don't explain it, or use an acronym that most folks here will misunderstand, like using BT when referring to Britich Telecom when most of us think of BitTorrent when we see BT.

      Maybe I'm just getting old.

      It is the fault of the stupid slashdot editor linking to the wrong place. A sensible person would start reading at the beginning of the series of articles,

    37. Re:Definition, please by Cederic · · Score: 1

      When the name is self-descriptive it's hard to describe it without repeating it.

      Bufferbloat is a shite name for large buffers. That's pretty much it. The issue it causes is that fulfilling a request from the buffer leads to full resource utilisation, preventing use of those resources by other requests. This is being described as worse than being unable to respond to the initial request as quickly, thus leaving resources available for other requests.

      It boils down to, do you give Person A a swift response at cost to persons B and C, or give persons A, B and C a shit response (but not as shit as B and C were getting in the other scenario).

      The answer to me seems to be more intelligent use of the buffer to give person A an improved response while preventing resource saturation unduly impacting on persons B and C.

    38. Re:Definition, please by rickb928 · · Score: 1

      Keep an eye out for blades...

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    39. Re:Definition, please by Anonymous Coward · · Score: 0

      Nope, it's Just BT now (BT PLC if you want to use the registered company name). They haven't been British Telecom in a long time. So BT for the comms company and not the protocol is indeed very correct.

    40. Re:Definition, please by fwr · · Score: 1

      I'd say it is more of a problem of incorrectly configured QoS, or hardware with insufficient QoS capabilities, rather than large buffers. Obviously they are not using WRED or other methods, or the thresholds per queue are set too high to activate WRED or other packet drop mechanisms. This results in the buffers always being near 100% full, during periods of congestion. There are a slew of QoS capabilities on different hardware from different manufacturers, and even from the same manufacturer. Cisco, for example, has different QoS capabilities on almost every different piece of hardware they sell. So, you have to be fairly diligent that you are configuring QoS correctly on each individual piece of equipment, many of which will have very different capabilities, to be able to ensure an overall QoS strategy for the whole network.

      However, this proper functioning of QoS is, as anyone who really knows QoS, dependent on the proper configuration on every node in the network. If you are talking VoIP, for instance, just one improperly configured node, or even a single link on a node, can break QoS on the entire network (or at least flows going through that node/link). Since most cheap home equipment does not have configurable QoS settings, or at least not to the extend that Internet infrastructure devices do, they may well be part of the problem.

      However, as far as the Internet infrastructure devices, if Comcast, or any other ISP, is suffering from "buffer-bloat" on their equipment I'd blame them for not configuring QoS appropriately.

    41. Re:Definition, please by AltairDusk · · Score: 1

      Had you spent a second trying to figure things out before lambasting the writer you would have realized that TFS links into a post which is a continuation of an issue he introduced in a previous post. He is writing this post expecting that you've read the previous one, notice that the first sentence he writes mentions that he introduced the subject in a prior post and provides a link to it.

    42. Re:Definition, please by onkelonkel · · Score: 1

      Nobody knows what the Öyster is or why it's blue. The BÖC is all dark and mysterious and stuff.

      --
      None of them can see the clouds; The polished wings don't care.
    43. Re:Definition, please by TheLink · · Score: 1

      Thing is I'm not even sure he knows what he is talking about.

      Does he or anybody still see the problem if he downloads at lower speeds? I If he doesn't then his ISP is buffering up his packets because he is saturating his connection, and there isn't any "bufferbloat" problem, at least in the way he is claiming. I personally don't experience the problem (I have other problems with my ISP[2] but "bufferbloat" isn't it ;) ).

      The fix is for him to do what me and others do: limit his download and upload speeds to something a bit below what the ISP actually provides to him (which may not be what he paid for - but that's a different story/gripe! ;) ), and be the one that decides which packets he wants to drop rather than leave it to the ISP[1].

      Basically the narrowest part of the pipe controls the speed of the flow.

      Example: say he has a full-duplex 10Mbps connection. If he limits his downloads and uploads to 9.5Mbps and the ISP really provides 10Mbps to him there will be no buffering by the ISPs. Any buffering will be done by his system (assuming TCP traffic). A single slow website might only be able to give him 1Mbps, but that doesn't affect his other traffic - so no buffering there either.

      He can then configure his system so that when his traffic goes past 9.5Mbps, it drops the packets he feels are less important.

      [1] Yes in theory the ISP can guess what packets are latency sensitive and what aren't and do this for users (maybe even allow an opt out for advanced users), but most ISPs can barely keep their systems running and their priorities don't seem to be giving users better service so go figure ;).

      Note: the actual percentage may not be 95%, what you have to do is take into account the initial TCP bursts you will receive (or send).

      [2] Sometimes my ISP gives me a 3% packet loss - believe me 3% packet loss screws up TCP more than whatever buffering currently exists. My ISP also doesn't give me 100% of what I paid for either - it gives me less than 48/53 of it (it's PPPoE over ATM over ADSL, ATM uses 53 byte cells with 48 byte payloads).

      --
    44. Re:Definition, please by Idbar · · Score: 2

      Perhaps, the wikipedia article about Random Early Detection, may help to understand the issue. RED (proposed by Floyd and Jacobson, the latter cited in the article posted) was proposed in 1983 to overcome this issue, along with Explicit Congestion Notification (a mechanism to mark packets instead of dropping them). ECN was implemented only until Windows Vista (and wasn't enabled by default), which made complicated to actually take advantage of such schemes.

      Many mechanisms have been proposed (Even I'm proposing one), yet, the Internet Service providers have been throwing more hardware and the manufacturers have been working on increased speeds and memory rather than focus on the problem of TCP's congestion control mechanisms (which was set as a precedent problem in 1992 by Jain's paper: Myths about congestion in high speed networks), unluckily, well, nobody enables their WRED (Cisco's proprietary mechanism) or implement any other algorithm. And so, almost 30 years later, people is realizing that this may be an issue.

    45. Re:Definition, please by Idbar · · Score: 1

      I must say, bufferbloat is a term I never heard of, so this is what I interpret from the text, but the jargon certainly needed to be explained a bit (although this topic is a sketchy road)

    46. Re:Definition, please by Anonymous Coward · · Score: 0

      Great explanation. Thanks!

      My two cents:

      To simulate that, all you have to do is to setup TCP VPN between two networks and run some application that uses TCP in real time (like remote desktop). Depending on the speed of the network (3G/EDGE is the best example here) you will notice lockups. You will get there TCP inside TCP which will behave like in the example above.

      When using UDP VPN such situation will not appear, because there is no additional buffering and droped packet fixing/retransmiting caused by the tcp in the VPN.

    47. Re:Definition, please by Wannabe+Code+Monkey · · Score: 1

      I'm so glad the term has been defined so that I know what the hell we're talking about here. Oh wait, no it hasn't.

      Okay, then I'll RTFA. Oh wait, two screens worth of text later and it still hasn't.

      Okay, well try reading just the second sentence of the summary,

      Bufferbloat is affecting the entire Internet, slowly worsening as RAM prices drop and buffers enlarge, and is causing latency and jitter to spike, especially for home broadband users.

      What I get from that is that larger buffers are causing higher latency and jitter. The trend towards larger buffers which cause these problems is called bufferbloat. If you want to know the details, then read the article, which does explain it. Basically, due to the over-use of buffers, TCP can't do its job of finding the correct transmission speed. Networking equipment is trying so hard to not drop packets by putting them into buffers, when they should just be dropping them. This would let TCP do what it was designed to do.

      --
      We always knew Comcast was corrupt, here's the proof: http://tech.slashdot.org/comments.pl?sid=1909890&cid=34545432
    48. Re:Definition, please by houstonbofh · · Score: 1

      Actually the sky already fell. It stared falling years ago. He is just identifying that what we thought was snow was actually a storm of bird poo... I have been reading the entire series as this is showing why some of our apps are failing. It is already helping me quite a bit.

    49. Re:Definition, please by StickInTheMud94 · · Score: 1

      I read the articles, and I thought his point was that you can't control the buffering on the routers, cable-modems, etc....or all the systems on your own network for that matter. And that it is the buffering on these (and potentially other) downstream devices which help to invalidate the TCP algorithms for determining appropriate bandwidth usage between devices. These two items in conjunction increase latency and jitter in individual transfers (what each application may see on the network). He makes a big deal about recognizing and considering bandwidth and latency together and he contends that it is these device buffer sizes making the latency problem worse.

      Ultimately, it is not about bandwidth, but about latency and bandwidth.

    50. Re:Definition, please by elFarto+the+2nd · · Score: 1

      TCP isn't the problem. TCP relies on packets being dropped to know when to back off (it's the only way it can know the end-to-end bandwidth available). The network has masses of buffers now, nothing gets dropped in a timely fashion, so TCP keeps on sending.

      Regards
      elFarto

    51. Re:Definition, please by Anonymous Coward · · Score: 0

      Perhaps a packet every so often that says "Hi, how much bandwidth may I have please?" which the server or node would reply"You can have X" and then everyone wouldn't be trying to slam and your route would be based on which gives you the largest X.

      While we're at it, why not implement the Evil Bit so viruses and spam don't clog the network?

      Any congestion sensing algorithm that relies on accurate reporting of congestion by a third party is so utterly stupid an idea that it's not even worth considering.

    52. Re:Definition, please by sribe · · Score: 1

      (Disclaimer: I'm a DBA, not a network engineer. Feel free to clarify or correct anything I've mucked up.)

      You took what I understood, and did a really good job of explaining it in relatively simple terms. Well done!

    53. Re:Definition, please by hedwards · · Score: 1

      It seems there are two kinds of stories posted here lately -- science and tech stories written for the non-nerd by non-nerds like one last week that explained what a CPU was (!), and stories like this that coin new jargon and don't explain it, or use an acronym that most folks here will misunderstand, like using BT when referring to Britich Telecom when most of us think of BitTorrent when we see BT.

      Maybe I'm just getting old.

      I missed that, did they finally explain that the CPU is the box with the goobins into which the keyboard, mouse and monitor are plugged? Or did it continue to repeat the oft mistaken notion that the CPU is a chip inside that case?

    54. Re:Definition, please by Idbar · · Score: 1

      Very good translation. There are also mechanisms already for congestion control in TCP networks, from the routers (Random early Detection -RED, Weighted-RED -WRED, etc.) and support from the TCP clients to avoid packet dropping (Explicit Congestion Notification). However, there is not much use of those right now, as many Cisco users don't enable RED (as some claim it's not completely stable and I'd say it has it's problems, but it's the only algorithm actually implemented), and operating systems like Windows don't enable ECN support by default.

    55. Re:Definition, please by sribe · · Score: 1

      Now someone can point out if this humble repair guy is wrong, but from what I read of TFA it sounds to me like TCP is the problem and not the buffers. What TCP is doing is slamming the network until it drops packets, and then using that to determine speed, correct? Doesn't sound like an efficient way to allocate resources...

      It is an extremely effective way to allocate resources based on actual performance, rather than some theoretical estimate of performance.

      So again feel free to correct if I'm missing something, but wouldn't the better solution be to come up with a new way to allocate space? Perhaps a packet every so often that says "Hi, how much bandwidth may I have please?" which the server or node would reply "You can have X"...

      Except that there's no way to calculate how much is actually available, other than monitoring throughput, which is of course what the TCP algorithm does...

      Because while the "slam and back off" method probably worked really well in the past I just don't see having millions of people trying to slam their way to the head of the line as the most efficient way to utilize a limited resource, and no matter how big a pipe you have it is still just that, limited...

      General rule of thumb: it's really easy to criticize aspects of TCP, but it is really hard to design anything that works better ;-)

    56. Re:Definition, please by Anonymous Coward · · Score: 0

      What TCP is doing is slamming the network until it drops packets, and then using that to determine speed, correct?

      Yes, that's correct. But it's a good thing. It allows it to quickly discover the optimal amount of data to put on the line. It even adapts if the conditions change.

      It gets confused though if the ping time goes through the roof because of some 1MB buffer halfway between two computers. In fact, it thinks "hey, this line has such latency that I can put loads of packets before I'm likely to receive an ack for the first one.". Once the buffer in some device between the two computers fills up, it will never empty for as long as that TCP stream is transmitting.

      It's not just TCP either. Any UDP based system such as Skype or such like will use something similar to try and estimate the bandwidth.

      If that 1MB buffer was, in fact, much smaller, then the total throughput would be exactly the same, and the ping time would be lower.

    57. Re:Definition, please by Jaqenn · · Score: 1

      Doesn't sound like an efficient way to allocate resources when even grandma has a fat cable or DSL pipe. It would be like everyone trying to shove their way to the front of a line and only backing off when getting punched in the face.

      As I recall the amount of data that TCP tries to cram down the pipe ramps up linearly as packets arrive successfully and ramps down exponentially when packets are dropped. I've even read criticism that this strategy wastes capacity, because treating every lost packet as HOLY CRAP HALF THE TRANSMISSION RATE artificially caps real-world speed at 90% (or 80% or 95% or something) of theoretical maximum speed.

      That's more like everyone shuffling their way to the front of the line without making eye contact, and backing off when they get closer than 3 feet to each other.

      --
      You are awash in a sea of fiercely stated opinions. Obvious exits are: 'File->Quit', 'Reply', and 'Page Down'.
    58. Re:Definition, please by Anonymous Coward · · Score: 0

      What you are suggesting as a better method does exist; it is based on network queuing delay measurement, instead of packet loss detection.
      Most of internet latency is due to queuing delay; this delay is caused by TCP necessarily having to fill up the buffer before it gets any
      signal of congestion (ie packet loss). By measuring queuing delay you can operate at full speed without having large queues and latency and packet loss.

      This solution is implemented by FAST-TCP (check out the research papers at netlab.caltech.edu). It is available commercially from by fastsoft.com.

    59. Re:Definition, please by myrdos2 · · Score: 3, Insightful

      Solutions which require the internet's infrastructure to be replaced (all the routers and switches and so forth) have been proposed for many years, and never go anywhere. The only one I'm aware of is IPv6, and look how slowly that beast has taken off. That said, TCP sawtooth isn't as bad as you make it out to be - in most cases. Whenever a packet is dropped, the TCP connection drops its speed to around half, then gradually ramps up to where it was previously. You don't get 100% of your bandwidth utilization, but you do get to automatically adjust to changing network conditions. And as the number of TCP connections over one pipe increases, you get closer and closer to max utilization rates.

      TCP fails when:
      -competing against UDP, which has no congestion control and will clog a line even if every UDP packet is dropped
      -there is interference in the line causing packet corruption, which TCP interprets as congestion
      -competing against Microsoft products, which have TCP stacks that are tweaked to grab more than their fair share of the bandwidth

      My understanding is that TCP congestion control generally isn't applied to backbones - I believe that ISPs throttle your traffic before sending it over an optic link so as not to overbook its capacity. You're probably just competing with your household, and possibly people on your block - can someone verify this?

    60. Re:Definition, please by willmorton · · Score: 1

      Modern TCPs use BIC or CUBIC, which produce much better utilization than a 'sawtooth'-type algorithm. See http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.66.4563&rep=rep1&type=pdf for details, in particular the graph at the top of page 2.

    61. Re:Definition, please by FuzzyFox · · Score: 1

      BT means BlueTooth, of course.

      --
      splunge (n) -- A good idea.. but it could be lousy... and I'm not being indecisive!
    62. Re:Definition, please by flosofl · · Score: 1

      From what I read of the article that's actually a pretty good guess.

      --
      "This calls for a very special blend of psychology and extreme violence" - Vyvyan "The Young Ones"
    63. Re:Definition, please by blair1q · · Score: 1

      I’ll take a stab at a formal definition:

      Well, you stabbed it, but I think you just made it angry.

      Bufferbloat is existence of excessively large (bloated) buffers into systems, particularly network communication systems.

      Either an adverb or a preposition is wrong in there. Whichever, the grammar of it is stabbing my brain.

      Let me try: Bufferbloat is having buffers that are too big for your bandwidth.

      And that reveals the real problem. Having big buffers would be okay if you had the bandwidth to empty them. The problem here isn't that the buffers are big, it's that you don't have the bandwidth needed for your traffic load, period. Having big buffers is one way to ameliorate spikes that would otherwise overflow your pipe. But at some point the average of all traffic is bigger than your pipe can handle, and buffer size no longer matters, because you can't empty them before they fill up. In a network with multiple paths you can spread traffic to avoid gridlock, and big buffers can help you with that, until the point at which your routing algorithm can't multiplex the data any better and again it's gridlocked simply because you have too much traffic and not enough bandwidth.

      When the construction of the network is fractionated, when the infrastructure is built by different people trying to solve their small window of the problem (router, switch, client, server, etc.) the only solutions they can control are to increase the speed of their ports and/or the amount of data they can buffer. It's not designed from Joe Computer to Hulu server with one set of requirements and implementations that prevents all sources of bottlenecking; it's designed with meta-requirements that ensure compatibility and avoid dictating performance.

      But having a network-design czar controlling provisioning of the existing infrastructure in that way is not necessary. What's necessary is to increase the bandwidth to handle the traffic. Something that many countries have accomplished, but this one (the U. S. of A.) has been unwilling to do, because we just don't do coordinated infrastructure development at all well any more, times 150 million when it involves dgging up the "last mile" to do the upgrades.

    64. Re:Definition, please by mcgrew · · Score: 1

      Heh, a friend of mine said he wanted me to look at a hard drive. It turned out he had a complete broken computer (sans monitor, mouse, and keyboard) he was giving me. To him, a "hard drive" is what you plug the keyboards and stuff into!

    65. Re:Definition, please by corbettw · · Score: 1

      Excellent post, thank you for explaining the problem is detail.

      --
      God invented whiskey so the Irish would not rule the world.
    66. Re:Definition, please by PybusJ · · Score: 1

      British Telecom, renamed itself to BT in 1991, a full ten years before Bram Cohen named a protocol Bit Torrent. So I'd say you are getting old.

    67. Re:Definition, please by Anonymous Coward · · Score: 0

      Slashdot editors and the blogger are the rich and powerful and right-wind Republicans?

      Sorry, I've been reading the slant on /. so long about the rich and powerful being abusive, that's what I thought you were implying...

    68. Re:Definition, please by DarwinSurvivor · · Score: 1

      No, just the ones the author made up themselves.

    69. Re:Definition, please by Blakey+Rat · · Score: 1

      Yes, but when a packet is dropped, my character in the video game lurches and I get headshotted by the sniper before I can headshot him. Therefore, I'd prefer to have zero packet loss.

      You need to include actual consumers in this process, you know-- downloading large files isn't the *only* use of a network.

    70. Re:Definition, please by DamnStupidElf · · Score: 1

      So essentially what you are saying is that if he restricts his bandwidth so that he never buffers packets at the ISP (eliminates the bufferbloat), he won't have any problems? Wouldn't getting rid of the bufferbloat have the same effect without artificially restricting his bandwidth?

    71. Re:Definition, please by BeanThere · · Score: 1

      Probably part of the reason we've 'all made this mistake together' is that most people wouldn't intuitively expect that adding larger buffers could be harmful; it sounds like something that can 'surely only make things better', or so you would think. It's not that adding large buffers inherently will create more problems though, it's that adding large buffers in combination with a protocol that wasn't well-designed for this particular scenario, causes problems. Our infrastructure and hardware have run ahead of the protocol design, which was built on yesterday's Internet, so it needs some new tweaks/extensions to more elegantly handle the infrastructure setup.

    72. Re:Definition, please by mcgrew · · Score: 1

      I'd say you are getting old.

      I'd say you're right.

    73. Re:Definition, please by myrdos2 · · Score: 1

      In a video game, packets are usually only dropped due to interference on the line - the game itself sends at a fixed rate, which is normally well below what a broadband connection provides. The congestion control never kicks in.

    74. Re:Definition, please by Pyramid · · Score: 1

      Perhaps his intended target was technically competent people who want rich context and full details. If this isn't you, feel free to skip the article. Your "right" to not have to "read fifteen paragraphs just to get a basic birds-eye view" is far less valid than the author's to state his case with as much detail as he pleases.

      It didn't help that we were dropped into an ongoing blog, but it's not hard to figure that out and read earlier articles to gain context. If you're annoyed by one post to the point of labeling people (nerds), I'm pretty confident the odds you'll make it through the other blog posts are pretty low.

      Might I interest you in a "Twilight" novel?

      --
      ~Any apparent grammatical or typographic errors are caused by defects in your display device.
    75. Re:Definition, please by Lilith's+Heart-shape · · Score: 1

      What is this oyster you are referring to, and why is it blue?

      Imaginos was stoned and thought it would be a good idea.

    76. Re:Definition, please by Anonymous Coward · · Score: 0

      More aggressive congestion control policies permit smaller buffers, but if run through a buffer sized to fully smooth the Reno sawtooth Cubic can cause higher average queuing latency than Reno. Because the buffer is too large.

    77. Re:Definition, please by TheLink · · Score: 1

      So essentially what you are saying is that if he restricts his bandwidth so that he never buffers packets at the ISP (eliminates the bufferbloat), he won't have any problems? Wouldn't getting rid of the bufferbloat have the same effect without artificially restricting his bandwidth?

      Not necessarily the same effect. Say he saturates his pipe and the ISP has small buffers, and starts dropping packets, the decision of which packets to drop will be done by devices under the ISP's control.

      This decision may not be the same as the decision made by the device under his control. The ISP might just do the simple thing and treat all packets equally.

      The ISP of course could do a good job and decide well enough that most users get good enough performance (low priority for bulk traffic, and low latency for latency sensitive traffic). But so far I doubt normal ISPs would do that sort of thing soon ;). If they did, big buffers might not even be a problem at all.

      --
    78. Re:Definition, please by Anonymous Coward · · Score: 0

      Ironically, downloading of a large file is exactly the sort of application that doesn't care about round-trip-time, whereas games care a lot more about round trip time than they do about occasional packet loss.

      What would you rather in a game; a single jittery moment, or constant 500ms lag on a connection that should be more like 20ms?

      (Also if you'd R-and-fully-appreciated-TFA you'd appreciate that dropped packets are no less likely (in the long term) than without buffering, they just happen n seconds later).

    79. Re:Definition, please by epine · · Score: 1

      Okay, then I'll RTFA. Oh wait, two screens worth of text later and it still hasn't [defined his terms].

      The man knows how to bury his lead like no other. About twenty-five screens down (I follow the rule of setting the font size so I can lean back and page down with my toes) he finally spits it out the thesis sentence:

      By inserting such egregiously large buffers into the network, we have destroyed TCP's congestion avoidance algorithms.

    80. Re:Definition, please by shiftless · · Score: 1

      I read both of the damn articles, or at least half of each before giving up in disgust. They were both poorly written and do very little to explain WHY he thinks "bufferbloat" is a problem. He just basically states it's a problem then launched into a long winded explanation on how to solve it.

    81. Re:Definition, please by shiftless · · Score: 1

      This is very helpful, thanks.

    82. Re:Definition, please by shiftless · · Score: 1

      Hey asshole--odds are I'm much smarter than you, so don't get a big head. I started programming when I was in 2nd grade, and learned C and assembly in the 4th. I'm also a satellite communications technician who often finds himself knee deep (sometimes literally) in modems, routers, cryptographic equipment, etc. I think I'm quite likely to be the type of person who is capable of understanding this subject--IF the author had even the most basic level of writing skills.

      Who the hell has ever heard of "bufferbloat"? If you are introducing a topic that 95% of your intended audience may not have heard of, or be familiar with, the proper thing to do is to write a brief introductory paragraph giving a basic overview, and then begin filling in the details. No, linking to a similarly poorly-written previously article is not an acceptable substitute.

      It seems many nerds have extremely poor writing skills, which is why I made that statement.

      I've lost track of the number of wiki sites and the like, where try as I might, looking through every crack and crevice and clicking every link, I couldn't even figure out what the fuck the site is even supposed to be about. Is this about a game? A device driver? A web browser plugin? Fuck, I can't even tell, because it was written by someone whose writing/organization skills are shockingly bad for someone who is ostensibly college educated.

      Sure, the blog author can write whatever the hell he wants--IF he wants nobody to understand or even care.

    83. Re:Definition, please by shiftless · · Score: 1

      Because he doesn't make even the slightest effort to explain WHY he thinks this is a problem. If I don't know WHY he thinks it's a problem, how am I (the reader) supposed to make any sense of his long winded dissertation on possible remedies, or even care?

    84. Re:Definition, please by shiftless · · Score: 0

      So in other words, he's a shitty and/or lazy writer, just like 98% of bloggers.

    85. Re:Definition, please by shiftless · · Score: 1

      Thank you.

    86. Re:Definition, please by shiftless · · Score: 1

      It's not the definition I care about, that much is easily discovered. Bufferbloat = too much buffering. OK, I get it. But if the author can't be bothered to spend 5 minutes writing a brief introductory paragraph explaining WHY he thinks this is a problem, I (and 90% of other readers) certainly can't be bothered to spend an hour reading pages and pages of long winded, rambling text to try and figure it out.

    87. Re:Definition, please by shiftless · · Score: 1

      There are two reasons I can think of why people write like that. One is they're poor communicators,

      I think this sums it up.

    88. Re:Definition, please by c0lo · · Score: 1

      Guess what though, its still annoying to that person. Its his comment, not in a newspaper or scientific journal, what's the basis of your bitching about his bitching? Oh thats right, its conversation, and your post is completely irrelevant.

      Are my feeling less relevant than the ones of the original bitch-er?

      Because guess what? Being a nerd myself, I'm annoyed that others bitch about our habit of caring more about what we write on our personal blogs than we care about the feelings of our readers. Can't be helped, that's why we are nerds, details are important to us even if they don't seem important to others.

      (mumble... what a bitch this world become!)

      --
      Questions raise, answers kill. Raise questions to stay alive.
    89. Re:Definition, please by ResidentSourcerer · · Score: 1

      The article says that there needs to be an overall solution. Traffic shaping at your end can do some to mitigate the problem, and some expense of total bandwidth.

      Slamming is a bit harsh for what TCP does.

      Basically TCP keeps increasing the speed until there are dropped packets. Then it backs off. With large buffers, you don't get a dropped packet until the buffer fills up. TCP ramps up until the buffer is full, then drops back. With a full buffer an interactive packet has to join the queue and wait it's turn.

      Buffers help overall throughput, at the expense of higher latency.

      One possible answer is to buffer each connection connection separately. An array of buffers. Then for each one, delay the ACK according to how many packets are in the buffer, and control the window size according to how full the array is. This requires more smarts on the hardware.

      On top of this, some degree of packet inspection to classify packets into priorities.

      The long term answer is going to be some mix of what you propose, and differential pricing for QoS. E.g. Supernet, our Alberta Government project to bring fiber to every school, library and community office (and then sell bandwidth to local ISPs) has 3 provisioning levels -- Gold, Silver, Bronze. You can buy, say, a 5 Mb/s pipe, and allowcate the 5 Mbit to 0.5Mbit gold, 1 Mbit silver, 3.5 bronze. Gold is (surprise) more expensive than bronze. The higher price service has guaranteed latency X. In typical use, VOIP is routed at gold, Video Conferencing & interactive database use (Department of Motor Vehicles; School Records) silver or gold, web surfing, email, file transfer: bronze

      Of course Supernet only guarantees service to your internet portal.

      Cost for this:

      Supernet connection at 5 Mbit/s provisioned as above: $500/month.
      In addition to this, you had to buy bandwidth from an ISP who had a point of presence on Supernet. That was $150/Mbit/Month.

      These figures are somewhat out of date, as it's been 4 years since I was administering at a school.

      --
      Third Career: Tree Farmer Second Career: Computer Geek First Career: Teacher, Outdoor Instructor, Photographer.
    90. Re:Definition, please by Anonymous Coward · · Score: 0

      ... or young, since BT has stood for British Telecom since before BitTorrent was created.

      I appreciate to people not from the UK BT has no real reason to be associated with our primary telecoms company (1 of 2, other than Virgin every other phone and internet company just leases the BT landline). But, as I just mentioned, almost every house in the UK has a BT landline to the house (even many Virgin subscribers will have a disconnected BT line that can be reconnected easily), so most of us wouldn't even consider that BT could mean anything else.

      I can't really defend the slashdot submissions though, I've basically migrated to reddit for my sci/tech news.

    91. Re:Definition, please by vaniderstine · · Score: 1

      Is this why my 2011 X11 connection over 2Mb/.5Mb ADSL is worse than my 1997 128K ISDN connection? If so, is the solution to set my downlink speed equal to my uplink speed?

      If this is the case, I've been mistakenly placing the blame on my DSL providers...or have I?

      --
      I "AM" ring-0.
    92. Re:Definition, please by badkarmadayaccount · · Score: 1

      SCTP

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    93. Re:Definition, please by badkarmadayaccount · · Score: 1

      Buffering, with ECN and slight bandwidth overestimation ought to solve that, thing is, no one uses ECN, AFAIK.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    94. Re:Definition, please by badkarmadayaccount · · Score: 1

      HTTP and Bittorrent are not transport (OSI link/session) protocols, they are presentation/application protocols, depending on usage. As for TCP, it has congestion a avoidance algorithm - ECN, and IMHO would work well with buffers, but AFAIK, no one uses it.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    95. Re:Definition, please by badkarmadayaccount · · Score: 1

      On high overload factors (common on consumer ISPs), simply limiting per application/protocol, does not decongest the network enough. Example: VoIP - if everybody and their grandma are using it, who cares you've practically shutdown torrent trafic, the routers are still overloaded, and latency is crap, the application itself, or the OS should throttle on request via ECN, or dropping packets at the inbound edge routers ought to usually provide then needed behavior - though you need ECN in the network always. That's not very common, AFAIK.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    96. Re:Definition, please by DamnStupidElf · · Score: 1

      Respect QoS flags on my packets, and the ISP can drop the low priority/high latency packets first. So long as they treat each user's connection separately, it'll be fair.

  4. QoS by Icyfire0573 · · Score: 1

    Isn't this something that people that setup QoS on their home router's know about? Isn't this what the program Wondershaper fixes when run on your home linux router. I think we have known about this for years.

    1. Re:QoS by Megane · · Score: 4, Informative

      After reading TFSeries, the problem is excessive buffering (as in 1-10 or more seconds worth of data) screwing up TCP/IP's automatic bandwidth detection. QoS helps a little bit by getting the important packets (especially ACKs) through, but high-bandwidth TCP connections are still going nuts when they hit a slower link with excessive buffering.

      And one of the major offenders is Linux commonly defaulting to a txqueuelen of 1000.

      --
      #naabhaprzrag, #sverubfr-000, #agi-fcbafberq, negvpyr[pynff*=' negvpyr-ary-'] { qvfcynl: abar !vzcbegnag; }
    2. Re:QoS by SuricouRaven · · Score: 1

      Wondershaper is able to apply a partial fix, but only to the upstream. Given that most traffic on a domestic connection is incoming, that doesn't help much.

    3. Re:QoS by Shakrai · · Score: 5, Interesting

      Given that most traffic on a domestic connection is incoming, that doesn't help much.

      It's not that hard to shape downstream traffic. Take a Linux router with two ethernet cards. eth0 is the LAN and eth1 is the internet. You shape eth0 with a maximum throughput of 75%-80% of your line speed. All of the downstream traffic has to go out on that interface so that's your opportunity to shape it. I do this at work and successfully share a 3.0mbit/s connection with 60+ employees. We use latency sensitive services like VoIP and RDP alongside streaming video and other large downloads without any major hassles. It stinks to lose some of your bandwidth because of this (you have to shape it to a number less than 100% of your line speed, otherwise buffering occurs at your ISP and your QoS scheme is defeated) but I'll take responsiveness over throughout any day of the week.

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
    4. Re:QoS by SuricouRaven · · Score: 1

      You just perfectly described the procedure for shapeing upstream traffic. We appear to be sitting at different ends of the wire.

    5. Re:QoS by afidel · · Score: 1

      Yeah, it's also why I set my MTU in my bittorrent client to 576 bytes instead of the normal 1500, I get 3x less jitter for my VoIP adapter which makes voice quality much better.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    6. Re:QoS by Anonymous Coward · · Score: 0

      You just perfectly described the procedure for shapeing upstream traffic. We appear to be sitting at different ends of the wire.

      eth0 is the LAN and eth1 is the internet. You shape eth0 with a maximum throughput of 75%-80% of your line speed. All of the downstream traffic has to go out on that interface so that's your opportunity to shape it.

      try reading that again. at first i thought he was saying one thing, but then i realized he was saying something else.

    7. Re:QoS by Archangel+Michael · · Score: 1

      Big Pipes doesn't mean "Faster" it just means "More". There are cases where "More" = "Faster" and other times where it doesn't. Think DDOS, it is an assualt on the "More" which affects "Faster". However if you do a DDOS attack on a network that has a FAT pipe, and not quite fill it, the speed of the normal packets doesn't slow down, and you might not experience any latency at all, because you also can't fill the pipe with your traffic.

      Buffers are great for short spikes, but not for continuous overload. A simple fix for this would be for the buffered device to be aware of traffic patterns and stop buffering altogether during extended periods of excess traffic. If your device is continuously filling to capacity the link, then the point of buffers is mooted to a great deal.

      If my pipes are normally 100% full, it is time to upgrade, larger buffers don't help anything. However if my pipes are normally less than 100%, but occasional spikes happen, buffers can help avoid traffic duplication as packets are dropped. The problem is that there are choke points throughout the internet where traffic is constantly at 100% of a pipe's capacity, those places need to be identified and routed around, as they are what are causing the buffer problems being described. However it is hard to route around some of those because of how buffers affect packets.

      Another possible fix is to shorten the TTL on packets, where the packets are discarded if the route has too much delay in it. Or use UDP for streaming applications rather than TCP, like it was intended, and let the end points buffer the difference.

      --
      Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
    8. Re:QoS by Shakrai · · Score: 2

      Another possible fix is to shorten the TTL on packets, where the packets are discarded if the route has too much delay in it.

      Umm, that's not what the TTL does. The TTL gets decremented by 1 for every router that touches the packet. If it hits zero without reaching it's final destination it's dropped. It has nothing to do with latency. Traceroute works by sending out packets with increasing TTLs (i.e: the first packet has a TTL of 1, the second has a TTL of 2, and so on) and looking at the returning ICMP time exceeded packets.

      Or use UDP for streaming applications rather than TCP, like it was intended, and let the end points buffer the difference.

      This. UDP is tailor made for streaming applications. Nobody is going to notice if their video feed drops a frame here or there. They are going to notice if it freezes because a TCP connection is waiting for a packet retransmit.

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
    9. Re:QoS by Shakrai · · Score: 2

      You just perfectly described the procedure for shapeing upstream traffic.

      You are shaping the "upstream" from your LAN interface. As I described it:

      Linux router eth1 == internet
      Linux router eth0 == lan
      Path of packet from the internet: the cloud -> your ISP -> eth1 -> (nat/routing occurs here), eth0 -> your LAN PC

      If you shape it before it goes out on your LAN the TCP stack of your clients will respond accordingly and the overall bandwidth consumption is appropriately limited.

      I don't know if wondershaper can do this, as I've always configured my QoS by hand. More flexible that way. What I've described is very easy to set up with iptables, tc and the relevant Linux kernel modules.

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
    10. Re:QoS by Anonymous Coward · · Score: 0

      MTU is handled at layer 1/2. If you are changing the MTU, you are doing if for the entire machine, not just your bittorrent client.

    11. Re:QoS by afidel · · Score: 1

      Nope, my client has the option to set MTU, it artificially limits the packet size to what is set.

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
    12. Re:QoS by SuricouRaven · · Score: 1

      Interesting concept. It's far from optimal, but... it could function as a workaround. It's still ugly though, and a far cleaner solution would be getting the buffers on the network gear to a more reasonable size. But if you can't do that, your idea is better than nothing.

    13. Re:QoS by Anonymous Coward · · Score: 0

      You know, you have to read soooo many bullshit posts from people who don't understand the topic to find the few like this one that are interesting and helpful. Thank you to you and to others like you.

    14. Re:QoS by samjam · · Score: 1

      QOS just decides which packets will be let out of the big buffer first.

    15. Re:QoS by Shakrai · · Score: 1

      Changing the buffers will not help you if you need to run interactive protocols (VOIP/RDP/ssh/etc) alongside large non-interactive downloads (FTP/HTTP/NNTP/Bittorrent). The large downloads will rapidly proceed to consume all available bandwidth and the performance of your interactive sessions will suffer accordingly. A smaller buffer size might reduce the level of that suffering (though I'm skeptical) but it will not eliminate it. Only a solid QoS/shaping solution can make interactive and non-interactive protocols play nice together.

      I'd be curious to know why my solution is "far from optimal". It has effectively enabled my employer to share a 3.0mbit/s connection with 60 some odd employees. We've been using it for five years now. We run interactive VPNs and VOIP alongside dozens of employees surfing the web/downloading files without any issues whatsoever.

      The only problem I can see with my solution is dealing with "best effort" cable modems where your bandwidth isn't guaranteed (hard to shape traffic when you don't know your real line speed) but that's not really a concern in the business world, is it? Any commercial enterprise using an internet connection without an SLA for mission critical tasks deserves the headaches that will follow.

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
    16. Re:QoS by TheThiefMaster · · Score: 1

      Actually in IPv4 the TTL is in seconds, but every hop must reduce it by at least 1, making it effectively a hop count (and it's often implemented as such). In IPv6 the TTL field is renamed "Hop Count", and is an actual hop count.

  5. Name wrong by ebcdic · · Score: 2, Informative

    He's Jim Gettys, not Getty.

  6. Awsum, TTY in your name by cerberusss · · Score: 5, Funny

    Jim Getty, one of the original X Window System developers and editor of the HTTP/1.1 spec

    I'd murder four people just to have TTY in my name. Five if I could capitalize them, and postfix with a number. I'd name my son Dev.

    You'd get a business card with something like Dev GeTTY1, Armadillo Avenue 64, Seattle, Washington

    --
    8 of 13 people found this answer helpful. Did you?
    1. Re:Awsum, TTY in your name by chronosan · · Score: 1

      A quick trick to the Office of Vital Statistics and you could have your wish.

    2. Re:Awsum, TTY in your name by Anonymous Coward · · Score: 0

      A quick trick to the Office of Vital Statistics and you could have your wish.

      Yes, but would he still get to commit the four murders?

    3. Re:Awsum, TTY in your name by Anonymous Coward · · Score: 1

      I hardly think that prostitution is the first avenue he should explore.

    4. Re:Awsum, TTY in your name by jmyers · · Score: 3, Funny

      So you are the reason I keep getting this in my logs "getty keeps dying. There may be a problem".

    5. Re:Awsum, TTY in your name by DikSeaCup · · Score: 3, Funny

      Oh my God, you've killed getty! You bastard!

    6. Re:Awsum, TTY in your name by dugjohnson · · Score: 1

      Not sure where you are, but in the USA you can call yourself anything you like, even change your name to it, as long as it's not for fraud. TTY PuTTY

      --
      My brain is overly lubricated
    7. Re:Awsum, TTY in your name by JWSmythe · · Score: 1

          Sometimes we all have to make a sacrifice. ... or 4. I prefer to think of it as the advancement of human civilization. Murder just has such a negative sound to it.

      --
      Serious? Seriousness is well above my pay grade.
    8. Re:Awsum, TTY in your name by vuke69 · · Score: 1

      Depends on how many people are in line before him.

      --
      Time is an illusion. Lunchtime doubly so. ~ Douglas Adams
    9. Re:Awsum, TTY in your name by Linker3000 · · Score: 1

      Trust me, it gets tedious after a while - hearing the same jokes when you book into hotels, sign card receipts etc.

      Yours

      William Indows

      --
      AT&ROFLMAO
    10. Re:Awsum, TTY in your name by yorgasor · · Score: 1

      My wife had very strict requirements in the naming of our kids. She scrutinized every suggestion I ever made, just to see if there was some strange connection to technology that I was trying to sneak in there.

      When it came time to name my son, I managed to massage the suggestions in such a way that his initials came out to be TTY. As she mulled the name over in her head, she said, "Hmm, TTY. I've heard of that, what does that stand for?" I replied with an uninterested voice, "Um, I think it stands for teletypewriter. I think they use it for deaf people on phones."

      That didn't sound very geeky to her, so she let it slide. To this day, she doesn't realize how awesome it is that my son's initials are TTY :)

      --
      Looking for a computer support specialist for your small business? Check out
    11. Re:Awsum, TTY in your name by cerberusss · · Score: 1

      Bwahahaha sir, that is truly evil! Life-wise, I'm not there yet, but I'll definitely take your sly tactics to heart.

      --
      8 of 13 people found this answer helpful. Did you?
  7. Theoretically, could this be mitigated with ATM? by blind+biker · · Score: 1

    If we all switched to ATM (Asynchronous transfer mode), would this issue be fixed, regardless of the size of RAM available at the endpoints? Yes, yes I realize that this would be utterly impractical; my question is theoretical.

    --
    "The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
  8. First link in the first article by mangu · · Score: 5, Insightful

    Just start RTFAing: "In my last post I outlined the general bufferbloat problem."

    Follow the link:

    "Each of these initial experiments were been designed to clearly demonstrate a now very common problem: excessive buffering in a network path. I call this bufferbloat

    1. Re:First link in the first article by elrous0 · · Score: 1

      I hate it when someone feels the need to come up with a piece of meaningless jargon when "excessive packet buffering" would have been much more descriptive and required less explanation.

      --
      SJW: Someone who has run out of real oppression, and has to fake it.
    2. Re:First link in the first article by Yvanhoe · · Score: 1

      actually, buffer bloat is a good enough definition of bufferbloat. Demands for definition are a bit pompous...

      --
      The Wise adapts himself to the world. The Fool adapts the world to himself. Therefore, all progress depends on the Fool.
    3. Re:First link in the first article by AvitarX · · Score: 1

      The word bloat implies slowly growing.

      This is a piece of description that "excessive packet buffering" Does not include. I also think packet buffering is pretty clear from the context

      --
      Wow, sent an e-mail as suggested when clicking on "use classic" banner, and got a fast response that addressed my msg
    4. Re:First link in the first article by GooberToo · · Score: 3, Interesting

      Demands for definition are a bit pompous...

      A bit?

      Even more pompous is making a post about it when everyone can clearly see, "bufferbloat" is shorter than constantly saying something tedious like, "excessive packet buffering in the entirety of a network path."

      Perhaps this will help the uninitiated. The article describes a wide problem of excessive packet buffering in the entirety of a network path, which has been dubbed, "bufferbloat."

    5. Re:First link in the first article by MightyYar · · Score: 1

      Why the needless puff-word "excessive"? "Too much packet buffering" is good enough for USA Today. :)

      --
      W..w..W - Willy Waterloo washes Warren Wiggins who is washing Waldo Woo.
    6. Re:First link in the first article by GooberToo · · Score: 1

      Its bloat because the amount of buffering has been steadily on the rise of the years. Furthermore, as links become more congested, the amount of dynamic buffering frequently increases. "Bloat" is completely apropos.

    7. Re:First link in the first article by ls671 · · Score: 2

      A better definition could be:

      "A user saturating its broadband connection by transferring 20GB files and not taking care of using the --bwlimit (limit bandwidth) option with rsync"

      I have been using it for ages to prevent this very problem.

      Other types of traffic shaping can be done, with Linux tc as an example, but it is always best to do it at the application level when possible.

      --
      Everything I write is lies, read between the lines.
    8. Re:First link in the first article by mldi · · Score: 1

      But that's hard to fit in a resume or a "skills required" section of an ad for a job!

      --
      If you aren't suspicious of your government's actions, you aren't doing your job as a responsible citizen.
    9. Re:First link in the first article by Crudely_Indecent · · Score: 1

      Prior to reading some of the article, I surmised that "bufferbloat" referred to a problem with buffers that are too large. Although the jargon isn't a complete definition, it gives a good description.

      As far as jargon goes, bufferbloat is fairly concise compared to something like muffin top (which had me crying when my daughters explained it to me)

      --


      "Lame" - Galaxar
    10. Re:First link in the first article by Anonymous Coward · · Score: 0

      That is not true at all. There is no reason to create a new acronym/term every time you need to talk about something. You will not receive extra gold stars for having made up new words, and the fact you are too lazy to descriptively identify an issue simply makes you look lazy/incompetent. The only reason we see so many of these ridicules terms flying around is due to the hope that it will some how attach to the collective psyche as a buzz word. None of this means the topic of his postings isn't relevant or valuable, but the attempted hijacking of a language to force new buzz word creation does not help add validity to his opinions.

    11. Re:First link in the first article by Anonymous Coward · · Score: 0

      How is creating more jargon not pompous?

    12. Re:First link in the first article by siride · · Score: 1

      I think you've got it wrong. Language has a very strong tendency to prefer short expressions or words over longer ones. Over time, long ones are shortened or substituted with shorter equivalents. Heck, we even have a pronoun system built in to the language to do this very thing!

      You must ask yourself this: what's the point of using long, ridiculously descriptive phrases when everyone already knows what you are talking about? Why waste their time and yours?

    13. Re:First link in the first article by Sulphur · · Score: 1

      There is no reason to create a new acronym/term every time you need to talk about something.

      Acronymegaly?

    14. Re:First link in the first article by Neil · · Score: 1

      It is a bit more than "users are saturating their own links". Jim Gettys' point is that the combination of large packet buffers at numerous points in the chain (OS, home router, routers at ISPs, etc) have effectively broken TCP's previously very effective congestion avoidance mechanisms, because the TCP stack doesn't get a timely notification of dropped packets when one particular link in a data path becomes saturated. And because you don't necessarily know where the bottleneck is going to be between any two end-points on the Internet, or what your share of the bandwidth of that link is going to be, you can't do effective bandwidth limiting in advance. It would be much better if the flow control built in your machine's TCP/IP stack could handle the situation.

    15. Re:First link in the first article by Syberz · · Score: 1

      Just start RTFAing: "In my last post I outlined the general bufferbloat problem."

      Follow the link:

      "Each of these initial experiments were been designed to clearly demonstrate a now very common problem: excessive buffering in a network path. I call this bufferbloat

      Woa, woa, woa! Not only are we expected to RTFA, but RTFAPA (Read the F*cking Article's Parent Article) as well?!?! Screw that shyte.

      --
      ~Syberz
    16. Re:First link in the first article by ls671 · · Score: 1

      What tool has he been using to come to his conclusions ?

      I found that the bottleneck always seemed to be between the DSL modem or the cable modem and the provider router by doing something as simple as pinging and watching the dropped packets and high latency results between the modem and the provider router when you try to use a bandwidth rate that is above what the link can support.

      The link degrades pretty quickly in those situations. Furthermore, pinging a distant far away router 10 hops away when the congestion occurs reveals no additional degradation compared to pinging the provider router which seem to indicate that the problem is mostly between the cable modem and the provider router, in the DOCSIS link.

      It is different when you are on a commercial truly bi-directional fiber link or T1/T3 but DSLs and cable modems aren't typically bi-directional, they even have different upload and download speeds.

      I might be wrong, but intuitively, I think his findings need more reviewing. The guy is talking about a cable modem and Comcast. Not exactly how a commercial fiber link or T1/T3 would work.

      I mean there is tons of articles on the Internet on how to do traffic shaping in order to use VOIP on consumer grade links. Most of them refer to the limitations of cable modems and DSLs. Most of the articles warn of what happens, especially when you saturate the upload bandwidth typically limited to less than 1Mb/s just like this guy was doing...

      This is not new at all, I have been observing that since the late 90s when DSLs and cable modems first came out.

      --
      Everything I write is lies, read between the lines.
    17. Re:First link in the first article by PybusJ · · Score: 1

      But not all applications up/downloading large volumes of data have a --bwlimit equivalent. And how exactly are you supposed to know at what rate to set the limit to avoid network congestion? It might well change over time; someone on your network may start another download. Manually setting bandwidth use for every application is not the answer.

      Allowing TCP to do what it's designed for is better alternative, just one that is thwarted by ISPs/hardware OEMs who put unnecessarily large buffers in their products to avoid any dropped packets.

    18. Re:First link in the first article by AK+Marc · · Score: 1

      I can understand the word and not understand the problem. Is it that the core routers having buffers will be a problem? It never was back in the days when capacity was 100x traffic. But then, companies decided that overbuilding for future capacity and growing fast wasn't as important as artificially restricting network growth to justify higher rates.

      Or is it the distribution network with the problem? Or the edge/access part? Or does it require any 2 or 3 of them work together? Is it only critical when high-bandwidth links are split into smaller ones, like the access network, and only then when the servers are capable of more over a single connection than the end user can handle?

      I know what a buffer is. I know what "bloat" means. I don't know what bufferbloat means to me as both a manager of an ISP and an end user. If it even is a problem, is it something that should be fixed in hardware, applications, or services?

      From the specific comments, it's an issue caused by the relatively slow access speeds at the network edge, and if there is a problem for the end user, they can close applications that aren't critical or ISPs can work on default QoS profiles that optimize small packets over large one and that would likely cure the problem as described without even having to pay attention to the content of the packets.

    19. Re:First link in the first article by DamnStupidElf · · Score: 1

      So what do you do when your friend on the same connection is already performing an rsync? Call him and agree to split the available bandwidth in half and supply the appropriate parameters to rsync? And when a third person starts a download?

    20. Re:First link in the first article by GooberToo · · Score: 1

      How is being human not pompous? The fact that we have a dictionary basically invalidates your complaint.
      w

    21. Re:First link in the first article by raynet · · Score: 1

      Simple traffic shaping rule in your Linux router will take care of most of the problems. Just limit upstream bandwidth to 90-95% maximum speed, set everything to default to lower priority class and then create classes for important stuff like SSH and IRC and VOIP and generally it works nicely. Just to be safe one can just put bittorrent into a even lower traffic class that never can use more than say 70% of your upstream. This ofcourse assumes that the bottleneck is the connection between you and the ISP as it is here. Once the traffic gets over the ADSL connection you should be safe.

      --
      - Raynet --> .
    22. Re:First link in the first article by vtcodger · · Score: 1

      I confess, I can't quite follow the discussion, but I think the issue might be something like this. You're in charge of water flow from an irrigation dam. A user orders up a million gallons of water. Said user can only accept 5000 gallons an hour. Between you and the user, there are three buffer dams, each of which can back up 10000 gallons.

      You tell your highly sophisticated software to send a million gallons to user X. The HSS doesn't really know how much the user can accept every hour, so it sets off to figure out what the user can take. It starts off feeding 1000 gallons an hour. That works OK, so after 20 minutes or so, the rate is upped to 2000, then 3000 ... At 6000 gph, the buffers at the last dam start to fill, but no one tells you that the system is operating beyond the maximum sustainable rate. In a couple of hours, you are pumping ... I dunno ... maybe 20000 gal per hour .. and all of a sudden all the buffers are full and you have to cut your flow back to ... well, you have absolutely no idea. So you guess and stumble and restart and ... who knows. Probably your flow looks pretty weird for a while.

      Not only that, but when we are discussing data, not water, we may care about how long it takes for data to go end to end (i.e. latency). It takes a long time for a tiny fish sucked in by the water flow to move all the way through the pipes and buffers to the user. Likewise bits on data paths. May not make a difference for downloading porn but it's likely to be a problem for VOIP.

      Surprisingly, it looks like things like VOIP are likely to work better without all the buffers and high speed data flows.

      Anyway, that's what I sort of got out of the articles. If I'm not too far off, maybe someone can clean up my model or come up with a better one and make the issue(s) clearer

      --
      You can't see ANYTHING from a car, You've got to get out of the goddamned contraption and walk...Edward Abbey
    23. Re:First link in the first article by ls671 · · Score: 1

      Exactly what I was trying to say ;-)

      My problem is that I have SSH at second highest priority, first priority is VOIP packets. I use rsync over SSH so I need to use the --bwlimit option in rsync in order to not starve other services while still maintaining good interactivity when typing commands on a remote system.

      To be on the safe side, I use 85% but mileage may vary...

      Anyway, the poster could have solved his problem easily by using the --bwlimit option instead of interrupting the transfer to please his kids. I routinely transfer GB of data with that option without any impact on the network.

      --
      Everything I write is lies, read between the lines.
    24. Re:First link in the first article by thegarbz · · Score: 1

      Bufferbloat is only a good enough definition of bufferbloat if the fucking word is actually defined. Making up some word and then using it in a summary and requiring a user not only to open TFA but to also open a link in TFA to another FA is just out right stupid.

      No one is asking the summary to use frigging Queen's English. What we are asking is that the summary includes a line such as "Bufferbloat, the excessive packet buffering of a node,...." then we wouldn't be having this discussion in the first place.

    25. Re:First link in the first article by GooberToo · · Score: 1
    26. Re:First link in the first article by PybusJ · · Score: 2

      The reason you traffic shape to 90% line speed is to stop your upstream from buffering at all. It's all just a workaround for the fact that your ISP has large buffers.

      The fact we nerds can configure Linux routers to avoid the issue, doesn't mean its a non-issue to everyone else.

    27. Re:First link in the first article by ls671 · · Score: 1

      Congratulations, you have understood all that needed to be understood ;-)

      --
      Everything I write is lies, read between the lines.
    28. Re:First link in the first article by Anonymous Coward · · Score: 0

      But that would require the reader to have some sort of way to easily go from article to article and back.

      You know, like that "hypertext" stuff you used to be able mess with in Mosaic.

  9. Solved by Anonymous Coward · · Score: 0

    "Can bufferbloat be fixed before the Internet and 3G networks become nearly unusable for interactive apps?"
    > Yes, with IPv6 QoS.

    1. Re:Solved by SuricouRaven · · Score: 1

      Impractical on the internet: Everyone would decide their traffic must be top priority. Then someone would wrote 'Windows Internet Accelerator Pro' and sell it for £8.99, so every idiot could do so.

    2. Re:Solved by the_one(2) · · Score: 1

      Not if excessive use where penalized. For example if the ISP used token buckets it would give a small burst of high bandwidth, high priority packets or longer burst of less bandwidth but still high priority. Excessive use could lower the priority until the bucket has been refilled.

  10. pegged connection == latency, who'd of thunk it? by Shakrai · · Score: 5, Insightful

    I read TFA and I'm not seeing the problem. He can't duplicate this issue unless he maxes out his connection and then his latency goes to hell. No shit Sherlock, that's what happens when your pipe is full and the packets have to wait in the queue to be transmitted. Am I stupid or could he avoid this issue entirely by using QoS and/or rate-limiting his connection to some amount <100% of it's maximum throughout? I have QoS at the office that keeps our connection from pegging (it's limited to around 75% on the download and 90% on upload) and have never once encountered an issue with latency or jitter. At home I only throttle the upload (to 90% of maximum) and have successfully ran VPNs, bittorrent uploads and VoIP calls all at the same time without any headaches.

    Really, what's the problem here?

    --
    I want peace on earth and goodwill toward man.
    We are the United States Government! We don't do that sort of thing.
  11. Buffering of what? by Anonymous Coward · · Score: 1

    What exactly are they buffering? Whole pages? Whole sites? Just packets? What?

    And back in the late 90s, the buffering was supposed to speed things up and a few companies were IPO's or purchased by big companies (for billions of dollars) that did this.

    1. Re:Buffering of what? by nedlohs · · Score: 2

      Buffering of packets, "network path" can't be refering to anything else.

    2. Re:Buffering of what? by SuricouRaven · · Score: 2

      Packets.

    3. Re:Buffering of what? by mikael · · Score: 4, Informative

      Within a router it would be the actual IP data packets that are being buffered. A standard router has a number of network interfaces (token ring, ethernet, wireless, ISDN, whatever....) . Each network interface is piece of hardware that is memory mapped to allow the CPU to send and receive packets. Each hardware device also has a small online memory buffer to store the most recently received or transmitted addressed data packets (every protocol layer down to the MAC source and destination address, IP address, sequence number as well as the data). Depending on system and packet size, that could be anything between 1 and 16.

      The usual implementation was to have each hardware device generate an interrupt whenever some data had been received and to transfer the data from internal memory to a common pool in system RAM. The latter was divided up into pre-allocated blocks with a few large blocks (>1000 bytes) and many smaller blocks (512 bytes). Some one might have done a statistical analysis onto the theoretical distribution of the size of packet data being sent through the network. Most of the time this worked out, but there were problems that happened some times. If all the smaller blocks were in use, then the larger blocks were used instead. For efficiency, these wouldn't be transferred through the system, until all the entire block has been filled up with data, so if you have a stream of 128 byte packets, it would take eight of them before the larger block was filled. For some systems, packet sizes were enhanced to 4K or even 8K. A constant high-speed stream of small packets was most likely to do this.

      Also, many of the hardware devices would simply overwrite the contents of one unprocessed data packet with the contents of the latest arrival if it wasn't collected fast enough. So that could really mess up sequence numbers.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    4. Re:Buffering of what? by Anonymous Coward · · Score: 0

      Within a router it would be the actual IP data packets that are being buffered. A standard router has a number of network interfaces (token ring, ethernet, wireless, ISDN, whatever....) . Each network interface is piece of hardware that is memory mapped to allow the CPU to send and receive packets. Each hardware device also has a small online memory buffer to store the most recently received or transmitted addressed data packets (every protocol layer down to the MAC source and destination address, IP address, sequence number as well as the data). Depending on system and packet size, that could be anything between 1 and 16.

      The usual implementation was to have each hardware device generate an interrupt whenever some data had been received and to transfer the data from internal memory to a common pool in system RAM. The latter was divided up into pre-allocated blocks with a few large blocks (>1000 bytes) and many smaller blocks (512 bytes). Some one might have done a statistical analysis onto the theoretical distribution of the size of packet data being sent through the network. Most of the time this worked out, but there were problems that happened some times. If all the smaller blocks were in use, then the larger blocks were used instead. For efficiency, these wouldn't be transferred through the system, until all the entire block has been filled up with data, so if you have a stream of 128 byte packets, it would take eight of them before the larger block was filled. For some systems, packet sizes were enhanced to 4K or even 8K. A constant high-speed stream of small packets was most likely to do this.

      Also, many of the hardware devices would simply overwrite the contents of one unprocessed data packet with the contents of the latest arrival if it wasn't collected fast enough. So that could really mess up sequence numbers.

      The problem is the buffers are so big that there is high latency before congestion management algorthms kick in

    5. Re:Buffering of what? by TheLink · · Score: 2

      I don't think buffering is the real problem. Buffering can help with throughput especially TCP throughput.

      For example if there is a brief burst of packets higher than a router's outbound connection bandwidth supports, the router has two options:

      a) buffering or queuing up the packets (assuming enough buffer space), till the output queue empties.
      b) dropping the packets.

      UDP latency doesn't go up if UDP packets are dropped - since there are no retransmissions.

      But if TCP packets are dropped too often just because of bursts (from other connections), the speed drops significantly and the latency goes up a lot too - because the relevant parties have to wait for acks and retransmissions and the TCP window size also decreases. If the TCP packets are buffered, the TCP transmitter won't slow it's transmission rate drastically (it will still slow a bit when waiting for acks), but there would be a brief increase in latency for the period the packets are being buffered.

      Trouble is if it's not a brief burst, it means you're just delaying the inevitable packet drops, meanwhile the sustained delay becomes more noticeable.

      What the author doesn't seem to realize is the upstream network providers should buffer (within reason - even up to a few seconds worth) - because they usually don't know which of your packets are more important to you, and thus which packets to drop first.

      The solution is for the network providers to have enough internal bandwidth so that THEIR buffers rarely start to fill up, and there is minimal packet loss, AND for the user to do traffic shaping and policying at their connection (and the servers too).

      Say you have a 10Mbps connection, and the ISP actually does give you a full 10Mbps. If you download from a fast site, the packets queue up when they reach your 10Mbps connection before dropping and finally reaching and equilibrium at 10Mbps. But meanwhile your interactive ssh or game connections suffer from increased latency since they share the queue - as mentioned before the ISP doesn't know which packets/connections are more important to you (it can guess of course and favour small packets, ACKs, DNS; or you can give QOS hints, but most ISPs don't bother).

      To prevent this, you get your modem/firewall to "shape" your traffic at say 9.5Mbps (leave enough headroom for the initial TCP connection bursts) and choose which packets you want to drop when it goes past 9.5Mbps (for instance drop http packets first instead of your interactive or VOIP stuff, or the other way round if http traffic is more important to you for some reason). This way you control what happens AND the buffers never fill up at the ISP end since the traffic doesn't even hit 10Mbps (if their buffers don't fill up, there is no increase in latency). This also applies to your outbound connections - if your upload bandwidth is 5Mbps, shape it at 4.5Mbps or so.

      The narrowest part of the straw controls the flow. If the ISP is the narrowest part of the straw - the buffering and shaping is up to them. If your system is the narrowest part of the straw - it controls the flow.

      If there's something wrong and somehow there's a 1Mbps bottleneck in the ISP for ALL your traffic, that bottleneck will control the flow - since it will drop packets before it reaches 9.5Mbps point where you start dropping packets - in which case the ISP is cheating you and giving you a 1Mbps connection (note though that if the 1Mbps bottleneck is only for some of the traffic your other traffic will be fine ).

      Note: I'm assuming the case of sustained TCP connections, and lower UDP traffic speeds. This all doesn't work if some site is blasting UDP packets at 100Mbps to you[1].

      [1] The UDP blasting could actually be a way of bypassing certain ISP throttling methods - sending lots of packets, and coping with packet loss by using forward error correction and some feedback. Fortunately not many are doing this yet :).

      --
    6. Re:Buffering of what? by AltairDusk · · Score: 1

      In the articles he is discussing buffering on a packet level.

    7. Re:Buffering of what? by GooberToo · · Score: 1

      But if TCP packets are dropped too often just because of bursts (from other connections), the speed drops significantly and the latency goes up a lot too - because the relevant parties have to wait for acks and retransmissions and the TCP window size also decreases.

      You're conflating bandwidth with latency. Furthermore, latency only rises during the renegotiation phase, after which latency is once against reduced to its previous level and potentially even better than before as saturation is now being avoided and therefore requiring less buffering (lower latency). This is, after all, entirely the point. The extra buffering is creating a waterfall of latency, even compounding error recovery efforts, which specifically defeats fairly complex algorithms which are designed to address the very issue the extra buffering is actively defeating.

      Think of it as a highway with cars whereby the gap between cars is their buffer. Everything flows well until that one driver screws up and slows. It has an effect of causing everyone else behind him to brake and slow. And while it takes that first driver a second to speed back up to his previous speed, it takes one second * cars back, plus reaction time (error correction and renegotiation) to fix the entire highway. So for the bad driver, it delayed him one second. For the 11th driver back (packet), it cost him something like fifteen seconds to resume normal speeds; at which time, some drivers may have left the highway entirely (dropped).

    8. Re:Buffering of what? by houstonbofh · · Score: 2

      The solution is for the network providers to have enough internal bandwidth so that THEIR buffers rarely start to fill up, and there is minimal packet loss, AND for the user to do traffic shaping and policying at their connection (and the servers too).

      There is no such thing a enough bandwidth. It will always fill. You need to allow the built in mechanisms to recognize when it is full. And while I agree that traffic shaping is nice (and easy with firewalls like m0n0wall) it is not in most home routers. Besides, expecting most users to do this properly when they can not even patch their systems is folly at best.

    9. Re:Buffering of what? by TheLink · · Score: 1

      But it still seems to me reducing buffer size is the wrong way to solve the latency problem.

      How about routers that still have large buffers but also keep track of how long packets have been sitting around and drop those that are older than a few milliseconds (routers already do something similar but it's in seconds which is too long nowadays).

      --
    10. Re:Buffering of what? by hedwards · · Score: 1

      No, it wasn't, at least not the stuff that I saw. What it was meant to do was allow people to do things like watch video streams before they had finished downloading the entire clip. And there were entire technologies being devised to make that more efficient.

      Nobody credible ever said that the process of starting to play the media a bit after the download started would increase the speed of you watching the movie, just the consistency once you started.

    11. Re:Buffering of what? by Coren22 · · Score: 1

      I already posted in this article, or I would have modded you informative, this is a very good description of how things work. Thank you very much.

      --
      APK likes to ask for responses to the same things over and over. Maybe he just likes the responses?
    12. Re:Buffering of what? by filthpickle · · Score: 1

      An early contender for car analogy of the year!

    13. Re:Buffering of what? by Anonymous Coward · · Score: 0

      Your comment just looks like a jumble of words to me. Maybe I'm stupid.

    14. Re:Buffering of what? by Anonymous Coward · · Score: 0

      Gettys talks about Active Queue Management in the linked blog. Adjusting allowed buffer occupancy to maintain throughput and stability is common in academic papers, but rare in active routers.

    15. Re:Buffering of what? by Logic+and+Reason · · Score: 1

      To prevent this, you get your modem/firewall to "shape" your traffic at say 9.5Mbps (leave enough headroom for the initial TCP connection bursts) and choose which packets you want to drop when it goes past 9.5Mbps (for instance drop http packets first instead of your interactive or VOIP stuff, or the other way round if http traffic is more important to you for some reason). This way you control what happens AND the buffers never fill up at the ISP end since the traffic doesn't even hit 10Mbps (if their buffers don't fill up, there is no increase in latency). This also applies to your outbound connections - if your upload bandwidth is 5Mbps, shape it at 4.5Mbps or so.

      Isn't is too late to effectively shape incoming traffic by the time it reaches your modem/router? If that were truly the bottleneck, couldn't you get a faster connection just by buying a faster modem?

    16. Re:Buffering of what? by TheLink · · Score: 1

      Isn't is too late to effectively shape incoming traffic by the time it reaches your modem/router?

      For connectionless stuff it's too late. But in practice it works for TCP connections since if you start dropping/delaying packets the affected TCP connections will slow down.

      And while most UDP stuff might be connectionless, there might be connection-like behaviour at the application level.

      If that were truly the bottleneck, couldn't you get a faster connection just by buying a faster modem?

      Whatever is the bottleneck affects the traffic the most. So if the ISP is the one limiting the speed of your connection, the ISP is the one controlling it.

      --
  12. Ahhh HAH! by Immostlyharmless · · Score: 1

    I knew it wasn't my age thats making me worse at online games, its all the jittering and latency caused by bufferbloat!

  13. I think buffers are a good thing by commodore64_love · · Score: 0

    It's what lets me watch youtube even over slow Dialup or Cellphone connections (buffer the video halfway, then press play).

    Buffer also prevents one of the main flaws with broadcast TV. When there's interference the video skips a second or two. "Hi this is NBC News. And today in ...... met for its first session." What? Who? Where? That never happens with internet video (which just pauses for a second, buffers the video, and then resumes).

    --
    "I disapprove of what you say, but I will defend to the death your right to say it." - historian Evelyn Beatrice Hall
    1. Re:I think buffers are a good thing by the_one(2) · · Score: 1

      That's not what the article talks about. He talks about TCP package buffering, not video buffering. Queueing up tons of packages with small amounts of bandwidth gives horrible latency is the point. Not really knowledgeable about that stuff so I can't tell if he is correct in that there is a problem though.

    2. Re:I think buffers are a good thing by TheRaven64 · · Score: 0

      I think first posts are a good thing, combined with the other posts they help hold up my fence.

      --
      I am TheRaven on Soylent News
    3. Re:I think buffers are a good thing by Coriolis · · Score: 5, Interesting

      He's not arguing against application-level caching. He's saying that too much caching at the IP layer is confusing TCP's algorithm for deciding how fast the link between two points is. This in turn causes massive variability in how fast the data can be downloaded; or in your terms, how fast the video can be buffered (and, in fact, how much buffer the video player needs).

      --
      Rgasuya aata! : I have been coding Perl and cannot tell where my fingers are now!
    4. Re:I think buffers are a good thing by SuricouRaven · · Score: 1

      Different buffer, different level. Same word, but entirely different thing.

    5. Re:I think buffers are a good thing by singingjim1 · · Score: 1

      So what about all of us non-techies who went to PCPitstop.com or speedguide.net and installed all those registry tweaks that modified our TCP/IP window sizes and other such things we really have no clue about what the real consequences or advantages are?

    6. Re:I think buffers are a good thing by compro01 · · Score: 1

      It's like this;

      Your system is uploading data to somewhere. At some point in the path, one link is congested. The router on your end of that link should drop packets it cannot fit into that link in reasonable time, and when your system (and everyone else with data going through that link) detects the packets got dropped, it will shrink the TCP window size and transmit more slowly to compensate for the congestion, but instead, it [the router] accepts your packets and puts those in its oversized (too large relative to the link speed. Say, a 5MB buffer, but the link speed is only 1MBps. Any packets stuffed into the end of that buffer will end up waiting 5 seconds (far too long) until they get transmitted) buffer to await transmission through the congested link. Eventually, those buffered packets will time out and be considered dropped, but in the meantime, your system (and everyone else with data going through that link) is continuing to send data (which will also be buffered and later dropped) oblivious to the problem and the window size doesn't get adjusted for quite some time, effectively breaking the congestion control system, as it relies on being able to detect congestion quickly and respond to it. This results in massive swings in latency, which wreck havoc with interactive applications, such as VOIP, VNC, games, etc.

      --
      upon the advice of my lawyer, i have no sig at this time
    7. Re:I think buffers are a good thing by Teancum · · Score: 1

      It is a good point to note, however, that the buffering ought to happen on the application level and not on the network level. The problem comes from a crappy operating system using sub-standard applications and then expecting the network engineers to fix the problems caused by those lousy applications that simply should have been fixed by good design in the first place.

      There are a number of problems that are being masked by the "simple solution" of throwing up a buffer.

    8. Re:I think buffers are a good thing by jimrthy · · Score: 1

      That seemed to pretty much be his point, yes.

      I think one of the take-aways is that all the techies have been mis-diagnosing "the problem" and he's one of the few who've stumbled across a more accurate diagnosis. Pretty much all we can do at this point is make sure as many techies know about it and understand it, so they can work on finding a real solution.

    9. Re:I think buffers are a good thing by jimrthy · · Score: 1

      I'm no networking expert, but I trust his credentials enough that I believe him.

      Especially when he's advocating something as major as replacing HTTP. And he's gotten people involved like Vincent Cerf.

      Then again, maybe he's just senile and delusional. This is the internet.

    10. Re:I think buffers are a good thing by gottabeme · · Score: 1

      Eh, I didn't read it as advocating replacing HTTP, merely exploring this CCNx thing to see where it goes.

      He ain't senile or delusional: the problem is real. Don't shoot the messenger.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  14. cringley explains by szo · · Score: 4, Interesting
    --
    Red Leader Standing By!
    1. Re:cringley explains by Anonymous Coward · · Score: 0

      If we all ran XP and nothing but XP, there probably wouldn’t be a bufferbloat problem at all. But you can’t wear bellbottoms forever,...

      There you have it! XP is the best operating system! And yes you can wear bell bottoms for ever - just wear boots and tell folks it's "boot cut" jeans.

    2. Re:cringley explains by pspahn · · Score: 1

      Who is Cringely these days? I prefer the old one. This guy isn't nearly as entertaining.

      --
      Someone flopped a steamer in the gene pool.
    3. Re:cringley explains by gl4ss · · Score: 1

      he got popular? he sucks though, if he really thinks replacing your cablemodem + wifi ap with one that has them both in one box would help you one bit with this..

      "The coping strategy for bufferbloat, by the way, is to minimize the buffers on your home network. Where you can adjust buffer sizes, make them as small as possible (but don’t turn them off — a little buffering is good). Routers with editable firmware like OpenWRT are nice for this. Or consider getting a DSL or cable modem aimed at gamers, because they are already optimized for lower latency. And some vendor should really offer a DSL/cable modem-router with dual-band 802.11N WiFi so there’s only one device between the ISP and you. I’d buy one."

      and seriously, don't they offer those in usa?

      (for the record, saturating uplink causes those symptoms since .. well, since '94 at least. )

      --
      world was created 5 seconds before this post as it is.
  15. Re:Theoretically, could this be mitigated with ATM by uncledrax · · Score: 1

    If we all switched to ATM, I'd find you in your sleep and murder you.

    TBH though.. MPLS sorta tries to split the difference in the 'good' ways. Especially if you drink the Kool Aid (tm) and have the budget to spend on rolling it out.

    --
    ----- The internet has given everyone the ability to have their voice heard equally as loud.. even if they shouldn't be
  16. Why not get to the point? Why make it a saga by Tom+DBA · · Score: 1

    I thought the times of people being paid by the word were over. There's so much to read these days. Couldn't Getty state the situation in a few sentences before taking us on a journey through lightening, ICU and tracings?

  17. Re:pegged connection == latency, who'd of thunk it by Aladrin · · Score: 1

    I agree. I was having the same issues on a much smaller connection until I set up QOS. Now, I never have issues with any of my stuff.

    --
    "If you make people think they're thinking, they'll love you; But if you really make them think, they'll hate you." - DM
  18. So, let me get this straight... by CFD339 · · Score: 5, Insightful

    RAM is cheap.
    High speed uplink is not cheap.
    Peering agreements are manipulative, expensive, and sometimes extortionate.

    So...

    The poorly designed, poorly peered, under allocated back haul links can't handle the traffic that routers want to push through them -- but since RAM is cheap, operators just add RAM to the buffers so that when those back-haul lines slow down for a second the packets can get pushed through.

    And we're blaming the buffer for the problem?

    --
    The problem with quotes on the internet, is that nobody bothers to check their veracity. -- Abraham Lincoln
    1. Re:So, let me get this straight... by franciscohs · · Score: 1

      It's not blaming on the buffers, it's blaming on the practice of configuring high sized buffers instead of having proper network infrastructure.

    2. Re:So, let me get this straight... by phantomcircuit · · Score: 5, Insightful

      TCP assumes that packets will do dropped when there is congestion, if they aren't the congestion control algorithms fail (hard).

    3. Re:So, let me get this straight... by Anonymous Coward · · Score: 0

      So the buffer keeps packets from being dropped right? Wouldnt the lack of a buffer require the packets to be resent, thus increasing latenc

    4. Re:So, let me get this straight... by Coriolis · · Score: 1

      Yes, because the buffer is causing false information to propagate through the network. The design of TCP is predicated on peers discovering that there's congestion between them as fast as possible, and negotiating a sensible transfer rate. It's not that all buffering is bad, but that it has diminishing returns, and eventually actually makes the situation worse.

      --
      Rgasuya aata! : I have been coding Perl and cannot tell where my fingers are now!
    5. Re:So, let me get this straight... by jg · · Score: 1

      Your Linux (and Mac and Windows) laptops also suffer from bufferbloat.

      As does your home router and 802.11 network.

      As do some ISP's.

      Don't think the problem is just in your broadband. It's all over.

    6. Re:So, let me get this straight... by Anonymous Coward · · Score: 0

      | The poorly designed, poorly peered, under
      | allocated back haul links can't handle
      | the traffic that routers want to push through
      | them -- but since RAM is cheap, operators just
      | add RAM to the buffers so that when those
      | back-haul lines slow down for a second the
      | packets can get pushed through.

      That's what buffers are good for. And that why gettys says the solution is not just removing the buffers, but being more inteligent about them.

      The buffer only helps if you can expect that in a short time you will have enough bandwidth and little enough new things to do, that your buffer will get empty again because you can send stuff faster than new stuff gets in later.

      Once you are the bottle-neck and you will always (or even only the next minutes) have more to send than you can, then buffering will not help. You only let packages wait without any benefit.

      You wait for the things to send to become less than your outgoing bandwith again. But because you do not drop packages, but buffer them, you are not telling anyone you are missing bandwidth. Thus TCP will not send you less packages but more, as no package loss means you can bear the current load fine. So you get more and more data at a faster rate with no hope to send it out. At some point your buffer will be full and you have to drop stuff. But by that time packages might have waited for whole seconds (an ridiculous long time for computers in the internet) in your buffer and everyone sending data over you has increased its speed so much and is sending stuff so fast, that everything comes to an aprupt stop, until everyone realizes they are sending too fast (which they will only realize after some time as they wait for acknowledges that they packages arrived which will not come). After this aprupt stop, things will restart slowly. Getting faster until again too fast for you. But again you do not tell anyone but try to buffer, causing the next breakdown and so on.

    7. Re:So, let me get this straight... by gl4ss · · Score: 2

      the real interesting bit would be what would the internet be without those buffers. packetloss at 80%?

      --
      world was created 5 seconds before this post as it is.
    8. Re:So, let me get this straight... by jelle · · Score: 1

      There is no network 'operator' that configures this. In TCP/IP the only buffering that there is, is the window size, and the sending host sets that size.

      I guess that people don't read the RFC's anymore, they just think that they know how the Internet communicated from nonsense and hearsay.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
    9. Re:So, let me get this straight... by complete+loony · · Score: 4, Informative

      I was sharing a connection with a friend once who was throttling my upload bandwidth in an attempt at fairness. Trying to run something like bittorrent would fill all the buffers in my PC, his router and his modem, adding 1.5 seconds of latency to the link (I used to ping the host on the other end of the modem to confirm it).

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
    10. Re:So, let me get this straight... by franciscohs · · Score: 1

      No, the article is about buffers set on interfaces on network operators, mostly on access interfaces, but also somewhere on "the rest of the internet", although it's not very specific on that. TCP window size IS NOT a buffer, by definition.

    11. Re:So, let me get this straight... by compro01 · · Score: 2

      A lack of a buffer is bad, as even if a packet had to be buffered for a microsecond, it would still be dropped as it couldn't be transmitted immediately.

      But a too large buffer is also bad, as it delays the packet being dropped until it times out, preventing TCP's congestion control functionality from rapidly responding to the congestion (by shrinking the window size). Eventually, it will detect the packets getting dropped as they time out, but in the meantime (possibly several seconds), it continues merrily transmitting packets, which will also get dropped, resulting in a massive spike in latency whenever it happens, as it then needs to retransmit all of those dropped packets.

      With an appropriately sized buffer, small delays would result in data being buffered for short times, but if it would face a too long delay (determined by the buffer being full), it would simply get dropped, alerting everyone to slow down, resulting in only a small number of packets needing to be retransmitted and preventing a large latency spike.

      --
      upon the advice of my lawyer, i have no sig at this time
    12. Re:So, let me get this straight... by compro01 · · Score: 3, Insightful

      Yes, lack of buffers would be bad, as even a trivial delay would result in a packet getting dropped. Oversized buffers are also bad, as they simply delay the packet getting dropped, preventing congestion control from reacting in a timely manner. The buffers need to be sized appropriately relative to the link speed and typical latency.

      --
      upon the advice of my lawyer, i have no sig at this time
    13. Re:So, let me get this straight... by PseudonymousBraveguy · · Score: 1

      As long as the majority of traffic is TCP or at least has somne sensible congestion avoidance: Same packetloss as today or less. Today and then, TCP increases transmissions until packets are dropped. With (too much) buffering, all you do is delaying that point until TCP actually sends much too fast, and increase latency for everybody.

    14. Re:So, let me get this straight... by Sczi · · Score: 1

      Yes, but only for a few seconds. That's the idea.

    15. Re:So, let me get this straight... by rickb928 · · Score: 3, Insightful

      No.

      Packet losses would be handled by adjusting to the conditions.

      Look at the trace Gettys posted in the referenced article. Lots of dup packets. Get rid of those, and there's some bandwidth that can be *used*. And allowing TCP to adjust to prevailing conditions should result in less packet loss. It might seem to be less bandwidth also, but we may be in a vicious circle of increasing bandwidth to solve a problem that is NOT bandwidth. Packet loss by itself is a symptom, not a problem.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    16. Re:So, let me get this straight... by jimrthy · · Score: 1

      The giant buffers are in place to hide the infrastructure problems. They're making it impossible for TCP to correctly throttle your bandwidth based on current network conditions (because, for example, the conditions it currently knows about are over a second old).

      They're also there because people haven't really thought about the implications of their settings. There's a good chance that the transmission buffer on your computer is set to some completely ridiculous size. Something that would make sense for a gateway at a data center that's plugged into some super-fat pipe.

      I think the main point is that they switched to TCP after a nation-wide network crash that lasted for a few days, because whatever protocol back then couldn't adjust for congestion. These huge buffers have put us smack dab back in that same leaky boat.

      I'll be at your side sniping and snarking all day long about ISPs and backbone providers. But he does have some pretty respectable experience and credentials. If you read enough articles in the series, he's enlisted some very impressive help (like, say, Vincent Cerf) to try to diagnose the problem.

      I guess the thing to do here is peer review. Try to replicate his experiments. See if you can come up with a better explanation. Rather than just dismissing him out of hand. He deserves at least that much respect.

    17. Re:So, let me get this straight... by jimrthy · · Score: 1

      That's part of why this is such a complex problem (assuming he's right). In one article in the series, he mentioned that this was leading to regular packet loss as high as 3%, which is completely unacceptable. But the basic premise is that dropped packets are the mechanism peers use to warn each other that they're experiencing a bottleneck. Meaning that they actually expect that to happen frequently.

      Part of the problem might be that finding the right "sweet-spot" for buffer size is really difficult. And we've gone way past the point of diminishing returns, in most cases.

    18. Re:So, let me get this straight... by jelle · · Score: 1

      There are no such buffers. The author just made up the word and never actually says which buffers he's referring to, he is only referring to a symptom and making the wrong conclusion.

      The article can say whatever it wants, such buffers still don't exist.

      --
      --- Hindsight is 20/20, but walking backwards is not the answer.
  19. tail wagging the dog, final episode by Anonymous Coward · · Score: 0

    it's a long nightmarish tale of deception & death, followed by a 'brief', 'surprise ending', whereas the tail discards the dog as excess baggage. plus, it was a fairly good movie, in addition to being an ongoing real life horror flick/sit-com. evile never sleeps. are you still calling this 'weather'?

  20. Does he want to say by Anonymous Coward · · Score: 0

    The internet will die? :(

  21. Duh - I'm sure the cable cos. can fix for $$$ by Anonymous Coward · · Score: 0

    From TFA: "Any time you have a large data transfer to or from a well provisioned server, you will have trouble."

    Well there's your problem: you bought a home cable connection and actually expected to USE it. What are you, retarded?

    1. Re:Duh - I'm sure the cable cos. can fix for $$$ by jimrthy · · Score: 1

      The thing is, he had the connections to swing face-time with Comcast's engineers. And the know-how to get his "last-mile" connection cleaned up to almost lab quality conditions. Not many people could have figured this out.

  22. Looks like a hype by CaptainFarrell · · Score: 0

    I think he's making up a new word. It's oversubscription. There is SLA. And it's not caused by memory prices. I can similarly claim that it's caused by terrorism as people spend more time on the Internet saturating channels because they're scared to interact in real life.

    1. Re:Looks like a hype by ledow · · Score: 5, Insightful

      You haven't read the article (or the many others around on LWN.net on the same topic). Basically, large buffers in networking gear, from DSL routers on your home network through to ISP's, mean that interactivity is *shite*. You might download Gb's but in terms of interactive applications it's useless and we're facing ever-increasing latency and problems through wanting to cope too much with errors and delays (e.g. huge buffers to keep resending instead of just letting packets drop and having TCP sort it out by retransmission). TCP windows never shrink because errors and buffered and retried so much from intermediate devices that any sort of window scaling is worthless because it doesn't *see* any packet-loss.

      Same devices, smaller buffers, everything works fine and "faster" / "more responsive" all around. It actually would *save* money on new devices because you don't need some huge artificial buffer, you can just drop the occasional packet. But the problem is so deeply embedded into run-of-the-mill hardware that it's almost impossible to escape at the moment and thus EVERYONE from large businesses to home users are running on a completely sub-optimal setup because of it. Almost every networking device made in the last few years has buffers so large that they cause problems with interactivity, bandwidth control, QoS, etc. It's NOT just that a "faster connection" solves the problem - we are getting a percentage of optimal service that's steadily decreasing as buffers increase even though we're improving all the time. That's the point. And it *is* caused by memory prices because memory is so cheap that a huge thoughtless buffer costs no more than a tiny, thought-out buffer.

    2. Re:Looks like a hype by tippen · · Score: 2

      A big part of the problem is customers complain mightily when network devices congest (drop packets). Congestion is easily monitored. Additional latency is much harder to measure and most customers are less likely to notice it.

      Less support calls == better margins

      For some devices, it's clear that the engineers that built it don't understand networking very well and that's where the problem crops up. For others, it reduces pain on the field support organization so, in some ways, customers are doing it to themselves.

    3. Re:Looks like a hype by PseudonymousBraveguy · · Score: 2

      Larger buffers do not really decrease congestion as far as TCP is concerned: With a large buffer TCP will simply send more/faster, untill the buffer overflows. The congestion will simply manifest a tiny bit later, but much, much severe.

  23. Only one solution. by Anonymous Coward · · Score: 0

    Increase connection prices and decreases caps.

  24. Re:Theoretically, could this be mitigated with ATM by franciscohs · · Score: 1

    Have you no sense of humor?, he MUST be kidding...

    PS: if he isn't, I'll second you

  25. Naming Your Son Dev by djdevon3 · · Score: 2

    Easy, name him Devone = Dev1

  26. Re:pegged connection == latency, who'd of thunk it by Nursie · · Score: 1

    There's much more to it than that - the connection gets maxed out too easily, or it maxes out way below where it should, the reason being that too much is buffered. Too much buffering = lots of latency = TCP/IP latency and bandwidth calculations go out the window and you can't get the transfer speed you ought to.

    Or so I understand it.

  27. Re:pegged connection == latency, who'd of thunk it by vadim_t · · Score: 5, Informative

    Several issues:

    1. People who aren't networking engineers don't know about QoS, or don't know/want to know how to configure it.
    2. QoS used that way is a hack to work around an issue that doesn't have to be there in the first place
    3. How do you determine the maximum throughput? It's not necessarily the official line's speed. The nice thing about TCP is that it's supposed to figure out on its own how much bandwidth there is. You're proposing a regression to having to tell the system by hand.
    4. QoS is most effective on stuff you're sending, but in the current consumer-oriented internet most people download a lot more than they upload.

  28. And here I was... by stuckinphp · · Score: 0

    Can bufferbloat be fixed before the Internet and 3G networks become nearly unusable for interactive apps?

    And here I was wondering when 3G networks would become usable for interactive apps.

    --
    if only
  29. No. by Anonymous Coward · · Score: 0

    RTFA. I've been following his blog for the last few weeks as he's written about this. The problem is much more serious than most realize. In fact, I'd say most people completely misunderstand the issue.

  30. WTF? by Anonymous Coward · · Score: 0

    What a load of bull. The possibility of a large buffer doesn't mean at all that everyone will overbuffer blindly even if it becomes a real problem.

    Is this IT for retards?

    1. Re:WTF? by Anonymous Coward · · Score: 0

      Currently the only widely available method to congestion control is to drop packets.

      If you buffer the packet, you don't drop it, so sender does not get the slow down message.

      ECN (http://en.wikipedia.org/wiki/Explicit_Congestion_Notification) would solve this I think, you then can buffer the packet AND tell sender to slow down.

      But for it to work, it should be widely deployed, and it isn't (many routers get confused when they get packets with ECN on, and drop them).

    2. Re:WTF? by Neil+Boekend · · Score: 1

      IANAITS, but consider the following situation: Router A understands ECN. Router B doesn't and drops the packages that have it. Can't router A see the dropping of ALL the packages to B and thus conclude B doesn't support it, and set the two ECN bits in the header to 00?
      If B is "repaired" and starts sending ECN 01 and 10 packages to A then A can conclude B should be able to accept ECN enabled packages and stop setting the bits to 00.

      --
      Well, I might have a way, but it only works on a semi spherical planet in a vacuum.
    3. Re:WTF? by jimrthy · · Score: 1

      He mentions ECN a lot. Usually mentioning that it will probably never see wide-scale deployment, because of all the hardware that can't deal with it. I can't remember now whether he considered it part of a "solution" or just something else that would help with "mitigation."

  31. Re:pegged connection == latency, who'd of thunk it by TheThiefMaster · · Score: 2

    The problem is that maxing your connection from one site is causing everything else you do on your connection to be delayed / dropped as well, because it ends up queued behind anything that got buffered mid-transit from the first site. With a smaller buffer the large transfer would start to drop packets and back off sooner, allowing packets from other sources to "hop the queue".

  32. You have have not RTFA or not UTFA.. by bmajik · · Score: 5, Informative

    What Jim is saying is that TCP flows try to train themselves to the dynamically available bandwidth, such that there is a minimum of dropped packets, retransmits, etc.

    But in order for TCP to do this, packets must be dropped _fast_.

    When TCP was designed, the assumptions about the price of ram (and thus, the amount of onboard memory in all the devices in the virtual circuit) were different -- namely, buffers were going to be smaller, fill up faster, and send "i'm full" messages backwards much sooner.

    What the experimentation has determined is that many network devices will buffer 1 megabyte or MORE of traffic before finally dropping something and telling the tcp originator to slow down. And yet with a 1 meg buffer and a rate of 1 megabyte per second.. it will take 1 second simply to drain the buffer.

    The pervasive presence of large buffers all along the tcp vc, and the non-speified or tail-drop drop behavior of these large queues means that tcp's ability to rate limit is effectively nullified, and in situations where the link is highly utilized, many degenerate behaviors occur, such that the overall link has extremely high latency, and that bulk traffic will cause interesting traffic to be randomly dropped.

    Personally, I used pf/altQ on openBSD to try and manage this somewhat.. but its a dicey business.

    --
    My opinions are my own, and do not necessarily represent those of my employer.
    1. Re:You have have not RTFA or not UTFA.. by CaptainFarrell · · Score: 0

      Which doesn't prove that we should claim we've discovered something unknown and invent a new word for each technical detail everybody knows.

    2. Re:You have have not RTFA or not UTFA.. by Skaven04 · · Score: 1

      Mod parent up -- this is a great summary and matches with my reading of the article too.

      --
      ---- Breakbeats are not just music...they're the soundtrack for my life.
    3. Re:You have have not RTFA or not UTFA.. by zmollusc · · Score: 1

      Yeah, that is how I read it. The presence of large buffers causes the 'controlling protocols' to go haywire, thus network transfer efficiency hurtles out of the window.

      --
      They whose government reduces their essential liberties for temporary security, receive neither liberty nor security.
    4. Re:You have have not RTFA or not UTFA.. by afidel · · Score: 1

      I'd like to know what networking equipment he's working with that has 1MB buffers because on Cisco 12000 the entire line card has a max of 1MB of buffer and if you think a single stream is seeing that I have news for you, it's not. In fact the behavior is 2x MTU so no more than 3KB. I wonder if the buffer isn't actually in software on each end of the connection?

      --
      There are 4 boxes to use in the defense of liberty: soap, ballot, jury, ammo. Use in that order. Starting now.
  33. Re:pegged connection == latency, who'd of thunk it by suv4x4 · · Score: 4, Funny

    Really, what's the problem here?

    You really don't see the problem? How can you be so naive. Maybe you're new to this. All signs show to the fact there is a problem.

    Of course the problem is not obvious. The article itself says it'll completely surprise us. They know we won't believe it at first. But that's why we must believe it, or else it's Armageddon.

    Would you risk an Armageddon, because of your inability to understand and see?

    And that's, in short, why we must attack Iraq.

    Wait, what were we talking about :P?

  34. Re:pegged connection == latency, who'd of thunk it by Coriolis · · Score: 1

    Yes, he could. What about all the non-technical users?

    --
    Rgasuya aata! : I have been coding Perl and cannot tell where my fingers are now!
  35. Re:pegged connection == latency, who'd of thunk it by TheThiefMaster · · Score: 5, Interesting

    As an extreme example, say you request a 1GB file from a download site. That site has a monster internet connection, and manages to transmit the entire file in 1 second. The file makes it to the ISP at that speed, who then buffers the packets for slow transmission over your ADSL link, which will take 1 hour. During that time you try to browse the web, and your PC tries to do a dns lookup. The request goes out ok, but the response gets added to the buffer on the ISP side of your internet connection, so you won't get it until your original transfer completes. How's 1 hour for latency?

    The situation is only not that bad because:
    A: Most download sites serve so many people at once and/or rate limit so they won't saturate most peoples' connections
    B: Most buffers in network hardware are still quite small

  36. Re:pegged connection == latency, who'd of thunk it by bytesex · · Score: 1

    It's not about *you* buffering - it's about the machine in the middle buffering. When that machine buffers instead of drops, your TCP connection will never become aware that it has to play nice and lower its transmission window.

    --
    Religion is what happens when nature strikes and groupthink goes wrong.
  37. Re:pegged connection == latency, who'd of thunk it by franciscohs · · Score: 1

    I wouldn't say you're stupid, but you're not understanding the problem right. ISPs configure high buffers on low bandwidth links so that the total throughput is higher, at the expense of latency, since, as you say, packets have to wait in queue until they go out when you max out the connection.

    This is NOT the right way of doing things, buffers should be smaller, if you max out your connection, your packets will drop, this will cause either TCP (at the protocol level) or the application if there is no support at the protocol level (UDP for example) to back out and lower the transmission rate, WHILE keeping your latency at normal levels.

    You'll still have some packet loss, sure, but the overall experience should be better if applications act nice.

    And no, QOS is not the solution to this, QOS should work end to end on a connection and that's simply not possible for internet users. What you mean is shaping, or policing, at the interface level, but if you're doing that, you're just avoiding the filling up the buffers, so that you achieve what I described earlier.

  38. Re:pegged connection == latency, who'd of thunk it by thijsh · · Score: 1

    Not quite the whole story. In peak hours when your 20 Mbit ADSL drops to 2 Mbit speeds it's simply because they oversold the line that much... The problem isn't buffering but trying to use 1000% of the bandwidth, that is never going to work smoothly. Buffers don't really change it because you have a choice for either large buffers + higher latencies or small buffers + more dropped packets, your throughput will suffer about the same...

    In my experience most software will handle some higher latencies just fine, but too many dropped packets will fuck almost any protocol up (most are not so sturdy when you remove a few percentage of the packets). So the choice for larger buffers is a valid one as long as the connection is this saturated.

  39. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    If you'd have used fewer lines in yer joke, yed have gotten some mod points for Funnie.

  40. Re:pegged connection == latency, who'd of thunk it by Dunbal · · Score: 3, Informative

    but in the current consumer-oriented internet most people download a lot more than they upload.

          Because the current consumer infrastructure forces it onto you. I would happily seed my torrents all year long, except I only have 1/12th the uploading bandwidth as I have for downloading. Since I need some of it for other things, uploading becomes impractical.

          It's easy to blame the consumer, but there's a certain model imposed on him from the start.

    --
    Seven puppies were harmed during the making of this post.
  41. Concerning Boiled Frogs by wiredog · · Score: 4, Informative

    If you put a frog in a pot of water and slowly raise the temperature it will try to jump out before the water reaches a temperature that is fatal to the frog.

    1. Re:Concerning Boiled Frogs by TheRaven64 · · Score: 5, Funny

      Only if you use a real frog. You can kill a hypothetical frog in this way.

      --
      I am TheRaven on Soylent News
    2. Re:Concerning Boiled Frogs by ladadadada · · Score: 4, Funny

      If you put a frog in a pot of water and don't even bother boiling it, the frog will jump out anyway.

      If you were to find a frog in its natural habitat where it's happy to sit all day waiting for food to drift past and boil that environment slowly, you might actually have an experiment on your hands... and an ethics committee on your tail.

      Boiling a lagoon is left as an exercise for the reader.

      --
      Sig matters not. Judge me by my sig, do you?
    3. Re:Concerning Boiled Frogs by Anonymous Coward · · Score: 0

      Are you saying Pierce Brosnan is wrong?

      He can't be wrong. He's a vulcanologist!

    4. Re:Concerning Boiled Frogs by alien-alien · · Score: 2

      You can keep the frog in there longer though if you buy a ram and have him watch the pot. Having the ram watch the pot may help a bit as the water will heat up slower - and most certainly will never boil.

      Efficiency may decrease if you put all this on a buffé (or RAM Table), which TFA clearly states will make the frog more jittery.

      The one exception to this appears to be when you employ a Serf (or Page) to watch over the buffé. Supervised Page Tables actually benifit from more RAM and you will need fewer Serfs i.e. it will make serfing more efficient.

      YMMV

    5. Re:Concerning Boiled Frogs by zm · · Score: 5, Funny

      Use a lid.

      --
      Sig ?
    6. Re:Concerning Boiled Frogs by Anonymous Coward · · Score: 0

      How about if it's a dead frog?

    7. Re:Concerning Boiled Frogs by Anonymous Coward · · Score: 0

      Please forward this to Al Gore

    8. Re:Concerning Boiled Frogs by GodfatherofSoul · · Score: 1

      The obvious solution is to place a gorilla in the pot to keep the frog from leaving. The genius of my plan is he boils to death with the frog.

      --
      I swear to God...I swear to God! That is NOT how you treat your human!
    9. Re:Concerning Boiled Frogs by PseudonymousBraveguy · · Score: 1

      However, if you throw a frog into boiling water, he will probably die before he has a chance of hopping out. (No frogs were harmed in making this post)

    10. Re:Concerning Boiled Frogs by Anonymous Coward · · Score: 0

      Not if you put a lid on the pot.

    11. Re:Concerning Boiled Frogs by Anonymous Coward · · Score: 0

      But that's only because spherical frogs can't jump.

    12. Re:Concerning Boiled Frogs by Anonymous Coward · · Score: 0

      Hypothetically you can kill a hypothetical frog that way.

    13. Re:Concerning Boiled Frogs by Anonymous Coward · · Score: 0

      Not if you leave the lid on the pot.

    14. Re:Concerning Boiled Frogs by Anonymous Coward · · Score: 0

      Hypothetically, if you don't kill the hypothetical frog in the pot quick enough, he will climb out and kill you.

    15. Re:Concerning Boiled Frogs by blivit42 · · Score: 1

      Wikipedia has the following to say on the subject:

      "In 1869, while doing experiments searching for the location of the soul, German physiologist Friedrich Goltz demonstrated that a frog that has had its brain removed will remain in slowly heated water, but his intact frogs attempted to escape the water."

      So, not only can you kill hypothetical frogs this way, but also real zombie frogs.

  42. Re:pegged connection == latency, who'd of thunk it by Dunbal · · Score: 1

    It's kinda like the Fed printing another 600 billion and refusing to raise interest rates, while at the same time saying everything is fine and the economy is improving.

    --
    Seven puppies were harmed during the making of this post.
  43. Re:pegged connection == latency, who'd of thunk it by drvar · · Score: 1

    Rate limiting is exactly what Getty suggests as a work around in a later blog post. However, most people would not be able to do that and bufferbloat can also occur elsewhere along the connection path.

  44. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    The problem, moron, is that TCP is supposed to have congestion control to prevent that. The buffers are keeping congestion control from working as intended. You shouldn't *need* QoS unless you're *prioritizing* specific traffic.

  45. Re:pegged connection == latency, who'd of thunk it by TheRaven64 · · Score: 3

    Mod parent up. Half way down the comments, and this is the first post that actually explains why 'bufferbloat' is something I should care about.

    --
    I am TheRaven on Soylent News
  46. The problem is that with bufferbloat pegged connec by Anonymous Coward · · Score: 0

    | No shit Sherlock that's what happens when your
    | pipe is full and the packets have to wait in
    | the queue to be transmitted.

    That is what happens with bufferbloat. Actually it is even worse, because the buffers will confuse TCP to think the pipe is thicker than it is and fill it even more.

    The point is: The internet is not supposed to have latency only because there is some bottle-neck.
    The latency is supposed to be around the same all the time. Things are supposed to send data at a rate that it can reach the other side. Both is lost if you have too much buffers. Mostly because TCP measures the width of your pipe by looking at lost packages. And if some smartass network router thinks it should not drop packets if there is not enough network for everyone, then the net grinds to halt periodically, killing latency, killing bandwith, causing sparks in dropped packages, causes timeouts, and so on and so forth.

  47. Someone with networking chops by jayhawk88 · · Score: 1

    ...chime in please. It seems like the solution to this is potentially all user-side, and controllable? Adjust the buffers in your devices if you can, or perhaps find a way to reduce the TCP buffer in your modern operating system?

    1. Re:Someone with networking chops by SuricouRaven · · Score: 2

      It's not, really. There are many buffers involved. Some of them will be in the network infrastructure - routers, firewalls - that users have no control over. A lot more are in devices they control, but that don't allow configuration of such low-level parameters. Cable modems, home routers, access points.

    2. Re:Someone with networking chops by Neil+Boekend · · Score: 2
      nope. The problem can be in the server on the ISP side. The problem appears where a big pipe (1 Gbit for example) is poured into a small pipe (1 Mbit for example) see TheThiefMaster

      As an extreme example, say you request a 1GB file from a download site. That site has a monster internet connection, and manages to transmit the entire file in 1 second. The file makes it to the ISP at that speed, who then buffers the packets for slow transmission over your ADSL link, which will take 1 hour. During that time you try to browse the web, and your PC tries to do a dns lookup. The request goes out ok, but the response gets added to the buffer on the ISP side of your internet connection, so you won't get it until your original transfer completes. How's 1 hour for latency?

      The situation is only not that bad because:
      A: Most download sites serve so many people at once and/or rate limit so they won't saturate most peoples' connections
      B: Most buffers in network hardware are still quite small

      --
      Well, I might have a way, but it only works on a semi spherical planet in a vacuum.
  48. Hmm by jav1231 · · Score: 1

    I won't discount the buffer problem because I just don't know. But the single biggest contributor to "latency" when I visit a webpage is connectivity to ad sourcers. I can click to go to a site and stare at a blank screen while my status bar flickers with: "Transferring data from ads.that.you.could.care.less.about.com."

    1. Re:Hmm by the_one(2) · · Score: 1

      Easily fixed by using noscript or adblock. The advertisers only have themselves to blame, really.

    2. Re:Hmm by PseudonymousBraveguy · · Score: 1

      You obviously never tried to play an online game while your room mates saturate the link with bittorent.

    3. Re:Hmm by Neil+Boekend · · Score: 1

      All hail AdBlock and NoScript!

      --
      Well, I might have a way, but it only works on a semi spherical planet in a vacuum.
    4. Re:Hmm by jav1231 · · Score: 1

      Probably not. My roommate doesn't know how to use bittorent and I don't online game anymore.
      Since you brought it up, I find bittorent a bit like mail order. It's slow enough that by the time I get the copy downloaded and realize it's either not what I thought it was or lower quality than I wanted I've wasted my time. I realize for some it's great but my experience, albeit far from recent, hasn't been satisfactory.

    5. Re:Hmm by jimrthy · · Score: 1

      He's talking about pushing the envelope at an entirely different level of bandwidth and interactivity.

      In the opening article of the series, he went through a series of tests, trying to figure out why his internet connection sucked (he's looking at doing full-scale interactive video conferencing, and complains about latencies that he notices that are longer than 20 ms). Most of these tests involved pinging some source, using different settings and configurations.

      The simplest test basically went "Ping some server. Start a big file upload. Wait a few seconds, in case your ISP gives you extra bandwidth for an initial burst. Try pinging that server again. What happened to your ping times?"

  49. Re:pegged connection == latency, who'd of thunk it by SuricouRaven · · Score: 1

    "that's what happens when your pipe is full and the packets have to wait in the queue to be transmitted."

    And his point is that said queue is so excessively long, it's screwing up TCP's congestion avoidance. Those queues mean delay. Serious delay.

  50. Re:pegged connection == latency, who'd of thunk it by TheThiefMaster · · Score: 3, Funny

    So naturally, I instantly get modded down.

  51. That explains Realvideo... by Anonymous Coward · · Score: 0

    I've always wondered why RealVideo streams kept buffering... ad neauseam. Now we know why.

  52. QoS by leuk_he · · Score: 2

    QoS does generally not work beyond the first hop. Your provider most likely will drop any QoS data. Some providers wil try to make their own QoS systems (e.g. to show a low ping). However if the lantency has a great variance due to all kind of buffers any algoritm will get the bandthwidt wrong.

    QoS based on network types will get it wrong. For pure browsing /downloading it is relatively simple, but for VPN Encrypted skype udp traffic, game data it will never be optimal.

    And as the blogger wrote, there is not a simple solution, because the end user has a "dad the internet is slow today" mentality. Couple that with a "reinstall your windows" helldesk and the solution becomes VERY HARD.

  53. Read about this on I, Cringely the other day by yodleboy · · Score: 1
  54. Re:Theoretically, could this be mitigated with ATM by Graff · · Score: 1

    If we all switched to ATM (Asynchronous transfer mode), would this issue be fixed, regardless of the size of RAM available at the endpoints?

    A good buffering algorithm SHOULD be implemented as a fifo queue, preferably a circular buffer. Nothing should stop transmitting in order to fill up the buffer, the front of the queue should be emptied as fast as possible and the back of the queue should be filled as fast as possible. Stopping to fill a buffer before transmitting is just asinine.

    Buffers should work to even out transfer speeds and reduce jitter. What will happen is that a buffer just before the slowest link will start to fill as more data comes in than goes out. Once the buffer is full the packets will begin to be dropped and the TCP window will narrow, in the meantime the buffer should still continue to serve the slower link data. Ideally the transmission rate will balance out such that the buffer stays partially filled the entire time, in the real world there will always be some jitter but a properly-implemented buffer shouldn't make it much worse and should have the potential to greatly improve it.

  55. Re:pegged connection == latency, who'd of thunk it by singingjim1 · · Score: 1

    Finally, someone understands why we went into Iraq and explained it so everyone else could understand. Nice job.

  56. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    The request goes out ok, but the response gets added to the buffer on the ISP side of your internet connection, so you won't get it until your original transfer completes.

    That doesn't happen, not even close. Maybe if your machine only had a single TCP/IP session to the outside world or every connection was rerouted and merged into a single connection upstream somehow somewhere or if someone invented a new transport method that utilized a single TCP connection that only went from your machine to your ISP somewhere but that is not how it works now. Yes a system like that would suck but who the hell uses a buffing system like that?

  57. ECN - Explicit Congestion Notification by ei4anb · · Score: 2

    The issue is that many IP stacks do not handle ECN (Explicit Congestion Notification) and only know when the link is saturated by packet loss. Huge buffers hide the problem. A solution is to use ECN, that's what it's for http://en.wikipedia.org/wiki/Explicit_Congestion_Notification

    1. Re:ECN - Explicit Congestion Notification by leuk_he · · Score: 2

      No. There is no simple solution. ECN might help, but as the link already points out, it is disabled by most common implemnations. I think that all all hops need queue management for this to work, but i am too lazy to read the entire RFC.

      I Don't dare think about relying on ECN in tunneled protocols (VPN).

      I am not saying that ECN is bad, but it is a differnet discussion from bufferbloat. The problem is large buffer causing a jitter in the the delay. ECN might help in minimizing congestion, but if the end result of ECN is that ECN clients are slower than non-ECN clients i know what will happpen....

    2. Re:ECN - Explicit Congestion Notification by John+Hasler · · Score: 1

      ...if the end result of ECN is that ECN clients are slower than non-ECN clients...

      They should be faster. With ECN you get notices rather than drops thus eliminating retransmits. The reason for turning ECN off is buggy routers that drop packets with ECN set. I wonder how many of those are still out there, though.

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  58. Tos field in ip header by Anonymous Coward · · Score: 0

    Can someone explain why broadband routers don't use the TOS bit to do some basic Qos.

    Add this to a well behaved P2P (or Rsync in the case of TFA) client that sets this field, and you get rid of most issues.

    1. Re:Tos field in ip header by leuk_he · · Score: 1

      I can see some problem immediatly:
      -There is no good QoS interface (at least not in winXP) for applications to set bits.
      -Misbehaving application (everyone thinks they are the highest priority, but in reality p2p file exchange should be low priority). That is an immediate reason to ignore Qos.
      -There is no incentive for ISP to follow this Qos Bits. You don't earn money by SOME serving traffic faster or slower.

      by the wya, good QOS dos not solve this bufferbloat. large jitter will cause tcp/ip to misbehave on congested networks. (And QoS is there to hide some of the the congestion, not to prevent congestion)

    2. Re:Tos field in ip header by m.dillon · · Score: 1

      The TOS bit is almost useless. It is abused mightily and even standard services such as ssh can't really tell the difference between an interactive session and a batch session. So there's no real point in trying to queue based on the bit.

      -Matt

  59. Re:pegged connection == latency, who'd of thunk it by Teancum · · Score: 4, Insightful

    This is an excellent explanation of what issues are happening here. I can clearly see that this is an issue, and the problem is something that over time will impact everybody.

    The problem is really focused on trying to deal with differences in bandwidth between computers... always a problem but in this case trying to match up slow connections with fast connections is particularly difficult. Since memory is cheap, a 1 GB buffer certainly can be found in some devices now and perhaps much more. I don't see this example as being really too far off the mark in the near future.... which is the point being raised and why buffer bloat is such a big deal.

    More to the point, some of the complaints that triggered the "quality of service" debate are rooted in this problem. As mentioned in the original article triggering this whole slashdot thread, setting up "quality of service" priorities only creates multiple buffer queues.... it doesn't solve the problem of the monster queue to begin with. That is why the author of the blog post suggests that the debate over network neutrality is not based upon the real problem that is facing network engineering and why it is a political solution in search of a problem.

    It takes awhile to "grok" this problem, but once you do it becomes obvious why this is such a huge deal.

  60. Re:pegged connection == latency, who'd of thunk it by AlecC · · Score: 1

    The problem is not with /his/ connection, it is with /some link somewhere/ in the internet which has maxed out. He has no idea where it is, nor probably does anyone else including that link's owner. Of course, you expect that to happen, and many internet protocols, particularly including TCP, have sophisticated and well tested mechanisms for throttling back when they detect congestion in their path and slowing their transmissions in a manner which actually works very well at sharing the available bandwidth, But there is a critical phrase in that last sentence: *when they detect congestion*. Large amounts of buffering in the system delays the point at which the sender realizes that packets have been dropped and throttles back. Then a large number of packets get dropped, so the sender scales back a long way to dead slow, and slowly speeds up until it detects packet loss. But, because of buffering, by the time packet loss is detected, it is already sending far faster than the remote choke-point can handle.

    By analogy, think of driving a car whose brakes have a one second delay before they go on, and then go to full emergency stop. You would progress in a very stuttery and uncomfortable manner, and on average not very fast. That, he says, is what is increasingly happening to out internet connections. Huge buffers fool senders into thinking that there is lots of bandwidth, and then discard scads of data which has to be retransmitted.

    He implies that QoS all the way would alleviate this problem - but that seems incompatible with current pressures for Net Neutrality. At the moment, the end consumer has no access to QoS.

    --
    Consciousness is an illusion caused by an excess of self consciousness.
  61. Re:pegged connection == latency, who'd of thunk it by Shakrai · · Score: 2

    People who aren't networking engineers don't know about QoS, or don't know/want to know how to configure it.

    *shrug*, not my problem :)

    QoS used that way is a hack to work around an issue that doesn't have to be there in the first place

    The issue is always going to be there. Pegged connection == FIFO queuing, absent some sort of QoS scheme.

    How do you determine the maximum throughput? It's not necessarily the official line's speed.

    If you aren't getting the line speed you paid for then you need to find another ISP.

    The nice thing about TCP is that it's supposed to figure out on its own how much bandwidth there is

    And it does, even with QoS. All you do with QoS is force the buffering to happen on equipment that you control rather than equipment your ISP controls. In this manner you can ensure that time sensitive packets (interactive VPNs, VoIP, etc.) don't sit in the queue behind someone's Windows Update download.

    QoS is most effective on stuff you're sending

    It's not really all that difficult to shape downstream traffic. All you need is a router between your internet connection and LAN clients. I've done this for years at my office using the QoS functionality of the Linux kernel. We are located out in the middle of nowhere with T-1s as our only means of connectivity. Sharing a 3.0mbit/s connection with 60+ employees without QoS is virtually impossible if you need to run interactive protocols.

    --
    I want peace on earth and goodwill toward man.
    We are the United States Government! We don't do that sort of thing.
  62. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    That makes no sense. It doesn't matter how fat their pipe is because your computer needs to receive and ack those TCP packets. They can't just dump the file and close the connection.

  63. Re:pegged connection == latency, who'd of thunk it by omb · · Score: 1

    No, The problem is diagnosed quite clearly, the TCP protocol is designed to deal with full buffers, ie no more transmit space left, and cope with that BUFFERBLOAT means that the transmit side KEEPS accepting packets, which may then time out or be dropped and THIS implies unstable latency and congestion spikes. Routers should allocate a small number of buffers for each connection and return an appropriate transmit window size.

    Please READ the blog carefully, it all makes much sense even though the result is counter-intuitive.

  64. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    To solve this problem, you first have to realize why these buffers exist: They are put there to avoid dropping packets. The buffer is only used when the network connection is so congested that without the buffer the arriving packets would have to be dropped because they can't be forwarded. With protocols which implement congestion control, the buffer size should not grow uncontrollably, because, for example with TCP, packets which are in the buffer do not get ACK'ed and TCP throttles the flow to match the available bandwidth. Recently there was a story about Google, Microsoft and others ignoring the TCP spec and sending more initial packets without waiting for ACKs. If you were wondering then why that's a bad idea, this is it. Of course the other option is to simply not use large buffer sizes on network equipment and avoid congestion by provisioning more network capacity.

  65. Re:pegged connection == latency, who'd of thunk it by Teancum · · Score: 1

    It is also about "you" buffering, as even something so innocent as your home network router box can be at least a source of some of the problems. The problem is all across the whole network and the fact that buffering because memory is cheap isn't the solution to all networking problems.

    If your home router (or the router connecting your LAN to the greater internet) has a huge buffer, it is possible for the outgoing packets to also start backing up where the latency of the network drops considerably. In the original article, the author goes into details about how a simple switch of routers at his home is something that triggered some huge problems with latency on the order of 10 seconds or more. When you are talking network connections, that is a huge latency issue and it completely kills connections with something like Skype that needs latency on the order of a fraction of a second to work effectively.

    The funny thing is where he goes and explains how Bittorrent files exposed this problem early on, why it became an issue for cable modems in particular and not so much for DSL users. That analysis is brilliant, furthermore explaining why the "solution" by Comcast to filter out torrent uploads was a silly move in the first place and only kicked the problem down to a future resolution.

  66. Re:pegged connection == latency, who'd of thunk it by Hatta · · Score: 1

    That is why the author of the blog post suggests that the debate over network neutrality is not based upon the real problem that is facing network engineering and why it is a political solution in search of a problem.

    It takes awhile to "grok" this problem, but once you do it becomes obvious why this is such a huge deal.

    At least the real solution is obvious. Invest in network infrastructure and eliminate those queues entirely.

    --
    Give me Classic Slashdot or give me death!
  67. Re:pegged connection == latency, who'd of thunk it by bcmm · · Score: 3, Informative

    That makes no sense. It doesn't matter how fat their pipe is because your computer needs to receive and ack those TCP packets. They can't just dump the file and close the connection.

    OK, not on the (intentionally ridiculous) scale used in the example, but people are doing something very similar to what you describe, even though they "can't do that". http://slashdot.org/article.pl?sid=10/11/26/1729218

    --
    # cat /dev/mem | strings | grep -i llama
    Damn, my RAM is full of llamas.
  68. Re:pegged connection == latency, who'd of thunk it by jelle · · Score: 1

    That site won't have a 1GB SNDBUF, so that won't happen. ('man 7 socket', then search for SO_SNDBUF).

    It's amazing how many people, Gettys apparently unfortunately included (note: of course I did not rtfa before I posted this), don't know how TCP/IP really works.

    There is no 'bufferbloat because RAM is getting cheaper'. What he is seeing is what happens when you want to saturate your link. It's sort of an Heisenberg of communication, if you want low latency and low (or no) packet loss on a connection, then the bandwidth can't exceed the available bandwidth, and for any instance that it does, you get either a buffered or a dropped packet.

    --
    --- Hindsight is 20/20, but walking backwards is not the answer.
  69. Re:Theoretically, could this be mitigated with ATM by nitehawk214 · · Score: 1

    Slashdot is in a very murderous mood today. This guy would kill to have a name like Gettys, you will kill if people roll out ATM.

    --
    I'm a good cook. I'm a fantastic eater. - Steven Brust
  70. Re:Theoretically, could this be mitigated with ATM by Anonymous Coward · · Score: 0

    | Stopping to fill a buffer before transmitting is just asinine.

    Huh? Starting to fill a buffer before your output bandwith is saturated is something you can do to get throughput, but it kills latency. And latency is often
    more important. (If I have a device with 1 MB buffer, should I get the first webpage only after I sent out enough requests that my requests are 1 MB in size?)

    | What will happen is that a buffer just before the slowest link will start to fill as more data comes in than goes out.

    Once you have a link that has more data than it can send, then there is no more sense in buffering. Just send out what you can, drop what you
    cannot send. If you cannot send all you get then there is no sense in buffering anything, you only cause latency, but gain nothing.

    The problem is that if you are not the slowest link but only some connections will somtimes shortly produce more data then you can sound out at
    that moment, then a buffer is good to send it later. That means if you test in an artifical net where all pipes are bigger than needed, buffers will not harm but only have good effects. But once one connection is too slow for the data wanting to get through, the buffer causes problems. And the way TCP is made will made this little problem a very big problem.

    | Once the buffer is full the packets will begin to be dropped and the TCP window will narrow,

    But only packets getting in now will be dropped. Everything still in the queue will still be sent. The other side will receive it and send acknowledgements.
    So it will be a very long time before TCP will even notice it should no longer increase traffic.
    In the meantime you cannot serve the whole connection, you have absurd latency because you still let everything rot in the buffer.
    So even dropping the whole contents of the buffer at this time is likely to produce better results in this case. (Unless your buffer is small enough
    that TCP's algorithm is still able to calculate proper throughput, which it no longer if it only realized it's being too fast almost a second later).

  71. Re:pegged connection == latency, who'd of thunk it by Antity-H · · Score: 1

    The problem is that rate-limiting should happen automatically through TCP congestion avoidance protocol and it doesn't at least not for a sane value of latency.

    the tcp connection which is maxing out the bandwidth should notice that it is doing that and throttle back down a bit until it it just shy of saturating the available bandwidth in order to keep latency to a minimum or at least to a sane value for the link. This would also allow for low latency for the // ping and therefore for low latency web browsing

  72. It will be a hack by dachshund · · Score: 4, Insightful

    2. QoS used that way is a hack to work around an issue that doesn't have to be there in the first place
    3. How do you determine the maximum throughput? It's not necessarily the official line's speed. The nice thing about TCP is that it's supposed to figure out on its own how much bandwidth there is. You're proposing a regression to having to tell the system by hand.
    4. QoS is most effective on stuff you're sending, but in the current consumer-oriented internet most people download a lot more than they upload.

    While the Internet in-theory is beautiful, our modern implementation really is a series of layered hacks. And the solution to Bufferbloat is going to be another hack. You're crazy if you think that the solution to the Bufferbloat 'problem' is going to be some fundamental redesign of the TCP protocol (how would you force 10 people to use it?), or the total re-architecture of millions of consumer devices to remove buffering. You're also crazy if you think the ISPs and backbone providers are going to stand by while this thing kills the Internet.

    So the question is: which hack will it be? The GP poster already identified one that works well enough --- using QoS to control flows. Your final objection about content providers stressing connections is the real one. But there's some probably a good hack to deal with it --- or more likely a series of hacks, some at the content providers themselves (e.g., Netflix), some in the backbone, and some at your ISP. It won't be elegant, but it will keep this problem from ever becoming anything more than a few cranky blog posts.

    1. Re:It will be a hack by rickb928 · · Score: 1

      Actually, the solution to bufferbloat is to stop using large buffers. Let TCP manage the connection.

      An analogy. If you want to drip irrigate your garden, you usually connect the water source, add in the necessary stuff, and eventually you put a drip emitter on the line that only lets 1GPH flow, or whatever. Now, if you put a 1GPH valve on the water connection, fine, you get the 1GPH at the emitter. Add emitters, cause you have more than one flower in your garden, and well your flowers are sharing the 1GPH. Not what you intended. Bufferbloat has all these devices trying to manage the flow, and they are all breaking at the least the initial management, your TCP stack. And breaking all the others as well.

      Another, better analogy. If you've ever been going down a long street and hitting every red light, that's an intentional traffic management method (unless the lights really aren't sychronized, which happens). This allows intersecting traffic to flow also, and prevents accidents. Now imagine this on the Interstate, on a divided highway. There is no intersecting traffic, only on-and off-ramps. But some nimrod put up a light to buffer you all so that traffic would accumulate, than be released to maximize the flow. Wrong. It just creates artificial congestion. Bogus.

      I'm obviously not very good at this, but I grok what Gettys is saying, in my reptilian-part of my brain.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
    2. Re:It will be a hack by iwbcman · · Score: 1

      Well I guess I may be crazy. Your post reaks of defeatism-as if we were incapable of rising to the challenge. Off the bat here are a couple of potential solutions:
      • Within the next few years the transition from ipv4 to ipv6 will eventually happen. This provides a unique window of opportunity. Countless millions of devices will need to be replaced because they do not properly support ipv6. If there was a carpe diem attitude about this, it would be a great opportunity to resolve it.
      • I may be wrong but I believe network devices still are FCC regulated(at least all 3g/4g/wireless etc. are). If so the FCC could issue a new requirement for certification: all network devices must conform to TCP congestion avoidance algorithms, which means minimal buffering so these algorithms can work. Any device manufactured which failed to make to the changes to their hardware would not get their equipment certified.
      • If we in America fail to do so the EU probably will. Simple regulation can go a long way in correcting such problems.
      • Yes the problem is daunting and vast, but that is no good reason to not try to resolve it. Yes most "solutions" are hacks-but this particular problem threatens the entire basis of the global digital economy, I think the stakes are too high for people to just paper over the problem.
      • At the least network driver programmers could change their code to not use all of the available ram buffers. This would help a lot.

      Maybe I am an optimist. Maybe I'm a dreamer-but I'm not the only one..... :)

    3. Re:It will be a hack by Idbar · · Score: 1

      My main objection with QoS is that it helps to demote Net Neutrality. I mean, if you do it at home, why not prioritizing packets at ISP level and so on. TCP was designed to be fair among clients, using QoS means that the fairness is forced to another state (most likely that you'll be paying for).

      A "hack" proposed and implemented long time ago are active queue management algorithms (AQM), but then again, many network managers don't use it or set it up on routers, because the "buzzword" is QoS, not Congestion Control (or bufferbloat).

      Then again, while I'm all in for congestion control over QoS, QoS addresses a different problem, and protocols such as those used for P2P, abuse the fairness of TCP.

    4. Re:It will be a hack by dachshund · · Score: 1

      Yes, but the problem is that these buffers exist within zillions of different devices. Your computer has one, your smartphone has one, your wireless router has one, your DSL/Cable modem might have one, the router up the street may very well have on, and on and on through to the webserver you're talking to right now. Fixing this problem means getting thousands of manufacturers and software developers to change the operation of their products, then pushing those updates out to millions of users to install.

      Now, I recently updated the firmware wireless router, but I'm pretty sure that I'm the exception --- and honestly, I wouldn't have done it if the thing hadn't been malfunctioning. I certainly can't do the same thing for my cable modem. And I'm what my grandmother would call 'tech-savvy'. Consider the millions of users who aren't tech savvy, and that they're running hardware and software that's out of date. Even if they knew how to update it, much of it probably doesn't even have a good update path /assuming/ you could get the manufacturers to care enough about this problem.

      So well you've hit on the "right" solution, it's also the one that's least likely to be implemented. The question is: what solution will be adopted in its place?

    5. Re:It will be a hack by rcw-home · · Score: 1

      How about this for a solution: Get the major speed test websites to check for this problem. The ISPs won't stop hearing about it until it's fixed.

    6. Re:It will be a hack by rickb928 · · Score: 1

      Well, it has to be fixed in every device. And it shouldn't be this way, some devices shouldn't be buffering nearly as much as they are. The bottom line here is that every device maker that thought it would be a good feature didn't evaluate the idea in light of every other maker doing the same thing. So we have buffers everywhere stopping up traffic and causing this problem.

      And you may have updated your router the other day, but be assured that unless you are using something open-source AND you went in and configured it just so, you have not changed anything about this problem with your hardware. The makers are not yet into this.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
  73. Re:Theoretically, could this be mitigated with ATM by ljw1004 · · Score: 1

    The issue is that, when packets are dropped and the TCP window narrows, it's pretty much a catastrophe from throughput perspective. In particular, the recipient won't know about a dropped packet until the latency delay, and the sender won't know about it until (minimum) twice that latency. And so the sender will keep on sending at its high rate, causing it and everyone else's packets to drop, and it'll take many round-trip-times before flow is re-established.

    If there were smaller buffers in the internet routers, then receiver and sender would know much quicker about congestion, and they'd be able to get the correct transmission rates with only a tiny amount of disruption.

  74. Re:Theoretically, could this be mitigated with ATM by naasking · · Score: 1

    Why, what's wrong with ATM? (besides the cost of the switch) It has all the predictability and latency guarantees that people *wish* IP had.

  75. Re:pegged connection == latency, who'd of thunk it by farnz · · Score: 1

    The point he's making is that in the days when TCP was developed, RAM was expensive, so we didn't have big queues. As a result, you didn't need to rate limit any connections to get low latency and high throughput.

    Remember that no matter how big the queue is, if you saturate your link for long enough, you get a degree of packet loss. If, for example, the queue is 5 seconds long at maximum speed, and you saturate the link for 6 seconds, you lose some packets. TCP exploits this by using the packet drop as an indication that a link in the path between two hosts is saturated. When buffers are appropriately sized, and queue length appropriately managed by something active like RED, this is not a problem; latency stays low because the queue isn't that big compared to the link throughput, and packet drops genuinely indicate congestion on the path.

    Bufferbloat creates the symptom you're working around by QoS and rate-limiting. Because the queue is immense, there's no packet drop until the latency is insane. Because there's no packet drop, the TCP stacks sending data your way don't believe that your link is congested, so don't slow down. Your rate-limiting and QoS fixes this by letting the packets come in via your Internet connection, then dropping them if the actual data rate exceeds a level below that which your line is capable of; Gettys is asking why you need to do that. Why can't your ISP shrink their queue, and drop packets when your line is just saturated, rather than building up an immense queue, which you promptly go and waste by throttling to less than the speed you've paid for?

  76. Sometimes, fairness sucks. by Antony+T+Curtis · · Score: 1

    Personally, I think the problem is in the assumption of fairness; as in first-come first-served.

    If network infrastructure instead handled packets in LIFO order, than a large majority of packets will be delivered in a timely manner with a small percentage grossly delayed... or dropped when the LIFO buffers fill up which would eject the oldest packet from the buffer.

    Protocols such as TCP would see network congestion effects more rapidly and if packets were dropped, TCP has ways of getting the lost, or grossly delayed, packet retransmitted.

    --
    No sig. Move along - nothing to see here.
    1. Re:Sometimes, fairness sucks. by PseudonymousBraveguy · · Score: 1

      You solution would probably introduce a whole lot of DUPs, because the bottom of the stack will be retransmitted before it leaves the stack. Also, packet reordering with TCP sucks.

  77. And this is a known problem, and fairly intuitive by ebrandsberg · · Score: 3, Interesting

    let me summarize the problem that is being observed: On a given interface, if you have more buffer memory than is needed as packet buffer on the transmit side, it can induce latency. As an example, consider a 1Mb/s link. If you want to have a peak of .1s latency added by buffering at high load, then you want 1Mb*.1=12,500 bytes of buffer. If you have 1MB of buffer, then you have 8 seconds of buffer, therefore triggering the "buffer bloat" issue. Part of the problem is that buffer size would be set based on the top speed a piece of hardware could drive, i.e. if you want a 1Gb/s interface to be able to buffer .1s, then you use it at 100Mb/s, then it has 1s worth of buffer. In most home deployments where you have a router that may have a 1Gbps upstream, maybe 4 100Mb/s physical connections, and a 54Mbps wireless router, you probably have a shared buffer for all the interfaces. The result of this is that when using the 54Mb/s wireless, you can easily have the buffer over saturated, while the buffer size may be just right for the 100Mb/s interfaces.

    What is the solution to this? Realistically, the alternative is to drop packets that have resided in the buffer longer than a configured amount of time, which causes it's own performance issues. Net result: TCP would slowdown for a period of time, but would speed up again resulting in a sawtooth behavior. This would result in periodic issues with other protocols as well, i.e. VOIP would have dropped packets every time TCP ramps up again, etc.

    Solution: Don't download porn when you are trying to do VOIP calls.

  78. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    Right. Because most people really are content providers at heart.

  79. Yes, buffers can introduce latency by perpenso · · Score: 5, Informative

    Latency is bad? Bigger buffers = more latency?

    Buffers increasing latency is not exactly a new phenomena. Its been observed and taken into design considerations for quite some time. For example back-in-the-day serial chips essentially had a buffer of one byte. The CPU fed data one byte at a time as the buffer became available and latency was pretty low since data was immediately transmitted. As more capable serial chips became available larger buffers were introduced. A newer chip may have a larger buffer but it may also not transmit data as soon as it has a single byte. It was common to have two programmable thresholds to begin a data transmission, (1) when a certain amount of data has accumulated in the buffer or (2) when a certain amount of time has elapsed. So if a "packet" to transmit was small enough it may sit in the buffer until (2), hence more latency with larger buffers. Software that cared generally began to issue flush commands to cause anything in the buffer to be sent immediately.

    Network cards and/or the operating system may try to similarly accumulate data before transmitting a packet.

    1. Re:Yes, buffers can introduce latency by Anonymous Coward · · Score: 0

      As the original AC I can safely say "really?" once again, and this time hope the sarcasm sticks.

      Having read TFA, I can also say that the problem is really more one of delayed acknowledgement induced by lengthy buffer waits. Of course, this is more an issue with modern programming paradigms missing the boat on the reason a restrictive protocol is so stingy with its resources: programmers have no clue about timing when arguing against electrical engineers.

      Of course, the problem with explicit flushing is that then you're essentially re-writing proper flow control on an ad hoc basis, per application. I would hope that few would argue flow control is an application-domain issue, outside of perhaps a few critical sections or at a higher level.

      My answer is to segregate the memory into cells and use them for parallel small buffers. If you know that one particular long-lived application is going to prioritize bandwidth over latency, an optimization may be to aggregate several neighboring cells and kill a few worker threads/handles/what-have-you.

      Here be opinion:
      As an engineer (read: operator) in the NOC of a moderately-sized international corporation dealing with multi-modal real-time communications to absurd numbers of simultaneous endpoints, my impression is that something is amiss. "Internet weather" has been steadily worsening, both in intensity and frequency; RTT has been increasing across several continents, and our datacenters in North America are starting to experience phenomena usually reserved for real-time applications from Africa. Either some California closets just got a lot warmer, or something's straining our infrastructure — and somehow I don't think it's just a few anons and their script-kiddie toolkit.

    2. Re:Yes, buffers can introduce latency by GooberToo · · Score: 5, Insightful

      It doesn't help that massive numbers of people actively insist on breaking protocols which specifically exist to alleviate some of these types of problems.

      Far too many people ignorantly block all ICMP traffic. As a result, the network path in between the two communicating hosts are forced to buffer more data as the destination host becomes saturated. Worse, this type of filtering has a tendency to quickly compound, which in turn creates the exact type of bufferbloat he's describing.

      I wish people would understand there is a difference between, "No route to host", and a black hole. When you find a black hole, chances are really good you've found a host. As such, purposely breaking protocols for people to have an imagined increase in security only breaks the Internet as a whole when it becomes a wide spread tactic. And before people start rattling off that it opens a whole new can of worms, please realize that unlike in the past, stateful firewalls are extremely common today - so no.

    3. Re:Yes, buffers can introduce latency by petes_PoV · · Score: 2
      Ring buffers in serial ports are not quite the same thing. With a serial port, once the ring bugger had filled (i.e. inut pointer == output pointer) the sourcing program would either be deschedule, pause a time or loop until there was space in the buffer to put the next byte of data. Nothing was lost.

      With network buffers, what JG seems to be saying is that this does not happen. As packets arrive at whatever the choke point is in the circuit, there is no method for telling the sender to stop sending - the packets just keep coming. As a consequence, once the buffer has filled something starts dropping them - relying on the TCP error correcting protocols to resent "lost" packets.

      The problem he's describing is the lack of an XOFF or DTS/DSR handshaking in the lower-level transports. Either that of incorrectly set window sizes, so packets are sent even though a certain number of earlier packets have yet to be ACK'd.

      I have to say, that I have not experienced the issues JG raises. I can easily get 1.4MByte/second off my 14269 MBit/s ADSL downlink and it will send me data at this speed all day. Maybe our european infrastructure is adequately sized for the number of users and amount of traffic?

      --
      politicians are like babies' nappies: they should both be changed regularly and for the same reasons
    4. Re:Yes, buffers can introduce latency by Coren22 · · Score: 1

      Not so much. On a Ethernet card there is no reason to wait any time. Sure there is a buffer so a large amount of data will queue up instead of trying to send all at once, but there is also no reason not to send the first packet as it hits the buffer. Why wait when the line is yours? The only wait time is involved in the Physical layer, and only on pre Gigabit/pre switch, and that was the wait for another computer to finish its use of the physical line to prevent collisions.

      --
      APK likes to ask for responses to the same things over and over. Maybe he just likes the responses?
    5. Re:Yes, buffers can introduce latency by gottabeme · · Score: 1

      You have a 14 Gigabit ADSL connection? I'm jealous. =)

      Assuming you meant 14 Megabits, still, that's much better than the ~1.2 Mbit DSL connection here in Texas. While visiting family here, I've found that downloading one file via HTTP causes all other traffic to suffer multi-second latency. Netalyzr shows 3000+ms buffers. But using my own connection at home I don't suffer this problem. I'm guessing the ISP hardware here has oversized buffers now, because it wasn't always this bad.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    6. Re:Yes, buffers can introduce latency by bar-agent · · Score: 1

      Far too many people ignorantly block all ICMP traffic. As a result, the network path in between the two communicating hosts are forced to buffer more data as the destination host becomes saturated. Worse, this type of filtering has a tendency to quickly compound, which in turn creates the exact type of bufferbloat he's describing.

      Most routers offer ICMP blocking as a security measure. Here's what mine says about it:

      Computer hackers use what is known as "Pinging" to find potential victims on the Internet. By pinging a specific IP address and receiving a response from the IP address, a hacker can determine that something of interest might be there. The Router can be set up so it will not respond to an ICMP Ping from the outside. This heightens the level of security of your Router.

      Based on this, of course you'd disable ICMP Ping.

      --
      i'd hit it so hard, if you pulled me out you'd be the king of britain [bash.org]
    7. Re:Yes, buffers can introduce latency by badkarmadayaccount · · Score: 1

      Would SCTP solve the issue?

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  80. Re:pegged connection == latency, who'd of thunk it by zm · · Score: 1

    oh, Iraq.... whew.... for a moment I was afraid you were referring to the CO2 emissions....

    --
    Sig ?
  81. Jim Gettys did the world a great service with this by iwbcman · · Score: 5, Interesting

    I discovered this series of blog posts about 2 months ago, when he accidentally published one of his blog posts prematurely. I started reading it and followed the links and saw that this was a like a sleuth tale-if I had started reading this with his very first blog on the topic I would have had no idea where he was going with this. Now as to why this contribution by Jim Gettys does the world a great service:
    • Gettys is not pointing fingers at someone. The problem he is describing is truly vast, and involves lots of different people in different industries(router manufactures, ISP's, kernel driver authors, carrier grade network manufactures, etc.) with, presumably, a myriad of different intentions. The problem has been building over a long time-this didn't start yesterday, and won't be solved in a short time span, without a concerted effort on the part of everyone involved in all of these divergent industries, who often have quite divergent interests.
    • This approach that Gettys takes allows him to describe a problem which confronts everyone. By taking the high road and not pointing fingers he is able address an issue in such a way that a lot of the people who did contribute to this problem can recognize what they have done and own it, without being labelled, accused or feeling attacked. This should be a lesson to anyone who really wants to redress an issue that effects everyone.
    • Gettys develops this theme over many, many blog posts. It makes for some of the best internet reading I have experienced in years. Things only gradually become clearer-not merely what the problem is, but also all of the issues involved in it. I can read away in the internet for months at a time and not learn as much as I did by reading this series of posts.
    • Gettys knows what he is talking about. He developed this theme by talking with lots of experts -engineers at the ISP, people who played a pivotal role in the creation of the www and network specialists. He himself is not a network specialist, but he went out and met with people to discuss his findings and took clues and information from these exchanges to inform him and his quest to find out what was going on.
    • The series is short on answers. It may prove frustrating to many that he offers so little in the way of solutions to this problem. But this this due to the fact that the problem cannot be resolved by you, the end user. To solve this problem means rearchitecting countless millions of devices and altering hundreds of thousands of lines of code in multiple OS's.
    • Failure to redress this problem means that every effort to decrease latency by upping available bandwidth or upgrading network infrastructure will fail to deliver. If packets are not dropped fast, due to excessive buffering, the negotiation process fails, which invariably means congestion, which means latency-only something that addresses this issue has any chance of actually effecting change. Saying that this problem is just an issue already solved by QOS show that you don't understand the problem.
    • One of the first thoughts I had reading this was: if the techs on wallstreet read this article they will inevitably exploit this issue to win precious milliseconds on the stock exchange-ring a bell?
    • Any ISP could exploit this issue to offer a relative market advantage. Sadly when resolving an issue is in everybody's interest, market players will exploit the issue for their own relative gain. Getting everyone to actually tackle this is going to a gargantuan task.

    Hats of to Jim Gettys. Thanks for your service.

  82. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    QOS does not always work that well.
    If i have a router that manages QOS connected to cable modem.
    The router can manage QOS in the routers buffer but it has no controll over the buffer in the cable modem.
    It cant tell the router hey i have som importent packages here please put them early in the buffer.

    I managed to get semi working by forcing my router to have the exact same buffer size as the cable modem so the modem will fill it's buffer every time
    but it's not perfect since you cant send one buffer and wait until the cable modem buffer is empty to send the next.

    Sure if you have QOS directly in the cable modem this is not a big issue, except that you cant controll the reciving end.

  83. Stop the presses by Anonymous Coward · · Score: 0

    This is slowly but surely turning into a Orson Welles movie.

    Mark my word: Rosebuds.

  84. Could it be ... by PPH · · Score: 1

    ... too much deep packet inspection going on?

    --
    Have gnu, will travel.
  85. The real problem by stox · · Score: 1

    Education. Talk to many network engineers these days and ask them about queueing theory. After the deafening silence, you may wish to rethink who is architecting your network.

    --
    "To those who are overly cautious, everything is impossible. "
    1. Re:The real problem by John+Hasler · · Score: 1

      > Talk to many network engineers these days and ask them about queueing theory.

      Or control theory.

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  86. Think of the Children! by MacGyver2210 · · Score: 1

    If we don't have big enough buffers on our network devices, where will the network-based sentient self-forming AI store itself?

    --
    If the only way you can accept an assertion is by faith, then you are conceding that it can't be taken on its own merits
  87. Re:pegged connection == latency, who'd of thunk it by swilver · · Score: 1

    Except that never happens, since you donot request 1 GB. Instead you use a TCP link which uses packets, and which are only requested in chunks that your line can handle (using the window size which will scale according to available bandwidth on YOUR side).

    In other words, your software will never request sizes that big in one go, and so you will not be saturating your line with it.

    If however you do manage to saturate your line, then that is still a problem on your side, and can be solved on your side by simply limiting the rate just below maximum speed.

    A: is bogus, there are many sites that can saturate my crappy line without blinking -- they do ALL rate limit though (well actually the receiving site is doing that by virtue of not requesting more data than the TCP window size allows).

    B: is irrelevant -- the problem is on the side of the requester; see above, TCP links donot send data willy-nilly, they actually wait until your software acknowledges that earlier data was received before sending more, if they didn't then every site faster than your connection would be DDOS-ing you.

  88. Re:pegged connection == latency, who'd of thunk it by Zan+Lynx · · Score: 1

    No, that was a pretty accurate description of network router buffers.

    Most don't do anything fancy with their buffer queues because that would use too much router CPU. So it's first in first out. You might get RED (random early drop) if you're lucky.

    To make multiple TCP sessions work as you think they work would require the ISP router sending packets to you to be using SFQ (stochastic fair queuing) or something similar. By hashing the packets by "flow" and placing them into separate queues the router can make the TCP sessions share fairly.

    But does the ISP do this? I doubt it.

  89. Re:Jim Gettys did the world a great service with t by gknoy · · Score: 1

    I wish I had mod points to you for such a clearly written post. Hats off to good writers everywhere. May I someday become one. :)

  90. More *numerous* buffers by A+nonymous+Coward · · Score: 1

    As the internet is used more and more, there are more and more layers, each with their own buffers, all getting bigger, so feedback on buffer capacity gets more and more stale and meaningless as it percolates back and forth according to protocol, leading to unanticipated side effects.

  91. Re:pegged connection == latency, who'd of thunk it by Graff · · Score: 1

    As an extreme example, say you request a 1GB file from a download site. That site has a monster internet connection, and manages to transmit the entire file in 1 second. The file makes it to the ISP at that speed, who then buffers the packets for slow transmission over your ADSL link, which will take 1 hour. During that time you try to browse the web, and your PC tries to do a dns lookup. The request goes out ok, but the response gets added to the buffer on the ISP side of your internet connection, so you won't get it until your original transfer completes. How's 1 hour for latency?

    This is an example of how NOT to implement a buffering system. Ideally you should have multiple buffers per connection and have TCP streams go to an available buffer. You then service the buffers according to some scheduling algorithm, reading from one buffer for a pre-determined amount and then switching to another. In this way you can have a large download buffered but if a small stream opens it isn't too burdened by the buffer of the large stream.

    You just need a couple of buffers per connection in order to provide a balance between reducing latency and avoiding starvation.

    This is a huge topic and a lot of these problems have already been worked out. Some compromises have been made and sometimes there are unintended consequences or bad assumptions but overall it does work pretty well.

  92. Re:Theoretically, could this be mitigated with ATM by Anonymous Coward · · Score: 0

    Oh Lord, you'd better hope the fella I used to work with doesn't see this statement. He used to rail at length against ATM. Then again, it might be worth pointing out that his company with their toroidal mesh Terabit Switch Router (TSR) is no longer in business. Of course we'd usually substitute 's' for the 'h'. Engineering humour.

  93. Re:pegged connection == latency, who'd of thunk it by TheThiefMaster · · Score: 1

    Actually with the HTTP spec you just request "the whole file", and the webserver sends it all to you. You don't request individual chunks of the file. Other protocols (e.g. bittorrent) work on file chunks and so can actually do this.

    At the TCP level, the modern spec allows the sender to send more packets without acks on the previous packets, which massively increases throughput on high-latency connections. You can only scale the rate you receive the transfer at by dropping/delaying the packets, and that only works if the sender cares. Dropped packets just get resent, reducing your bandwidth even more, so routers normally delay (buffer) the packets, which (guess what) trashes your latency.

  94. Re:pegged connection == latency, who'd of thunk it by swilver · · Score: 1

    Actually, I think it is ONLY about you buffering. Other boxes buffering is completely irrelevant because YOUR tcp/ip stack should have adjusted the window size accordingly, no matter what is in between you and the destination.

    I mean, if I have a super fast link, but some box in between has a super slow link with a 1 GB buffer, how does that affect me? It only affects me if I actually use a huge window size, but any properly written TCP/IP stack would never use such large window sizes as the receiver would have to acknowledge initial burst of data first...

    The other way around? My link begin super slow? Same thing.

    Now, if you simply make sure that the buffers on your router are always empty and therefore putting them out of play, then latency will be close to minimum. How to do that? Simple, don't request more data than your link can download, and donot send more data than your link can upload. There's software that can do that.

  95. Re:pegged connection == latency, who'd of thunk it by TheThiefMaster · · Score: 1

    It is indeed an example on how not to implement buffering, and older buffered routers used to be even worse: they'd use one buffer per physical network socket, which may be serving multiple endpoints, allowing one person to trash everyone's latency.

    For true fairness, you need one buffer per TCP connection.

  96. Re:pegged connection == latency, who'd of thunk it by Nursie · · Score: 1

    Except the point is that the buffers screw up the TCP algorithms for detecting bandwidth and really make a mess of latency, regardless of what traffic is on the line and who's sharing it.

  97. Re:Theoretically, could this be mitigated with ATM by denis-The-menace · · Score: 1

    ATM: 53 byte frames should be big enough for everybody.

    --
    Obama's legacy: (N)othing (S)ecure (A)nywhere and (T)error (S)imulation (A)dministration
  98. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    He explained why it works, not why you should care. The information you seek is in the summary, oddly enough.

  99. Blue Öyster Cult by tepples · · Score: 2

    In Canada references to the Bank of Canada in news stories have lately been abbreviated to BOC.

    That's because unlike "Federal Reserve" and "Federal Express", "Bank of Canada" doesn't have a snappy, pronounceable contraction (Fed and FedEx respectively).

    When I read "BOC to raise interest rates" I always wonder why the Blue Oyster Cult is doing that.

    No, that'd be "BÖC to raise interest rates". BÖC was probably the first rock band to incorporate a gratuitous diaeresis in its name. The root problem here is that BOC's dis am bigger than yours.

    1. Re:Blue Öyster Cult by gottabeme · · Score: 1

      I think "BanCan" sounds all right. :)

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    2. Re:Blue Öyster Cult by Rudolf · · Score: 1

      That's because unlike "Federal Reserve" and "Federal Express", "Bank of Canada" doesn't have a snappy, pronounceable contraction (Fed and FedEx respectively).

      http://en.wikipedia.org/wiki/Fedex
      FedEx is now the name of the company, not a contracton.

  100. Abstract Buffer Bloat by scorp1us · · Score: 1

    As a service writer (as in SOAP, REST, Win32 system Service, unix daemon etc) I can say the trivial case - waiting for an entire file before processing is far more conceptually simple than writing a true streaming service. I see it all the time. Wait for the file to be done before processing it. Of course, for small files this makes sense. However when working on ever-more-common larger files this doesn't. Most calculations on input data can be done before the next packet arrives. The most trivial is if you're doing a file copy. A more complex example is if you are doing movie transcoding. Anyway, as it works out having a byte stream-oriented design allows you to process the data while you wait. This is seemingly for free. Consider a file-copy from internet to local storage. You can receive your TCP packet at line speed, then write it out on a remote volume far faster. If you do this, you won't have to wait X+Y time, where X is net transfer time (slow) and Y is local transfer time (fast). You will only need to wait X time. Yes, if there is an error you have to abort the local transfer and that takes slightly more intelligent error handling.

    Case and point: I used a video transcoding service. I had to wait for 3 times X+Y+Z which are upload, transcode and download. Since my effective upload speed was a few dozen KBps, the transcoder CPU could have transcoded in real time, and sent me a byte stream back. meaning it would only take X time. Also note that if it is a multicore CPU, the transcoding can be done independent of the byte stream reading/writing.

    In the case of errors - which are not common, it is ok to throw out those wasted CPU cycles, because the odds are they would have been idled anyway. On a server that handles many requests at the same time and isn't idle, errors (and cancellation) are rare enough that the time saved more than makes up for the few wasted transactions.

    There are graphics libraries that support streaming pixel transforms like graphicsmagick ( http://www.graphicsmagick.org/ ) and I am sure VLC/ffmpeg supports a streaming conversion as well. using streams rather than whole files is the way to go.

    Of course, this requires a but more error handling (and checksums, which can be problematic http://tools.ietf.org/id/draft-bryan-metalinkhttp-01.html#checksums ) because the checksum needs to be in the HTTP header, which means it can't be sent unless you've already ran through the file once... They way I addressed that is on the HTTP upload, you checksum as you go (again a streaming operation) and store that in a database or md5sum file.

    I often wonder how much better the net would perform if amateur programmers didn't wait to get the whole file.

    --
    Slashdot's rate-of-post filter: Preventing you from posting too many great ideas at once.
  101. SFQ by leuk_he · · Score: 1

    SFQ implies adding an extra buffer.... and this extra buffering will cause the death of the internet.

    The solution is that all hops keep a low buffer, and use the same time (not size) the buffer. That will solve the bufferbloat, but it will not solve other problems.

    The description of the parent comment is correct, but it is an exaggeration, and exaggeration of buffers (to minimize packet loss) is exactly the cause of the bufferbloat.

  102. Re:pegged connection == latency, who'd of thunk it by PseudonymousBraveguy · · Score: 1

    The problem is that the whole point of TCP is to 1. maximize your throughput while 2. avoid congestion. Without excessive buffering, TCP actually can provide both goals. Add to much buffer, you break TCP congestion avoidance and thus your connection. Rate limiting is not a solution, but a mere work-around. TCP should (and in earlier times, could) provide congestion avoidance on its own.

  103. Re:pegged connection == latency, who'd of thunk it by swilver · · Score: 1

    It does not matter how big your ISP's buffer is. Unless they actually make data WAIT in an EMPTY buffer. I don't think they would be that stupid though, in which case the solution always is....

    Donot REQUEST more data than your link can download -- this can be done with throttling, and not acknowledging previously received data until you are ready for more.

    Donot SEND more data than your link can upload -- simply limit the rate of outgoing data to be slightly below your Routers maximum send speed.

    The result: the ISP's buffer will be running close to empty at all times. Your Router's buffer will also be running close to empty at all times (since it can always send/receive the data slightly faster than the rate limit that you set your software to).

    Nice side benefit: Effectively the queue will be on your computer's side. Inserting something at the head of the queue would then skip whatever is already queued up (for sending). Prioritize your games/pings/interactive stuff and you won't even notice that big download in the background.

  104. Re:pegged connection == latency, who'd of thunk it by swilver · · Score: 1

    For uploads, only if you allow it by not paying attention to ACK's you get from the receiver side and simply keep sending data.

    For downloads, only if you are so stupid to request more data than your link can handle.

    TCP will handle both of these as part of the spec. The only way you can still fuck it up is by having many connections going at once. In that case, use some proper rate limiting software.

  105. Re:pegged connection == latency, who'd of thunk it by Keramos · · Score: 4, Informative

    There is no 'bufferbloat because RAM is getting cheaper'. What he is seeing is what happens when you want to saturate your link. ... ...you get either a buffered or a dropped packet.

    Yes, and if a link is saturated, there should be packet drops, which TCP senses, then automatically throttles back to reduce the required bandwidth and avoid saturation. But what is happening, is that these huge buffers are holding packets that would otherwise be dropped, and so TCP doesn't get the feedback it needs to detect saturation. So it continues transmitting at full speed, believing it has uncongested pipes, which in turn continues to fill the buffers, and so on.

    Because of the buffers, most of these packets are eventually getting through, but maybe in seconds instead of tens or low hundreds of milliseconds. Thus you're getting huge latency.

    Jitter is caused by the buffers eventually filling or TCP timing out (registering packet loss), dropping the rate for a little bit, the buffers draining, then TCP upping the rate again as the buffers refill, hiding the saturation, until they're full again. Rinse and repeat.

    It's related to the "bloat" of buffering (due to the increasing affordability of RAM and the "more of a good thing must be better than a little of a good thing - QED" mindset) because, if the size of the buffer is kept below a certain point related to the pipe bandwidth and number of traffic streams, it tends to act just as a temporary "buffer" against spikes in the traffic (the intention of buffering), and can't cause the scenario above, having insufficient capacity to overload the bandwidth just from buffer contents alone. Above this threshold, the latency issues and back-and-forth thrashing noted above occurs. The bigger the buffers, the worse the effect.

    And it's not just a "well, keep your traffic below x mbit if you're on ADSL2" issue, because it happens anywhere a high capacity pipe interfaces with a low capacity or otherwise congested (of any capacity) pipe. This might be your ISP's backbone which is getting hit by several thousand people downloading the latest WOW patch simultaneously, causing your 300kbps Skype call to go to hell through latency and jitter. If the ISP's equipment had smaller buffers, the servers would be throttling back as packet loss occurred. You'd probably still be losing packets, but they'd be detected and re-transmitted pretty quickly and you possibly wouldn't notice the latency or have jitter.

    What he is seeing is what happens when you want to saturate your link.

    So, no, what you get with appropriate buffers is your TCP connection moderating itself to the appropriate link capacity and availability, and latency remaining approximately the same (relative to what you're seeing in bufferbloat, but worse than an uncongested link, obviously).

    With bufferbloat, your bandwidth appears to remain about the same, but your latency balloons massively and you get jitter effects as above.

  106. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    Is my inability to understand and see the problem, or is it how educated stupid I am? I keep losing track.

  107. Enlightment by pinkeen · · Score: 2

    This is been enlightening. I've suffered very similar problems at home, but instead of figuring out the problem I replaced the hardware... After reading TFA all fits perfectly, I had occasional "chokes" - sites would take ages to load, ping's wouldn't return from my Wi-Fi router, DNS queries took ages. All while downloading a big file or something. But what's significant the throughput would stay high. It was strange as hell - high thoughput (an ongoing large transfer [but not large enough to saturate connection]) but other things choke.

    1. Re:Enlightment by metaforest · · Score: 1

      I used to see this buffering issue when my DSL got close to saturation. The solution I applied and suggest to iFriends who have similar issues is to avoid saturating their connections. What TCP cannot resolve easily is my usage behaviors. I have to fix those behaviors on my own. My suggestion: Stop downloading porn while you are playing WoW/(real-time-game-of-the-month). Your latency will improve dramatically.

      Thanks to all who posted well reasoned explanations for why traffic buffering might be a false solution.

      For anyone that still doesn't get it... Meditate on this the next time you hear the pipes in your apartment building rattling....

  108. Re:pegged connection == latency, who'd of thunk it by leuk_he · · Score: 1

    The parent in exaggerating, but wmem_max can be easy tuned up a lot maybe even to 1 GB.

    TCP (or any protocol) cannot simply handle a large jitter due to extrermely large buffers.

    If the network price is higher than ram prices, the mistake is very easy made to make the buffer bigger to reduce packet loss on a particular link.

  109. Buffer bloat or inadequate bandwith by patjhal · · Score: 1

    After reading the explanation the real problem seems to be in the US 10Mbps is fast whereas in Korea 1000Mbps is fast. Korea will not have trouble with bufferbloat but the US will. I do not see the buffer as being the problem here.

    1. Re:Buffer bloat or inadequate bandwith by houstonbofh · · Score: 2

      No the problem is that the self regulation built into TCP is delayed by buffers. The size of the pipe is only relevant in how long it takes to fill. (And like a garage, it will always fill) If you read the articles (Have a few hours free) he shows how to find the issue on a gigabit link. That is even fast in Korea.

    2. Re:Buffer bloat or inadequate bandwith by Idbar · · Score: 1

      In 1992, Jain explained why more speed and more memory won't ease the need of better congestion control mechanisms for TCP. The problem becomes "who has the larger pipes" and the so called buffer bloating will start moving towards the guys with the smaller pipes (reason why, the author now claims it's highly noticeable on the customer side, where the bandwidth is limited by their subscription to the ISP)

    3. Re:Buffer bloat or inadequate bandwith by SanityInAnarchy · · Score: 1

      While the problem would exist for all connections, there are two major factors to consider. One is the ratio of the buffer to the network connection -- so take the same buffer and put it on a gigabit link and the problem is still there, but nowhere near as bad.

      The other is the "clean-ness" of the connection. The fewer packets the connection itself drops, the worse the problem is.

      --
      Don't thank God, thank a doctor!
    4. Re:Buffer bloat or inadequate bandwith by OeLeWaPpErKe · · Score: 2, Interesting

      You forgot the tiny little fact that unless one pulls his connection to the limit with a lot of tcp connections, there isn't any problem.

      Turn off your bittorrent client while you're playing starcraft online, and the problem disappears.

      The post fails to explain what happens in the case of insufficient buffers - and dropped packets : it can take up to 2 minutes for tcp to recover from a single dropped packet (granted - on slow links or long distance connections). Would you really feel that interactive response has improved if things work fast 95% of the time, and then your web browser* - for no apparent reason at all - takes 2 minutes to load pages** ?

      (yes, I'm an ISP's network engineer. Big buffers or small buffers ? Trust me, you want big)

      * the fun thing about webbrowsers is that they open lots of tcp connections, then barely send any packets at all (ie. connection generally closes after 4-5 packets tops - sometimes after 2 packets). If you lose the first packet in a connection, which is quite likely when browsing, the SRTT algorithm has no choice but to wait 2 minutes before retry - guaranteeing the user will have to interfere (ie. "F5"). This results in the massive deterioration of web browsing experience with trivially small packet loss. Unless you've never wondered why internet is near-unusable with 0.1% packet loss on your link, and nothing at all gets through at 1% packet loss. You'd think 99% correctly transmitted packets would translate in 99% of bandwidth available, no ? (in case you have this problem : a simple trick to put everything through a single tcp connection. ssh -D 1025 server_at_work; set up firefox to use socks5 proxy at port localhost:1025. You'll have 40-50% of your link bandwidth available on recent windows or linux)
      ** Just try, go to a big company that's upgraded to cheap gigabit switches, with tiny buffers. Ask them if, perchance, they've been experiencing sudden "timeouts" all of a sudden. Ask again if they like this.

      The way to fix this - not that I'm expecting political interference from large groups of idiots - all large groups are large groups of idiots, because most people are idiots in most subjects - to go in a sensible direction all of a sudden, so "let's get the mob to 'fix' this" doesn't work regardless of good intentions - is not to go with small buffers but to have intelligent queuing algorithms in all devices. Of course, bittorrent will always cause this behavior, because one of two things will happen when bittorrent opens it's 5000 connections
      1) either routers slow down bittorrent traffic in favor of http, much better performance, but results in underwear kids who haven't seen sunlight in a year shouting "NET NEUTRALITY !"
      2) or they "treat all traffic the same" - and with tcp the one with the most connections "wins" the most bandwidth - meaning if you open 500 connections, your web browser is only going to get 1/500th of the link bandwidth - resulting in abysmal performance

      This is what network engineers mean when they're saying bittorrent is destroying network performance. As to what lawyers and politicians mean, yes that's something else, and frankly, I don't care.

    5. Re:Buffer bloat or inadequate bandwith by gottabeme · · Score: 1

      You forgot the tiny little fact that unless one pulls his connection to the limit with a lot of tcp connections, there isn't any problem.

      Turn off your bittorrent client while you're playing starcraft online, and the problem disappears.

      The post fails to explain what happens in the case of insufficient buffers - and dropped packets : it can take up to 2 minutes for tcp to recover from a single dropped packet (granted - on slow links or long distance connections). Would you really feel that interactive response has improved if things work fast 95% of the time, and then your web browser* - for no apparent reason at all - takes 2 minutes to load pages** ?

      You're wrong. Netalyzr is showing 3000+ms buffering on the DSL connection I'm using at the moment. I've discovered that downloading a single file via HTTP causes multi-second latency for browsing web pages (that "2 minutes to load pages" you mentioned). Forget about BitTorrent--I'm talking about downloading one Linux ISO with wget causing new HTTP requests to take many seconds to receive the first packet back from the server.

      I'm glad for you that you aren't having such serious trouble with your connections, but there are those of us who are.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    6. Re:Buffer bloat or inadequate bandwith by fast+turtle · · Score: 1

      the fun thing about webbrowsers is that they open lots of tcp connections, then barely send any packets at all (ie. connection generally closes after 4-5 packets tops - sometimes after 2 packets). If you lose the first packet in a connection, which is quite likely when browsing, the SRTT algorithm has no choice but to wait 2 minutes before retry - guaranteeing the user will have to interfere (ie. "F5"). This results in the massive deterioration of web browsing experience with trivially small packet loss.

      and this is exactly why I have FF set to use a single connection per server. Yes it's counter intuitive but it seems to actually speed up my web browsing and I'm on a basic cable plan (512/256) with multiple computers in the household online.

      --
      Mod me up/Mod me down: I wont frown as I've no crown
    7. Re:Buffer bloat or inadequate bandwith by siglercm · · Score: 1

      House, is that you?

      --
      sigfault (core dumped)
    8. Re:Buffer bloat or inadequate bandwith by Anonymous Coward · · Score: 0

      You forgot the tiny little fact that unless one pulls his connection to the limit with a lot of tcp connections, there isn't any problem.

      Turn off your bittorrent client while you're playing starcraft online, and the problem disappears.

      Given that my ping times jump from ~30msec to >500msec during a single HTTP download on every Internet connection that I've used (which ranges from 1.5 Mbit DSL, 8 Mbit DSL, ~23 Mbit DSL, and ~25 Mbit Fibre), I'd say you're dead wrong.

      If you can quote me a single instance where that doesn't happen, well, good for you. Pity it doesn't solve it for the rest of us.

      For the record, I work for an ISP too, but hey -- don't let that get in the way of your "everybody else is wrong, I'm right" attitude.

    9. Re:Buffer bloat or inadequate bandwith by SanityInAnarchy · · Score: 1

      You forgot the tiny little fact that unless one pulls his connection to the limit with a lot of tcp connections, there isn't any problem.

      You forgot to RTFA. A single TCP connection that saturates your pipe will make latency skyrocket if you've got buffer bloat.

      is not to go with small buffers but to have intelligent queuing algorithms in all devices.

      I agree, but that's as likely to happen as IPv6. Eventually, but not yet, and it may always be "not yet".

      --
      Don't thank God, thank a doctor!
    10. Re:Buffer bloat or inadequate bandwith by OeLeWaPpErKe · · Score: 1

      Have you thought of ... you know ... checking what's clogging your buffers ?

      Because an empty buffer introduces zero delay. 3000 ms delay means something is in that buffer. Remove it. Problem solved.

      And I still think it's bittorrent or kazaa or something. Check your little brother's computer or something.

    11. Re:Buffer bloat or inadequate bandwith by OeLeWaPpErKe · · Score: 1

      Something doesn't compute with what you're saying. It would take quite an artificial situation to cause this behavior.

      Perhaps if you've been downloading an iso for an hour or so, and then start browsing that you'll have to wait for the iso download connection to drop a packet, but come on, is that so bad ?

      If you're browsing and downloading you shouldn't notice any slowdown.

      You want to fix this ? Read this : http://lartc.org/howto/lartc.qdisc.html (or install a ready-made router distro and enable qos).

    12. Re:Buffer bloat or inadequate bandwith by OeLeWaPpErKe · · Score: 1

      You forgot to RTFA. A single TCP connection that saturates your pipe will make latency skyrocket if you've got buffer bloat.

      That won't happen for a lot of the time. Only while the buffer is filling up will this ever be a problem, which should be 3-4 secs tops. After that, the tcp connection will run slightly below the link bandwidth on a permanent basis, meaning latency will drop close to zero again.

      Only lots of tcp connections will saturate a link, even with huge buffers.

      I agree, but that's as likely to happen as IPv6. Eventually, but not yet, and it may always be "not yet".

      Funny you should make this specific comparison. After all, in the last year just about every internet backbone implemented ipv6, and several "normal" access providers implemented it for their customers, including 6to4. Today, if you *want* to use the IPV6 internet, you can.

      The same with intelligent algorithms. It *is* happening. Even cheap wireless routers can do this now. Got an old one ? Install DD-WRT and configure it correctly.

    13. Re:Buffer bloat or inadequate bandwith by gottabeme · · Score: 1

      Did you read my comment? I said that downloading a single file via HTTP ends up filling the buffers and causing the latency. The way you "remove" what's in the buffer is to stop the download. That's the whole point: the latency only becomes a problem when the connection is being used. Your solution is to not use the connection. That's like a doctor telling a patient with a broken arm to just not use his arm anymore, instead of fixing the broken arm. I guess I'll just cancel my DSL and not use the Internet anymore.

      Oh, you're right, it was my imaginary little brother using Kazaa. Why didn't I think of that? How silly of me....

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    14. Re:Buffer bloat or inadequate bandwith by OeLeWaPpErKe · · Score: 1

      What I'm telling you to do, technically, is never to fill your pipe (very bad practice). ISPs never fill their pipes more than 60%, if they can help it. Install something like DD-WRT and rate-limit both sides of the connection to 95% of the link bandwidth (60% is better, but I'm guessing you're not game). Allow it to buffer like crazy, but to prioritize new connections.

      That'll solve your latency issues (of course, not 100%. SOME slowdown is unavoidable, regardless of algorithm used, if you are on a connection where transmitting a single packet takes 4 ms (typical dsl), please don't complain about any slowdown less than 8 ms, nothing can be done about it, except upgrading).

      Or you could just use a linux router : http://lartc.org/howto/lartc.qdisc.html

      And frankly, we have lots of people complaining like you. Sometimes I feel like helping them. Guess what one finds 95% of the time when inspecting their traffic (often at their request, and often, even after the packet dumper removes all doubt, they STILL claim not to be running kazaa and/or bittorrent. Then we go "let's try blocking it, then. If you're not using it anyway", and *surprise* that solves the problem. Then they ask to turn the block off)

    15. Re:Buffer bloat or inadequate bandwith by gottabeme · · Score: 1

      You sure do make a lot of assumptions. I've been running my own systems and networks for over 20 years. I've done my own time as help desk support. I think I'm capable of figuring out if the single computer connected to this DSL connection, assembled and installed and maintained by myself, is running P2P apps. Guess what? It's not.

      You expect me to rate-limit my upstream and downstream bandwidth to 60% of rated? That's ludicrous and totally unnecessary. Even if it were to fix the latency, that's an incredibly stupid "solution." I guess instead of fixing my car's unbalanced wheels, I'll just drive 30mph on the interstate.

      Get off your high horse. Stop assuming you know me and my equipment better than I do. Either be helpful or be quiet.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    16. Re:Buffer bloat or inadequate bandwith by OeLeWaPpErKe · · Score: 1

      You expect me to rate-limit my upstream and downstream bandwidth to 60% of rated? That's ludicrous and totally unnecessary. Even if it were to fix the latency, that's an incredibly stupid "solution."

      Well, have you ever asked yourself why you never moved up from that helpdesk position ? This sort of opinion would be a rather good explanation.

      If you want to learn why this matters, study some "Queueing theory", buy a book. And, when you've informed yourself a bit, try it out on real networks, write a few drivers, or at least configure lartc a few (hundred) times, and THEN decide what is ludicrous and what is not.

      Or forever remain at that helpdesk. Well, until you're replaced by voice recognition.

    17. Re:Buffer bloat or inadequate bandwith by gottabeme · · Score: 1

      Haha, wow, more assumptions. I said I spent some time working at a help desk, not that it is my career.

      I think if you talked to real network engineers and real network programmers, like folks who worked on the protocols, they'd say that throwing away 40% of your bandwidth to fix latency is a ludicrous "solution."

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    18. Re:Buffer bloat or inadequate bandwith by OeLeWaPpErKe · · Score: 1

      So now the guy that couldn't figure out himself why his connection underperformed is going to tell me what "real network engineers" think ?

      Great. If you think I'm going to argue this insanity, you're delusional.

      And btw, it's low-quality ISPs that agree throwing away 40% of your bandwidth is a solution. GOOD ISPs will throw away 60% at least, sometimes more. (because if you want redundant paths to function you need to "throw away" at least 50% because the link might need to carry both it's own load and the traffic from it's redundant path, so a good isp doesn't just throw away 50%+ of link bandwidth, they throw it away TWICE)

      e.g. http://portal.acm.org/citation.cfm?id=1159925

      Idiot

    19. Re:Buffer bloat or inadequate bandwith by gottabeme · · Score: 1

      As Jim Gettys and others commenting on this article have shown, many "real network engineers" don't or did not understand bufferbloat. Obviously that's so, otherwise the hardware with excessive buffers wouldn't have been produced and bufferbloat wouldn't have happened.

      Your suggesting that end users throw away 40% of their last-mile bandwidth is a completely different matter than ISPs saving bandwidth for redundant paths. End-users have a single path: their cable or DSL connection. Those are two completely different problems with completely different appropriate solutions. One is irrelevant to the other. Why are you being misleading and dishonest by suggesting they're related? Or do you just not understand the difference?

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  110. Re:pegged connection == latency, who'd of thunk it by swilver · · Score: 1

    How did you get that immense queue in the first place? Sounds to me the TCP Window size is set WAY too large, which would be a problem on the initiating side (ie, your own computer). A TCP download won't send more data than you ask it to give, and will wait for ACK's of the previous data before sending more.

    If you are silly enough to tell it, YES, send me that 1 GB right now! And then it takes your line 3 minutes to handle it all, then who's exactly at fault?

    Instead, you tell it: send me that 1 GB but do it in chunks of 32 kB, and don't send more until I acknowledge the previous chunk was received correctly -- which is a gross simplification of what TCP does.

    I don't see how buffers come into play... not to mention that RAM sizes have scaled by several orders of magnitude since the beginning of the internet and now, and only now we start noticing it? Sure, it may not have been a problem before with tiny buffers, but it always could happen if you (or your software) is stupid enough to ask for more than it can handle. Rate limiting is the correct solution, even going as far as dropping your own outgoing packets if you are trying to oversaturate your link.

  111. Fred is to Wilma as Barney is to by tepples · · Score: 1

    I'd murder four people just to have TTY in my name.

    No need; just change your first name to Betty. This change may require SRS and HRT to be believable. (Only some faiths consider SRS to be murder, usually the same ones that ban condom use.)

    1. Re:Fred is to Wilma as Barney is to by Anonymous Coward · · Score: 0

      And when he calls you Betty, Betty you can call him Al.

  112. Things change at large scale by farnz · · Score: 5, Informative

    How much bandwidth can I have, though? Take the link between my desktop and a Slashdot server; is the correct answer "1GBit/s, no more" (speed of my network card)? Is is "20MBit/s, no more" (speed of my current Internet connection)? Is it "0.5MBit/s, no more" (my fair share of this office's Internet connection)? In practice, you need the answer to change rapidly, depending on network conditions - maybe I can have the full 20MBit/s if no-one else is using the Internet, maybe I should slow down briefly while someone else handles their e-mail.

    TCP doesn't slam the network; it starts off slowly (TCP slow start currently sends just two packets initially), and gradually ramps up as it finds that packets aren't dropped. When packet drop happens, it realises that it's pushing too hard, and drops back. If there's been no packet drop for a while, it goes back to trying to ramp up. RFC 5681 talks about the gory details. It's possible (bar idiots with firewalls that block it) to use ECN (explicit congestion notification) instead of packet drop to indicate congestion, but the presence of people who think that ECN-enabled packets should be dropped (regardless of whether congestion has happened) means that you can't implement ECN on the wider Internet.

    This works well in practice, given sane buffers; it dynamically shares the link bandwidth, without overflowing it. Bufferbloat destroys this, because TCP no longer gets the feedback it expects until the latency is immense. As a result, instead of sending typically 20MBit/s (assuming I'm the only user of the connection), and occasionally trying 20.01MBit/s, my TCP stack tries 20.01MBit/s, finds it works (thanks to the queue), speeds up to 20.10MBit/s, and still no failure, until it's trying to send at (say) 25MBit/s over a 20MBit/s bottleneck. Then packet loss kicks in, and brings it back down to 20MBit/s, but now the link latency is 5 seconds, not 5 milliseconds.

    1. Re:Things change at large scale by willmorton · · Score: 2

      It's actually even worse than this. Using your example, your TCP stack ramps up to 25mbps, overflows the buffer, and loses a lot of packets at once, rather than just one or a few packets that would be lost with a sane buffer. Lots of lost packets at once leads to a RTO timeout rather than a Fast Retransmit and Fast Recovery, and essentially you're starting over from zero instead of reducing your speed a little and continuing.

    2. Re:Things change at large scale by farnz · · Score: 1

      Indeed - once the overflow state caused by bufferbloat gets that bad for most people, we'll see a repeat of the 1986 NSFNet congestion collapse. Lots of packets flowing, buffers filling and emptying, and next to no usable throughput, as each bloated buffer in turn overflows and causes a full-blown RTO timeout, not a fast recovery.

    3. Re:Things change at large scale by Anonymous Coward · · Score: 0

      This is a good write-up. The author is correct that a very large buffer works against loss based TCP (today's standard). Loss-based TCP's uses (duh) packet loss as a feedback to adjust its sending rate. In the absence of any loss, TCP is going to ramp up its rate and slowly but sure saturating the router buffer.

      A delay based TCP would work much better in this scenario, but it does have it share of issues at the other extreme, where buffer is small. However, this seems less common in practice.

  113. Be a good citizen, echo 1 to tcp_low_latency by Anonymous Coward · · Score: 0

    echo 1 > /proc/sys/net/ipv4/tcp_low_latency

    http://serverfault.com/questions/215674/latency-in-tcp-ip-over-ethernet-networks

  114. Yes, and this is the problem by Anonymous Coward · · Score: 0

    Many people are championing Jim Gettys now, but he is being a quintessential nerd and pontificating like he just stepped out of the basement, discovered the sun, and now needs to communicate this fantastic news to humanity.

    Those of us in the high performance computing and networking community have been observing and publishing about this problem for about 15 years, but nobody cares to listen. And I suspect we were being quintessential nerds when WE first started doing this too! Some Internet priests were dismissive of us when we first walked down the hallway and told them about our troubles... Look up "gridftp" as an example that has evolved for a long time, starting with expanding TCP window buffers and ending with many parallel TCP streams, each with large buffers. In the last decade, bittorrent came along to do much the same thing but in a more scatter/gather pattern instead of a point-to-point transfer. The many streams are more effective (and more damaging to the general network) because they increase the number of TCP state machines and change the statistical properties of congestion avoidance and congestion. You are able to get your application much closer to saturating the path bottleneck(s) because random packet drops may shut down one TCP stream window, but the other soldier on and compensate while it ramps back up, and vice versa.

    The problem is that there are very real applications where people want/need to saturate "their" path to make large transfers. The high performance scientific crowd wants to be able to saturate their expensive, multi-gigabit links between regions and continents to transfer terabytes to petabytes of scientific data. The home user wants to saturate their expensive broadband to transfer movies and such. Expensive is a relative term, but the mindset is much the same. The Internet priests shrug it off as selfish users who should grow up and live with the meager performance of one TCP stream per user.

    It is a fundamental emergent behavior of larger networks, not due simply to some inappropriate buffer setting but to the collision between the best-effort/no-QoS philosophy which requires over-provisioning, the economic incentives of over-subscription/reselling of network capacity, and the population of self-interested parties. It's yet another Inconvenient Truth, of which most parties are ignorant and some willfully so; yet all these parties need to be aware and thoughtful to avoid the emergent pathological behavior. In other words, it will not go away until the Internet is dramatically reshaped to inject some kind of QoS, whether through path negotiation, tiered service, or some hybrid.

    People who talk about setting bandwidth limits in their transfers are really just trying to emulate a QoS manager on their own path, because ISPs do not give us the control we want. But in general, you need to shape traffic around the bottleneck and the entire point of the Internet philosophy is that you don't know the path a priori. In a perfect world, you'd be able to push outward (much like route publishing) your own QoS policies which should be applied to packets destined to you, so other routers could help enforce the QoS policy you are trying to achieve whenever they become congested with your traffic.

    However, this does nothing for the case of routers congested with traffic from multiple parties; someone has to synthesize a policy that differentiates between your traffic and others' and nobody ever agrees on what a fair policy is for this case. Does it depend on how much capacity you bought? Bought from who? You don't purchase capacity from every router operator who bears your Internet traffic. Does it depend on how many IP addresses you have, i.e. each destination gets an equal share? That will suck for everyone behind NAT and be great for everyone with clusters for parallel transfer. Does it depend on each destination/port combination? Now we're back to the current problem with TCP...

  115. Find another place to live by tepples · · Score: 1

    If you aren't getting the line speed you paid for then you need to find another ISP.

    In many places, that's the same as saying "If you aren't getting the line speed you paid for then you need to find another place to live that has a better ISP." What solution do you have to work around last-mile monopolies?

    1. Re:Find another place to live by Shakrai · · Score: 1

      Lobby your elected officials to remove the artificial barriers to entry (franchise agreements) that prevent new companies from offering you internet service. Pay for business class service that comes with an SLA. There are lots of things you can do if the internet is that important to you.

      Around these parts we have the friendly local cable monopoly (Time Warner) and the friendly local DSL monopoly (Verizon). Verizon's service always reaches the promised line speed. Time Warner usually reaches the promised line speed unless you are unlucky enough to get stuck on an overloaded node. In that instance you might be hosed, though in my experience they will split nodes and make other behind the scenes improvements necessary to deliver quality service if you complain loudly enough.

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
    2. Re:Find another place to live by tepples · · Score: 1

      Lobby your elected officials to remove the artificial barriers to entry (franchise agreements)

      In what municipalities has this been successful?

      Pay for business class service that comes with an SLA.

      Some people who tried this with Comcast got "sorry, not available at a home address." Apparently, one can't have home TV and business Internet at the same address due to agreements with channel providers.

    3. Re:Find another place to live by Shakrai · · Score: 1

      Apparently, one can't have home TV and business Internet at the same address due to agreements with channel providers.

      So get satellite service for TV instead. Or go without it entirely. It's not worth the money anyway.

      Point is, there are always options.

      --
      I want peace on earth and goodwill toward man.
      We are the United States Government! We don't do that sort of thing.
  116. Re:pegged connection == latency, who'd of thunk it by satch89450 · · Score: 1

    I read TFA and I'm not seeing the problem. He can't duplicate this issue unless he maxes out his connection

    After reading both blog posts, I get that what the author is saying that the problem may not be in just your uplink to the ISP. It can be inside the ISP, or somewhere in the transit path. In other words, someone else can cause you problems by being too much of a hog.

    Also, has anyone twigged that there is a marketing aspect to the problem? ISPs are being measured on file download speed, so they do everything they can to maximize download speed measurements. Even if what they do harms the network. So it isn't just people being stupid, it's also people being selfish.

    Buffer bloat is only part of the problem. How many Web server operators want their pages to download as quickly as possible, so they turn off TCP slow-start so the stuff goes out SMASH instead of dribbing out as TCP was designed to do? "Oh, shit, I'm losing packets during high load, so I have to increase the number of outgoing packet buffers in my outgoing router so it can absorb the SMASHes and send the packets out at line speed." And the Web hosting company is wondering why their Skype phones work so badly, especially as they cut over to Skype over land lines for technical support. :)

    Unfortunately, the setting for TCP slow-start tends to be server-wide, so not only do the small pages and graphics get the SMASH treatment, so do those monster files that are downloaded. So much for congestion control, even if there wasn't buffer-bloat to make it worse.

  117. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    Sounds similar to a router that uses FIFO versus Fair Queuing. Most by default use FIFO which has this type of problem. However many higher end ones also support FQ or Weighted FQ (like QoS) which wouldn't have this issue.

    The 1GB of data going across the ADSL link still has to be broken up into packets usually around 1500 bytes so your other connections (dns lookup, etc) would still get a turn and not have to wait until the entire 1GB of data was finished. It depends on how the scheduler is setup in the router. Even with FIFO based scheduling other packets will usually get sent forward.

  118. Re:Theoretically, could this be mitigated with ATM by Graff · · Score: 1

    The issue is that, when packets are dropped and the TCP window narrows, it's pretty much a catastrophe from throughput perspective. In particular, the recipient won't know about a dropped packet until the latency delay, and the sender won't know about it until (minimum) twice that latency.

    I'm a computer science major, not a network engineer.

    It's been a bit since I've closely studied TCP/IP but I believe what is proper is for the router to participate in the congestion control through notifications and randomly dropping packets early based on a computed probability that the buffer will eventually begin doing tail drops, among other techniques. A good router will try to prevent the buffer from ever getting too full or too empty in the first place through these methods. It shouldn't ever get to the point where there's a dropped packet that belongs at the end of a large buffer.

    Of course I'm sure there are plenty of poorly-implemented flow control mechanisms out there that are wreaking all sorts of havoc. A huge buffer will certainly exacerbate a poor network congestion algorithm. Buffers are generally intended to reduce jitter and they can definitely introduce latency in a bad scenario such as this.

  119. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    That site won't have a 1GB SNDBUF, so that won't happen. ('man 7 socket', then search for SO_SNDBUF).

    It's amazing how many people, Gettys apparently unfortunately included (note: of course I did not rtfa before I posted this), don't know how TCP/IP really works.

    There is no 'bufferbloat because RAM is getting cheaper'. What he is seeing is what happens when you want to saturate your link. It's sort of an Heisenberg of communication, if you want low latency and low (or no) packet loss on a connection, then the bandwidth can't exceed the available bandwidth, and for any instance that it does, you get either a buffered or a dropped packet.

    Interesting how you mouth off after confessing to not having read the article. Are you an idiot or a troll?

  120. Re:pegged connection == latency, who'd of thunk it by franciscohs · · Score: 1

    But that's exactly the point, you can do that, and would be the same as the ISP configuring low (normal) sized buffers.

    And yes, ISPs are stupid, or not, depending on the way you see it. The side effect of reducing buffer sizes is that you reduce throughput, so you will have to configure more bandwidth to the customer, so that the customer "sees" it's 3M, 7M, or whatever that he paid for. But believe me, ISPs do this, first hand experience.

  121. Drop every Nth packet... by John+Hasler · · Score: 1

    ...where N is inversely proportional to the rate at which your huge buffer is filling. This will provide some differential feedback and help stabilize your loop. This is just a hand-waving idea I pulled out of the air, of course, but it indicates what you can do if you learn control theory and apply it to the problem (you want queueing theory as well but I assume you already know that as a network engineer).

    This would be easier if everyone would enable ECN.

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
    1. Re:Drop every Nth packet... by John+Hasler · · Score: 1

      Looks like there is some good research in this area and some queue management algorithms that apply control theory. All the remains is to deploy them.

      --
      Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  122. Re:Correction: Boiling Frog by fahrbot-bot · · Score: 0
    frogs in heating water

    According to contemporary biologists the premise of the story is not literally true; an actual frog submerged and gradually heated will jump out.

    --
    It must have been something you assimilated. . . .
  123. Re:pegged connection == latency, who'd of thunk it by TheThiefMaster · · Score: 1

    Just did some reading on the TCP window size, I apparently had it confused with the congestion window size (which is estimated by the sender).

    Again though, it only works if the sender sticks to it, and if you advertise a correct window size (which would be very difficult to do).

  124. Re:pegged connection == latency, who'd of thunk it by Dunbal · · Score: 1

    Looking past your sarcasm I find it hard to understand why you believe the internet is created by aliens, since obviously people are not "content providers".

    --
    Seven puppies were harmed during the making of this post.
  125. Re:pegged connection == latency, who'd of thunk it by rickb928 · · Score: 1

    As I understand it, the problem is:

    - Under max load, your connection slows to much less than is possible.

    - Restarting the transfer doesn't solve the problem.

    - Testing with anything less than that max load doesn't reveal a problem. Indeed, testing just latency or bandwidth doesn't show a problem.

    - In some cases, the connection 'lopes', I think, starting out at full speed and then getting throttled for NO GOOD REASON except that the buffers have defeated normal TCP bandwidth management.

    - The cause can be anywhere along the system.

    - Buffers sound good, but in practice are essentially defeating TCP throughput management features.

    Why is this bad?

    - As we hurdle headlong into a cloud-based environment, we will be sending more and larger transfers. This 'bufferbloat' will get worse, and we risk the hardware makers responding by including BIGGER buffers. Making the problem worse and worse.

    - Other protocols such as VOIP, various video, etc. will be significantly impacted, and it will get worse no better unless the hardware makers understand this and both test and modify their designs as needed.

    - With the large number of routers out there, this is a big $$$ investment overall. Adopting IPv6 may help by flushing out old routers, if the makers again understand and both test and modify their designs.

    - And this seems to affect virtually every type of device, from home routers and smartphones/3-4G networks to 'big-iron' routers and switches. Collectively, this has become a serious problem.

    So, in a nutshell, when you start up a download of your new favorite ISO, and the connection slows to a trickle, this might be caused just by 'bufferbloat'. When your video goes to hell halfway through the show, this might be caused just by 'bufferbloat'. When your Skype goes to hell regularly, this might be caused just by 'bufferbloat'.

    I'm wondering how much this impacts my pet peeve, waiting for a page to load and seeing it is just the damned ads holding it up. And ads are getting bigger and heavier every day.

    Gettys was dead-on when he mentioned that in the 'old days', a T-1 was pretty snappy. I had a T-1 at work for a long time, and it was great in the mid 90s. Even my 128k ISDN line was plenty enough for serious surfing, which back then wasn't quite as deanding as now, but even Flash sites were just fine. Now I have a 20MB cable connection and it just seems slow, even when I adjust for expectations.

    Obviously, I blame this 'bufferbloat' for my inability to prevail in COD.

    --
    deleting the extra space after periods so i can stay relevant, yeah.
  126. The Sky is Falling.....NOT! by rocker_wannabe · · Score: 2

    TCP contains some of the most incredible heuristic algorithms I've ever seen. Each algorithm, like Slow Start, RTT Estimation, SACK, etc. are relatively simple but together they work incredibly well at keeping data flowing across heterogeneous networks. They work so well that I've seen TCP overcome broken ethernet drivers and make them appear to work. Unfortunately, as someone who use to look at TCP traces for a living, I can tell you it can be really hard to work backwards from packet traces to figure out what is going on in the TCP/IP stack because there can be so much going on at the same time. This means that Wireshark in the hands of a weekend-hacker can easily lead to erroneous conclusions. If you follow this link and go to section 14.5 Random Early Detection (RED) you can see that the issue is already known and there are already solutions to mitigate the problem.

    Relax and take a deep breath. Now you can move on to something more important......... like where you're going to spend your eternity

    --
    "Meaningless!, Meaningless!" says the Teacher. "Utterly meaningless!"
    1. Re:The Sky is Falling.....NOT! by Anonymous Coward · · Score: 0

      Sheesh, read the damn article and try to understand it before spouting your newb drivel. Your hodgepodge of jargon *doesn't* impress anyone.

      This is definitely a problem and it is important.

  127. Dropped packets are "good" by yakovlev · · Score: 1

    For TCP connections, dropped packets are actually a good thing, and they're part of how the protocol is supposed to work.

    The way TCP is supposed to work is that the sender sends out a bunch of packets and waits to see if any are dropped. Then it sends a few more, and a few more. It keeps doing this until it detects packet loss and slows down and resends the dropped packets. The end result of this slowing down is supposed to be that eventually the line is full, but packets aren't sent any faster than the line can handle them.

    The problem with large buffers in the middle is that they mess up the analysis of the line capacity. TCP starts sending packets much faster than the capacity of the line. When those packets get stuck in the buffer, it thinks they were dropped and resends them. The first buffered packets then make it to the receiver, and TCP thinks it can speed up again. Problem is, the new packets get stuck behind (or even get dropped due to) the duplicate packets which are now needlessly clogging up the buffer.

    There may be ways to alter the TCP congestion analysis algorithms to better handle buffered connections, but the buffers also need to be sensible. If the packet has been in the buffer long enough that the TCP connection is going to think that it was lost, then it needs to be removed from the buffer.

    NOTE: This is similar to the congestion/bandwidth problems that come up with high-bandwidth TCP-over-TCP connections like SSH port forwarding.

    1. Re:Dropped packets are "good" by badkarmadayaccount · · Score: 1

      ECN ought to take care of that.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  128. Re:pegged connection == latency, who'd of thunk it by TheThiefMaster · · Score: 1

    Fair queuing in the routers is the real solution to this.

  129. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    You did set that 1GB packet size through all the network layers, didn't you? ;)

  130. Re:pegged connection == latency, who'd of thunk it by farnz · · Score: 1

    The TCP window has only grown that large because there's been no congestion signalled; thanks to slow start, my TCP window started out at just 2 packets, but grew and grew until TCP experienced congestion. Bufferbloat has meant that TCP has not experienced any congestion until the latency has reached insane values (as congestion is signalled in the Internet by dropping packets).

    This is the root cause of the problem; we have lots of workarounds for it, but at heart, the issue is that the only working mechanism for indicating congestion on the Internet is packet drops (packets marked as ECN-capable are blocked by too many idiots with firewalls to be useful). TCP by design will increase the current in-use window size until such point as it experiences congestion, then it will scale back to fit within the link; because we've removed congestion notification in the name of zero packet loss (yet we still have packet loss on these "zero packet loss" links - go figure), we hit pain.

    If you artificially constrain TCP so that it cannot fill a link (i.e. make the maximum window tiny compared to BDP - noting that on today's Internet, I experience BDPs from as little as 1 kilobyte, to as high as 10 megabytes), then, yes, you won't hit bufferbloat - you won't hit saturation, either. If you rate limit outside the application layer (and how exactly is Slashdot's web server meant to know what the bottleneck rate between Slashdot and my PC is, exactly?), you have to signal congestion back to TCP somehow. On the Internet, that's done by dropping packets instead of queueing them; but, thanks to bufferbloat, my link doesn't drop packets until the latency is very high. As a result, TCP doesn't scale back its send rate until it's too late; I can fix that locally, by rate limiting at my router to some fraction of my link speed, but then I have to drop the packets that exceed that fraction. Why shouldn't the ISP drop them instead, and thus let me use more of the link speed I'm paying for?

  131. Re:pegged connection == latency, who'd of thunk it by nedlohs · · Score: 1

    It's exactly what happens. A packet is a packet is a packet and there's one device sending stuff to your cable modem. If there's 200 packets waiting in the buffer then a new one gets put at the end and is only sent forward after those 200 are processed.

    Obviously buffers aren't big enough to hold an hour's worth of packets (and servers don't send 1GB worth of packets before getting any acks) that's just to make the situation more obvious in an example.

  132. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    May I introduce you to the HTTP/1.1 Range header:

    http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35

    "HTTP retrieval requests using conditional or unconditional GET methods MAY request one or more sub-ranges of the entity, instead of the entire entity, using the Range request header, which applies to the entity returned as the result of the request..."

  133. Re:pegged connection == latency, who'd of thunk it by Shakrai · · Score: 0

    The router can manage QOS in the routers buffer but it has no controll over the buffer in the cable modem.

    The solution to this is to rate-limit your downloads to 75%-80% of your total download speed at your router. If there is going to be any buffering you want to force it to happen at your equipment, rather than at the ISP's equipment.

    --
    I want peace on earth and goodwill toward man.
    We are the United States Government! We don't do that sort of thing.
  134. Re:pegged connection == latency, who'd of thunk it by hedwards · · Score: 1

    He could, however that doesn't deal with network congestion after that point. If you've got an ISP that is over sold, i.e., all of the ones in the US, then this is a real problem and I don't think that QoS is going to solve that. At least not the stuff that your end user gets to fiddle around with.

  135. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    You understand! And, as you pointed out, output buffers are never sized in this manner precisely due to the latency. Hardware engineers typically know a little bit about queuing theory. Which make the article a non-issue.

  136. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    No the example does not make sense at all. You guys are getting your layers of the OSI model confused. Your machine requests PACKETS of data, not files. I request some packets of data from point B. Point B sends them. I acknowledge them and request more packets. That 1 GB file or packets representing that file are NEVER going to be sitting on any router in limbo because no one requested now more than a few packets at once, your TCP/IP stack does not keep requesting more and more future packets without ever getting some of them back, it doesnt even have a method to keep asking for the "next" packet until it knows what was in the previous ones (to some extent) because it doesnt know what to ask for and the router sure as hell doesn know what you doing, it is just forwarding packets. The example with the 1 GB file is describing what a proxy server does, we are talking about TCP/IP communications at the packet level.

  137. Re:pegged connection == latency, who'd of thunk it by slamb · · Score: 1

    I have QoS at the office that keeps our connection from pegging (it's limited to around 75% on the download and 90% on upload) and have never once encountered an issue with latency or jitter.

    Right, then you solved the problem by ensuring the queue in question never gets filled. You added your own queues (more than one, prioritized), and you probably made those queues shorter. That works, but it's a shame that you had to throw away 25% of your download capacity and 10% of your upload capacity when it wouldn't be necessary if the equipment you were using had properly configured queues of its own. It's also unusual that you were able to do so: most people (including almost all home users) are not in a position to set up QoS on their download side. Imagine I called Comcast and asked them to set custom QoS settings on data they are sending to me. How do you think that conversation would go? And even for the upload side, most consumers don't have the equipment or knowledge to set up their own queueing.

  138. Re:pegged connection == latency, who'd of thunk it by Late+Adopter · · Score: 1

    There's no a priori reason to assign a particular percentage of bandwidth to upstream or downstream. The best approach you can come up with is to optimize for expected usage, namely, mostly downstream. There's nothing sinister about it, and as needs change (VoIP?) one would expect things to change.

    Now, ideal would be if your DSL connection could determine that you need extra upstream bandwidth and temporarily reassign some of your downstream frequency bins to give it to you.

  139. Re:Why not get to the point? Why make it a saga by jimrthy · · Score: 1

    He's been researching it for months, and posting evidence as he finds it. This was a weird place in the saga to link to, but that wasn't Gettys' fault.

  140. "bufferbloat" isn't the problem. Packet drop is by Animats · · Score: 1

    There's nothing inherently wrong with big in-transit buffers for TCP streams. The real question is not which packets get dropped; it's which packets get sent next. That's what "fair queuing" and some other quality of service algorithms are about. Unfortunately, most routers are basically FIFO devices with some packet drop algorithm. If the router is FIFO, dumb, and has big buffers, there's trouble.

    Back in the 1980s, when I was working on this, I was applying fair queuing at choke points. My basic thinking was that the network should not drop packets for congestion unless a sender is badly behaved and isn't obeying the congestion avoidance rules. This is well-behaved, and will work well when bandwidth is a scarce resource. But for years, the Internet had more bandwidth than was needed, and so people stopped worrying about congestion. Now that everybody is trying to stream high-definition video, it's a big problem again.

    The problem used to be that the CPU overhead for fair queuing was too high. Today we can afford enough transistors in ASICs and FPGAs to do queuing right, even in fast routers. That's already happened. The big players have already put the necessary hardware into their newer routers. Cisco supports weighted fair queuing in their current DOCSIS cable routers. So does Motorola. But it has to be set up and configured. Motorola has a very clear management level presentation on the need for fair queuing on their DOCSIS cable routers. That short piece of PowerPoint is a must read for anybody involved in managing a cable Internet system. Read the slides staring with "If RED is not good enough, what is?". A key point for managers: "There are no parameters to set". There are other parts of DOCSIS routers that have way too many tuning knobs. That's not true of fair queuing.

    So, if your cable system is showing this problem, they probably have older routers, or misconfigured routers, or routers from some clueless vendor, or need a software upgrade. Cisco only supported this fully in DOCSIS routers starting in 2008. Earlier cable routers tended to be rather dumb. If you're in the industry, pass around that Motorola PowerPoint.

    This has nothing to do with "buffer bloat". It's a queuing problem.

    1. Re:"bufferbloat" isn't the problem. Packet drop is by Ungrounded+Lightning · · Score: 1

      There's nothing inherently wrong with big in-transit buffers for TCP streams. The real question is not which packets get dropped; it's which packets get sent next. That's what "fair queuing" and some other quality of service algorithms are about.

      Sorry, fair queueing is only half the solution, and if the boxes in the middle are too dumb to apply the other half of the solution, increasing the buffer sizes just increases the latency, because packets don't get dropped (signaling TCP to slow down) until the bigger buffers are full.

      The basic solution to the other half is called RED (Random Early Detection/Discard/Drop), was published in 1993. One version is in a 1998 RFC (2309), and variations of it are already requirements for and implemented in the backbone and edge routers throughout the Internet.

      (It may not be as widely known and deployed "off the edge" due to the limited number of queues on those machines. Nice to see that broader attention is now being given to the problem, so that open source and home router coders will implement it there, as well, when it is appropriate.)

      Trick is to keep running averages of the buffer depths and use them to randomly drop a few packets when they start to grow, more as they get deeper. This signals TCP to throttle back. Dropping randomly sends the throttle-back signal fairly to all the TCP flows. The drop probability has to be very low and the time constant of the decay of the average has to be comparable to the round-trip time of the links to prevent some bad pathologies, like excessive throttle-back or synchronization of the throttling of many streams, creating an oscillation that alternates between underutilization and excessive dropping.

      Do it right and your queues stay just full enough to smooth out and fully utilize your outgoing bandwidth, drastically reducing latency and leaving most of the buffer memory available to catch and handle bursts. Yet your average drop rate is no higher than if you let the queues expand until the buffers overflowed and the bandwidth is fairly distributed.

      It's all well documented in the literature.

      --
      Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
    2. Re:"bufferbloat" isn't the problem. Packet drop is by Ungrounded+Lightning · · Score: 1

      Oops. Should have read your reference before replying. I missed that you were talking about weighted fair queueing "with longest queue pushout" and it had already taken RED into account.

      Sorry, but what I said (RED is half the solution) still stands, for a different reason. While you might get Motorola's proposal to work at the edge, the backbone will not have the memory to identify ALL the flows and compare them - or the knowledge of what share each flow SHOULD have, without extra turnarounds to propagte it. Meanwhile it's pathetically easy for an application that wants to "cheat" to create multiple flows - both getting multiple "shares" of the division and exploding the per-flow storage and balancing computation requirements for a solution like Motorola proposes.

      --
      Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
    3. Re:"bufferbloat" isn't the problem. Packet drop is by Animats · · Score: 1

      While you might get Motorola's proposal to work at the edge, the backbone will not have the memory to identify ALL the flows and compare them.

      Right. Which is why the Internet backbone is somewhat over-provisioned, to push congestion to the edge. We really don't know what to do about congestion in the middle of general pure datagram networks.

      The extent to which that's still the case is a real question. 40% of Internet traffic now comes from the top 10 sites, they all have backbone connections, and they can probably saturate their outgoing paths. The big players, though, have their own transport networks. They can dedicate a pipe between, say, YouTube and the NYC cable headend, so that the congestion occurs at pipe entry and again at the cable segment, but not in the middle.

    4. Re:"bufferbloat" isn't the problem. Packet drop is by Ungrounded+Lightning · · Score: 1

      Also: Traffic management (without push-out) plus RED won't cover shorter-than turn-around burst-and-die traffic sessions or long-lived flows using protocols that don't respond to packet drops as a congestion signal. That covers TCP start-up-and-die transactions (like a lot of web requests), UDP - either burst or without alternative added-on flow control, and a bunch of other stuff.

      Also: Some web sites have, for a while, been "cheating" by breaking images up into separate tiles that fit into the start-up burst, so the browser launches a bunch of simultaneous requests.

      --
      Bantam Dominique roosters crow a four-note song. Once you've heard it as "Happy BIRTHday" you can't NOT hear it that way
  141. another problem alltogether by Anonymous Coward · · Score: 0

    end-user are demanding more download speed, a bigger road connecting them to the internet-world.
    backbone carrier, put in bigger roads, but NOT more lanes.
    sure you got some OC-super-max connecting S.F. to N.Y but how to you fairly put all
    the big end-user roads into that one pipe? surely there's a limit (time) to switch or let them on
    the OC-super-max? not that the OC-super-max connection is congested.
    -
    the solution is to not have ONE OC-super-max from S.F. to N.Y. so to speak a serial connection,
    but put in MORE OC-super minis, like a parallel cable. the switching problem is less a problem?
    (parallel connection, think old skool printer-cable)
    (switching: think many many cable strands go into ONE!)

  142. Re:Jim Gettys did the world a great service with t by Anonymous Coward · · Score: 0

    Hallelujah.

  143. Re:pegged connection == latency, who'd of thunk it by PybusJ · · Score: 1

    Seriously, maybe your /. ID is too high ;-) You've grown up always using network connections which have this issue, and, since you're technical enough, you've learned workarounds like the one you (and Jim) suggest of rate limiting your connection. All your throttling does is allow your local network to start dropping packets so TCP will work and do its own throttling.

    The problem is that all this is way over non slashdot-poster's heads. People should be able plug in their routers and it have it work without knowing their line's maximum throughput and configuring throttling. There's no justification for you and I having to configure our routers and set up QoS, and for everyone else to live with bad latency.

    And it wasn't always like this. Back in the 80s, the creators of the internet spent plenty of effort building protocols that did scale. In Jim's day, despite slower network speeds, it was perfectly possible to download over FTP (not HTTP, that didn't exist) while interacting on telnet (not SSH that didn't exist either). Of course latency on a 100% network will be affected somewhat, but not unusably so. Transmission Control Protocol exists for a reason, let that do the throttling.

  144. Please, not wordpress again! by ArsenneLupin · · Score: 1

    http://gettys.wordpress.com/2010/12/03/introducing-the-criminal-mastermind-bufferbloat/

    I never understood the appeal of replacing every occurrence of a single quote with a bitmap of a turd.

    Especially, for technical blogs, where people might post shell commands, which break if their quotes get changed into something else.

    So, why exactly are people still continuing to use wordpress? And if this is configurable, why doesn't anybody switch this option off?

    That being said, does anybody have a link to a non-wordpress source of this story?

  145. Re:pegged connection == latency, who'd of thunk it by Dunbal · · Score: 1

    Oh I wasn't implying that there was some sort of plot (apart from the ISP greedily oversubscribing lines). However the model HAS changed - people now can easily produce and stream their own video and audio with little or no additional equipment. ISPs, however, are failing to keep up, insisting on a top down, one to many type model where you are the many. Unless of course you want to pay $1000/month (or whatever) for a T1 line.

    --
    Seven puppies were harmed during the making of this post.
  146. Re:pegged connection == latency, who'd of thunk it by samjam · · Score: 1

    "I read TFA and I'm not seeing the problem. He can't duplicate this issue unless he maxes out his connection and then his latency goes to hell. No shit Sherlock, that's what happens when your pipe is full and the packets have to wait in the queue to be transmitted."

    It doesn't have to be as bad as it is - the queue doesn't have to be so long. If you have a shorter queue, it will just back up in each sending application (they send slower) and everyone gets a fair turn at the queue. With big buffers the queue is already full and any packet that wants to go has an extra long wait - latency is too high and useless for real-time applications. Equal access - fairness - but high latency.

    If you keep the queue small and still give equal access, you get the same throughput for all applications but lower latency, which is very nice for real time applications like conferencing.

  147. Re:pegged connection == latency, who'd of thunk it by DamnStupidElf · · Score: 1

    How are you supposed to traffic shape your "best effort" cable modem? The maximum bandwidth is rarely what will be available, and the busy bandwidth will be far below average. A set of scripts to automatically determine the current bandwidth and adjust your traffic shaping percentage appropriately? Oh wait, that's just the TCP congestion avoidance algorithm!

  148. Re:Theoretically, could this be mitigated with ATM by blind+biker · · Score: 1

    Wasn't kidding. Don't kill me, bro!

    --
    "The agriculture ministry is not in charge of Gundam" - Japanese ministry official.
  149. Re:pegged connection == latency, who'd of thunk it by orange47 · · Score: 1

    I tried QoS once on my home Linksys router and it was awful, it simply wouldn't work with high traffic/connections. (using original firmware)

  150. Re:pegged connection == latency, who'd of thunk it by MichaelSmith · · Score: 1

    Jitter is caused by the buffers eventually filling or TCP timing out (registering packet loss), dropping the rate for a little bit, the buffers draining, then TCP upping the rate again as the buffers refill, hiding the saturation, until they're full again. Rinse and repeat.

    Brings to mind a situation where I work. ping times between two sites went like (5,10,20,40,80,160,320,5,10,20.....) all milliseconds. I emailed that to our network guys but they just suggested putting an extra compression device on the link, which I persuaded them not to do. Their solution to latency was always to increase end to end bandwidth.

  151. QoS is not the answer; it's obscuring the problem by gottabeme · · Score: 1

    QoS is not the solution to latency caused by bufferbloat--it's like putting a square peg into a round hole: it will either not fit or still leak.

    If buffers were sized appropriately, latency for interactive apps wouldn't be ruined by a single HTTP download using all available bandwidth. QoS can only be controlled at each end separately, which means end users giving up some of their bandwidth for the sake of creating their own bottleneck to control the buffers. Users shouldn't have to artificially limit their bandwidth--properly-implemented networks can handle simultaneous connections without multi-second latency. TCP was designed and improved to handle the problem itself, but buffers have destroyed the very mechanism TCP uses to handle the problem.

    QoS might be unnecessary for VOIP-type apps if it wasn't for bufferbloat. QoS should provide a small boost to interactive performance, at most, because latency shouldn't be that bad in the first place.

    Think of it this way: we could either create additional, complicated mechanisms to manage packet queues and explicitly notify nodes of congestion...or we could just use smaller buffers and let TCP do what it used to do already, what it was engineered to do. We could add more layers of software to compensate for hardware problems...or we could remove the unnecessary hardware buffers and let the existing software work the way it used to. Which is simpler, and cheaper?

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  152. Stiff params by Mryll · · Score: 1

    Damn Nagle. ;) Gamers have been hating buffers since modems. Dropped packets are not evil. Apps which require low latency but humble bandwidth should be able to interrupt the queue, but I can't think of a way that ISPs could really distinguish these apps reliably and it falls back to the problem of ISP choosing favorites. With latency and max bandwidth to an arbitrary host as unknown and varying, as well as the volume of traffic exchanged with the host, the empirical ramp-up/back off seems to be best for a single connection to get good bandwidth. Contention between high bandwidth transfer with less important latency needs and low bandwith transfer with important latency needs is not working well. Makes me think about profiling or tailoring TCP parameters for different connection types, people jumped through all sorts of hoops to try to tailor their stuff to low latency when dial-up was king.

  153. No, buffers are the problem. by gottabeme · · Score: 1

    The problem here isn't that the buffers are big, it's that you don't have the bandwidth needed for your traffic load, period.

    What would be enough bandwidth for a given load? If a user is downloading an ISO of a Linux distro, that can't be downloaded in mere seconds, period. That's going to saturate the connection at one end or the other, period. And thus, it's probably going to end up filling buffers at one end or the other, leading to cascading latency and failure of interactive apps and really frustrated people. This is the 21st century, after all. Even when I was using a 56k modem, I sometimes had less latency when downloading a file and browsing the web at the same time. Things should be getting better, not worse.

    You seem to be suggesting that if we could just have enough bandwidth, buffers wouldn't matter. But we're not talking so much about backbones, we're talking about end-to-end paths with bottlenecks. We can't just add more bandwidth to everyone's connection--we have to fix the buffers.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  154. Software patches could fix buffers and problem by gottabeme · · Score: 1

    or the total re-architecture of millions of consumer devices to remove buffering

    Total re-architecture? A tiny software patch could shrink the buffers on any device, regardless of how much RAM a device has. The problem is getting vendors to make the patches and users to install them--it's that simple, and that difficult.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  155. It's like a new vaccine by gottabeme · · Score: 1

    You're right. But every new or updated device that has smaller, appropriate buffers will help to solve the problem. Over time, as devices are updated or replaced, the problem could be eradicated, almost like a vaccine gradually wiping out a virus.

    I think it's a bit silly to add yet more layers of complex software to cover over a problem that could simply be fixed by using less in the first place. It's like over-engineering a solution to an over-engineered solution!

    It's like building larger and more complex recycling plants to compensate for huge, overflowing landfills while ignoring the obvious solution of making less in the first place (smaller, more efficient, reusable packaging, etc). Then there wouldn't be as much of a need for recycling. "REDUCE, REUSE, recycle."

    Do the simple, obvious fix--that's actually undoing what shouldn't have been done in the first place--before creating a complex workaround for the workaround!

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    1. Re:It's like a new vaccine by dachshund · · Score: 1

      Well, you're assuming that the incentives are aligned for all manufacturers to work together. Some might believe that as other manufacturers de-buffer, they can gain a relative performance advantage by keeping their buffers large. Or maybe they'll just be ignorant about the problem. Or maybe they'll screw it up, or find some other way to break TCP. Or maybe the manufacturers will do it right and users will update their configurations by installing SpeedBoost9.7. Or maybe it'll all work out but it'll take 10 years (remember that some people are probably still running Windows 98 or XP circa 2001).

      The consensus expressed in TFA (and related blog posts) is that nowadays it doesn't take a particularly large percentage of devices to saturate even big pipes, especially if those pipes are already pretty well loaded. I think one of the articles even mentions that a single PC can saturate a 6mbps cable modem connection. The reason this kind of thing doesn't kill all of your neighbors' connectivity is that the cable company runs some kind of QoS (I may be using the wrong term here, not a networking engineer) to keep one customer from saturating the entire local loop.

      So if this is a real 'sky is falling' kind of problem, I'm not convinced that voluntary device modifications are going to do it. If it's not that bad of a problem, then we probably shouldn't be freaking out about it.

    2. Re:It's like a new vaccine by gottabeme · · Score: 1

      Theoretically it could work. In practice, if it works, it will indeed take years--hopefully not ten. Perhaps one of the largest obstacles will be convincing the marketeers that having smaller buffers is not a bad thing. They love to have the biggest numbers on their spec sheets.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  156. Re:pegged connection == latency, who'd of thunk it by nedlohs · · Score: 2

    There are no layers involved. It's a high level description of something that ignores lots of stuff and "oh shock horror" even gets some details wrong.

    Did they ever tell you in school that electrons orbit the nucleus in shells? Oh shit! They lied! Clearly they made no sense at all!

    The example is describing what the packets do when you request the file. And yes its exaggerating things and yes it's simplifying things. But that's how you describe things to people who don't know the technical details when those technical details don't really matter to understanding the overall issue.

    Obviously you don't get 1GB of packets in the queue then again the queue isn't 1GB in size in the first place anyway - oh look I explicitely mentioned that too but you're clearly to stupid to read.

    Getting stuck up on trivial technical details is what your bringing, lots of other people manage to understand how analogies and high level approximations work.

  157. Mod parent up by gottabeme · · Score: 1

    Good post, my friend. "All progress depends on the 'fool.'" "Fools" like you are the leaders we need. (I mean "fool" in a positive way; I'm with you.)

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  158. Netalyzr does by gottabeme · · Score: 1

    Netalyzr does exactly this, among other things. It will tell you how big your perceived buffers are along your network path, upstream and downstream.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  159. You don't understand by gottabeme · · Score: 1

    The issue is always going to be there. Pegged connection == FIFO queuing, absent some sort of QoS scheme.

    You don't understand. The point is not that FIFOs shouldn't exist, the point is that the FIFOs are too big. If you think of the buffer sizes in milliseconds rather than bytes (buffer size / connection speed), you'll see that big buffers == big latency. Appropriately-sized--smaller--buffers will also fill up, but being much shorter (in terms of how long they take to empty), latency won't skyrocket, because a new packet won't have to wait seconds to make it from the back to the front of the queue.

    And it does, even with QoS. All you do with QoS is force the buffering to happen on equipment that you control rather than equipment your ISP controls. In this manner you can ensure that time sensitive packets (interactive VPNs, VoIP, etc.) don't sit in the queue behind someone's Windows Update download.

    As was mentioned, you can only truly effect QoS on your upstream data. You can affect ACKs going upstream, but if the node at the other end wants to saturate your downstream connection, you can't stop it from doing so. And since you can't effect QoS on downstream data, your VOIP/etc. may have good upstream latency, but downstream latency and RTT will suffer, because those incoming VOIP packets will wait their turn in the queue just like the Windows Update download's packets.

    I think your first line said it all. :)

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  160. Re:pegged connection == latency, who'd of thunk it by gottabeme · · Score: 1

    Tomato's QoS works well. It was well worth the $40 for the ASUS router so I could play games while my neighbor was downloading TV with BitTorrent. After configuring it well, I tested it extensively and got no increase in game latency even when the connection was saturated with torrents.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  161. Shrink buffers, use RAM as HTTP caches by gottabeme · · Score: 1

    Almost. I think the solution is to continue to invest in infrastructure where and when needed, while returning buffers to sizes that are appropriate (there have to be some buffers).

    Really, if it were possible to convince vendors and users, all we need is software patches to make buffers smaller. So what if the RAM goes unused?

    Hey, I know: for devices with the CPU to burn, use the extra RAM as HTTP cache for really popular sites. Then there'd be less traffic on the backbones.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  162. Ignorant hypocrite. :( by gottabeme · · Score: 1

    It's amazing how many people will accuse an innocent man of something they are guilty of themselves, and incriminate themselves in the process.

    Go read and educate yourself. "Bufferbloat because RAM is getting cheaper" is exactly the problem. Too many packets are buffered, and not enough are dropped.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  163. Terribly sad. by gottabeme · · Score: 1

    Haha, compression? Adding another stage, another buffer, another process, to try to reduce latency? That's like turning on another light because it's too bright in the room.

    And these guys are "the network guys"? Sad. Just shows what this problem is up against.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  164. Comprehension fail. by gottabeme · · Score: 1

    The use of 1 GB was merely as an illustration.

    You have just demonstrated the uphill battle that is fixing this problem. You do not understand.

    It's absurd for the end-user to rate limit his connection at his end--TCP is engineered to take care of that on its own. Unnecessarily large buffers defeat the very mechanism TCP uses to control congestion and data rates.

    You're right about one thing: TCP links do not send data willy-nilly. But when a buffer is, e.g. 3500ms in length (buffer size in bytes / connection speed), any change in rate resulting from the receiver acknowledging packets won't happen for at least 3500ms. If packets aren't dropped for 3500ms, then the data rate won't reduce as a result of the packet loss for at least 3500ms. Then it will drop by 50%, and gradually increase again until the buffers are full. Repeat ad nauseam (e.g. jitter).

    The best, simplest, and cheapest way to fix this problem is to patch software in routers, etc. to reduce buffers to sane sizes and let TCP do what it's already engineered to do. QoS and rate-limiting by every user is absurd, illogical, and wasteful--it's throwing useful bandwidth away because of a problem that shouldn't exist in the first place.

    Please, at least study the issue before you try to debunk it.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  165. Ignorance, arrogance, and foolishness. by gottabeme · · Score: 1

    You're a fool. You don't understand the difference between an HTTP request and the resulting TCP session that fulfills the request. The foolishness comes from refusing to admit your mistake and refusing to learn.

    The HTTP request for a file or a range of a file is made once. The resulting TCP session works by the server sending packets and the receiver ACKnowledging packets--not requesting packets.

    You shouldn't attempt to comment authoritatively on an issue until you actually understand how the systems work.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  166. Doesn't always work well by gottabeme · · Score: 1

    I disagree that it works pretty well overall. At my apartment in one place, I can use my AT&T DSL connection to download large files or use BitTorrent or stream Netflix and still browse the web with acceptable latency. Visiting my family in another place, also on an AT&T DSL connection, the bufferbloat is so bad (over 3000ms according to Netalyzr) that downloading a single large file via HTTP makes for 5-10 second latency in browsing other web sites. I'm not kidding. And it hasn't always been this way. Years ago, at this same location, with the same AT&T DSL service, it didn't behave so poorly. And ten years ago, living in another state but also with the same speed AT&T DSL service, such latency was never a problem, even with two people constantly using the connection. My best guess is that at some point the AT&T equipment here was changed and the buffers got much bigger.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    1. Re:Doesn't always work well by Graff · · Score: 1

      My best guess is that at some point the AT&T equipment here was changed and the buffers got much bigger.

      You can't reasonably come to that conclusion without more data. There's a slew of other things that could have gone wrong such as a bad connector causing noise somewhere down the line, a malfunctioning router, interference from some other source, misconfigured equipment, and so on. A badly implemented buffer is just one of many possible problems.

    2. Re:Doesn't always work well by gottabeme · · Score: 1

      I disagree. Netalyzr shows 3000+ms buffers on this connection, and the observed latency behavior is consistent with the "bufferbloat" problem. Throughput reaches the connection's maximum, and packet loss is normal. The only problem is extreme latency and jitter when the connection is saturated (even with a single HTTP download). The other things you mention would cause reduced throughput and increased packet loss. This is an entirely wired connection, by the way: DSL and Ethernet only.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    3. Re:Doesn't always work well by Graff · · Score: 1

      The only problem is extreme latency and jitter when the connection is saturated (even with a single HTTP download). The other things you mention would cause reduced throughput and increased packet loss. This is an entirely wired connection, by the way: DSL and Ethernet only.

      If they were using large buffers you'd usually see less jitter, not more. Large buffers generally cause large, consistent latency if they are not properly managed. I'm not ruling it out completely but I'd say the problem lies with the DSL connection. They are notoriously finicky and exhibit these kinds of behaviors when the connection is borderline. DSL is very vulnerable to outside interference, that's where my bet lies.

      New cell towers, changed placement of power lines, cordless phone interference, connectors that have gotten old or allowed moisture to seep in, those are just a few problems that can cause degraded DSL performance. DSL is fairly adaptive and a line can be operational but still offer sub-optimal performance.

    4. Re:Doesn't always work well by gottabeme · · Score: 1

      Ok, thanks for the insights. I will have to log in to the modem's own control panel and check the line stats. It'd be great if that were the problem.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    5. Re:Doesn't always work well by Graff · · Score: 1

      Just complain loudly and often to your ISP and get someone out to check the line. When I had DSL it would go bad fairly often, I'd just complain and get someone to come out and fix the connection or they'd even re-run the line. DSL can be very finicky, especially at the connections. They are using better connectors now that have a sealing agent but they still go bad every so often. When that happens the connections can oxidize or moisture can get into the lines and cause problems.

      These problems also might only show up when conditions are right. Winds, rain, cold, heat, a tree rubbing against the line, all sorts of things can make the problems tough to diagnose. That's why it's important to get a person out to check the line rather than them just remotely checking the modem. Like I said, complain EVERY time the problem comes up and you have the best chance of them catching it and sending a tech out.

    6. Re:Doesn't always work well by gottabeme · · Score: 1

      I used to have a problem with DSL when it rained at another place I lived. But AT&T tried to charge me for the technician's visit. Any advice for getting them to fix their lines without charging me? :)

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    7. Re:Doesn't always work well by Graff · · Score: 1

      First hook up all your equipment so that it doesn't go through ANY of the wiring in your house. Then do your testing. Once you are convinced that the problem exists in their equipment or outside your house then call them. They're supposed to only charge you for problems in your equipment or wiring. It's up to you to convince them of it! Basically if they come out and it's their problem then they don't charge you for the visit.

  167. Understanding fail. by gottabeme · · Score: 2

    I can see why you're posting as an AC, because you don't understand the difference between an HTTP request and the TCP connection that fulfills it. There is no requesting of packets; the request is made via HTTP, and the receiver then ACKnowledges TCP packets from the server, which may send more quickly than it receives ACKs so as to increase throughput--this then fills buffers and causes cascading latency.

    You are compounding the problem by spreading misinformation. Please stop and go educate yourself.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    1. Re:Understanding fail. by Anonymous Coward · · Score: 0

      You again are on the wrong layer of the OSI model. HTTP is a protocol in the upper layers of the OSI model and has absolutely nothing to do with how the actual packets are transmitted, received, or buffered on a TCP/IP network. So what about ftp, telnet, smtp, snmp, nfs blah blah blah? You are the one that needs to comprehend the OSI model, not me.

    2. Re:Understanding fail. by gottabeme · · Score: 1

      Still an AC I see.

      That's my point exactly: the problem is about TCP, which does not "request packets." The "request" is made at a higher level, in HTTP.

      You can throw around terminology like "OSI model" all you want, but you have demonstrated that you still don't understand how buffering or TCP connections work, and why bufferbloat is a real problem.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    3. Re:Understanding fail. by Anonymous Coward · · Score: 0

      So HTTP knows how and what packets to send/receive and to maintain flow and error control? Interesting. So what is the TCP stack for then and what is is communicating back and forth to the HTTP process? I'm still interested in how the HTTP process can request and entire file at once and how that file gets sent back unattended. If it worked that way like the original 1GB file example above. You could open a socket, request a file and create a DOS by just not listening for it. As described, you could do this a few times and saturate the link from the place that holds the file and their router. What a concept, instant DOS to the file repository, and everyone else using that router that is caching or passing those packets where ever that may be. All with only a few packets from your end. I wonder why no one is doing that?

    4. Re:Understanding fail. by gottabeme · · Score: 1

      I'm still interested in how the HTTP process can request and[sic] entire file at once

      GET /big.file HTTP/1.1
      Host: example.com
      Connection: keep-alive
      Referer: http://slashdot.org/comments.pl?sid=1939940&cid=34826476
      Accept: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
      User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.45 Safari/534.13
      Accept-Encoding: gzip,deflate,sdch
      Accept-Language: en-US,en;q=0.8
      Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

      and how that file gets sent back unattended

      What do you mean by "unattended"?

      I never said HTTP controls the flow of packets. You're seriously misunderstanding me.

      --
      "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  168. Ctrl+Z is the "real" solution by gottabeme · · Score: 1

    Perhaps, but that would require more router CPU. Simply using sensible buffer sizes would allow the existing TCP flow control mechanisms to do what they were engineered to do without additional software complexity. I think that's the "real" solution: to undo that which should never have been done.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  169. Explain, AC. by gottabeme · · Score: 1

    Mr. AC, you will have to explain how it's a non-issue, since Mr. Gettys has shown how it is indeed an issue. I can testify to the problem myself, as Netalyzr shows 3000ms+ buffers on my current DSL connection, and as downloading a single large file via HTTP is causing these buffers to fill and resulting in multi-second latency for simple web browsing and jittery pings while downloading.

    I think you give too much credit to these "hardware engineers" of yours. If "they" knew so much about queueing, "they" wouldn't have made buffers which are so large that they defeat the built-in TCP congestion-control mechanisms. "They" tend to think that more is always better.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    1. Re:Explain, AC. by Teancum · · Score: 1

      To put this in better context, and as mentioned in the original article, buffers are being used here in many cases to cover up the flaws of the engineers developing the products.

      We'd all love to know that a top-notch engineer who just got laid off from NASA due to budget cutbacks (and not incompetence) is the dude who designed the hardware you are using. Unfortunately that is rarely the case and indeed there are a bunch of lazy engineers who take shortcuts to get things done. Often these engineers are also rewarded for their behavior by supervisors because they get the job done (or so the supervisor is led to believe) and get the promotions while a more careful engineer simply is fired for lack of performance.

      And then you become the poor schmuck who has to look at the disaster left behind by these lazy engineers, where you try to clean up that mess or work around their incompetence. As a result, since the sloppy engineering has huge jitters anyway and needs the monster buffer, at least for all of the tests that your customers care about the equipment works better with the larger buffers. Since no actual engineering theory was done on the development of the equipment but was merely muddled through when it was created, the buffer size is merely a random wild guess and the lazy engineer decided that a little bit is good and a whole lot is better. Why not go for a larger buffer size when the part costs and extra dime for 16x the size.

      Besides, marketing loves to brag about how their equipment is so much better, and the larger buffer size is a big deal that makes the equipment so much better, isn't it? The engineer screaming that the buffer size needs to be scaled back is ignored because nobody wants to hear that they are ruining the product due to lack of theory in its design.

      Yeah, I've been there and done that, at least in different contexts.

  170. Dropped packets aren't so bad for every protocol by gottabeme · · Score: 1

    As others mentioned, dropped packets are intended--they're part of how the flow-control mechanisms work.

    Dropped packets may be quite annoying for VOIP, gaming, perhaps even streaming media (though multi-second application-level buffers should compensate for streaming media), but for most protocols--like HTTP web browsing, BitTorrent, etc), dropped packets aren't really a big deal.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  171. Truth; mod parent up by gottabeme · · Score: 1

    A few people do get it.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  172. The fix could be cheap. by gottabeme · · Score: 1

    Theoretically, hardware wouldn't have to be replaced--all that's needed is to patch the software to use smaller buffers. So some RAM goes unused; big whoop.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
    1. Re:The fix could be cheap. by rickb928 · · Score: 1

      You don't want the makers (especially the likes of D-Link) hiring on some temps to go in and patch code on 3 year old $40 routers. Even Cisco/Linksys will screw some up.

      --
      deleting the extra space after periods so i can stay relevant, yeah.
  173. Re:QoS is not the answer; it's obscuring the probl by Anonymous Coward · · Score: 0

    You don't really understand QoS, do you?

    Read up on QoS capabilities of equipment with multiple queues and multiple thresholds per queue. Read up on micro-flow policing. Read up on allocation of queue memory to different queues. QoS is likely much more complex than you realize. That's all I'm trying to say - that if ISP's properly configured QoS then there would not be a problem with "buffer-bloat," at least not on the Internet backbone. Cheap, non-configurable consumer grade equipment may contribute to buffer-bloat, but the core Internet equipment if properly configured should be able to handle multiple flows and congestion properly.

    The problem for ISP's is two-fold. One that as I said QoS can be extremely complex given the mix of equipment, agreements between providers or exchanges to accept traffic as marked or to remark traffic, common usage of marking into appropriate classes, etc.

    The other is that proper QoS can be mis-construed to be some kind of non-net neutrality and favor some traffic over others. While that is true, the favoring of traffic should and has to be done via traffic class, as in what kind of traffic it is, rather than source/destination address. An example of "good" traffic classification would be to single out VOIP traffic based on ports, packet contents, or other means as opposed to "bulk" traffic such as FTP transfers. An example of "bad" traffic classification would be identifying traffic coming from Google and giving it a higher DSCP value than traffic from other vendors just because Google paid the provider / exchange some extortion money. The first example is necessary for proper QoS in congested networks, and is an example of "good" non-net neutrality. The second is an example of using QoS for "bad" non-net neutrality.

    It is the fundamental misunderstanding by people that don't understand the technology, don't know how specific hardware and software on Internet infrastructure devices operate, and couldn't configure QoS properly if they were tasked to do so that obfuscates the conversation and makes it almost meaningless to respond.

  174. Mod parent up by gottabeme · · Score: 1

    Another piece of the puzzle, perhaps.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  175. Mod parent up by gottabeme · · Score: 1

    Hear, hear! A voice of reason!

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  176. Buffers must be fixed by gottabeme · · Score: 1

    It's not that simple. Ideally, if, for example, a 1 Mbit DSL connection were saturated with one HTTP download, and the user then started loading a web page, the packets of the web page's request should have no more latency than the download's packets. However, when buffers are several thousand milliseconds in length, it doesn't work that way; the download's packets are constant and fill the buffers, and the web page's packets, being small and bursty, have to wait to get through the queue. If the user started a second download, both downloads would end up having equal shares of bandwidth. However, when one connection is constant and saturates the buffers, and another connection is interactive and bursty, the bursty one will suffer latency.

    The correct solution is to size buffers so they are short in length of time (size in bytes being relative to bandwidth). This way, even if the buffers are saturated, our hypothetical web page's packets won't have to wait long to get through the buffers, and latency won't be much worse than on an idle connection. TCP is made to rate limit connections itself--it's just that these pesky, oversized buffers defeat TCP's rate-limiting mechanisms. Having to rate limit your software or your own upstream bandwidth is an ugly hack that wastes bandwidth. Just shrink the buffers with software patches.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  177. Re:pegged connection == latency, who'd of thunk it by gottabeme · · Score: 1

    That's not really a solution, merely a hackish workaround--an extra layer of software complexity to work around a hardware problem that shouldn't exist. If the buffers were sized appropriately, rate-limiting wouldn't be necessary to avoid latency. Rate-limiting and QoS should be used to prioritize bandwidth, not latency.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  178. Re:And this is a known problem, and fairly intuiti by gottabeme · · Score: 1

    Solution: fix the software in the routers, modems, etc. to use appropriate buffer sizes, and use the Internet as it was intended, to do whatever you want whenever you want, sharing bandwidth and latency equally.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  179. UDP isn't necessarily right for all streaming by gottabeme · · Score: 1

    While I generally agree with you regarding UDP for streaming, it's not quite that simple. For one thing, application-level buffering combined with application-level retransmitting should handle dropped UDP packets (though reimplementing what TCP does might not perform so well in practice). However, it doesn't work out to a simple dropped frame here and there. Media transport stream packets aren't going to have video frames byte-aligned with network packets. Besides, variable-rate encoding and partial-frame encoding throws all that out the window--compressed video isn't a stream of bitmaps. When video data is dropped or corrupted, you see ugly artifacts that sometimes aren't resolved for a few seconds until the next keyframe. Dropped audio data might result in ugly, loud sound artifacts.

    For VOIP or Skype-type stuff, maybe those artifacts would be tolerable. But not for all streaming video.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  180. Re:pegged connection == latency, who'd of thunk it by Anonymous Coward · · Score: 0

    Uhh, sorry - but didnt you get the memo? IRAN! We must attack IRAN!!!

  181. Re:QoS is not the answer; it's obscuring the probl by gottabeme · · Score: 1

    I'm not sure why I'm bothering to respond to an AC, but anyway...

    I'm sure you're right about QoS and buffers on backbones working well on backbones, but I'm talking about the problem end-to-end. I think bufferbloat is more an edge phenomenon, what with last-mile cable/DSL/fiber connections interfacing with poor-quality home networking gear--and wireless networks have their own special bufferbloat problems.

    Most people on here have been touting QoS as a solution--mostly claiming that rate-limiting connections on LAN routers and throwing away a percentage of your rated bandwidth is the way to solve the latency problems. Your backbone/enterprise-grade QoS is a whole 'nother matter, but even that can't fix the problems at the edges.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  182. Re:And this is a known problem, and fairly intuiti by John+Hasler · · Score: 1

    Fix the software to use appropriate queueing algorithms. Large buffers can improve performance but they are not compatible with simple tail-dropping algorithms.

    --
    Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
  183. Re:Jim Gettys did the world a great service with t by jg · · Score: 1

    Thank you for the kind words.

    It helps for the several months of lonely work setting the stage for this for it to have succeeded this way.

  184. Our Options by Anonymous Coward · · Score: 0

    Option A: Revise how the TCP protocol works, requiring re-programming TCP clients (where the code, competent programmers, and management-allocated time for those programmers are available). Same thing for network gear. Expect LOTS of landfillbloat. Who's gonna fix all those OS/2-driven ATMs, Windows 3.1-driven mass-transit ticket-vending machines, and NT4-driven lab devices, etc.? (Yes, I've seen all of the above with my own eyes.)

    Option B: Revise how TCP clients and network gear uses the hardware buffers they have (no need to physically remove RAM), requiring requiring re-programming TCP clients (where the code, competent programmers, and management-allocated time for those programmers are available). Same thing for network gear. Expect SOMEWHAT-LESS landfillbloat than Option A above. Who's gonna fix all those OS/2-driven ATMs, Windows 3.1-driven mass-transit ticket-vending machines, and NT4-driven lab devices, etc.?

    Option C, D, E...: ??

    Option Z: Ignore the problem until the Internet collapses. I'm sure there'll be many PHB votes for that one ("I don't see the need to invest resources solving a possible problem which won't occur until the far future...")

    I'd prefer Option B to Option A, because it's more-likely-reliable. Protocol changes affect EVERYBODY, and if the protocol people screw up, we're all screwed. Look at all the time that many smart people have invested in creating computer security protocols and algorithms, and look at how many times they've made significant errors: RC4, WPA, WEP...

  185. Well done by Anonymous Coward · · Score: 0

    Very well explained, thank you.

  186. Re:And this is a known problem, and fairly intuiti by gottabeme · · Score: 1

    Ideally I suppose you're right, depending on the CPU in the router.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  187. Re:Jim Gettys did the world a great service with t by gottabeme · · Score: 1

    Yes, thank you. I should have said that sooner. :) I hope we can look back on your work (and the contributions of others you mentioned) as helping to avoid serious problems in the future.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  188. Re:Ignorant hypocrite. :( by jelle · · Score: 1

    I read the article, and author admits himself: "(I’m not a full fledged TCP expert)."

    I'm not saying there isn't a problem with latency, bandwidth and saturation. This 'bufferbloat' is just something he made up and then he attributes network behaviour findings to this. That doesn't mean that 'bufferbloat' is anything that exists and causes anything. When I say that, I don't deny the symptoms, I'm only saying that the symptoms are not caused by what is claimed.

    --
    --- Hindsight is 20/20, but walking backwards is not the answer.
  189. Re:pegged connection == latency, who'd of thunk it by jelle · · Score: 1

    I'm not denying the symptoms, all I'm saying is that the buffer causing the jitter is the window size, and it's not the network operator that chooses or configures that. The total 'buffers' between you and the receiver will never be fuller than your window size. The TCP window size is the maximum amount of data sent and not yet acknowledged by the receiver. When the window size is reached, you stop transmitting until you receive acks.

    You can modulate the window size on an existing tcp/ip connection at the (endpoint) application level to control latency. I've done it and it works.

    --
    --- Hindsight is 20/20, but walking backwards is not the answer.
  190. TOS by drolli · · Score: 1

    please use and honour the TOS/DSCP/Traffic Class flags in IP packets. These seem to be there to avoid "bufferbloat"

    Make high-latency, high-throughput, and high-reliability packets the users cost some fee and give the OS an indicator on which program requires how much money.

     

  191. Re:pegged connection == latency, who'd of thunk it by noodler · · Score: 1

    I don't think he was blaming the consumer, merely pointing out the reality of things.

  192. Re:pegged connection == latency, who'd of thunk it by DavidRawling · · Score: 1

    It's not really all that difficult to shape downstream traffic. All you need is a router between your internet connection and LAN clients. I've done this for years at my office using the QoS functionality of the Linux kernel. We are located out in the middle of nowhere with T-1s as our only means of connectivity. Sharing a 3.0mbit/s connection with 60+ employees without QoS is virtually impossible if you need to run interactive protocols.

    And just how, exactly, do you plan to have this router on your local network control the rate of incoming packets over your T1? Once they get to your router, to be "rate controlled" they've already been transmitted through the limited size network pipe. At that point, what reason is there to hold up delivery to your local user? If you want to queue and prioritise, it has to be before the slow link (and that in itself gives you the problem not-linked-to-but-described in the summary).

    I'm quite sure you can control the rate you send, but you receive data when you receive data - you don't control the packet order, size or content, the sender does.

  193. Re:pegged connection == latency, who'd of thunk it by Shakrai · · Score: 1

    If the buffers were sized appropriately, rate-limiting wouldn't be necessary to avoid latency

    Yes, actually it would. Interactive protocols are going to suck period if they wind up sitting in a buffer. A smaller buffer size might make them suck less but it's still not going to deliver acceptable performance. FIFO queuing can not handle interactive protocols even with smallish buffer sizes.

    --
    I want peace on earth and goodwill toward man.
    We are the United States Government! We don't do that sort of thing.
  194. Re:Jim Gettys did the world a great service with t by Jay+Carlson · · Score: 1

    By taking the high road and not pointing fingers he is able address an issue in such a way that a lot of the people who did contribute to this problem can recognize what they have done and own it, without being labelled, accused or feeling attacked.

    But we aren't all bozos on this bus, and pretending "everybody contributed to it" is not necessarily the best way to fix this particular problem, or to reduce the likelihood of this kind of engineering failure in the future. Understanding how this happened is important.

    My elevator version of what happened: the bellhead model of a communication service is a reliable circuit-switched connection. "Reliable" sounds good, and circuits are a familiar model. But the Internet is based on a model of best-effort delivery of packets. Every product group experienced in Internet infrastructure knew horror stories about confusing TCP. New entrants did not know this, or had system design teams tilted towards bellhead decision-making.

    Cisco has all the cool toys for queue management in their routers. Are they bozos? People who have even skimmed the Linux traffic shaping HOWTO are sensitized to the issues. They're not bozos.

    I have a copy of the first edition of Comer in front of me (the 1988 one that talked about the inevitable transition from TCP to OSI TP4.) The advice to implementors of gateways tells you to read RFC 1009 very carefully, which has a bunch of congestion cites, including John Nagle's (he's downthread) RFC 970 explaining why infinite buffers are a disaster. These are foundational documents of the Internet, and sure, they're from 1987 and routing to a T1 by processing over 9,000 packets a second is no longer something you would need a supermini for (you probably get faster computers free with your breakfast cereal.) But scanning forward through the RFCs you'll see lots and lots of very pointed advice to the effect of "please do not confuse TCP or you'll be sorry."

    So some of the people building the network hardware with these problems weren't alive when this was being figured out. They didn't do their homework; fine. The people running the companies designing and building the hardware don't have that excuse, and it was their job to either get a clue or hire one. Their customers are going to be the ones paying to fix this.

    So if you're buying Internet infrastructure, you might want to look for companies (and more particularly, product groups) hanging out on nanog and participating in IETF, since although that's not proof their products are not fighting the Internet, maybe it correlates.

    My current guess is that organizational decision-making was tilted towards bellhead thinking for a variety of reasons (stereotype: they dress better and do nicer PowerPoint architecture.) Skimming through documentation of bearers such as 1xRTT makes it pretty clear that the design center was "reliable pipe first, then put packets on it." Which makes perfect sense if your company has history in non-Internet telecoms--your senior people are the ones who shipped products that did reliable circuit-switched pipes. But that's just wrong if you're doing IP, and for reasons known in the Internet communications world for decades.

    I've been trying to figure out whether I wanted to link some version of this to the blog posts. I figure it's safely out of sight here and won't interfere with the public diplomacy.

  195. Re:Ignorant hypocrite. :( by gottabeme · · Score: 1

    I don't understand why you think he made up "bufferbloat" (the problem, that is, not the term). He clearly explained his methods and his work with other parties who are indeed experts. I've used Netalyzr on my own connection and it reports very large buffers on my DSL connection, and I've observed the exact same symptoms that Mr. Gettys has observed. Other people commenting on this article (even some who work in ISPs) have concurred.

    If you want to convince me that bufferbloat is not a real problem, and not the cause of the observed symptoms, you'll need to provide some evidence of alternative explanations, because Mr. Gettys has done an excellent job of proving his case. He's also not the only person who's written about the problem, only the most recent.

    If you read the series of articles and understand enough about how TCP works, it's clear that it is indeed a real problem.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  196. Re:pegged connection == latency, who'd of thunk it by gottabeme · · Score: 1

    I disagree. If a connection's buffers were 50-100ms in size (perhaps even less than 50ms would be enough sometimes), the latency could never exceed 50-100ms, which is plenty for most interactive protocols. Maybe you're still thinking of buffers in terms of bytes, but it's much more helpful in this case to consider them in terms of the time it takes to empty them.

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  197. Re:pegged connection == latency, who'd of thunk it by Shakrai · · Score: 1

    I disagree. If a connection's buffers were 50-100ms in size (perhaps even less than 50ms would be enough sometimes), the latency could never exceed 50-100ms, which is plenty for most interactive protocols.

    Unless they get dropped. Buffers are still FIFO.

    --
    I want peace on earth and goodwill toward man.
    We are the United States Government! We don't do that sort of thing.
  198. Re:pegged connection == latency, who'd of thunk it by gottabeme · · Score: 1

    Isn't that where retransmitting comes in?

    --
    "Those who consume the bulk of goods are those who make them. We must never forget this secret of our prosperity."
  199. Re:pegged connection == latency, who'd of thunk it by Shakrai · · Score: 1

    Which imposes an even bigger delay and makes interactive protocols a PITA (telnet/ssh) at best and nearly unusable (VOIP/streaming video) at worst.

    --
    I want peace on earth and goodwill toward man.
    We are the United States Government! We don't do that sort of thing.
  200. Re:pegged connection == latency, who'd of thunk it by badkarmadayaccount · · Score: 1

    How about sane defaults on the web sever? Have it set by file.

    --
    I know tobacco is bad for you, so I smoke weed with crack.