Description

This article shows how to verify the status of a PIM join and verify that it has the correct upstream and downstream interfaces.

Symptoms

When troubleshooting a multicast issue in KB21586 - Resolution Guide - Troubleshoot Multicast issue with Junos OS device configured as Layer 3 (running PIM protocol) [juniper.net] , you will need to verify the state of a PIM join on the device. Also, you will need to verify that the upstream and downstream interfaces for the PIM join are correct.

The following Network Topology is referenced in the solution:

alt

Note : Refer to KB21591 - Sample Multicast Network Topology with Junos OS devices [juniper.net] for locating the Last Hop Router (LHR) and Rendezvous Point (RP) and for definitions of the components.

Solution

Run the following commands to check the status of the PIM join on the device.

root@LHR> show pim join inet <group address>
root@LHR> show pim join extensive inet <group address>

The topology above runs PIM Sparse Mode, one for (*,G) state and one for (S,G). The (*,G) indicates the forwarding path that is built from the receiver toward the RP. The (S,G) state indicates the forwarding path from the receiver toward the source. Below is an example of the expected output for the network topology:

LHR

root@LHR> show pim join inet 239.255.0.1 
Instance: PIM.master Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 239.255.0.1                     
    Source: *                          < Forwarding path from the receiver toward the RP
    RP: 10.10.10.1
    Flags: sparse,rptree,wildcard
    Upstream interface: ge-0/0/0.0            

Group: 239.255.0.1
    Source: 192.168.200.2              < Forwarding path from the receiver toward the source
    Flags: sparse,spt
    Upstream interface: ge-0/0/0.0

root@LHR> show pim join inet 239.255.0.1 extensive 
Instance: PIM.master Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 239.255.0.1
    Source: *
    RP: 10.10.10.1
    Flags: sparse,rptree,wildcard
    Upstream interface: ge-0/0/0.0            
    Upstream neighbor: 192.168.20.1
    Upstream state: Join to RP
    Uptime: 23:17:33 
    Downstream neighbors:
        Interface: irb.10                 
            192.168.100.1 State: Join Flags: SRW  Timeout: Infinity
            Uptime: 23:17:33 Time since last Join: 23:16:14
    Number of downstream interfaces: 1
    Number of downstream neighbors: 1

Group: 239.255.0.1
    Source: 192.168.200.2
    Flags: sparse,spt
    Upstream interface: ge-0/0/0.0            
    Upstream neighbor: 192.168.20.1
    Upstream state: Join to Source, No Prune to RP
    Keepalive timeout: 321
    Uptime: 00:01:01 
    Downstream neighbors:
        Interface: irb.10                 
            192.168.100.1 State: Join Flags: S   Timeout: Infinity
            Uptime: 00:01:01 Time since last Join: 00:01:01
    Number of downstream interfaces: 1
    Number of downstream neighbors: 1

The output above on the LHR shows that it has received the (S,G) from the upstream interface ge-0/0/0, sent by neighbor 192.168.20.1 (Source 192.168.200.2, Group 239.255.0.1). The upstream interface should be the L3 interface toward the RP. The "downstream neighbors" should list all the L3 interfaces toward the multicast receivers that are requesting the traffic for the specific group (that is, irb.10 in this example).

If the only entry present has no referenced source, it will have the status (*,G). This means that the multicast stream has not reached the device. The PIM router has received the PIM join from its downstream neighbor and it is connected to the RP. 

RP

root@RP> show pim join inet 239.255.0.1 
Instance: PIM.master Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 239.255.0.1
    Source: *
    RP: 10.10.10.1
    Flags: sparse,rptree,wildcard
    Upstream interface: Local                 

Group: 239.255.0.1
    Source: 192.168.200.2
    Flags: sparse,spt
    Upstream interface: ge-0/0/1.0            

root@RP> show pim join inet 239.255.0.1 extensive 
Instance: PIM.master Family: INET
R = Rendezvous Point Tree, S = Sparse, W = Wildcard

Group: 239.255.0.1
    Source: *
    RP: 10.10.10.1
    Flags: sparse,rptree,wildcard
    Upstream interface: Local                 
    Upstream neighbor: Local
    Upstream state: Local RP
    Uptime: 23:18:07 
    Downstream neighbors:
        Interface: ge-0/0/0.0             
            192.168.20.2 State: Join Flags: SRW Timeout: 204
            Uptime: 23:18:07 Time since last Join: 00:00:06
    Number of downstream interfaces: 1
    Number of downstream neighbors: 1

Group: 239.255.0.1
    Source: 192.168.200.2
    Flags: sparse,spt
    Upstream interface: ge-0/0/1.0            
    Upstream neighbor: 192.168.15.2
    Upstream state: Local RP, Join to Source, No Prune to RP
    Keepalive timeout: 328
    Uptime: 00:01:37 
    Downstream neighbors:
        Interface: ge-0/0/0.0             
            192.168.20.2 State: Join Flags: S Timeout: 204
            Uptime: 00:01:37 Time since last Join: 00:00:06
    Number of downstream interfaces: 1
    Number of downstream neighbors: 1

The output above on the RP shows that it has received the (S,G) from the upstream interface ge-0/0/1, sent by neighbor 192.168.15.2 (Source 192.168.200.2, Group 239.255.0.1). If the source is *, the status is (*,G), which means that the FHR has not registered the source to the RP and that the multicast stream (traffic) is not flowing to the RP.

For an explanation of the fields in the " show pim join " and " show pim join extensive " commands, refer to show pim join .

You can verify if the FHR has sent a PIM register for the source toward the RP by using PIM traceoptions configured on the PIM RP:

root@RP# set protocols pim traceoptions flag all
root@RP# set protocols pim traceoptions file PIM-trace

The following example shows the respective logs for PIM Register and PIM Register Stop for the group above:

root@RP> show log PIM-trace | match 239.255
Feb 23 18:50:08.398163 PIM ge-0/0/1.0 RECV 10.10.10.4 -> 10.10.10.1 V2 Register Flags: 0x40000000 Border: 0 Null: 1 Source 192.168.200.2 Group 239.255.0.1 sum 0x2653 len 28
Feb 23 18:50:08.398258 PIM SENT 10.10.10.1 -> 10.10.10.4 V2 RegisterStop Source 192.168.200.2 Group 239.255.0.1 sum 0x6333 len 18

If the RP (with the loopback IP address 10.10.10.1) has interested receivers in the PIM Sparse Mode domain, it sends a PIM join message toward the source to build a shortest-path tree (SPT) back to the source. The source sends multicast packets out on the LAN, and the source DR (the FHR with the loopback IP address of 10.10.10.4) encapsulates the packets in a PIM register message and forwards the message toward the RP router by means of unicast, which is demonstrated in the first line.

The RP receives the PIM register messages back from the source, and thus adds a new source to the distribution tree, thus keeping track of sources in a PIM table. Once the RP receives packets natively (with S,G), it sends a register stop message to stop receiving the register messages by means of unicast, which is shown in the second line.

For more information about PIM Sparse Mode, refer to  Understanding PIM Sparse Mode .

Modification History

2022-02-25: Refreshed the graphic and topology, displaying ELS outputs for (*,G) and (S,G) status on the LHR and RP; also added how to verify if the first-hop router has registered the source by using traceoptions for PIM

2020-05-08: Article reviewed for accuracy; no changes required; article valid and accurate