WEBVTT

1
00:00.000 --> 00:05.400
When it comes to layer 2 forwarding, we are going to rely on MAC addresses.

2
00:05.400 --> 00:10.320
And specifically, we're going to look at a MAC address as it comes into our

3
00:10.320 --> 00:11.000
switch here.

4
00:11.000 --> 00:15.000
And we're going to pay attention to the destination MAC address.

5
00:15.000 --> 00:20.000
And the idea with a switch, especially when we compare it to layer 1 hubs,

6
00:20.000 --> 00:24.000
is that we want to intelligently forward it out a single interface.

7
00:24.000 --> 00:27.000
And so, yeah, we might have to flood a packet out if needed,

8
00:27.000 --> 00:32.000
but if we can send it out a single interface, then that would be ideal.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

8
00:27.000 --> 00:32.000
but if we can send it out a single interface, then that would be ideal.

9
00:32.000 --> 00:37.000
And so, what we're going to do is we're going to check the CAM table.

10
00:37.000 --> 00:43.100
And this CAM table is going to contain the very important MAC to interface m

11
00:43.100 --> 00:44.000
appings,

12
00:44.000 --> 00:46.000
meaning that I can check this destination MAC.

13
00:46.000 --> 00:50.000
And maybe it's something like 0.1.2.

14
00:50.000 --> 00:58.000
And it is an extremely abbreviated MAC address here, and this maps to gig 0/0.

15
00:58.000 --> 01:04.000
And so, because I have this mapping, I can now look at this destination MAC,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

15
00:58.000 --> 01:04.000
And so, because I have this mapping, I can now look at this destination MAC,

16
01:04.000 --> 01:07.000
say, okay, well, in order to get it to its destination,

17
01:07.000 --> 01:11.000
I'm going to forward it out gig 0/0 and send it over there.

18
01:11.000 --> 01:16.000
Naturally, if we don't have an entry, then we are still going to have to flood

19
01:16.000 --> 01:17.000
that frame

20
01:17.000 --> 01:22.000
out all of the interfaces in order to get it to its destination.

21
01:22.000 --> 01:25.000
And hopefully, at some point, we do learn the MAC address.

22
01:25.000 --> 01:28.460
Layer 2, from a control plane perspective, we don't dynamically share MAC

23
01:28.460 --> 01:30.000
addresses everywhere.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

23
01:28.460 --> 01:30.000
addresses everywhere.

24
01:30.000 --> 01:33.000
Instead, we use the concept of flood and learn.

25
01:33.000 --> 01:37.590
And again, we start with flooding, and we hope that we eventually learn the MAC

26
01:37.590 --> 01:38.000
address

27
01:38.000 --> 01:41.000
maybe when return traffic comes through.

28
01:41.000 --> 01:45.000
And so, that's probably the extent of our CCNA level studies

29
01:45.000 --> 01:48.000
when we were initially diving into the world of radigant switching.

30
01:48.000 --> 01:53.000
We probably stopped there understanding these two important concepts will get

31
01:53.000 --> 01:53.000
us a long way,

32
01:53.000 --> 01:56.000
as far as, again, that level of study.

33
01:56.000 --> 01:58.000
But now we're going to go a little bit deeper.

34
01:58.000 --> 02:01.000
We need to know, for example, what is this cam table?
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

34
01:58.000 --> 02:01.000
We need to know, for example, what is this cam table?

35
02:01.000 --> 02:04.000
What is cam and why are we using it here?

36
02:04.000 --> 02:09.110
In order to understand what content addressable memory is, which is what cam

37
02:09.110 --> 02:10.000
stands for,

38
02:10.000 --> 02:13.770
we need to start off by taking a look at what we might consider to be a little

39
02:13.770 --> 02:14.000
bit more of a

40
02:14.000 --> 02:16.000
normal memory situation.

41
02:16.000 --> 02:21.000
When we're looking at memory lookups, our standard DRAM type of lookups,

42
02:21.000 --> 02:27.280
or maybe running on a PC or a laptop, we might be using something like DDR

43
02:27.280 --> 02:28.000
memory.

44
02:28.000 --> 02:34.000
But either way, the concept of memory typically involves providing an index
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

44
02:28.000 --> 02:34.000
But either way, the concept of memory typically involves providing an index

45
02:34.000 --> 02:38.000
and exchanging an index for a value.

46
02:38.000 --> 02:43.080
What this essentially equates to is, you can almost think of it as forming a

47
02:43.080 --> 02:44.000
spreadsheet,

48
02:44.000 --> 02:50.000
where we have a bunch of cells of information, and in each one of these cells,

49
02:50.000 --> 02:53.000
we have data.

50
02:53.000 --> 02:58.000
And that data is stored with a reference ID here that is the index.

51
02:58.000 --> 03:01.000
So it's data at a specific index.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

51
02:58.000 --> 03:01.000
So it's data at a specific index.

52
03:01.000 --> 03:05.760
So every one of these cells, if we want to keep calling them, that is going to

53
03:05.760 --> 03:06.000
have an index.

54
03:06.000 --> 03:10.000
So again, think of it from a spreadsheet perspective, it would be like saying,

