So in this next segment, I'm just going to do a brief review of IGMP and
MLDP. So what are these?
Well, IGMP stands for the Internet Group Management Protocol.
Like it sounds, there's an IETF for this.
There is an RFC for it, and there's several versions of IGMP versions,
one, two, and three.
Currently, version two is the one that's used in most devices.
And this is the protocol used by receivers, which is your laptop, to indicate
the multicast's interest to directly connected routers.
So in the previous video segment, I said, you send some sort of a unicast
package to a server saying, hey, tell me what shows you've got.
And the server sends a unicast package back to you.
And that's what displays on your laptop this image of, okay, here's the
various different shows.
And I said that when you click on that, you're sending a message to your
router, to your default gateway saying, I want that.
If you ever see it, send it to me.
Well now we know what that message is.
It is IGMP. You're sending an IGMP message to that router, and the router
has to be listening for IGMP so it can now know that, okay, on fast ethernet
00, I've got a receiver down there that wants this show.
So IGMP is used for IPv4.
And for IPv6, the equivalent is the multicast listener discovery protocol.
And what's nice is that MLDP was pretty much built around the same concepts
as IGMP. So if you're familiar with IGMP, if you studied IGMP versions
two and three and you know the message types, you know how it operates,
you know about 90% of what you need to know for MLDP.
So let's just real briefly talk about the IGMP messages and how they're
used because that is going to be very relevant for our multicast routing
discussion. So your membership reports, that is the name of the specific
IGMP messages that your laptop, the receiver, sends upstream to the router.
So for example, if I now have a directory listing on my laptop that gives
me various shows like in Fox news and stuff and I click on CNN, I want
to watch CNN. Well, in the background, my laptop knows that the GDA, the
group destination address for CNN is 239.555.
So my laptop now is going to generate an IGMP membership report.
It's actually going to go to that address of 239.555.
So whatever the show is that I want to see, that will actually be the
destination address in my IGMP packet.
Now you might be wondering, well, wait a second, if I'm a router and I
receive in a packet going to 239.555, how do I distinguish it between
IGMP, which is something I need to process in my CPU versus that being
the actual CNN data stream itself?
It's actually in the IP protocol number.
So that's how the router would tell the difference.
If that multicast comes in and is UDP, he says, oh, I don't have to pay
attention to that.
That's the actual video.
If it comes in with an IP protocol, I think IGMP is protocol two.
I think ICMP is one and IGMP is two.
I might have those two mixed up, but that's how the router knows, oh,
this is something I need to look at.
And then when it goes into the body of the message, it says, oh, this
is a membership report.
There's a receiver.
A receiver who wants to get this show.
Now if we're talking about IGMP version three, that's got a reserved address.
So your laptop then would send an IGMP membership report to 224.00.22.
That is called the all IGMP V3 routers address.
And so routers running IGMP V3 would be listening for that to 224.00.22.
Now, let's say you've done that.
So your laptop is told the router, hey, membership report, if you ever
get packets going to 239 .777, forward them to me.
And I'll say the packets start coming.
They start coming through the internet.
They hit your router on the back of the head, and he starts forwarding
on its interface.
Okay. Well, that stream might be a stream that goes 24 by 7.
It never stops. It just keeps going forever.
And the router has to have some way of knowing, okay, hello, receiver,
are you still out there?
Do you still want this stream?
Because after all, you know, what if that receiver, what if your laptop
was connected to a hub?
And you yanked out the cable.
You physically pulled your ethernet cable out.
You took your laptop and you walked away.
Well, then your laptop did not have any kind of opportunity to tell the
router, hey, I'm done.
Don't need it anymore.
So the router have to have some way of knowing that's happened.
That, hey, there's no receivers anymore who want this.
So the way it does that is by every single, every minute, roughly, every
minute, it sends out another type of an IGMP packet called a general membership
query. And this goes out to the reserved address of 224001.
That's called the all multi -cast hosts address, 224001.
And that's the router's way of saying, hey, is there anybody in the subnet
who's watching anything?
I've got like three or four or five streams.
I'm all sending into the subnet.
Are people still watching it?
And so the idea is, if your laptop is still there, if your receiver is
still there and watching this, when it gets a membership query, it's your
job to send a membership report.
And say, yep, I'm still here.
I still want the stream.
So these queries are going out, reports are coming back, and that's what
keeps the stream refreshed.
That's how the default gateway knows, okay, I still need to keep forwarding
this. Now, in my particular example where I yanked out my laptop and I
walked away, the router would not hear anything from its query.
So routers typically send two, sometimes three queries before they finally
decide, okay, nobody's there.
I'm going to go ahead and stop forwarding the stream.
I'm not going to send it.
Now, ideally, let's say my laptop is still connected to that hub, but
I just decide, oh, my boss just walked in.
I better stop watching the show and get to work.
So I quickly shut down my little video window there and yank out my ear
plugs. Well, when I shut down that video window, my laptop now sends out
an IGMP leave message.
And this is a specific message that says, I am leaving this group.
I am no longer interested in this group.
Now, when the router gets that, the router says, okay, I know that receiver
is leaving, but there might be some other receivers on that same subnet
that still want this.
So rather than just shutting down the stream immediately, I'm going to
send a query out onto that subnet again.
But instead of sending a general query, I'm going to send out what's called
a group specific query.
So instead of sending a general query to 224.001, the router says, I'll
actually send out a general query to 224.001.
And then I'll send out a query to that specific group 239.555 or whatever
it is that you happen to be watching.
And if there's any other receivers are still interested, they need to
send a membership report.
Otherwise, the router will time out the stream and delete it.
So those are the four basic message types that IGMP uses.
Now with MLDP, the multicast listener discovery protocol, once again,
this is for IPv6 now, it's structured very similarly to IGMP.
So MLDP version one was based off of IGMP version two, uses all those
same messages I just showed you.
They've got slightly different names, and I'll tell you the names in just
a second. MLDP version two was based off of IGMP version three.
And by default, Cisco devices support both, but they default to version
two. So with MLDP, instead of having an IGMP query, you have an MLDP query.
Pretty simple. Instead of an IGMP membership report, you have an MLDP
listener report.
Instead of having an IGMP leave, you have an MLDP done message.
Now, most devices actually do MLDP, do MLDP version two.
So this message right here, MLDP done, you might not see that, because
that's in the older version of MLDP, MLDP version one.
And this was similar to the IGMP leave.
So if I've got a laptop that's running MLDP, I'm doing IPv6, and I'm doing
MLDP version two, if I want to stop a stream, if I say look, I'm no longer
interested, then actually what I'm going to send is I'm going to send
an MLDP listener report.
But the way that kind of works is when your laptop sends out an MLDP listener
report, there's two fields in there.
There's a field of what you want to listen to, that's the group address,
like FF0E colon colon seven, whatever the layer three addresses you want
to see. And then there's a field for the source address.
Now, most of the time your laptop doesn't know what the source is, so
that source address would just be left with all zeros.
But right next to the source address is another field, actually it's a
flag called the either include flag or the exclude flag.
And the way that works is when my laptop sends out an MLDP listener report,
I'm going to say here's the group I want, the source, I don't know, 0,
0, 0, 0, 0, 0, and then I'm going to send it to the source address.
And I will say exclude 0, 0, 0, 0, which means I'm excluding nobody.
I'm willing to get this from anybody, don't exclude it from anyone.
What about when I want to leave the stream?
Guess what? I'll say this is the stream I want to leave.
So that's sort of MLDP version two's way of sending a leave.
Instead of sending a leave it sends another report, but it changes the
exclude flag to an include flag and it says include nobody.
And then there's the MLDP multi-cast address specific query, the mask,
M-A-S-Q. That's the exact same thing as an IGMP, the group specific report.
It serves the exact same purpose.
So somebody asked in the live question feed the membership query and membership
reports. Are they like the hello and dead intervals?
You could kind of equate it to that.
I mean, we know that like in the case of routing protocols, something
has to go out every hello interval to let your neighbor know you're still
there. Or spanning tree does that too.
BPDUs go out every hello interval to let you know the root bridge is still
there. So you could sort of equate that to this where the router is sending
out queries every 60 seconds saying is anybody there.
And then the listeners have to, the receivers have to respond back saying
yes. So that's sort of like a give and take of hello messages.
I guess you could give it that analogy.
And the whole time is like the router says okay, if I send out a query,
I've got a certain amount of time that if nobody responds back, I'm going
to send it again and possibly a third time.
And then I will time out the stream.
And that's kind of like a dead interval or a hold interval in the case
of routing protocols.
So yeah, between the router and the receiver, the router and the laptop,
you could sort of equate that to hello and hold times.
That would be an appropriate analogy.