1
00:00:08,280 --> 00:00:13,540
 So in this next segment, I'm just going
 to do a brief review of IGMP and

2
00:00:13,540 --> 00:00:16,040
 MLDP. So what are these?

3
00:00:16,040 --> 00:00:20,700
 Well, IGMP stands for the Internet
 Group Management Protocol.

4
00:00:20,700 --> 00:00:25,060
 Like it sounds, there's
 an IETF for this.

5
00:00:25,060 --> 00:00:29,920
 There is an RFC for it, and there's
 several versions of IGMP versions,

6
00:00:29,920 --> 00:00:31,320
 one, two, and three.

7
00:00:31,320 --> 00:00:35,560
 Currently, version two is the one
 that's used in most devices.

8
00:00:35,560 --> 00:00:40,480
 And this is the protocol used by receivers,
 which is your laptop, to indicate

9
00:00:40,480 --> 00:00:43,980
 the multicast's interest to
 directly connected routers.

10
00:00:43,980 --> 00:00:48,040
 So in the previous video segment, I said,
 you send some sort of a unicast

11
00:00:48,040 --> 00:00:51,760
 package to a server saying, hey,
 tell me what shows you've got.

12
00:00:51,760 --> 00:00:53,980
 And the server sends a unicast
 package back to you.

13
00:00:53,980 --> 00:00:58,060
 And that's what displays on your laptop
 this image of, okay, here's the

14
00:00:58,060 --> 00:00:59,680
 various different shows.

15
00:00:59,680 --> 00:01:03,320
 And I said that when you click on that,
 you're sending a message to your

16
00:01:03,320 --> 00:01:06,420
 router, to your default gateway
 saying, I want that.

17
00:01:06,420 --> 00:01:08,880
 If you ever see it, send it to me.

18
00:01:08,880 --> 00:01:10,480
 Well now we know what
 that message is.

19
00:01:10,480 --> 00:01:14,640
 It is IGMP. You're sending an IGMP message
 to that router, and the router

20
00:01:14,640 --> 00:01:19,560
 has to be listening for IGMP so it can
 now know that, okay, on fast ethernet

21
00:01:19,560 --> 00:01:25,240
 00, I've got a receiver down
 there that wants this show.

22
00:01:25,240 --> 00:01:28,700
 So IGMP is used for IPv4.

23
00:01:28,700 --> 00:01:33,520
 And for IPv6, the equivalent is the multicast
 listener discovery protocol.

24
00:01:33,520 --> 00:01:38,980
 And what's nice is that MLDP was pretty
 much built around the same concepts

25
00:01:38,980 --> 00:01:44,320
 as IGMP. So if you're familiar with
 IGMP, if you studied IGMP versions

26
00:01:44,320 --> 00:01:48,360
 two and three and you know the message
 types, you know how it operates,

27
00:01:48,360 --> 00:01:53,820
 you know about 90% of what
 you need to know for MLDP.

28
00:01:53,820 --> 00:01:57,940
 So let's just real briefly talk about
 the IGMP messages and how they're

29
00:01:57,940 --> 00:02:02,740
 used because that is going to be very
 relevant for our multicast routing

30
00:02:02,740 --> 00:02:09,040
 discussion. So your membership reports,
 that is the name of the specific

31
00:02:09,040 --> 00:02:15,000
 IGMP messages that your laptop, the receiver,
 sends upstream to the router.

32
00:02:15,000 --> 00:02:18,860
 So for example, if I now have a directory
 listing on my laptop that gives

33
00:02:18,860 --> 00:02:24,040
 me various shows like in Fox news and
 stuff and I click on CNN, I want

34
00:02:24,040 --> 00:02:28,840
 to watch CNN. Well, in the background,
 my laptop knows that the GDA, the

35
00:02:28,840 --> 00:02:34,160
 group destination address
 for CNN is 239.555.

36
00:02:34,160 --> 00:02:39,740
 So my laptop now is going to generate
 an IGMP membership report.

37
00:02:39,740 --> 00:02:44,600
 It's actually going to go to
 that address of 239.555.

