PIM Forwarder & Assert Mechanism

By | December 29, 2021

I was always get confused about PIM DR and PIM Forwarder. So this is the time to clear up my confusion. Here we take a look at PIM Forwarder and how to verify the assert process is working.

We will use below topology:

PIM Forwarder & Assert Mechanism

We have enabled below:

  • RIP on all interfaces
  • ip multicast-routing on all routers
  • ip pim sparse-dense on all interfaces
  • ip igmp join-group 239.0.0.1 on R5 ethernet

For debugging:

  • no ip mroute-cache
  • debug ip mpacket
  • ping

Scenario 1:- R2 is PIM Forwarder based on highest IP

Pinging from R4:

R4#ping 239.0.0.1 re 2

Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 239.0.0.1, timeout is 2 seconds:

Reply to request 0 from 192.168.0.5, 20 ms
Reply to request 0 from 192.168.0.5, 20 ms
Reply to request 1 from 192.168.0.5, 8 ms

Logs on R1 and R2:

R1#
*Mar 2 02:05:36.795: IP(0): s=192.168.34.4 (Serial0/1) d=239.0.0.1 (Ethernet0/0) id=70, ttl=253, prot=1, len=100(100), mforward
*Mar 2 02:05:36.799: IP(0): s=192.168.34.4 (Ethernet0/0) d=239.0.0.1 id=70, ttl=252, prot=1, len=114(100), not RPF interface
*Mar 2 02:05:38.787: IP(0): s=192.168.34.4 (Ethernet0/0) d=239.0.0.1 id=71, ttl=252, prot=1, len=114(100), not RPF interface

R2#
*Mar 1 02:25:00.567: IP(0): s=192.168.34.4 (Serial0/1) d=239.0.0.1 (Ethernet0/0) id=70, ttl=253, prot=1, len=100(100), mforward
*Mar 1 02:25:00.571: IP(0): s=192.168.34.4 (Ethernet0/0) d=239.0.0.1 id=70, ttl=252, prot=1, len=114(100), not RPF interface
*Mar 1 02:25:02.559: IP(0): s=192.168.34.4 (Serial0/1) d=239.0.0.1 (Ethernet0/0) id=71, ttl=253, prot=1, len=100(100), mforward

We can see that each router sent the first packet onto the LAN and R5 responded to both. We can tell because R4 got two replies. What also happened is that R1 and R2 each saw that very same packet on their LAN interfaces. Immediately the PIM Assert process took over. Because both routers have the same AD (90) and metric (2) to the source, R2 won the right to forward based on highest IP.

Next we can see that the second packet only gets forwarded by R2. Here we see that R2 has the A (Assert Winner) flag in its mroute entry. R1 has pruned that same interface.

R2#sho ip mroute 239.0.0.1 192.168.34.4 | be \(
(192.168.34.4, 239.0.0.1), 00:00:39/00:02:26, flags: T
  Incoming interface: Serial0/1, RPF nbr 192.168.23.3
  Outgoing interface list:
    Ethernet0/0, Forward/Sparse-Dense, 00:00:39/00:00:00, A

R1#sho ip mroute 239.0.0.1 192.168.34.4 | be \(
(192.168.34.4, 239.0.0.1), 00:01:27/00:01:34, flags: PT
  Incoming interface: Serial0/1, RPF nbr 192.168.13.3
  Outgoing interface list:
    Ethernet0/0, Prune/Sparse-Dense, 00:01:27/00:01:32

Scenario 2:- R1 router is the PIM Forwarder based on lowest AD

Now we change R1’s AD to 89 for RIP that is below the default of 120:

R1(config)#router rip
R1(config-router)#distance 89

We see the same behavior from R4’s perspective but now R1 has won the Assert process and is forwarding group 239.0.0.1 onto the LAN:

R4#ping 239.0.0.1 re 2

Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 239.0.0.1, timeout is 2 seconds:

Reply to request 0 from 192.168.0.5, 12 ms
Reply to request 0 from 192.168.0.5, 12 ms
Reply to request 1 from 192.168.0.5, 8 ms
R4#

R1#sho ip mroute 239.0.0.1 192.168.34.4 | be \(
(192.168.34.4, 239.0.0.1), 00:00:07/00:02:54, flags: T
  Incoming interface: Serial0/1, RPF nbr 192.168.13.3
  Outgoing interface list:
    Ethernet0/0, Forward/Sparse-Dense, 00:00:07/00:00:00, A

R1#

Thanks for reading the article. If you are having any query then you can leave the comment or drop a mail to me.

You can also visit on below blogs:

Leave a Reply

Your email address will not be published.