WEBVTT

1
00:00.000 --> 00:06.240
We have a problem out on the internet, and it's a situation that exists on all

2
00:06.240 --> 00:06.480
of our

3
00:06.480 --> 00:11.500
networks, but it especially affects the internet thanks to the routing table

4
00:11.500 --> 00:12.080
size.

5
00:12.080 --> 00:16.950
The routing table on the internet, as of the time of this video, is rapidly

6
00:16.950 --> 00:17.920
approaching

7
00:17.920 --> 00:20.560
1 million routes.

8
00:20.560 --> 00:24.580
Technically we're at about 980,000 by the time you're watching this, we might

9
00:24.580 --> 00:25.280
have surpassed

10
00:25.280 --> 00:29.400
a million, and it's just going to keep going up and up and up.

11
00:29.400 --> 00:35.800
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

11
00:29.400 --> 00:35.800
And so think about the size of a router that needs to look through the entirety

12
00:35.800 --> 00:36.720
of the internet

13
00:36.720 --> 00:39.960
routing table in order to forward traffic.

14
00:39.960 --> 00:44.880
Because any network we have, let's say we've got router 1 here, we've got a

15
00:44.880 --> 00:46.240
bunch of hosts

16
00:46.240 --> 00:50.240
out here, and I want to send a packet to subnet A.

17
00:50.240 --> 00:53.240
Well how does router 1 know where A lives?

18
00:53.240 --> 00:57.040
Well maybe we have a default route that points us to the internet.

19
00:57.040 --> 01:02.320
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

19
00:57.040 --> 01:02.320
Let's say we have router 10 up here, that is in the internet officially.

20
01:02.320 --> 01:06.230
Well router 10 doesn't get to have a default route at this point, because

21
01:06.230 --> 01:07.280
router 10 has

22
01:07.280 --> 01:13.440
multiple paths through the internet, through routers 22 and 37, let's say.

23
01:13.440 --> 01:15.400
And so it can't have a default route.

24
01:15.400 --> 01:19.570
Instead, maybe it can have some summarized routes in there, which would

25
01:19.570 --> 01:21.240
essentially be a partial

26
01:21.240 --> 01:23.880
internet route routing table.

27
01:23.880 --> 01:28.440
But for the most part we're going to end up having the full routing table size.

28
01:28.440 --> 01:32.400
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

28
01:28.440 --> 01:32.400
So we've got all of the subnets in the entire internet, and I've got to make

29
01:32.400 --> 01:33.000
sure that

30
01:33.000 --> 01:38.820
I look through here and find where subnet A is, and then forward the traffic on

31
01:38.820 --> 01:38.840
.

32
01:38.840 --> 01:45.860
So maybe eventually we land on a router down here, router 5, and it has subnet

33
01:45.860 --> 01:47.240
A attached.

34
01:47.240 --> 01:50.400
Meanwhile maybe I've got another link up here and a link over here.

35
01:50.400 --> 01:55.200
We've got router 7, and it has subnet B.

36
01:55.200 --> 02:00.390
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

36
01:55.200 --> 02:00.390
So now if I send a packet to subnet B, same situation, I'm going to follow my

37
02:00.390 --> 02:01.880
default route,

38
02:01.880 --> 02:05.560
send it to router 10, it's going to have to look through and find B, and it's

39
02:05.560 --> 02:06.080
going to

40
02:06.080 --> 02:09.530
forward it to router 22, and router 22 is going to have to do the same thing

41
02:09.530 --> 02:10.160
and look through

42
02:10.160 --> 02:15.440
the full internet routing table until it finds B and send it on.

43
02:15.440 --> 02:20.800
And so the problems that exist is we start to identify them over here.

44
02:20.800 --> 02:28.200
First and foremost, we need very high performance routers.

45
02:28.200 --> 02:35.680
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

45
02:28.200 --> 02:35.680
And those routers must have very high memory for the sake of storing the table.

46
02:35.680 --> 02:41.270
Well this amounts to a very expensive router, which is no good for anybody

47
02:41.270 --> 02:42.480
trying to manage

48
02:42.480 --> 02:47.030
routers, but it also just makes it very difficult for service providers to be

49
02:47.030 --> 02:48.560
able to affordably

50
02:48.560 --> 02:52.600
manage their internet routers.

51
02:52.600 --> 02:56.660
Furthermore as we might imagine, this is also going to add some amount of

52
02:56.660 --> 02:57.560
latency because

53
02:57.560 --> 03:01.120
I have to look through this entire routing table with every single hop.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

53
02:57.560 --> 03:01.120
I have to look through this entire routing table with every single hop.

54
03:01.120 --> 03:05.020
I have to look through it on router 10, and then I look through it on router 22

55
03:05.020 --> 03:05.480
, and in

56
03:05.480 --> 03:08.480
our case subnet B was only a few hops away.