55
03:10.000 --> 03:12.000
"Hey, what's at A1?"

56
03:12.000 --> 03:17.490
And we look at A1, we've provided the index, and we're going to get some value

57
03:17.490 --> 03:19.000
out of that.

58
03:19.000 --> 03:21.000
That is how a lot of our memory works.

59
03:21.000 --> 03:23.000
It's how PC store information in memory.

60
03:23.000 --> 03:28.000
We're taking data, we're putting it into a spot in the memory table.

61
03:28.000 --> 03:32.300
We're going to remember what that index is, or released report back to the
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

61
03:28.000 --> 03:32.300
We're going to remember what that index is, or released report back to the

62
03:32.300 --> 03:33.000
application

63
03:33.000 --> 03:38.000
that's storing that data, the index, and then this is how we come back and say,

64
03:38.000 --> 03:41.000
"Okay, I need that value back computer CPU.

65
03:41.000 --> 03:44.000
Please give it to me. Here's the index."

66
03:44.000 --> 03:48.690
So that's how standard memory works, and it's important to recognize that it's

67
03:48.690 --> 03:50.000
based on the idea

68
03:50.000 --> 03:53.000
that I know where the value is.

69
03:53.000 --> 03:56.000
And because of that, the index must be known.

70
03:56.000 --> 04:01.450
So now let's talk about a different type of memory, which is that content-add
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

70
03:56.000 --> 04:01.450
So now let's talk about a different type of memory, which is that content-add

71
04:01.450 --> 04:02.000
ressable memory.

72
04:02.000 --> 04:09.000
So content-addressable memory, or CAM, is still going to store information,

73
04:09.000 --> 04:12.000
but it's going to be referenced in a different way.

74
04:12.000 --> 04:17.000
We are going to reference it by content rather than by index.

75
04:17.000 --> 04:22.000
So the idea here is rather than performing this operation, I provide an index

76
04:22.000 --> 04:23.000
and get a value,

77
04:23.000 --> 04:30.000
I'm going to provide content up front, and I'm still going to get a value back,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

77
04:23.000 --> 04:30.000
I'm going to provide content up front, and I'm still going to get a value back,

78
04:30.000 --> 04:33.000
but in this case it's going to be a different value.

79
04:33.000 --> 04:38.000
We can probably already see how this ties well into this paradigm here,

80
04:38.000 --> 04:42.540
where I provided a MAC address that would be the content, and I get a value

81
04:42.540 --> 04:43.000
back,

82
04:43.000 --> 04:45.000
I'm getting an interface back.

83
04:45.000 --> 04:47.000
And that's exactly what it is.

84
04:47.000 --> 04:51.000
We're providing something up front and getting a different value back.

85
04:51.000 --> 04:56.000
So in the world of programming, this is sort of like a two-dimensional array.

86
04:56.000 --> 05:01.530
We've ever used that, or the concept of key value pairs, which we might
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

86
04:56.000 --> 05:01.530
We've ever used that, or the concept of key value pairs, which we might

87
05:01.530 --> 05:03.000
experience a little bit more,

88
05:03.000 --> 05:07.000
especially as we continue to go through Encore, and we think about scripting,

89
05:07.000 --> 05:11.000
such as with JSON dictionaries, for example, these kinds of things.

90
05:11.000 --> 05:14.000
We don't have experience with programming, that's perfectly fine,

91
05:14.000 --> 05:19.150
but this is the same concept where I'm not necessarily putting things in a

92
05:19.150 --> 05:20.000
specific order.

93
05:20.000 --> 05:25.870
There is no order to the information that's stored inside of CAM, whereas up

94
05:25.870 --> 05:27.000
here we do have an order.

95
05:27.000 --> 05:33.000
We do have index values assigned to all of these different data points,
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

95
05:27.000 --> 05:33.000
We do have index values assigned to all of these different data points,

96
05:33.000 --> 05:38.000
and so it's structured in a way that I can provide an index and get value back,

97
05:38.000 --> 05:41.000
whereas with CAM that's not really what we're doing here.

98
05:41.000 --> 05:43.000
So we're providing content.

99
05:43.000 --> 05:48.060
This content has a few limitations to what we can provide and what we're trying

100
05:48.060 --> 05:49.000
to match against.

101
05:49.000 --> 05:56.030
First of all, this is a binary operation, meaning that I can only match zeros

102
05:56.030 --> 05:58.000
and ones.

103
05:58.000 --> 06:03.000
Well, Jeff, what else do we match in the world of networking and with computers
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

103
05:58.000 --> 06:03.000
Well, Jeff, what else do we match in the world of networking and with computers

104
06:03.000 --> 06:03.000
?

105
06:03.000 --> 06:05.000
Isn't it always zeros and ones?

106
06:05.000 --> 06:08.440
I don't hold that thought because we're going to find that there is a non-

107
06:08.440 --> 06:10.000
binary content addressable memory

108
06:10.000 --> 06:15.250
called a ternary CAM, or a T-cam, coming up, and we'll take a look at that

109
06:15.250 --> 06:16.000
momentarily.

110
06:16.000 --> 06:20.630
So from just staying within the context of CAM, though, we're matching zeros or

