Multicast PIM Assert Explained

Multicast PIM Assert is one of those important multicast topics that most people don’t really think about. Let’s take a look at the following topology:

multicast assert

Above you see 4 routers that are configured to use multicast. R1 is the source and R4 is our receiver. As you can see R2, R3 and R4 are connected to the same switch.

Now when R1 starts streaming multicast traffic towards R2 and R3 they will both forward multicast packets to R4 resulting in duplicate traffic. To stop this PIM will elect one PIM forwarder for this segment. PIM doesn’t have any routing information itself but relies on other routing protocols that are configured, it will use this information to select the best forwarding path with the PIM assert mechanism.

Don’t confuse the PIM forwarder with the PIM DR (Designated Router). those are two different things!

When R2 and R3 both forward multicast packets to the 192.168.234.0 /24 segment they will see each others multicast traffic, this will trigger the PIM assert mechanism. We will elect a PIM forwarder based on the following rules:

  1. The router with the lowest administrative distance to the source of the multicast stream will be the elected PIM forwarder. This only happens if you are using two routing protocols or if you used a static route pointing to the source.
  2. If the AD is equal we will compare the unicast routing metric towards the source.
  3. If the AD and metric are both the same we will elect the PIM forwarded based on the highest IP address.

The elected PIM forwarder will keep forwarding traffic to the receiver while the loser will prune its interface.

Now let’s take a look at this in action! First i’ll configure a basic PIM Dense mode setup:

R1(config)#ip multicast-routing 

R1(config)#interface loopback 0
R1(config-if)#ip address 1.1.1.1 255.255.255.255
R1(config-if)#ip pim dense-mode 

R1(config)#interface fastEthernet 0/0
R1(config-if)#ip pim dense-mode         

R1(config)#interface fastEthernet 0/1
R1(config-if)#ip pim dense-mode 

I will use a loopback interface on R1 as the source for our multicast stream.

R2(config)#ip multicast-routing 

R2(config)#interface fastEthernet 0/0
R2(config-if)#ip pim dense-mode 

R2(config)#interface fastEthernet 0/1
R2(config-if)#ip pim dense-mode
R3(config)#ip multicast-routing 

R3(config)#interface fastEthernet 0/0
R3(config-if)#ip pim dense-mode 

R3(config)#interface fastEthernet 0/1
R3(config-if)#ip pim dense-mode

R2 and R3 are simple, just enable multicast routing and PIM Dense mode on the interfaces. Only R4 left:

R4(config)#ip multicast-routing 

R4(config)#interface fastEthernet 0/0
R4(config-if)#ip pim dense-mode 
R4(config-if)#ip igmp join-group 239.1.1.1

On R4 we will also enable PIM dense mode and we make it listen to the 239.1.1.1 multicast group address.

I applied OSPF to all routers, using the quick “shotgun approach” to advertise everything:

router ospf 1
 network 0.0.0.0 255.255.255.255 area 0

Now let’s start a multicast stream from R1:

R1#ping 239.1.1.1 source loopback 0 repeat 9999

Type escape sequence to abort.
Sending 9999, 100-byte ICMP Echos to 239.1.1.1, timeout is 2 seconds:
Packet sent with a source address of 1.1.1.1 

Reply to request 0 from 192.168.234.4, 12 ms

You will see replies from R4. Now let’s check who is forwarding this traffic:

R2#show ip mroute 1.1.1.1 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

(1.1.1.1, 239.1.1.1), 00:02:56/00:00:07, flags: PT
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.12.1
  Outgoing interface list:
    FastEthernet0/1, Prune/Dense, 00:02:56/00:00:03
R3#show ip mroute 1.1.1.1 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

(1.1.1.1, 239.1.1.1), 00:02:48/00:02:57, flags: T
  Incoming interface: FastEthernet0/0, RPF nbr 192.168.13.1
  Outgoing interface list:
    FastEthernet0/1, Forward/Dense, 00:02:48/00:00:00, A

As you can see above R2 has pruned its outgoing interface while R3 is forwarding it. Note that you also see the “A” indicating that R3 is the assert winner. R3 has won this PIM assert election because it has the highest IP address. Let’s change the AD on R2 to see if it becomes the new assert winner:

R2(config)#router ospf 1
R2(config-router)#distance 100 0.0.0.0 255.255.255.255 1 
R2(config)#access-list 1 permit host 1.1.1.1

We will change the AD on R2 to 100 for all prefixes matching access-list 1. Access-list 1 matches 1.1.1.1 which is the source of our multicast stream.

Keep in mind that when we work with multicast we are concerned about source IP addresses, not destination IP addresses like with unicast routing.

Let’s verify our work:

R2#show ip route | include 1.1.1.1
O       1.1.1.1 [100/11] via 192.168.12.1, 00:01:32, FastEthernet0/0
R3#show ip route | include 1.1.1.1
O       1.1.1.1 [110/11] via 192.168.13.1, 00:01:20, FastEthernet0/0

R2 now has a better administrative distance so it should win the PIM assert election, let’s see if this is true:

We're Sorry, Full Content Access is for Members Only...

If you like to keep on reading, Become a Member Now! Here is why:

  • Learn any CCNA, CCNP and CCIE R&S Topic. Explained As Simple As Possible.
  • Try for Just $1. The Best Dollar You've Ever Spent on Your Cisco Career!
  • Full Access to our 657 Lessons. More Lessons Added Every Week!
  • Content created by Rene Molenaar (CCIE #41726)

551 Sign Ups in the last 30 days

satisfaction-guaranteed
100% Satisfaction Guaranteed!
You may cancel your monthly membership at any time.
No Questions Asked!

Tags:


Forum Replies

  1. Hi Rene,thanks for the explanation

    This behavior is the same for sparse mode as well?

  2. Hi Mungi,

    In this example, R4 is a host device where we used IGMP join to request multicast traffic on the interface.

    The PIM assert mechanism is only triggered when there are two routers on the same multi-access segment. When you connect R4 to R2 and R3 directly, you will be using two different segments so we don’t have to use PIM assert.

    Whether R4 will receive multicast traffic will depend if you configured IGMP join. If you do this on both interfaces then it will receive multicast traffic on both interfaces.

    Rene

  3. Hi Jose,

    It’s very likely to see PIM assert in dense mode since we flood everything. It’s unlikely to encounter in sparse mode but it does exist. Let me give you an example. Take a look at the “pim-sparse-assert.png” image in the attachment for the topology.

    On top, we have the RP, connected to R1/R2. At the bottom we have R3/R4 with a receiver each.

    R1/R2/R3/R4 are connected to the same multi-access segment through the switch.

    • R3 uses R1 to get to the RP.
    • R4 uses R1 to get to the RP.

    Let’s say our receivers both join group 239.1.1.1. This is what happens:

    R3

    ... Continue reading in our forum

  4. QUOTE
    Now when R1 starts streaming multicast traffic towards R2 and R3 they will both forward multicast packets to R4 resulting in duplicate traffic.
    UNQUOTE
    Can you integrate the lesson on PIM DR with this lesson on the Assert mechanism?
    Consider that R3 is the PIM DR on Fa0/1 (As shown early on in the PIM DR lesson).
    So as I understand it then R3 as the DR will be sending the PIM Join upstream when the receiver joins the MC group (not R2).
    In this lesson you relate a state where both R2 and R3 are forwarding the same MC traffic to R4. This as you say causes t

    ... Continue reading in our forum

  5. Hi Rene,
    Sometimes PIM DR and PIM forwrder do the same role? I meant when you told don’t confuse this 2 features I’am confuse.

21 more replies! Ask a question or join the discussion by visiting our Community Forum