57
03:08.480 --> 03:11.840
But imagine if it's a dozen hops through the internet or more.

58
03:11.840 --> 03:16.580
Well, we're going to do a lot of internet routing table lookups, and chances

59
03:16.580 --> 03:17.280
are that's going

60
03:17.280 --> 03:19.800
to introduce quite a bit of latency.

61
03:19.800 --> 03:24.880
Now we were using a method on the internet for a long time.

62
03:24.880 --> 03:28.440
We still use it in the form of route summarization.

63
03:28.440 --> 03:34.560
The problem is route summarization did not stop us from approaching 1 million
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

63
03:28.440 --> 03:34.560
The problem is route summarization did not stop us from approaching 1 million

64
03:34.560 --> 03:35.480
routes.

65
03:35.480 --> 03:37.640
And there's a few reasons for that.

66
03:37.640 --> 03:42.490
First of all, it's very difficult to do summarization when you don't have a

67
03:42.490 --> 03:44.920
hierarchical network.

68
03:44.920 --> 03:48.750
Now we do have some amount of hierarchy in the internet because different

69
03:48.750 --> 03:49.840
service providers

70
03:49.840 --> 03:52.600
own different IP address blocks.

71
03:52.600 --> 03:56.740
But the hierarchical nature of the internet has also gotten more difficult over

72
03:56.740 --> 03:57.400
time just

73
03:57.400 --> 03:59.760
as it has organically grown.

74
03:59.760 --> 04:05.640
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

74
03:59.760 --> 04:05.640
The other big issue that we have out here is the concept of traffic engineering

75
04:05.640 --> 04:06.360
, which

76
04:06.360 --> 04:11.140
essentially allows us to attempt to force traffic one way or the other through

77
04:11.140 --> 04:12.800
the internet.

78
04:12.800 --> 04:13.800
And how do we do that?

79
04:13.800 --> 04:18.680
Well, the way we do that is by dis aggregating our routes, which is the

80
04:18.680 --> 04:20.760
opposite of summarization.

81
04:20.760 --> 04:25.880
In other words, maybe subnet A down here is a slash 24 subnet.

82
04:25.880 --> 04:33.840
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

82
04:25.880 --> 04:33.840
And so it's a slash 24 everywhere in our different internet routing tables,

83
04:33.840 --> 04:34.560
plus 24.

84
04:34.560 --> 04:35.800
There we go.

85
04:35.800 --> 04:39.560
But there is a particular host out here, a particular web server.

86
04:39.560 --> 04:44.440
It's very important where a lot of application and users are trying to connect

87
04:44.440 --> 04:44.920
to.

88
04:44.920 --> 04:51.680
And so we also send a slash 32 for this device out into the internet.

89
04:51.680 --> 04:53.360
This way I can control.

90
04:53.360 --> 04:59.280
I can say, "Hey, I want you to see this slash 32 as a better metric than I want

91
04:59.280 --> 04:59.960
you to see

92
04:59.960 --> 05:00.960
it.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

92
04:59.960 --> 05:00.960
it.

93
05:00.960 --> 05:08.640
Everybody to come down this path in order to get to that specific host."

94
05:08.640 --> 05:12.960
And so that is going to create a lot more routes out in the world.

95
05:12.960 --> 05:16.870
Because now we're again doing the opposite of summarization, we are actually

96
05:16.870 --> 05:17.720
dis aggregating

97
05:17.720 --> 05:19.200
our routes.

98
05:19.200 --> 05:26.150
So Cisco decided to come up with a solution that they believe is going to help

99
05:26.150 --> 05:27.040
resolve

100
05:27.040 --> 05:28.680
these specific problems.

101
05:28.680 --> 05:34.510
And that solution is the locator ID separation protocol or Lisp, which again,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

101
05:28.680 --> 05:34.510
And that solution is the locator ID separation protocol or Lisp, which again,

102
05:34.510 --> 05:36.600
this is a Cisco

103
05:36.600 --> 05:38.160
solution.

104
05:38.160 --> 05:47.190
The idea here is to try to eliminate the need to store the full routing table

105
05:47.190 --> 05:48.240
on all of

106
05:48.240 --> 05:50.160
these interim routers.

107
05:50.160 --> 05:55.120
Now again, we said at the very start of this, that every network requires us to

108
05:55.120 --> 05:56.600
have a route.

109
05:56.600 --> 06:00.410
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

109
05:56.600 --> 06:00.410
We benefit on the organizational side because we have a default route as a

110
06:00.410 --> 06:01.200
catch all.

111
06:01.200 --> 06:05.120
But all these other routers, I mean, if I get a packet destined for subna A and

112
06:05.120 --> 06:05.600
I don't

113
06:05.600 --> 06:10.400
have subna A in my routing table, I'm going to have to drop that.

114
06:10.400 --> 06:11.840
And it doesn't have to be an exact match.

