The birth of a new kind of new kind of Packet Shaper (NetEqualizer)


Today my attention was drawn to a forum thread about setting up queuing and bandwidth fairness on a Cisco Router. The techs in the discussion were obviously very familiar with Cisco and its internal programming language. Needless to say it was a very low level discussion and  to make any sense of it would require  sort a Cisco certification on the inner workings of their IOS programming language. The discussion reminded me of a conversation I had back in 2002 when the idea of turn key bandwidth controller popped into my head

In 2002  I was running a start up WISP with a partner. One issue that we saw coming was sharing bandwidth on a tightly contested T1. We decided it was worth looking into what was available, was there something we could just plug in to handle this and get on with our core business of  running the WISP.
My day job at the time was at Bell Labs, and just recently there had been quite  a few defections to Cisco.  So I  decided to tap some of more former coworkers to see if Cisco had anything turn key picked up the phone and asked a couple of peers what a Cisco box could do  support of some form of turn key fairness. ‘Well you can program the IOS bios queues bla bla” I had heard enough. It seemed that although it was definitely possible to do this with Cisco, I just wanted  something to plug  in and forget about it.  I did not have money to hire a Cisco tech and figured many other start up WISPS in my position were in the same boat. Little did I realize at the time, that the NetEqualizer would become an International hit, distributed across all industries (Hospitals, Cable Companies, Universities etc) around the world over the next 6 years.

The model  of how to approach this issue of fairness was already widely used  in the computer server world. Most people are not concerned with  fairness of processes or threads on web server or data base server? Why is that ? Most  modern computer servers  have some form of operating system that insures that the processes running don’t dominate the central processor (usually Linux). The basic idea is that a little timer that keeps track of a processors resources and how much a process has used if they HOG too much this timer kicks and allows others to get their turn.

The point of this story is there is no manual intervention needed, computers are so cheap that it would be absurd to pay somebody to do this, but that was not always the case. As late as 1986 the Main Frame computer dominated data processing, and with a main frame came a computer operator , a human who had the task of making sure jobs (as there were called) ran to completion in a timely manner,  as well as making sure tape drives were loaded etc.

Do you see the parallel here ? As computers became cheaper it was not economical to employ somebody to watch over this resource, the job still existed  but it was automated and incorporated into the operating system.

Flash forward to 2002, what my Cisco  freinds were  proposing was a labor intensive solution to managing a resource (bandwidth). So the idea was to take this one aspect of managing a network and essentially fire the operator (or the Cisco programmer) And so it was born an automated fairness device for sharing bandwidth and we have no looked back since.

Resources on computers and ways to handle this type of thing were invented back in the 70’s and became wide spread with the death of the card reader.

Editors note: CIsco is a fine product and perhaps there is some easy way to perform this function and I am just too stupid to understand.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: