I am starting this thread because I have had a couple discussions both recently in one thread (wrecking the OPs thread) and with other users back when I was suffering intermittent connectivity.
Starting a few months back (December) my internet would just "cut off" for brief periods of time. It took 3 months, several tech visits, a lot of lost hair, and finally stumbling upon a phenomenon I had never ever HEARD of to figure out what was going on.
Once I discovered what was happening, I consulted the man who coined the term himself (Jim Gettys), and he confirmed my suspicions.. Problem has been solved ever since.
I initially had a DOCSIS 3.0 emta (4x4). Basically what was happening was whenever my upload path was saturated, it rendered the internet connection unusable for anyone else on the network. Other users would experience "Page can't be displayed", "unable to connect to email server", gaming disconnects, etc. Cable, equipment, signal levels, etc had all been ruled out as a source of the cause. That left the modem itself. I replaced it with a DOCSIS 2 loaner modem, and the "outages" went away completely. Feeling confident that I found the problem, thinking it was a bad modem, I swapped it out for another DOCSIS 3 emta (8x4), and the issue instantly came back, only WORSE.
It was at this point that I just stumbled onto bufferbloat, and realized the symptoms matched what I was experiencing completely. Studying up on it, I realized it could be mitigated by enabling bandwidth shaping on my router to keep from utilizing the modem's built in buffer by limiting my bandwidth to *just slightly* under my provisioned speeds. Once I did that, all my issues disappeared, and my performance even improved! DNS lookups were instant, no matter if the connection was idle, or I had 3 other people on the internet at the same time.
In discussing the phenomenon with some users via PM I was told that not everyone believes it is real. That is understandable, as it will ONLY manifest itself when a link is saturated (and usually only noticeable to the end user if the UPLOAD path is saturated). If you are the sole user, or have very little upload traffic on your internet connection you may never seen an issue. Again, its only when your link is saturated that it becomes an issue.
So, what does this have to do with anything, really you might wonder...Along with excessively large buffers existing in OSes, routers, Wifi connections, and 3g, I have found that cable modems are really bad about it as well. And to make matters worse, the *faster* the modem is capable of, the worse the issue gets as the modem is operated at relatively slower speeds. The sad thing about this is the ISP's have the power to do something about it by controlling the active buffer size in our modems, but to the best of my knowledge, none of them do.
Most everyone should know what a buffer is and what it does, so no point explaining that. What is important to know is when you are sending data at a rate SLOWER than what your internet connection can accept it, the buffer isn't used at all. That data comes in and goes right out. Now, lets say you have a 1gbps connection to your modem. But you only have a 10mbps upload speed. When you try to upload a large file, its pretty obvious that you are going to try and send faster than your connection can accept the data; what happens is the modems buffer starts to fill. Once the modem's buffer is full, THEN the computer realizes it sending data way to fast and slows down the transfer until it finds an equilibrium. The point which the equilibrium is found will result in a buffer that is always full (until the transfer is finished).
Now here is the real problem. Due to falling memory prices (and the non availability of small enough memory chips) buffer sizes have been increasing in broadband equipment. The problem is consideration isn't given to the proper sizing of buffering in the equipment. What they should be doing doing is sizing the buffer based on a delay factor, not a size factor.
Here is an extreme example, but it should make the issue readily apparent:
In our example above with our 1gbps connection to the modem, but a 10mbps upload speed, lets say we are uploading a 1GB file. Lets also say we have a 100mb buffer. When we start the transfer our PC will essentially send data at a 1gbps rate, effectively filling that buffer in a short time. Once our buffer is full and the transfer is underway, lets pretend PC #2 makes a DNS lookup to view a website. The DNS lookup gets thrown in at the end of the buffer, and has to wait until it transverses the buffer before it gets out to the internet. In our example, PC#2 has to wait 10 seconds before it can even LOOK UP the address of the website we want, and we haven't even started loading the page yet. Now if that buffer was only 10mb, the delay would be 1 second for the lookup. This is only an issue when the buffer is full (link saturated). When the buffer is empty, the buffer could be 1000mb in size and it wouldn't matter, there would be no added delay to our DNS lookup. Stressing this point again-this is ONLY an issue when the link is saturated.
...To Be Continued...
-Alan
↧