Implementation of multicast, at least for the purposes of the CCNP BCMSN exam, is pretty simple. Cisco has the Multicast Quick-Start Configuration Guide which goes over many different ways of doing it.
The exam seems to only care about Protocol Independent Multicast (PIM), which uses the router’s routing table to determine whether or not a multicast packet is to be forwarded. When packet is received on an interface the router looks at the route back to the source. If the interface the packet was received on is the same as the one it would use to send a response, the
reverse path forwarding test is sucessful and the packet is forwarded.
PIM operates in two modes, sparse and dense. In sparse mode it is assumed that most people don’t care about the stream and therefore the router must explicity add branches to the multicast tree. In dense mode it is assumed that there are a lot of listeners, and it is the obligation of the router to prune. This is handled through IGMP which is another article.
Consider the following network:
R5 has its E0 interface shut down so that the serial link is used.
I set up everything in PIM dense mode, meaning I needed only
ip pim dense-mode
on every interface.
From R0
r0#show ip pim neighbor
PIM Neighbor Table
Neighbor Interface Uptime/Expires Ver DR
Address Prio/Mode
2.2.2.1 Multilink1 1d02h/00:01:43 v2 1 / S
10.50.0.3 Ethernet0 1d02h/00:01:24 v2 1 / DR S
the output of that shows two PIM adjacencies, one out the multilink (R1) and one on the Ethernet (R3). Under the “Mode” column, S means “state refresh capable” and DR means that the router is the designated router for the segment.
To test multicast, I used Multicast Routing Monitor to generate traffic:
r1#show run int mu1
Building configuration...
Current configuration : 138 bytes
!
interface Multilink1
ip address 2.2.2.1 255.255.255.252
ip pim sparse-mode
ip mrm test-sender
ppp multilink
multilink-group 1
end
R0:
ip mrm manager test1
manager Ethernet0 group 239.1.1.1
senders 1
receivers 2 sender-list 1
access-list 1 permit 2.2.2.1
access-list 2 permit 5.5.5.5
access-list 2 permit 10.50.0.3
r3#show run int e0
Building configuration...
Current configuration : 111 bytes
!
interface Ethernet0
ip address 10.50.0.3 255.255.255.0
ip pim sparse-dense-mode
ip mrm test-receiver
end
A similar receiver exists on R5’s loop0.
The mrm tester on R0 sets up a multicast stream from 2.2.2.1 to 5.5.5.5 and 10.50.0.3 using multicast group 239.1.1.1:
r0#show ip mrm manager
Manager:test1/10.50.0.1 is not running
Beacon interval/holdtime/ttl:60/86400/32
Group:239.1.1.1, UDP port test-packet/status-report:16384/65535
Test senders:
2.2.2.1
Test receivers:
5.5.5.5 10.50.0.3
Finally, the test can be started:
r0#mrm test1 start
r0#
1d03h: IP MRM test 'test1' starts ......
1d03h: IP MRM status report -- Test:test1 Receiver:10.50.0.3
1d03h: Sender:2.2.2.1 Pkt Loss:1(4%) Ehsr:8
1d03h: IP MRM status report -- Test:test1 Receiver:5.5.5.5
1d03h: Sender:2.2.2.1 Pkt Loss:5(20%) Ehsr:0
1d03h: IP MRM status report -- Test:test1 Receiver:10.50.0.3
1d03h: Sender:2.2.2.1 Pkt Loss:1(4%) Ehsr:8
1d03h: IP MRM status report -- Test:test1 Receiver:5.5.5.5
1d03h: Sender:2.2.2.1 Pkt Loss:5(20%) Ehsr:0
1d03h: IP MRM status report -- Test:test1 Receiver:5.5.5.5
1d03h: Sender:2.2.2.1 Pkt Loss:15(60%) Ehsr:0
1d03h: IP MRM status report -- Test:test1 Receiver:5.5.5.5
1d03h: Sender:2.2.2.1 Pkt Loss:20(80%) Ehsr:0
1d03h: IP MRM status report -- Test:test1 Receiver:5.5.5.5
1d03h: Sender:2.2.2.1 Pkt Loss:25(100%) Ehsr:0
1d03h: IP MRM status report -- Test:test1 Receiver:5.5.5.5
1d03h: Sender:2.2.2.1 Pkt Loss:25(100%) Ehsr:0
I see a bit of loss at the beginning, but after that it stops:
r0#show ip mrm manager
Manager:test1/10.50.0.1 is running, expire:23:56:53
Beacon interval/holdtime/ttl:60/86400/32
Group:239.1.1.1, UDP port test-packet/status-report:16384/65535
Test senders:
2.2.2.1 /Ack
Test receivers:
5.5.5.5 /Ack 10.50.0.3 /Ack
From R5, looking at the multicast route:
r5#show ip mroute 239.1.1.1
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report, Z - Multicast Tunnel
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 00:06:43/stopped, RP 10.50.0.3, flags: SJPC
Incoming interface: Ethernet0, RPF nbr 10.50.0.3
Outgoing interface list: Null
(2.2.2.1, 239.1.1.1), 00:06:43/00:02:54, flags: PTX
Incoming interface: Ethernet0, RPF nbr 10.50.0.1
Outgoing interface list: Null
r0#show ip mroute 239.1.1.1
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 01:27:52/stopped, RP 10.50.0.3, flags: SJCF
Incoming interface: Ethernet0, RPF nbr 10.50.0.3
Outgoing interface list:
Multilink1, Forward/Dense, 01:27:52/00:00:00
(2.2.2.1, 239.1.1.1), 01:27:52/00:02:51, flags: FT
Incoming interface: Multilink1, RPF nbr 0.0.0.0
Outgoing interface list:
Ethernet0, Forward/Dense, 00:05:32/00:00:00, A
r3#show ip mroute 239.1.1.1
IP Multicast Routing Table
Flags: D - Dense, S - Sparse, B - Bidir Group, s - SSM Group, C - Connected,
L - Local, P - Pruned, R - RP-bit set, F - Register flag,
T - SPT-bit set, J - Join SPT, M - MSDP created entry,
X - Proxy Join Timer Running, A - Candidate for MSDP Advertisement,
U - URD, I - Received Source Specific Host Report,
Z - Multicast Tunnel, z - MDT-data group sender,
Y - Joined MDT-data group, y - Sending to MDT-data group
Outgoing interface flags: H - Hardware switched, A - Assert winner
Timers: Uptime/Expires
Interface state: Interface, Next-Hop or VCD, State/Mode
(*, 239.1.1.1), 01:28:24/00:03:25, RP 10.50.0.3, flags: SJCL
Incoming interface: Null, RPF nbr 0.0.0.0
Outgoing interface list:
Ethernet0, Forward/Sparse-Dense, 01:28:23/00:03:25
(2.2.2.1, 239.1.1.1), 01:28:24/00:02:59, flags: PLT
Incoming interface: Ethernet0, RPF nbr 10.50.0.1
Outgoing interface list: Null