|
0:00:12
|
In our next section here for multicast, we're going to look at
|
|
0:00:15
|
running PIM in sparse mode which as opposed to dense mode
|
|
0:00:20
|
is considered an explicit join since traffic is not
|
|
0:00:24
|
going to be sent anywhere in the network unless it is requested.
|
|
0:00:28
|
Now in addition to having no flooding and pruning behavior like
|
|
0:00:31
|
dense mode does, there's another large difference between sparse mode
|
|
0:00:35
|
and dense mode in the fact that sparse mode uses both shared trees
|
|
0:00:40
|
and source based trees. For PIM in dense mode
|
|
0:00:44
|
we are only using source based trees which are also considered
|
|
0:00:48
|
the shortest path tree.
|
|
0:00:51
|
In sparse mode we have the shared trees which is also
|
|
0:00:54
|
sometimes called the rendezvous point tree or the RPT.
|
|
0:00:59
|
In general, sparse mode is going to be more scalable
|
|
0:01:01
|
than dense mode and is usually the better design choice
|
|
0:01:04
|
we'll also see there's another variation of sparse mode for
|
|
0:01:07
|
source specific multicast that does not use shared trees
|
|
0:01:11
|
and only uses source based trees, but the vast majority of
|
|
0:01:15
|
the logic for sparse mode whether we're running in source
|
|
0:01:19
|
specific or in regular sparse mode is going to be similar.
|
|
0:01:23
|
Just like PIM in dense mode, this is a standards based protocol
|
|
0:01:26
|
it's defined in RFC 4601 so if you search that
|
|
0:01:30
|
you can get as I mentioned the packet level format information
|
|
0:01:33
|
or if you need any of the real detailed information about
|
|
0:01:37
|
how sparse mode is supposed to build the multicast routing table
|
|
0:01:41
|
then that's going to be available in the RFC.
|
|
0:01:46
|
Now the main difference between the shared tree and the source based
|
|
0:01:50
|
tree is going to control how traffic is delivered from
|
|
0:01:54
|
the source to the destination and additionally what devices
|
|
0:01:58
|
in the network it is going to be routed through.
|
|
0:02:01
|
In the case of a source based tree or the SPT
|
|
0:02:05
|
traffic is routed from the sender to the receiver
|
|
0:02:09
|
based on the unicast route from the receiver back to the source.
|
|
0:02:15
|
So again, this is the opposite of normal unicast routing
|
|
0:02:18
|
where in unicast we're taking traffic as it comes in
|
|
0:02:21
|
from a sender and routing it to the destination based on
|
|
0:02:25
|
the route to the destination where in the case of multicast
|
|
0:02:29
|
we are receiving traffic on the receiver from the source
|
|
0:02:34
|
based on the receiver's route back to the source.
|
|
0:02:38
|
So we're essentially doing reverse path routing or
|
|
0:02:40
|
source routing for multicast.
|
|
0:02:42
|
Now the second variation of trees which is the shared tree
|
|
0:02:46
|
or the rendezvous point tree
|
|
0:02:49
|
this is the shortest path from the receiver
|
|
0:02:52
|
to the rendezvous point.
|
|
0:02:54
|
So in the case of the shared tree, we're actually going to have
|
|
0:02:57
|
two separate trees, one that goes from the device that is
|
|
0:03:00
|
sending up to the rendezvous point, then from the
|
|
0:03:03
|
rendezvous point down to the receiver.
|
|
0:03:06
|
So from the receiver to the RP, that is considered the
|
|
0:03:10
|
RPT, the rendezvous point's tree.
|
|
0:03:12
|
From the rendezvous point to the sender, that is a
|
|
0:03:16
|
shortest path tree.
|
|
0:03:18
|
Now we'll see that also one of the differences here
|
|
0:03:21
|
is that the reverse path forwarding check will change
|
|
0:03:25
|
depending on whether the tree is a source based tree
|
|
0:03:28
|
or whether it is a shared tree.
|
|
0:03:33
|
Now the operation or sparse mode is going to be more
|
|
0:03:36
|
more complicated than dense mode is where in dense mode
|
|
0:03:40
|
basically we had those four steps of just discovering the
|
|
0:03:43
|
neighbors, flooding the traffic everywhere, pruning it on the
|
|
0:03:46
|
links that we didn't want and then the basic routing table maintenance
|
|
0:03:50
|
which would be the assert messages, the grapt messages
|
|
0:03:54
|
and then the state refresh.
|
|
0:03:56
|
Now in the case of sparse mode, we will now need a
|
|
0:04:02
|
rendezvous point to figure out who are all the senders
|
|
0:04:05
|
in the network and who are all the receivers.
|
|
0:04:08
|
So the rendezvous point is going to be the route
|
|
0:04:11
|
of the RPT
|
|
0:04:13
|
and it is going to build a shortest path tree
|
|
0:04:16
|
back to all of the senders.
|
|
0:04:19
|
Now we'll see that there's a fundamental difference
|
|
0:04:21
|
when we look at the show ip mroute output
|
|
0:04:23
|
from the sparse mode network versus the dense mode network
|
|
0:04:27
|
where in the case of dense mode, all routers in the network will
|
|
0:04:32
|
know about all S,G entries
|
|
0:04:35
|
and for any receiver that has no source, only
|
|
0:04:40
|
the very last hop router would know about that.
|
|
0:04:44
|
So previously in the case of Router 4, we saw that
|
|
0:04:47
|
when it joined the group by issuing the ip igmp join group command at the
|
|
0:04:51
|
interface and there was no one actually sending the traffic
|
|
0:04:55
|
Router 4 was the only one that installed the *,G entry.
|
|
0:05:00
|
But in the case of sparse mode, we'll see that the rendezvous point
|
|
0:05:03
|
needs to know about all senders, but also all receivers.
|
|
0:05:08
|
So there's two separate processes we need to go through
|
|
0:05:10
|
to figure out on the rendezvous point who are the sources
|
|
0:05:13
|
and then who are the receivers.
|
|
0:05:16
|
Once we do that, then we can actually build the tree
|
|
0:05:18
|
from the sender down to the rendezvous point, from the
|
|
0:05:22
|
rendezvous point to the receiver, then optionally optimize the path
|
|
0:05:26
|
by joining the shortest path tree and then leaving the shared tree.
|
|
0:05:33
|
So from a verification and a troubleshooting point of view
|
|
0:05:35
|
the key is that we need to understand how all of these
|
|
0:05:38
|
individual steps work because there's different problems that
|
|
0:05:41
|
can happen during the discovering if the PIM neighbors
|
|
0:05:44
|
versus finding the rendezvous point
|
|
0:05:46
|
versus figuring out who are the sources, who are the receivers.
|
|
0:05:51
|
Now there's a question here, "Is the shared tree the leg
|
|
0:05:53
|
from the RP to the receiver?" Correct. So if we were to
|
|
0:05:57
|
visualize this from the point of the diagram
|
|
0:06:00
|
let's say that Router 1 is the rendezvous point for the network.
|
|
0:06:04
|
If we have a sender
|
|
0:06:08
|
that is on VLAN 9 and a receiver so the client
|
|
0:06:13
|
that is on VLAN 10
|
|
0:06:15
|
we should see on VLAN 10 that the IGMP join message
|
|
0:06:19
|
is going to come in from the host, Switch 4 is then going to
|
|
0:06:23
|
turn this into a PIM join.
|
|
0:06:27
|
The PIM join goes up the reverse path tree to the
|
|
0:06:30
|
rendezvous point in order to build the *,G tree
|
|
0:06:35
|
which is the rendezvous point tree or the shared tree.
|
|
0:06:43
|
So this portion over here on the right this is the shared tree.
|
|
0:06:48
|
Then from the rendezvous point once it figures out who the sender is
|
|
0:06:52
|
it is going to build its own shortest path tree
|
|
0:06:56
|
or essentially the S,G tree
|
|
0:06:59
|
back to the sender.
|
|
0:07:03
|
Now whether or not there's going to be an S,G built from the
|
|
0:07:06
|
sender all the way down to the receiver, it's going to depend on
|
|
0:07:08
|
a couple different options that we can configure.
|
|
0:07:11
|
But normally when the traffic is flowing through the rendezvous point
|
|
0:07:14
|
the shortest path tree goes from the RP to the sender
|
|
0:07:19
|
and the shared tree goes from the receiver back to the rendezvous point.
|
|
0:07:25
|
Now since the rendezvous point is going to be the reference in the
|
|
0:07:28
|
network for this shared tree, it means that it needs to
|
|
0:07:31
|
figure out who are the sources and who are the destinations.
|
|
0:07:36
|
To figure out the sources we have a new message
|
|
0:07:39
|
specific to sparse mode that is called the register message.
|
|
0:07:43
|
The register is going to be sent from the designated router
|
|
0:07:47
|
on the LAN to the rendezvous point
|
|
0:07:50
|
telling them about an individual S,G entry.
|
|
0:07:55
|
So in this particular design, if the sender was located
|
|
0:07:58
|
on Switch 3's LAN segment
|
|
0:08:01
|
as the packets came in from them, Switch 3 would send a
|
|
0:08:05
|
register message to Router 1
|
|
0:08:07
|
saying that I know about this particular S, G entry.
|
|
0:08:12
|
If Router 1 accepts that, it's going to reply back to
|
|
0:08:14
|
them with a register stop message saying I'm
|
|
0:08:19
|
acknowledging that you know about the sender, but at this point
|
|
0:08:22
|
I don't yet have any receivers.
|
|
0:08:26
|
So in order to make sure that the first portion of the network is
|
|
0:08:28
|
working that the rendezvous point knows about the senders
|
|
0:08:32
|
we need to make sure that the registration process happens.
|
|
0:08:38
|
The second portion of the tree which is the RPT
|
|
0:08:42
|
or the shared tree
|
|
0:08:44
|
this is built by the devices from the receiver back up to
|
|
0:08:48
|
the rendezvous point sending the PIM join messages.
|
|
0:08:53
|
And the goal of the join messages is to tell the router upstream
|
|
0:08:57
|
that you need to add my interface to your outgoing
|
|
0:09:00
|
interface list for the *,G entry.
|
|
0:09:04
|
So in our particular topology here if the IGMP client is
|
|
0:09:09
|
on VLAN 10, it's going to send the report message
|
|
0:09:13
|
into Switch 4
|
|
0:09:14
|
basically saying I want traffic for this particular group.
|
|
0:09:21
|
So this is either an IGMP version 2 report message
|
|
0:09:25
|
or an IGMP version 3 report that does not specify who the source is.
|
|
0:09:31
|
Once Switch 4 knows about the particular group
|
|
0:09:34
|
it doesn't yet know who the sender is.
|
|
0:09:37
|
So it needs to tell the rendezvous point that
|
|
0:09:39
|
I now have a receiver, but I don't know where the traffic is
|
|
0:09:42
|
going to come from.
|
|
0:09:44
|
So to do this, what Switch 4 does is look at what is the
|
|
0:09:47
|
route that I use to get to Router 1
|
|
0:09:50
|
so again, this is assuming that IGP is working underneath.
|
|
0:09:54
|
If Switch 4 doesn't have a route to Router 1
|
|
0:09:56
|
then it's not going to know where to send the PIM message.
|
|
0:10:01
|
So assuming that routing is correct, Switch 4 says to get to Router 1
|
|
0:10:04
|
I'm going to need to go towards Switch 2
|
|
0:10:07
|
so this means that it's going to turn around and send a
|
|
0:10:09
|
PIM join.
|
|
0:10:12
|
The goal of this message is to get Switch 2
|
|
0:10:15
|
to add the port channel interface to the outgoing
|
|
0:10:20
|
interface list for that particular *,G entry.
|
|
0:10:25
|
Then likewise, Switch 2 is going to send this join to 5
|
|
0:10:28
|
5 is going to send it to 1
|
|
0:10:33
|
so what this means is that if we have a receiver in the network
|
|
0:10:38
|
everywhere in the path from the receiver back to the
|
|
0:10:40
|
rendezvous point we should see the *,G entry installed
|
|
0:10:44
|
in the routing table.
|
|
0:10:47
|
From the designated router which is attached to the sender
|
|
0:10:51
|
up to the rendezvous point we are going to see the
|
|
0:10:54
|
S, G entry on the DR plus the rendezvous point
|
|
0:10:58
|
but no one else in the network unless we're actually
|
|
0:11:01
|
sending the traffic down to a receiver.
|
|
0:11:07
|
So we'll see based on these two principles of how the
|
|
0:11:10
|
tree is built from the receiver back to the RP and from the RP
|
|
0:11:13
|
back to the sender. There's a couple quick verifications
|
|
0:11:16
|
that we can do to figure out if the receiving portion of the
|
|
0:11:19
|
tree and then the sending portion of the tree are correct.
|
|
0:11:23
|
Now as I mentioned for the rendezvous point to figure out who
|
|
0:11:25
|
the sources are, this is what the register message
|
|
0:11:29
|
is used for from the designated router attached to the
|
|
0:11:33
|
sender. Now a key point of the multicast design to
|
|
0:11:37
|
understand here is that the actual server that is
|
|
0:11:40
|
sending the feed like the IPTV server
|
|
0:11:43
|
it does not run multicast routing
|
|
0:11:45
|
it's simply blindly sending the traffic out onto the LAN.
|
|
0:11:51
|
Now when the router who is running multicast hears that
|
|
0:11:53
|
inbound, if that router is the designated router
|
|
0:11:59
|
then it's going to tell the rendezvous point I now know
|
|
0:12:01
|
about this particular sender in the network.
|
|
0:12:04
|
Now if there's only one router on the segment
|
|
0:12:07
|
by default, it's going to be the DR. It's only at the case that there are
|
|
0:12:11
|
multiple first hop routers on the LAN that there's going to be an
|
|
0:12:14
|
election process to figure out who is supposed to tell
|
|
0:12:17
|
the rendezvous point about the source.
|
|
0:12:20
|
Now if the rendezvous point accepts this message
|
|
0:12:23
|
it's going to acknowledge it with a register stop
|
|
0:12:26
|
and put the S, G into the routing table.
|
|
0:12:30
|
So what this means is that once we start to send the traffic
|
|
0:12:33
|
we should be able to go to the rendezvous point and
|
|
0:12:36
|
look at the show ip mroute for the particular source
|
|
0:12:39
|
and group and if that is not installed in the routing table
|
|
0:12:43
|
it means there's something wrong with the registration process.
|
|
0:12:49
|
Now on the other end we have the end client
|
|
0:12:53
|
sending the IGMP join this is then going to get
|
|
0:12:57
|
converted into a PIM join to go back up
|
|
0:12:59
|
the RPT, so if we were to go to Switch 4 in this particular
|
|
0:13:05
|
topology
|
|
0:13:06
|
go to VLAN 10 and say ip igmp join 224.1.1.4
|
|
0:13:13
|
we should be able to go to Switch 4 to Switch 2
|
|
0:13:15
|
to Router 5 and Router 1
|
|
0:13:18
|
look at the show ip mroute for that particular group
|
|
0:13:21
|
and see the *,G installed.
|
|
0:13:24
|
If the *,G is not installed, it either means that someone
|
|
0:13:29
|
does not know about the rendezvous point
|
|
0:13:32
|
or they don't have the correct reverse route to the rendezvous point.
|
|
0:13:37
|
So maybe Switch 2 knows that Router 1's loopback
|
|
0:13:40
|
is supposed to be the RP, but if it doesn't have a route
|
|
0:13:43
|
to the loopback of Router 1 then it's not going to be able to
|
|
0:13:46
|
send the PIM join message
|
|
0:13:48
|
or if Router 1 doesn't know that itself is the rendezvous point
|
|
0:13:53
|
so if we don't have the ip pim rp address command
|
|
0:13:56
|
on Router 1, then it would not accept the join message
|
|
0:13:59
|
to come in.
|
|
0:14:01
|
So we'll see depending on whether we're talking about the
|
|
0:14:04
|
sender's portion of the tree or the receiver's portion of the tree
|
|
0:14:07
|
there's separate verifications and troubleshooting that we need to use.
|
|
0:14:11
|
But the key is that within the scope of the lab exam
|
|
0:14:14
|
since we're trying to do this troubleshooting so quickly
|
|
0:14:16
|
within the limited time frame, we basically need to know
|
|
0:14:20
|
how every piece of the puzzle fits together
|
|
0:14:23
|
and if there's a problem with the rendezvous point
|
|
0:14:26
|
installing the S, G versus installing the *,G
|
|
0:14:29
|
we need to know exactly where to look, so do I want to
|
|
0:14:33
|
look towards the receiver or do I want to look towards the
|
|
0:14:35
|
sender, what are the different show commands, what are the different
|
|
0:14:38
|
debug commands that I can do.
|
|
0:14:40
|
We'll see once the rendezvous point knows about both
|
|
0:14:43
|
the sender and the receiver, then it's going to merge these
|
|
0:14:45
|
two trees together.
|
|
0:14:48
|
The way it's going to do this is by sending its own
|
|
0:14:50
|
PIM join messages up the reverse path towards the source.
|
|
0:14:55
|
This is then where the rendezvous point is joining the shortest path
|
|
0:14:58
|
tree back to the source.
|
|
0:15:01
|
So in this case, the third portion of building the tree
|
|
0:15:05
|
would mean that Router 1 says two things.
|
|
0:15:10
|
It's going to say I know about the sender
|
|
0:15:12
|
which is the * -- or excuse me, the S, G
|
|
0:15:17
|
the S, G that was reported to me by Switch 3 via
|
|
0:15:22
|
the register message.
|
|
0:15:27
|
I'm then going to acknowledge to them with the register stop
|
|
0:15:30
|
saying I know about the particular source.
|
|
0:15:33
|
Then we have the IGMP join come in from the client.
|
|
0:15:37
|
Switch 4 turns this into a PIM join
|
|
0:15:40
|
it goes up the reverse path to the rendezvous point
|
|
0:15:43
|
the rendezvous point now knows about the *,G
|
|
0:15:50
|
so now Router 1 knows about both the sender and the receiver.
|
|
0:15:53
|
Next thing is that it is going to join the
|
|
0:15:56
|
shortest path tree back to the source.
|
|
0:15:58
|
So it sends the PIM join
|
|
0:16:03
|
to Router 3
|
|
0:16:04
|
telling I want to join this particular S, G
|
|
0:16:09
|
3 then should send the join to Switch 1
|
|
0:16:11
|
Switch 1 installs the S, G sends it to Switch 3
|
|
0:16:15
|
Switch 3 should update its outgoing interface list
|
|
0:16:19
|
saying I'm now actually forwarding on that VLAN.
|
|
0:16:23
|
Once the traffic gets down to the rendezvous point
|
|
0:16:27
|
so now the traffic actually starts to flow to Router 1
|
|
0:16:31
|
when Router 1 receives it on the shortest path tree
|
|
0:16:34
|
it's merges this with the shared tree.
|
|
0:16:39
|
So from the rendezvous point's perspective, the traffic is coming
|
|
0:16:42
|
in the SPT, but it's going out the RPT
|
|
0:16:47
|
so it's coming in the shortest path tree, but going out the
|
|
0:16:50
|
shared tree.
|
|
0:16:51
|
Once eventually this gets down to Switch 4
|
|
0:16:54
|
Switch 4 can then decide do I want to leave the
|
|
0:16:58
|
shared tree and join the shortest path tree
|
|
0:17:02
|
this is ultimately the optimization of what the traffic flow is going to be.
|
|
0:17:08
|
So the traffic is now going end to end because the
|
|
0:17:11
|
rendezvous point merges those two trees together
|
|
0:17:14
|
then the last hop router is going to have the option to
|
|
0:17:18
|
optimize the traffic flow.
|
|
0:17:21
|
So the key about the rendezvous point in the sparse mode network
|
|
0:17:24
|
it doesn't necessarily have to be in the data plane forwarding
|
|
0:17:28
|
for the actual flow.
|
|
0:17:30
|
It's basically used just as a control plane mechanism to
|
|
0:17:34
|
build the two trees. Once they're built, the very last
|
|
0:17:38
|
hop router can switch over to the shortest path tree
|
|
0:17:41
|
and remove the rendezvous point out of the traffic flow.
|
|
0:17:47
|
So if in our particular design if we were to say that
|
|
0:17:51
|
maybe Router 1 is not the rendezvous point
|
|
0:17:54
|
but let's say Router 2 is the RP
|
|
0:18:00
|
If Router 2 is the RP and the sender
|
|
0:18:05
|
is coming from Router 4
|
|
0:18:07
|
and the receiver is on Router 5
|
|
0:18:13
|
we know that the optimal flow is not going to be
|
|
0:18:15
|
from Router 4 to 2 and then 2 back to 5
|
|
0:18:20
|
ideally we would want the traffic just to go this direction
|
|
0:18:23
|
directly from 4 to 5
|
|
0:18:26
|
but the problem is once we're going from the sender to the
|
|
0:18:29
|
rendezvous point and the rendezvous point down to the
|
|
0:18:32
|
receiver, by default that's how the tree is going to be built
|
|
0:18:36
|
because the rendezvous point says my shortest path tree
|
|
0:18:40
|
is coming in this way, then the receiver is saying
|
|
0:18:45
|
my rendezvous point tree, the RPT or the shared tree,
|
|
0:18:49
|
is going this way.
|
|
0:18:54
|
So in the case where the rendezvous point is not in the
|
|
0:18:57
|
actual data flow for the shortest path
|
|
0:19:00
|
then the last hop router is automatically going to
|
|
0:19:03
|
optimize the flow. Now we can control this in the IOS
|
|
0:19:06
|
there's a command that is the IP PIM SPT threshold
|
|
0:19:12
|
so by default this is immediately it's basically one packet
|
|
0:19:15
|
as soon as we receive the traffic in on the rendezvous point tree
|
|
0:19:20
|
we're going to join the shortest path tree and
|
|
0:19:23
|
then leave the RPT
|
|
0:19:28
|
Now there can potentially be some design issues with this
|
|
0:19:31
|
and we'll see a case where there is a correct building
|
|
0:19:35
|
of the shared tree, but then an incorrect building
|
|
0:19:39
|
of the shortest path tree
|
|
0:19:42
|
and typically the way that we see that on the command line
|
|
0:19:45
|
is that if we're doing a ping from the source to the destination
|
|
0:19:48
|
the first couple packets go through and then the rest
|
|
0:19:52
|
of the feed dies.
|
|
0:19:55
|
So if I were to ping from Switch 3 to the group that
|
|
0:19:59
|
Switch 4 is joining and I see that the first couple
|
|
0:20:02
|
packets go through, but then the rest of them
|
|
0:20:04
|
are dropped. Generally, this is an indication of a failure
|
|
0:20:07
|
to switch over properly to the shortest path tree.
|