One of the best ways to think of network bandwidth is to think of it like it's
a conveyor belt.
So a conveyor belt, anything about maybe a factory type of situation, it's
moving at
a constant speed.
And so we can imagine a situation where you or I, somebody is sitting here, and
they're
responsible for taking boxes that are maybe stacked up here and placing the
boxes onto
the conveyor belt.
Now we can only put one box onto the conveyor belt at a time at the point of WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Now we can only put one box onto the conveyor belt at a time at the point of
entry.
So naturally as this box moves down, we can put more boxes behind it.
I don't know, I think about maybe being at the grocery store, sometimes this
happens
where I've got a cart full of goods and somebody's getting checked out in front
of
me and I put one of these barriers down on the conveyor belt and I can stack my
stuff
up here.
But until the conveyor belt moves enough, I can't put all of my stuff there.
So I end up having to sit there and wait to put all of my groceries onto the WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So I end up having to sit there and wait to put all of my groceries onto the
checkout
conveyor belt at the grocery store.
So it's that kind of same situation where we've got a bunch of boxes stacked up
here
and we need to get all of them across.
Well, it doesn't matter technically speaking how fast or slow this conveyor
belt is, at
least as far as how many of these boxes I can put on at a time.
What does matter is the faster that it is, the faster I'm going to be able to WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
What does matter is the faster that it is, the faster I'm going to be able to
deplete
these boxes.
Now the other part of this analogy that's important is that we have some kind
of supply
that's going to feed us with more boxes.
So we have a speed at which the boxes are showing up and we have a speed at
which the
boxes are getting put onto the conveyor belt.
If as we might imagine, if the speed of the supply is actually faster than the
speed of
the conveyor belt, then we're going to have a major problem here. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
the conveyor belt, then we're going to have a major problem here.
Eventually, we're going to have so many boxes that they're piling up and
spilling out and
potentially we even have to reject some of those boxes from coming in because
we have
no place to store them.
So this analogy is exactly what's happening from the perspective of a network
device.
For example, we have an ingress interface here that's receiving packets.
So we have packets that are coming into the network device. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So we have packets that are coming into the network device.
We have a buffer, some amount of space where we can store packets and then we
have the
egress interface and the egress interface is operating at a particular
bandwidth.
Now, unfortunately, we might actually have multiple ingress interfaces so we
could have
packets coming in from all different directions here.
And so we don't even have to have very high bandwidth ingress interfaces in WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And so we don't even have to have very high bandwidth ingress interfaces in
order to overwhelm
maybe our one egress interface.
If we have a router with lots of interfaces and most of the packets that are
coming in
are destined out a single interface, well, now we see why we could have a
problem and
why we could start having packets stack up.
So now we are presented with another problem.
What happens in our analogy here if a very important packet shows up?
So now this is a priority packet. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So now this is a priority packet.
If we were shipping our packages, maybe we're working for the post office or
the mail service
or something along those lines where we are trying to ship as many of these
boxes as possible,
well, we know that we can go to the post office and we can say, hey, I would
like to send
this as a priority shipment and in theory, it will arrive faster.
So same concept here.
Priority box does show up and now I need to put the priority box on to the
conveyor belt WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
conveyor belt
as fast as I can.
Well, here's the problem.
I'm looking at this stack of boxes and I'm seeing nine other boxes that were
delivered
before the priority.
So this is technically number 10 in the list.
So the question is, how am I servicing these boxes?
Am I taking the first box that showed up here and then I'll take the second box
and then
I'll take the third box and I'll just keep going in order?
Because if that's the case, it's going to take me a long time to get to that WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Because if that's the case, it's going to take me a long time to get to that
box that's
all the way in the back.
Now if I'm just getting fed one box at a time, then I don't have a choice and
maybe
in our analogy here, maybe that priority package is so far in the back that I
don't
even know that it's there.
So we need to come up with a way to better service how we can grab those
priority packages
and get them out our conveyor belt or our egress interface from a networking WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
and get them out our conveyor belt or our egress interface from a networking
perspective.
And the way we're going to accomplish this is with the concept of queues.
So queues, that's just another way of saying we get in line at the bank or at
the restaurant
or anything like that, we're going to queue up.
Our British friends are all very happy.
It's a little bit more of a British word than an American word when it comes to
English.
But ultimately, what we're saying is we're going to form multiple queues or WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
But ultimately, what we're saying is we're going to form multiple queues or
lines that
allow us to see that there are priority packages.
So imagine this now.
Now I am going to draw this out again.
Same situation.
We have our conveyor belt.
We have our person.
But now as the packages start stacking up over here, we're going to call this
our normal
queue.
And up here, we're going to have a priority queue. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And up here, we're going to have a priority queue.
So for the most part, we're just going to get normal packages.
I'm going to be taking these packages and putting them on the conveyor belt.
But then all of a sudden, after we have, once again, let's say we've got nine
packages
lined up, we'll now a priority package arrives.
Where are we going to put it?
Well, we're going to move it right up here to the front of the priority queue.
So now this box over here on the conveyor belt sends, and this person turns WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So now this box over here on the conveyor belt sends, and this person turns
around and
they see they have two choices.
They can take one of the boxes from the normal queue, or they can take the box
from the priority
queue.
Naturally, the whole reason we have the priority queue is so that I can grab
the priority queue
packet and put it onto the conveyor belt.
This allows us to be able to service a different level of priority, namely the
priority marked
packages that show up.
And as we can imagine, this has a direct translation to our networking devices WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And as we can imagine, this has a direct translation to our networking devices
up here.
So now we have a bunch of packets showing up, but some of those are voice over
IP packets.
They're priority packets.
And so rather than lining them all up to be sent out the egress interface in
the, the
order in which they arrived, well, now we can actually look at two different
options.
Here, we can line them up in two different queues, and I can service the
priority packages
when they show up.
Furthermore, we could say, you know, let's not stop there. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Furthermore, we could say, you know, let's not stop there.
We could have this normal queue in the priority queue, but maybe we could have
an upgraded
queue, sort of that economy plus style where we don't want to pay for a
priority ship.
And maybe this costs a lot of money.
And I can spend a lot less money on the normal queue, but maybe I've got a an
upgraded set.
So I could actually spend maybe not as much as priority, but a little bit more
than a
normal queue to get placed here.
And so now I actually have the normal queue. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And so now I actually have the normal queue.
I have the priority queue, and then I have packages showing up here that are
the upgraded
queue.
And so these could actually get serviced before the normal ones, but after the
priority queue,
it has been fully serviced.
So we've got lots of options here.
We can have many different queues, for example, and that allows us to have many
different priority
levels.
And so I can make a difference, for example, between priority traffic and
upgraded traffic WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
upgraded traffic
while still prioritizing both of those relative to the normal queue.
Now an important thing that I like to point out at this point is it's at least
ask this
question, which is, are we sending more boxes like this?
If I had just the single normal queue, I would get, let's say, 100 packages out
per hour,
something like that.
So if I put all of these boxes into the queues, do I send more than 100 boxes
in that hour?
And the answer is no, I'm not sending any more boxes. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And the answer is no, I'm not sending any more boxes.
This is what we talked about in the last video where QOS is not about sending
more traffic
and making sure we don't drop any traffic.
QOS is about making sure that we have total control over what traffic is being
sent and
what traffic is being dropped.
And that is what quality of service is all about.
So again, we're not sending any more boxes than we were before, but we do have
full control
over which boxes are being sent.
And that is the point.
So let's drop the analogies and start talking about this from a true network WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So let's drop the analogies and start talking about this from a true network
perspective.
Once again, we're going to have a network device.
And this network device is going to have maybe a lot of ingress interfaces.
The reality is that interfaces on a network device have traffic coming in and
going out
every single one of these.
But for the sake of just drawing this out, let's say we've got these three
interfaces
and we're receiving a bunch of traffic and it is going to all be destined for WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
and we're receiving a bunch of traffic and it is going to all be destined for
this egress
link over here.
Well, the egress link is going to have, let's just draw it like this, where we
've got this
space in here that is the buffer.
This buffer is intended to store packets.
We are typically receiving more packets, not packages, it's over here, packages
, but
we're storing more packets because we're typically getting more packets than we
can actually
send at once. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
send at once.
And that makes sense when we have a potential for so many different ingress
interfaces.
All of these ingress interfaces could be 100 megabits per second and this could
also be
100 megabits per second.
But at maximum capacity, I might be expected to be sending 400 megabits per
second worth
of traffic.
Now, fortunately, in a packet switch network, everything is bursty.
And so sometimes this link is hot and this link isn't sending much or receiving
much,
I suppose. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
I suppose.
And vice versa and now all of those kinds of things.
And so we're hoping that it averages out to the point that we can still manage
to send
our traffic on 100 meg link.
If we're spiking and dropping traffic on this regularly, then we know that
maybe we
want to upgrade that link because we just have too much traffic to actually be
sending
on it.
But now we can understand that as these packets are coming in, they're going to
be stored here
inside of the buffer.
And it's inside this buffer that we can establish our concept of queues. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And it's inside this buffer that we can establish our concept of queues.
Now the number of queues that we're going to build is going to look a little
different
depending on the platform.
For example, a lot of routers are built a little bit more on software.
And so I can have a custom queue amount, a custom number of queues because the
router
operates more in software and I can configure all of those as much as I want. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
operates more in software and I can configure all of those as much as I want.
Whereas switches, they operate more in the hardware realm and they typically
have a set
number of queues, usually four or eight queues depending on the platform.
Whereas routers, maybe I can configure up to 256 different queues because it's
simply
carving more out in software.
It's very software focused as far as how it handles forwarding of traffic.
It's a big difference between routers and switches.
So let's say I carve out four queues here, one, two, three and four. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So let's say I carve out four queues here, one, two, three and four.
And what we're going to do now is we're going to perform our classification in
marking based
on what we're seeing here.
Or maybe I should say it like this.
We're going to be bringing in marked packets.
Now some of those are marked with an actual tag.
Some of them just have no tag or marked with zero.
But either way, we have marked packets and we're going to classify those into
the different
queues.
So what we end up with is we might end up with packets that are in every one of WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So what we end up with is we might end up with packets that are in every one of
these
queues depending on the marking.
So maybe we've got voiceover IP that goes into this queue up here.
We've got video that goes into this queue.
We've got some kind of, I don't know, maybe some kind of bulk traffic
transmission happening
here.
And then down here, we've just got our best effort marking. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And then down here, we've just got our best effort marking.
So those are the four different queues that we have.
So now it's up to an entity, a software entity known as the scheduler.
The scheduler's job is to decide which one of these queues to service.
So now that I have the ability to pick and choose, sort of like my person here
was able
to pick and choose which one of these queues to pick from, well now that's the WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
to pick and choose which one of these queues to pick from, well now that's the
job of the
scheduler.
The scheduler can pull a voiceover IP packet and then it can pull a video
packet and it
can pull another voiceover IP packet and then it could do a best effort and
then it could
do a bulk.
And so we see that the order of packets that are being sent, we again have
total control
over that.
And so that is the policy that we have to define as the network admins.
Because the scheduler is not artificial intelligence.
It's not making these decisions on its own. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
It's not making these decisions on its own.
It's making these decisions based on the policies that we set.
And some of those policies are going to involve bandwidth reservations and that
prioritization
concept that we talked about.
So from here, we're going to dive into the details of how we can build these
queues out,
the different methodologies that Cisco gives us, and how we can apply these
concepts of
bandwidth reservation and priority to the different queuing mechanisms that we
have WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
have
available.