38
00:02:44,600 --> 00:02:47,720
 So whatever the show is that I want
 to see, that will actually be the

39
00:02:47,720 --> 00:02:52,240
 destination address
 in my IGMP packet.

40
00:02:52,240 --> 00:02:56,020
 Now you might be wondering, well, wait
 a second, if I'm a router and I

41
00:02:56,020 --> 00:03:01,380
 receive in a packet going to 239.555,
 how do I distinguish it between

42
00:03:01,380 --> 00:03:07,740
 IGMP, which is something I need to
 process in my CPU versus that being

43
00:03:07,740 --> 00:03:11,400
 the actual CNN data stream itself?

44
00:03:11,400 --> 00:03:21,760
 It's actually in the
 IP protocol number.

45
00:03:21,760 --> 00:03:23,960
 So that's how the router would
 tell the difference.

46
00:03:23,960 --> 00:03:27,380
 If that multicast comes in and is UDP,
 he says, oh, I don't have to pay

47
00:03:27,380 --> 00:03:28,300
 attention to that.

48
00:03:28,300 --> 00:03:29,680
 That's the actual video.

49
00:03:29,680 --> 00:03:34,760
 If it comes in with an IP protocol,
 I think IGMP is protocol two.

50
00:03:34,760 --> 00:03:38,080
 I think ICMP is one
 and IGMP is two.

51
00:03:38,080 --> 00:03:41,460
 I might have those two mixed up, but
 that's how the router knows, oh,

52
00:03:41,460 --> 00:03:43,680
 this is something
 I need to look at.

53
00:03:43,680 --> 00:03:46,580
 And then when it goes into the body
 of the message, it says, oh, this

54
00:03:46,580 --> 00:03:47,980
 is a membership report.

55
00:03:47,980 --> 00:03:48,480
 There's a receiver.

56
00:03:48,480 --> 00:03:51,900
 A receiver who wants
 to get this show.

57
00:03:51,900 --> 00:03:56,580
 Now if we're talking about IGMP version
 three, that's got a reserved address.

58
00:03:56,580 --> 00:04:02,840
 So your laptop then would send an IGMP
 membership report to 224.00.22.

59
00:04:02,840 --> 00:04:07,320
 That is called the all IGMP
 V3 routers address.

60
00:04:07,320 --> 00:04:13,640
 And so routers running IGMP V3 would
 be listening for that to 224.00.22.

61
00:04:13,640 --> 00:04:17,240
 Now, let's say you've done that.

62
00:04:17,240 --> 00:04:21,800
 So your laptop is told the router,
 hey, membership report, if you ever

63
00:04:21,800 --> 00:04:26,360
 get packets going to 239
.777, forward them to me.

64
00:04:26,360 --> 00:04:28,000
 And I'll say the packets
 start coming.

65
00:04:28,000 --> 00:04:29,500
 They start coming through
 the internet.

66
00:04:29,500 --> 00:04:32,460
 They hit your router on the back of
 the head, and he starts forwarding

67
00:04:32,460 --> 00:04:34,640
 on its interface.

68
00:04:34,640 --> 00:04:40,400
 Okay. Well, that stream might
 be a stream that goes 24 by 7.

69
00:04:40,400 --> 00:04:43,540
 It never stops. It just
 keeps going forever.

70
00:04:43,540 --> 00:04:48,840
 And the router has to have some way
 of knowing, okay, hello, receiver,

71
00:04:48,840 --> 00:04:50,240
 are you still out there?

72
00:04:50,240 --> 00:04:52,680
 Do you still want this stream?

73
00:04:52,680 --> 00:04:54,780
 Because after all, you know, what if
 that receiver, what if your laptop

74
00:04:54,780 --> 00:04:57,720
 was connected to a hub?

75
00:04:57,720 --> 00:04:59,700
 And you yanked out the cable.

76
00:04:59,700 --> 00:05:02,500
 You physically pulled your
 ethernet cable out.

77
00:05:02,500 --> 00:05:04,700
 You took your laptop
 and you walked away.

78
00:05:04,700 --> 00:05:08,380
 Well, then your laptop did not have
 any kind of opportunity to tell the

79
00:05:08,380 --> 00:05:09,720
 router, hey, I'm done.

80
00:05:09,720 --> 00:05:11,680
 Don't need it anymore.

81
00:05:11,680 --> 00:05:14,740
 So the router have to have some
 way of knowing that's happened.

82
00:05:14,740 --> 00:05:18,040
 That, hey, there's no receivers
 anymore who want this.

83
00:05:18,040 --> 00:05:22,600
 So the way it does that is by every
 single, every minute, roughly, every

84
00:05:22,600 --> 00:05:27,200
 minute, it sends out another type of an
 IGMP packet called a general membership

85
00:05:27,200 --> 00:05:33,060
 query. And this goes out to the
 reserved address of 224001.

86
00:05:33,060 --> 00:05:38,160
 That's called the all multi
-cast hosts address, 224001.

87
00:05:38,160 --> 00:05:42,600
 And that's the router's way of saying,
 hey, is there anybody in the subnet

88
00:05:42,600 --> 00:05:44,600
 who's watching anything?

89
00:05:44,600 --> 00:05:47,040
 I've got like three or
 four or five streams.

90
00:05:47,040 --> 00:05:49,120
 I'm all sending into the subnet.

91
00:05:49,120 --> 00:05:51,720
 Are people still watching it?

92
00:05:51,720 --> 00:05:56,340
 And so the idea is, if your laptop
 is still there, if your receiver is

93
00:05:56,340 --> 00:06:00,060
 still there and watching this, when it
 gets a membership query, it's your

94
00:06:00,060 --> 00:06:03,080
 job to send a membership report.

95
00:06:03,080 --> 00:06:04,700
 And say, yep, I'm still here.

96
00:06:04,700 --> 00:06:06,100
 I still want the stream.

97
00:06:06,100 --> 00:06:09,580
 So these queries are going out, reports
 are coming back, and that's what

98
00:06:09,580 --> 00:06:11,180
 keeps the stream refreshed.

99
00:06:11,180 --> 00:06:14,840
 That's how the default gateway knows,
 okay, I still need to keep forwarding

100
00:06:14,840 --> 00:06:20,160
 this. Now, in my particular example
 where I yanked out my laptop and I

101
00:06:20,160 --> 00:06:24,660
 walked away, the router would not
 hear anything from its query.

102
00:06:24,660 --> 00:06:28,560
 So routers typically send two, sometimes
 three queries before they finally

103
00:06:28,560 --> 00:06:31,200
 decide, okay, nobody's there.

104
00:06:31,200 --> 00:06:32,920
 I'm going to go ahead and stop
 forwarding the stream.

105
00:06:32,920 --> 00:06:34,880
 I'm not going to send it.

106
00:06:34,880 --> 00:06:39,100
 Now, ideally, let's say my laptop is
 still connected to that hub, but

107
00:06:39,100 --> 00:06:41,860
 I just decide, oh, my
 boss just walked in.

108
00:06:41,860 --> 00:06:43,940
 I better stop watching the
 show and get to work.

109
00:06:43,940 --> 00:06:47,720
 So I quickly shut down my little video
 window there and yank out my ear

110
00:06:47,720 --> 00:06:52,520
 plugs. Well, when I shut down that video
 window, my laptop now sends out

111
00:06:52,520 --> 00:06:55,060
 an IGMP leave message.

112
00:06:55,060 --> 00:06:59,760
 And this is a specific message that
 says, I am leaving this group.

113
00:06:59,760 --> 00:07:02,400
 I am no longer interested
 in this group.

114
00:07:02,400 --> 00:07:07,060
 Now, when the router gets that, the router
 says, okay, I know that receiver

115
00:07:07,060 --> 00:07:12,500
 is leaving, but there might be some
 other receivers on that same subnet

116
00:07:12,500 --> 00:07:14,520
 that still want this.