111
06:20.630 --> 06:21.000
ones,

112
06:21.000 --> 06:27.000
and it must be an exact match.

113
06:27.000 --> 06:31.000
In other words, we're not using the concept of masks here.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

113
06:27.000 --> 06:31.000
In other words, we're not using the concept of masks here.

114
06:31.000 --> 06:36.000
Ever noticed that MAC addresses, and we don't use masks with that?

115
06:36.000 --> 06:37.000
We don't have that concept.

116
06:37.000 --> 06:41.000
We're not searching against multiple MAC addresses at a time.

117
06:41.000 --> 06:43.000
Instead, we're looking for an exact match.

118
06:43.000 --> 06:49.560
I have an exact destination Mac showing up on the switch, and yeah, we're not

119
06:49.560 --> 06:51.000
really organizing our networks

120
06:51.000 --> 06:53.000
by MAC address subnets.

121
06:53.000 --> 06:57.110
If we're going to think of it that way instead, this specific MAC address is

122
06:57.110 --> 06:58.000
out this interface

123
06:58.000 --> 07:02.490
and this specific MAC address is out this interface, and that works well from a
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

123
06:58.000 --> 07:02.490
and this specific MAC address is out this interface, and that works well from a

124
07:02.490 --> 07:04.000
layer 2 perspective

125
07:04.000 --> 07:07.700
because scaling-wise, we're not usually talking about more than a few hundred

126
07:07.700 --> 07:10.000
hosts in a given broadcast domain.

127
07:10.000 --> 07:13.000
But think about it from a network perspective.

128
07:13.000 --> 07:20.020
If I had to have exact entries in my routing table, for every single IP address

129
07:20.020 --> 07:21.000
that's out there

130
07:21.000 --> 07:22.000
wouldn't work very well.

131
07:22.000 --> 07:26.000
And so that's where layer 2 and layer 3 are structured very different.

132
07:26.000 --> 07:32.520
And once again, why content addressable memory really does fit the layer 2
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

132
07:26.000 --> 07:32.520
And once again, why content addressable memory really does fit the layer 2

133
07:32.520 --> 07:34.000
paradigm.

134
07:34.000 --> 07:39.490
So from a switch operation perspective, we think about how exactly we're going

135
07:39.490 --> 07:43.000
to use CAM and perform layer 2 lookups.

136
07:43.000 --> 07:45.000
And there's a few things to keep in mind.

137
07:45.000 --> 07:49.280
So first of all, once again, our content here is going to be MAC addresses, so

138
07:49.280 --> 07:54.000
we know that we map MAC addresses to interfaces.

139
07:54.000 --> 07:57.480
And so when I want to look up what to do with a packet, I submit the MAC

140
07:57.480 --> 08:01.000
address and I get the interface back.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

140
07:57.480 --> 08:01.000
address and I get the interface back.

141
08:01.000 --> 08:06.010
Once again, content is the MAC address and the interface is going to be the

142
08:06.010 --> 08:08.000
value that gets returned.

143
08:08.000 --> 08:15.000
Furthermore, we're going to create a table like this per VLAN.

144
08:15.000 --> 08:21.040
Now this is important because if we think about it, we just said that this is a

145
08:21.040 --> 08:23.000
binary match, it must be exact,

146
08:23.000 --> 08:27.000
and I can only submit my content and get a single value back.

147
08:27.000 --> 08:32.080
Meaning I can't submit my content and get a VLAN ID back, nor can I submit
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

147
08:27.000 --> 08:32.080
Meaning I can't submit my content and get a VLAN ID back, nor can I submit

148
08:32.080 --> 08:35.000
content with a VLAN ID to get the value back,

149
08:35.000 --> 08:37.000
which is most likely how that would work.

150
08:37.000 --> 08:42.000
Instead, we will just simply have a different table per VLAN.

151
08:42.000 --> 08:45.000
It isn't a third component.

152
08:45.000 --> 08:48.000
Now next, remember how we learn MAC addresses.

153
08:48.000 --> 08:52.000
Remember, we are going to perform MAC address learning.

154
08:52.000 --> 08:58.740
So learning MACs, when we see those MAC addresses show up, that is how we're

155
08:58.740 --> 09:02.000
going to populate the CAM table.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

155
08:58.740 --> 09:02.000
going to populate the CAM table.

156
09:02.000 --> 09:10.000
And lastly, if we have no entry, then this is going to result in flooding.

157
09:10.000 --> 09:14.000
So some of this is going to be review just from a CCNA perspective.

158
09:14.000 --> 09:17.780
We should understand the basic operation of layer two switch, but as we kind of

159
09:17.780 --> 09:19.000
tie all of this together,

160
09:19.000 --> 09:23.000
and now understand a little bit better of what CAM is and why we use it,

161
09:23.000 --> 09:27.800
and how exactly it works well for layer two, but might not work well for layer

162
09:27.800 --> 09:29.000
three lookups and such,

163
09:29.000 --> 09:32.000
and now we start to see all of this come together.
WEBVTT
X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000

163
09:29.000 --> 09:32.000
and now we start to see all of this come together.
