We have a problem out on the internet, and it's a situation that exists on all
of our
networks, but it especially affects the internet thanks to the routing table
size.
The routing table on the internet, as of the time of this video, is rapidly
approaching
1 million routes.
Technically we're at about 980,000 by the time you're watching this, we might
have surpassed
a million, and it's just going to keep going up and up and up.
And so think about the size of a router that needs to look through the entirety WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And so think about the size of a router that needs to look through the entirety
of the internet
routing table in order to forward traffic.
Because any network we have, let's say we've got router 1 here, we've got a
bunch of hosts
out here, and I want to send a packet to subnet A.
Well how does router 1 know where A lives?
Well maybe we have a default route that points us to the internet.
Let's say we have router 10 up here, that is in the internet officially. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Let's say we have router 10 up here, that is in the internet officially.
Well router 10 doesn't get to have a default route at this point, because
router 10 has
multiple paths through the internet, through routers 22 and 37, let's say.
And so it can't have a default route.
Instead, maybe it can have some summarized routes in there, which would
essentially be a partial
internet route routing table.
But for the most part we're going to end up having the full routing table size.
So we've got all of the subnets in the entire internet, and I've got to make WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So we've got all of the subnets in the entire internet, and I've got to make
sure that
I look through here and find where subnet A is, and then forward the traffic on
.
So maybe eventually we land on a router down here, router 5, and it has subnet
A attached.
Meanwhile maybe I've got another link up here and a link over here.
We've got router 7, and it has subnet B.
So now if I send a packet to subnet B, same situation, I'm going to follow my WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So now if I send a packet to subnet B, same situation, I'm going to follow my
default route,
send it to router 10, it's going to have to look through and find B, and it's
going to
forward it to router 22, and router 22 is going to have to do the same thing
and look through
the full internet routing table until it finds B and send it on.
And so the problems that exist is we start to identify them over here.
First and foremost, we need very high performance routers.
And those routers must have very high memory for the sake of storing the table. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And those routers must have very high memory for the sake of storing the table.
Well this amounts to a very expensive router, which is no good for anybody
trying to manage
routers, but it also just makes it very difficult for service providers to be
able to affordably
manage their internet routers.
Furthermore as we might imagine, this is also going to add some amount of
latency because
I have to look through this entire routing table with every single hop. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
I have to look through this entire routing table with every single hop.
I have to look through it on router 10, and then I look through it on router 22
, and in
our case subnet B was only a few hops away.
But imagine if it's a dozen hops through the internet or more.
Well, we're going to do a lot of internet routing table lookups, and chances
are that's going
to introduce quite a bit of latency.
Now we were using a method on the internet for a long time.
We still use it in the form of route summarization.
The problem is route summarization did not stop us from approaching 1 million WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
The problem is route summarization did not stop us from approaching 1 million
routes.
And there's a few reasons for that.
First of all, it's very difficult to do summarization when you don't have a
hierarchical network.
Now we do have some amount of hierarchy in the internet because different
service providers
own different IP address blocks.
But the hierarchical nature of the internet has also gotten more difficult over
time just
as it has organically grown.
The other big issue that we have out here is the concept of traffic engineering WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
The other big issue that we have out here is the concept of traffic engineering
, which
essentially allows us to attempt to force traffic one way or the other through
the internet.
And how do we do that?
Well, the way we do that is by dis aggregating our routes, which is the
opposite of summarization.
In other words, maybe subnet A down here is a slash 24 subnet.
And so it's a slash 24 everywhere in our different internet routing tables, WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And so it's a slash 24 everywhere in our different internet routing tables,
plus 24.
There we go.
But there is a particular host out here, a particular web server.
It's very important where a lot of application and users are trying to connect
to.
And so we also send a slash 32 for this device out into the internet.
This way I can control.
I can say, "Hey, I want you to see this slash 32 as a better metric than I want
you to see
it. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
it.
Everybody to come down this path in order to get to that specific host."
And so that is going to create a lot more routes out in the world.
Because now we're again doing the opposite of summarization, we are actually
dis aggregating
our routes.
So Cisco decided to come up with a solution that they believe is going to help
resolve
these specific problems.
And that solution is the locator ID separation protocol or Lisp, which again, WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
And that solution is the locator ID separation protocol or Lisp, which again,
this is a Cisco
solution.
The idea here is to try to eliminate the need to store the full routing table
on all of
these interim routers.
Now again, we said at the very start of this, that every network requires us to
have a route.
We benefit on the organizational side because we have a default route as a WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
We benefit on the organizational side because we have a default route as a
catch all.
But all these other routers, I mean, if I get a packet destined for subna A and
I don't
have subna A in my routing table, I'm going to have to drop that.
And it doesn't have to be an exact match.
It could be a summarized route, but I have to have a route that represents A.
So how in
the world can I say, "Well, let's just install a few routes on router 10.
Let's draw it up here."
Now with Lisp, maybe we've got just a few routes on router 10 and still know
how to get WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
how to get
out to these other subnets.
So all of our internet routers now just have a partial table.
Well, the reason that we can get away with this is that we give access to the
routes via
a database.
So we are still going to have a store of the full routing table on some level,
or maybe
I should at least say that we've got a significant number of routes located out WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
I should at least say that we've got a significant number of routes located out
here in this database.
And again, we all have access to this.
So what's going to happen now is thanks to Lisp, router 10 can receive this
packet destined
for router A.
And it's going to essentially request, "Hey, where is, I said router, but there
's subnet
A. Where is subnet A?"
Well subnet A is attached to router 5. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
Well subnet A is attached to router 5.
And so I'm going to inform router 10, "Hey, it's where router 5 lives."
I did not tell it where the identity is.
I did not say, "Hey, this is where the subnet, or here's what the subnet is
that you're
looking for."
That would be providing the identity.
Instead, I provided the location.
This, as we call it the routing locator, or the location for this specific
route, it's
attached to router 5, which means all I have to do is know where router 5 is WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
attached to router 5, which means all I have to do is know where router 5 is
here.
Though I send the packet to router 5 via a tunnel, because the destination has
to be to router
5.
The only way I could change the destination of the packet is to encapsulate the
original
destination packet into another one.
So I'm going to use a tunnel, board it to router 5, and allow router 5 to go
out to subnet
A.
Now did router 10 have to install subnet A into its routing table?
No.
It just had to know where it lived, which is via router 5. WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
It just had to know where it lived, which is via router 5.
And so the only routes I need to know are the other routers.
So now I can accomplish this goal.
I don't need to have the full routing table on these routers.
I have access to the routes via a database, but in the end, all I'm given is
the location
of where that subnet is, and I forward it to that router.
So we are going to drill into the details of all of this, but from a high level WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000
So we are going to drill into the details of all of this, but from a high level
, again,
the goal here is to keep this in mind.
We want to make it so we can have much cheaper routers that can go through
routing tables
much faster, reduce the latency, and still get our packets to arrive at the
destination.