Smart Queuing vs Traditional Queuing

New Smart Queueing vs Traditional Queueing


Traditional Queuing:

Prior to the change to Smart Queuing (fq-codel) iLines used the Traditional Method (pfifo) to Queue and rate limit client internet traffic.

In the Traditional Method there is a single buffer for each client’s traffic.  Traffic goes into the buffer and is let out at a set rate.  This rate is the package speed the client subscribes to; for example 4Mbps.  If the client requests more data than the buffer can output, then data begins to backup and the internet begins to feel sluggish and slow.  This is known as "Buffer Bloat".

Most have heard the Internet described as “The information Superhighway” and that is a very appropriate description.  If the internet is the superhighway then the client’s connection can be thought of as a mutli-lane offramp.  For the sake of keeping the example simple we will say your offramp is four lanes wide (4Mpbs).

As you start up a Netflix movie, Netflix begins to divert cars from the superhighway to your home via your offramp.  Quickly Netflix will fill all four lanes of your offramp with large Netflix cars creating a traffic jam.  Now if Netflix is the only thing running that jam will not cause any issues to your Netflix stream as the flow of traffic from Netflix to your steaming device is steady.

What then happens if someone else comes home and decides to hop on Facebook?  Facebook places some small cars on the superhighway and sends them to your home.  However, once they get to your offramp they find a traffic jam as all lane are full of large Netflix cars.  The Facebook traffic does what it is supposed to do and gets at the end of the line and slowly waits its turn until it can get to your home.

That is why you often see issues browsing the web or doing anything else online when someone is streaming videos or doing large file downloads.  The small traffic of online gaming or simple web browsing gets stuck behind the large bulk data of file downloads and video streaming.  The traffic is not treated fairly.


Smart Queuing:

With the smart queuing we have implemented, the system intelligently looks at the type of traffic and prioritizes or deprioritizes dynamically to keep everything moving fairly.  This will lead to a better user experience for all types of traffic and will eliminate buffer bloat.

Going back to the superhighway and offramp example you can think of the smart queue as a traffic cop controlling whose cars can get into what lanes on your four lane (4Mpbs) offramp.

Now if your offramp is full of Netflix traffic and someone decides to hop on Facebook, the traffic cop will pause Netflix cars from entering one of the lanes and dedicate it to the smaller Facebook cars, so they can get though quickly. Basically, if the traffic cop sees the car is small it will block (slow down) the larger cars temporarily to let the other traffic through.

This means that no matter how busy your link is interactive applications like browsing, gaming, and VoIP will continue to feel fast like there is nothing else running.

Another benefit is that the traffic cop will also fairly divide the large traffic evenly.  Where before if you were running Netflix and someone decided to start up Hulu, Netflix would get a majority of the data while Hulu might not get much at all.  With the new traffic cop, it will instead take your connection and divide the traffic between Netflix and Hulu so both get a more even distribution of the available bandwidth while also allowing things like web browsing to get priority.


What Smart Queing will not do:

While the examples above named certain internet applications like Netflix, Hulu, and Facebook, the smart queuing system is not intelligent enough to distinguish internet traffic by company, application, or website.  It looks at the traffic coming into the queue and breaks it up into 'Interactive' or 'Bulk' traffic flows.  It then gives the interactive traffic priority over the bulk traffic and then divides your internet bandwidth fairly within the traffic types. 

When a web page is requested it can open dozens to sometimes hundreds of connections to servers on the internet to download parts and pieces of the webpage. This means that as some web pages can contain both interactive and bulk traffic you will see parts of web pages like text, links, or small images load quickly but other parts like videos, ads, or large images might load slower as the system classifies all the website's connections into either interactive or bulk.

Also you could see instances where Netflix starts buffering when it did not buffer before.  This can happen as the new smart queue can slow down the Neflix stream to allow interactive traffic like web pages or gaming to get a share of the bandwidth. 

Another potential issue is when a service opens mutliple connections.  For example each Netflix stream actually opens around 4 background connections while things like Youtube only open 1.  This means if you are streaming Netflix and Youtube at the same time your bandwidth is not divided into two between Netflix and Youtube but it is actually divided into 5 equal connections with Netflix geting 4/5 of all your bandwidth.

In the end smart queuing will not eliminate all issues due to over utilization of your connection.  If you request more data than your connections is capable of you will still run into issues like slow downloads or video buffering. While the smart queue can farily divide and classify your internet traffic it is not able to make 4Mbps act like 12Mbps.