117
00:07:14,520 --> 00:07:17,500
 So rather than just shutting down the
 stream immediately, I'm going to

118
00:07:17,500 --> 00:07:20,460
 send a query out onto
 that subnet again.

119
00:07:20,460 --> 00:07:23,640
 But instead of sending a general query,
 I'm going to send out what's called

120
00:07:23,640 --> 00:07:25,560
 a group specific query.

121
00:07:25,560 --> 00:07:31,380
 So instead of sending a general query
 to 224.001, the router says, I'll

122
00:07:31,380 --> 00:07:31,940
 actually send out a general
 query to 224.001.

123
00:07:31,940 --> 00:07:37,020
 And then I'll send out a query to that
 specific group 239.555 or whatever

124
00:07:37,020 --> 00:07:39,200
 it is that you happen
 to be watching.

125
00:07:39,200 --> 00:07:42,940
 And if there's any other receivers
 are still interested, they need to

126
00:07:42,940 --> 00:07:44,520
 send a membership report.

127
00:07:44,520 --> 00:07:49,180
 Otherwise, the router will time
 out the stream and delete it.

128
00:07:49,180 --> 00:07:56,000
 So those are the four basic message
 types that IGMP uses.

129
00:07:56,000 --> 00:08:01,120
 Now with MLDP, the multicast listener
 discovery protocol, once again,

130
00:08:01,120 --> 00:08:07,360
 this is for IPv6 now, it's structured
 very similarly to IGMP.

131
00:08:07,360 --> 00:08:13,300
 So MLDP version one was based off of
 IGMP version two, uses all those

132
00:08:13,300 --> 00:08:14,900
 same messages I just showed you.

133
00:08:14,900 --> 00:08:17,720
 They've got slightly different names,
 and I'll tell you the names in just

134
00:08:17,720 --> 00:08:24,480
 a second. MLDP version two was based
 off of IGMP version three.

135
00:08:24,480 --> 00:08:28,280
 And by default, Cisco devices support
 both, but they default to version

136
00:08:28,280 --> 00:08:36,180
 two. So with MLDP, instead of having an
 IGMP query, you have an MLDP query.

137
00:08:36,180 --> 00:08:41,460
 Pretty simple. Instead of an IGMP membership
 report, you have an MLDP

138
00:08:41,460 --> 00:08:45,000
 listener report.

139
00:08:45,000 --> 00:08:50,640
 Instead of having an IGMP leave,
 you have an MLDP done message.

140
00:08:50,640 --> 00:08:58,760
 Now, most devices actually do
 MLDP, do MLDP version two.

141
00:08:58,760 --> 00:09:03,260
 So this message right here, MLDP done,
 you might not see that, because

142
00:09:03,260 --> 00:09:07,620
 that's in the older version
 of MLDP, MLDP version one.

143
00:09:07,620 --> 00:09:10,040
 And this was similar
 to the IGMP leave.

144
00:09:10,040 --> 00:09:17,860
 So if I've got a laptop that's running
 MLDP, I'm doing IPv6, and I'm doing

145
00:09:17,860 --> 00:09:24,360
 MLDP version two, if I want to stop a
 stream, if I say look, I'm no longer

146
00:09:24,360 --> 00:09:28,540
 interested, then actually what I'm
 going to send is I'm going to send

147
00:09:28,540 --> 00:09:30,820
 an MLDP listener report.

148
00:09:30,820 --> 00:09:37,700
 But the way that kind of works is when
 your laptop sends out an MLDP listener

149
00:09:37,700 --> 00:09:40,040
 report, there's two
 fields in there.

150
00:09:40,040 --> 00:09:43,980
 There's a field of what you want to
 listen to, that's the group address,

151
00:09:43,980 --> 00:09:49,260
 like FF0E colon colon seven, whatever
 the layer three addresses you want

152
00:09:49,260 --> 00:09:53,440
 to see. And then there's a field
 for the source address.

153
00:09:53,440 --> 00:09:57,180
 Now, most of the time your laptop doesn't
 know what the source is, so

