Page MenuHomeVyOS Platform

Multicast - PIM prune state timers expire with time longer to remove a mroute
Needs reporter action, NormalPublicBUG

Description

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:         [email protected]
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

Details

Difficulty level
Unknown (require assessment)
Version
VyOS 1.3.3
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Unspecified (please specify)

Event Timeline

The easiest way is to add a Patch for FRR 7.5.1 if possible.
We can't migrate to FRR 9.1 for 1.3.x

Viacheslav changed the task status from Open to Needs reporter action.Jan 20 2024, 1:30 PM
Viacheslav triaged this task as Normal priority.

@fernando Should we create a patch for 1.3?