Setup:
R1( LHR) ---------R2( RP) ----------R4( FHR)
Problem:
Send IGMP/MLD join and traffic. LHR: (S,G) mroute is created with reference count = 2 and set the flag SRC_STREAM. (Code flow: pim_mroute_msg_wholepkt -> pim_upstream_add, pim_upstream_sg_running_proc -> pim_upstream_ref) Send IGMP/MLD prune. LHR: removes (*,G) entry and it tries to remove childen (S,G) entries. But (S,G) is having reference count = 2. So after prune, (S,G) entry reference count becomes 1 and will be present until KAT expires.
this behavior was tested on 1.3.3/ 1.5 where is solved (frr 9.1 ) :
# version :
vyos@rt-rp:~$ show ip multicast route
IP Multicast Routing Table
Flags: S - Sparse, C - Connected, P - Pruned
R - SGRpt Pruned, F - Register flag, T - SPT-bit set
Source Group Flags Proto Input Output TTL Uptime
* 239.255.12.42 S PIM dum0 eth1 1 00:00:16
100.64.0.2 239.255.12.42 ST STAR eth2 eth1 1 00:13:40
vyos@rt-rp:~$ show version
Version: VyOS 1.5-rolling-202309170024
Release train: current
Built by: autobuild@vyos.net
Built on: Sun 17 Sep 2023 01:47 UTC
Build UUID: ba889739-2b8e-4de4-8bd9-10b665f66abb
Build commit ID: 2ca594db0d1fe2
Architecture: x86_64
Boot via: installed image
System type: KVM guest
Hardware vendor: QEMU
Hardware model: Standard PC (i440FX + PIIX, 1996)
Hardware S/N:
Hardware UUID: 5df7c954-4724-445d-8352-b2f3987c479a
vyos@rt-rp:~$ show ip pim upstream
Iif Source Group State Uptime JoinTimer RSTimer KATimer RefCnt
eth2 100.64.0.2 239.255.12.42 NotJ 00:09:37 00:00:31 --:--:-- 00:02:17 1
vyos@rt-rp:~$ show ip multicast route
IP Multicast Routing Table
Flags: S - Sparse, C - Connected, P - Pruned
R - SGRpt Pruned, F - Register flag, T - SPT-bit set
Source Group Flags Proto Input Output TTL Uptime
100.64.0.2 239.255.12.42 SP none eth2 none 0 --:--:--
vyos@rt-rp:~$
vyos@rt-rp:~$
vyos@rt-rp:~$ show ip multicast route
IP Multicast Routing Table
Flags: S - Sparse, C - Connected, P - Pruned
R - SGRpt Pruned, F - Register flag, T - SPT-bit set
Source Group Flags Proto Input Output TTL Uptime
* 239.255.12.42 S PIM dum0 eth1 1 00:00:13
100.64.0.2 239.255.12.42 ST STAR eth2 eth1 1 00:13:37
#configuration
vyos@rt-rp:~$ show configuration commands
set interfaces dummy dum0 address '172.16.255.1/24'
set interfaces ethernet eth1 address '172.16.150.1/24'
set interfaces ethernet eth2 address '172.16.100.1/24'
set protocols bgp address-family ipv4-unicast redistribute connected
set protocols bgp neighbor 172.16.100.2 address-family ipv4-unicast route-reflector-client
set protocols bgp neighbor 172.16.100.2 disable-connected-check
set protocols bgp neighbor 172.16.100.2 remote-as '65000'
set protocols bgp neighbor 172.16.100.2 timers holdtime '30'
set protocols bgp neighbor 172.16.100.2 timers keepalive '10'
set protocols bgp neighbor 172.16.150.2 address-family ipv4-unicast route-reflector-client
set protocols bgp neighbor 172.16.150.2 disable-connected-check
set protocols bgp neighbor 172.16.150.2 remote-as '65000'
set protocols bgp neighbor 172.16.150.2 timers holdtime '30'
set protocols bgp neighbor 172.16.150.2 timers keepalive '10'
set protocols bgp parameters router-id '172.16.100.1'
set protocols bgp system-as '65000'
set protocols pim interface dum0
set protocols pim interface eth1
set protocols pim interface eth2
set protocols pim rp address 172.16.255.1 group '224.0.0.0/4'Case on FRR where introduce this fix : https://github.com/FRRouting/frr/pull/14117