115
06:11.840 --> 06:16.760
It could be a summarized route, but I have to have a route that represents A.

116
06:16.760 --> 06:17.400
So how in

117
06:17.400 --> 06:23.680
the world can I say, "Well, let's just install a few routes on router 10.

118
06:23.680 --> 06:24.680
Let's draw it up here."

119
06:24.680 --> 06:29.580
Now with Lisp, maybe we've got just a few routes on router 10 and still know

120
06:29.580 --> 06:30.420
how to get
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

120
06:29.580 --> 06:30.420
how to get

121
06:30.420 --> 06:33.960
out to these other subnets.

122
06:33.960 --> 06:37.800
So all of our internet routers now just have a partial table.

123
06:37.800 --> 06:47.770
Well, the reason that we can get away with this is that we give access to the

124
06:47.770 --> 06:48.240
routes via

125
06:48.240 --> 06:50.040
a database.

126
06:50.040 --> 06:57.010
So we are still going to have a store of the full routing table on some level,

127
06:57.010 --> 06:57.720
or maybe

128
06:57.720 --> 07:02.010
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

128
06:57.720 --> 07:02.010
I should at least say that we've got a significant number of routes located out

129
07:02.010 --> 07:03.880
here in this database.

130
07:03.880 --> 07:07.080
And again, we all have access to this.

131
07:07.080 --> 07:13.590
So what's going to happen now is thanks to Lisp, router 10 can receive this

132
07:13.590 --> 07:15.080
packet destined

133
07:15.080 --> 07:16.880
for router A.

134
07:16.880 --> 07:21.430
And it's going to essentially request, "Hey, where is, I said router, but there

135
07:21.430 --> 07:22.040
's subnet

136
07:22.040 --> 07:24.640
A. Where is subnet A?"

137
07:24.640 --> 07:31.360
Well subnet A is attached to router 5.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

137
07:24.640 --> 07:31.360
Well subnet A is attached to router 5.

138
07:31.360 --> 07:36.880
And so I'm going to inform router 10, "Hey, it's where router 5 lives."

139
07:36.880 --> 07:41.080
I did not tell it where the identity is.

140
07:41.080 --> 07:44.880
I did not say, "Hey, this is where the subnet, or here's what the subnet is

141
07:44.880 --> 07:45.480
that you're

142
07:45.480 --> 07:46.480
looking for."

143
07:46.480 --> 07:48.840
That would be providing the identity.

144
07:48.840 --> 07:52.440
Instead, I provided the location.

145
07:52.440 --> 07:57.140
This, as we call it the routing locator, or the location for this specific

146
07:57.140 --> 07:58.040
route, it's

147
07:58.040 --> 08:01.760
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

147
07:58.040 --> 08:01.760
attached to router 5, which means all I have to do is know where router 5 is

148
08:01.760 --> 08:02.320
here.

149
08:02.320 --> 08:08.550
Though I send the packet to router 5 via a tunnel, because the destination has

150
08:08.550 --> 08:09.360
to be to router

151
08:09.360 --> 08:10.360
5.

152
08:10.360 --> 08:14.720
The only way I could change the destination of the packet is to encapsulate the

153
08:14.720 --> 08:15.280
original

154
08:15.280 --> 08:17.600
destination packet into another one.

155
08:17.600 --> 08:22.430
So I'm going to use a tunnel, board it to router 5, and allow router 5 to go

156
08:22.430 --> 08:23.520
out to subnet

157
08:23.520 --> 08:24.520
A.

158
08:24.520 --> 08:28.320
Now did router 10 have to install subnet A into its routing table?

159
08:28.320 --> 08:29.320
No.

160
08:29.320 --> 08:33.640
It just had to know where it lived, which is via router 5.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

160
08:29.320 --> 08:33.640
It just had to know where it lived, which is via router 5.

161
08:33.640 --> 08:38.200
And so the only routes I need to know are the other routers.

162
08:38.200 --> 08:40.000
So now I can accomplish this goal.

163
08:40.000 --> 08:43.720
I don't need to have the full routing table on these routers.

164
08:43.720 --> 08:50.560
I have access to the routes via a database, but in the end, all I'm given is

165
08:50.560 --> 08:51.880
the location

166
08:51.880 --> 08:55.920
of where that subnet is, and I forward it to that router.

167
08:55.920 --> 09:00.600
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

167
08:55.920 --> 09:00.600
So we are going to drill into the details of all of this, but from a high level

168
09:00.600 --> 09:01.320
, again,

169
09:01.320 --> 09:04.160
the goal here is to keep this in mind.

170
09:04.160 --> 09:09.300
We want to make it so we can have much cheaper routers that can go through

171
09:09.300 --> 09:10.320
routing tables

172
09:10.320 --> 09:14.640
much faster, reduce the latency, and still get our packets to arrive at the

173
09:14.640 --> 09:15.520
destination.