154
00:09:57,180 --> 00:09:59,980
 that source address would just
 be left with all zeros.

155
00:09:59,980 --> 00:10:03,160
 But right next to the source address
 is another field, actually it's a

156
00:10:03,160 --> 00:10:09,040
 flag called the either include
 flag or the exclude flag.

157
00:10:09,040 --> 00:10:15,900
 And the way that works is when my laptop
 sends out an MLDP listener report,

158
00:10:15,900 --> 00:10:20,860
 I'm going to say here's the group I
 want, the source, I don't know, 0,

159
00:10:20,860 --> 00:10:21,900
 0, 0, 0, 0, 0, and then I'm going
 to send it to the source address.

160
00:10:21,900 --> 00:10:29,200
 And I will say exclude 0, 0, 0, 0,
 which means I'm excluding nobody.

161
00:10:29,200 --> 00:10:33,440
 I'm willing to get this from anybody,
 don't exclude it from anyone.

162
00:10:33,440 --> 00:10:35,800
 What about when I want
 to leave the stream?

163
00:10:35,800 --> 00:10:56,000
 Guess what? I'll say this is
 the stream I want to leave.

164
00:10:56,000 --> 00:11:00,880
 So that's sort of MLDP version
 two's way of sending a leave.

165
00:11:00,880 --> 00:11:04,100
 Instead of sending a leave it sends
 another report, but it changes the

166
00:11:04,100 --> 00:11:09,360
 exclude flag to an include flag
 and it says include nobody.

167
00:11:09,360 --> 00:11:16,680
 And then there's the MLDP multi-cast
 address specific query, the mask,

168
00:11:16,680 --> 00:11:22,880
 M-A-S-Q. That's the exact same thing as
 an IGMP, the group specific report.

169
00:11:22,880 --> 00:11:26,740
 It serves the exact same purpose.

170
00:11:26,740 --> 00:11:33,140
 So somebody asked in the live question feed
 the membership query and membership

171
00:11:33,140 --> 00:11:39,820
 reports. Are they like the
 hello and dead intervals?

172
00:11:39,820 --> 00:11:42,300
 You could kind of
 equate it to that.

173
00:11:42,300 --> 00:11:48,320
 I mean, we know that like in the case
 of routing protocols, something

174
00:11:48,320 --> 00:11:53,180
 has to go out every hello interval to
 let your neighbor know you're still

175
00:11:53,180 --> 00:11:56,420
 there. Or spanning
 tree does that too.

176
00:11:56,420 --> 00:12:00,160
 BPDUs go out every hello interval to
 let you know the root bridge is still

177
00:12:00,160 --> 00:12:06,380
 there. So you could sort of equate that
 to this where the router is sending

178
00:12:06,380 --> 00:12:12,660
 out queries every 60 seconds
 saying is anybody there.

179
00:12:12,660 --> 00:12:17,120
 And then the listeners have to, the receivers
 have to respond back saying

180
00:12:17,120 --> 00:12:21,060
 yes. So that's sort of like a give
 and take of hello messages.

181
00:12:21,060 --> 00:12:23,480
 I guess you could give
 it that analogy.

182
00:12:23,480 --> 00:12:29,220
 And the whole time is like the router
 says okay, if I send out a query,

183
00:12:29,220 --> 00:12:34,160
 I've got a certain amount of time that
 if nobody responds back, I'm going

184
00:12:34,160 --> 00:12:38,400
 to send it again and possibly
 a third time.

185
00:12:38,400 --> 00:12:41,240
 And then I will time
 out the stream.

186
00:12:41,240 --> 00:12:45,040
 And that's kind of like a dead interval
 or a hold interval in the case

187
00:12:45,040 --> 00:12:46,120
 of routing protocols.

188
00:12:46,120 --> 00:12:50,120
 So yeah, between the router and the
 receiver, the router and the laptop,

189
00:12:50,120 --> 00:12:52,900
 you could sort of equate that
 to hello and hold times.

190
00:12:52,900 --> 00:12:54,500
 That would be an appropriate
 analogy.
