FRRouting / frr

The FRRouting Protocol Suite
https://frrouting.org/
Other
3.38k stars 1.26k forks source link

PIMD - daemons can't see the IGMP groups announced by the source #3993

Closed EasyNetDev closed 5 years ago

EasyNetDev commented 5 years ago

Hi,

There was already another TT opened for this, but because I didn't had time to create a simulation setup, it was closed. I've prepared a simple setup is like this:

Multicast SRC / VLAN 4090 -> VLAN 4090 / Cisco 3560G 15.0(2)SE4 / VLAN 4091 -> ens224 / VM Debian 10 - FRR 7.0 / ens256 -> ens224 / VM Debian 10 FRR 7.0 / ens 256 -> ens224 / VM Debian 10 - multicast client

So, there is 1x Switch Cisco running pim as RP and 2 additional routers which should forward the traffic to the multicast client.

Configs:

Cisco C3560G:

hostname buh.C3560G.2

vrf definition stream
 rd 43474:200
 route-target export 43474:200
 route-target import 43474:200
 !
 address-family ipv4
 exit-address-family
!
ip multicast-routing vrf stream distributed
!
vlan 4090
 name IPTV_SRC
!
vlan 4091
 name SW4-FRR1
!
interface Loopback1
 vrf forwarding stream
 ip address 10.190.0.12 255.255.255.255
 ip pim sparse-mode
!
interface Vlan4090
 vrf forwarding stream
 ip address 10.190.128.30 255.255.255.224
 ip pim sparse-mode
 standby version 2
 standby 390 ip 10.190.128.1
 standby 390 priority 110
 standby 390 preempt
 standby 390 name stream
!
interface Vlan4091
 description SW4-FRR1
 vrf forwarding stream
 ip address 10.180.0.194 255.255.255.252
 ip pim sparse-mode
!
router ospf 100 vrf stream
 router-id 10.190.0.12
 redistribute connected subnets
 network 10.180.0.192 0.0.0.3 area 0
 network 10.190.0.12 0.0.0.0 area 0
!
ip pim vrf stream rp-address 10.190.0.12

FRR-R1:

frr version 7.0
frr defaults traditional
hostname FRR-1
log syslog informational
ip pim rp 10.190.0.12 224.0.0.0/4
service integrated-vtysh-config
!
debug mroute detail
debug pim events
debug pim packets
debug pim packets hello
debug pim packets joins
debug pim packets register
debug pim nht
!
interface ens224
 description to_SW-4
 ip address 10.180.0.193/30
 ip igmp
 ip pim
!
interface ens256
 description to_FRR-2
 ip address 10.180.0.197/30
 ip igmp
 ip pim
!
interface lo0
 description Router ID
 ip address 10.180.0.14/32
 ip igmp
 ip pim
!
interface ens192
 description INTERNET ACCESS
!
router ospf
 ospf router-id 10.180.0.14
 redistribute connected
 network 10.180.0.14/32 area 0
 network 10.180.0.192/30 area 0
 network 10.180.0.196/30 area 0
!
line vty
!
bfd
!
end

FRR-R2:

FRR-2# sh run
Building configuration...

Current configuration:
!
frr version 7.0
frr defaults traditional
hostname FRR-2
log syslog informational
service integrated-vtysh-config
!
debug pim events
debug pim packets
debug pim zebra
debug pim packets hello
debug pim packets joins
debug pim packets register
debug pim nht
!
interface ens224
 description to_SW-4
 ip address 10.180.0.198/30
 ip igmp
 ip pim
!
interface ens256
 description to_MCAST_RCV
 ip address 10.180.0.201/30
 ip igmp
 ip pim
!
interface lo0
 description Router ID
 ip address 10.180.0.15/32
 ip igmp
 ip pim
!
interface ens192
 description INTERNET ACCESS
!
router ospf
 ospf router-id 10.180.0.15
 redistribute connected
 network 10.180.0.15/32 area 0
 network 10.180.0.196/30 area 0
!
line vty
!
bfd
!
end

FRR-MCAST-RCV:

frr version 7.0
frr defaults traditional
hostname FRR-MCAST-RCV
log syslog informational
service integrated-vtysh-config
!
ip route 232.0.0.0/8 10.180.0.201
!
interface ens224
 description to FRR-2
 ip address 10.180.0.202/30
 ip igmp
 ip igmp join 232.0.7.0 192.180.0.202
!
interface ens192
 description INTERNET ACCESS
!
line vty
!
bfd
!
end

Now the output:

Cisco SW4:

buh.C3560G.2#show ip igmp vrf stream membership 
Flags: A  - aggregate, T - tracked
       L  - Local, S - static, V - virtual, R - Reported through v3 
       I - v3lite, U - Urd, M - SSM (S,G) channel 
       1,2,3 - The version of IGMP, the group is in
Channel/Group-Flags: 
       / - Filtering entry (Exclude mode (S,G), Include mode (G))
Reporter:
       <mac-or-ip-address> - last reporter if group is not explicitly tracked
       <n>/<m>      - <n> reporter in include mode, <m> reporter in exclude

 Channel/Group                  Reporter        Uptime   Exp.  Flags  Interface 
 *,232.0.3.1                    10.190.128.20   01:14:59 02:15 2A     Vl4090
 *,232.0.3.2                    10.190.128.20   00:33:19 02:20 2A     Vl4090
 *,232.1.0.1                    10.190.128.4    00:18:36 02:20 2A     Vl4090
 *,224.0.1.40                   10.190.0.12     01:15:24 02:40 2LA    Lo1

buh.C3560G.2#show ip igmp vrf stream groups  
IGMP Connected Group Membership
Group Address    Interface                Uptime    Expires   Last Reporter   Group Accounted
232.0.3.1        Vlan4090                 01:15:15  00:02:55  10.190.128.20   
232.0.3.2        Vlan4090                 00:33:34  00:02:52  10.190.128.20   
232.1.0.1        Vlan4090                 00:18:51  00:02:51  10.190.128.4    
224.0.1.40       Loopback1                01:15:40  00:02:25  10.190.0.12     

buh.C3560G.2#show ip pim vrf stream neighbor 
PIM Neighbor Table
Mode: B - Bidir Capable, DR - Designated Router, N - Default DR Priority,
      P - Proxy Capable, S - State Refresh Capable, G - GenID Capable
Neighbor          Interface                Uptime/Expires    Ver   DR
Address                                                            Prio/Mode
10.180.0.193      Vlan4091                 01:15:42/00:01:44 v2    1 / G

buh.C3560G.2#show ip pim vrf stream rp 
Group: 232.0.7.0, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.7.1, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.4.0, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.4.3, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.4.4, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.4.5, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.4.6, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.4.7, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.2.2, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.2.3, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.2.4, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.2.6, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.2.7, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.3.0, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.3.1, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.3.2, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.3.4, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.3.5, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.1.0.1, RP: 10.190.0.12, next RP-reachable in 00:01:01
Group: 232.0.0.0, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.0, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.2, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.3, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.4, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.5, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.7, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.8, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.9, RP: 10.190.0.12, next RP-reachable in 00:00:05
Group: 232.0.1.10, RP: 10.190.0.12, next RP-reachable in 00:00:04
Group: 232.0.1.11, RP: 10.190.0.12, next RP-reachable in 00:00:05
Group: 224.0.1.40, RP: 10.190.0.12, next RP-reachable in 00:00:04

buh.C3560G.2#show ip pim vrf stream rp mapping 
PIM Group-to-RP Mappings

Group(s): 224.0.0.0/4, Static
    RP: 10.190.0.12 (?)

buh.C3560G.2#show ip pim vrf stream autorp 
AutoRP Information: 
  AutoRP is enabled.
  RP Discovery packet MTU is 0.
  224.0.1.40 is joined on Loopback1.

PIM AutoRP Statistics: Sent/Received
  RP Announce: 0/0, RP Discovery: 0/0

FRR-R1:

FRR-1# show ip igmp interface 
Interface  State          Address  V  Querier  Query Timer    Uptime
ens224        up     10.180.0.193  3    local     00:01:50  04:21:31
ens256        up     10.180.0.197  3    local     00:01:22  01:05:50
lo0           up      10.180.0.14  3    local     00:00:28  00:58:23

FRR-1# show ip igmp join 
Interface Address         Source          Group           Socket Uptime  
FRR-1# 

FRR-1# show ip igmp sources 
Interface Address         Group           Source          Timer Fwd Uptime  
FRR-1# 
FRR-1# show ip igmp statistics 
IGMP RX statistics
Interface       : global
V1 query        : 0
V2 query        : 131
V3 query        : 195
V2 leave        : 1
V1 report       : 0
V2 report       : 794
V3 report       : 100
mtrace response : 0
mtrace request  : 0
unsupported     : 0
FRR-1# 
FRR-1# show ip igmp groups 
Interface Address         Group           Mode Timer    Srcs V Uptime  
FRR-1# show ip pim assert
Interface Address         Source          Group           State  Winner          Uptime   Timer
FRR-1# show ip pim assert
Interface Address         Source          Group           State  Winner          Uptime   Timer
FRR-1# show ip pim assert-internal 
CA:   CouldAssert
ECA:  Evaluate CouldAssert
ATD:  AssertTrackingDesired
eATD: Evaluate AssertTrackingDesired

Interface Address         Source          Group           CA  eCA ATD eATD
FRR-1# show ip pim assert-metric 
Interface Address         Source          Group           RPT Pref Metric Address        
FRR-1# show ip pim assert-winner-metric 
Interface Address         Source          Group           RPT Pref Metric Address        
FRR-1# show ip pim group-type 
SSM group range : 232.0.0.0/8
FRR-1# show ip pim interface 
Interface  State          Address  PIM Nbrs           PIM DR  FHR IfChannels
ens224        up     10.180.0.193         1     10.180.0.194    0          0
ens256        up     10.180.0.197         1     10.180.0.198    0          0
lo0           up      10.180.0.14         0            local    0          0
pimreg        up          0.0.0.0         0            local    0          0
FRR-1# show ip pim join 
Interface Address         Source          Group           State      Uptime   Expire Prune
FRR-1# show ip pim local-membership 
Interface  Address          Source           Group            Membership
FRR-1# show ip pim neighbor 
Interface         Neighbor    Uptime  Holdtime  DR Pri
ens224        10.180.0.194  01:19:06  00:01:19       1
ens256        10.180.0.198  01:07:35  00:01:17       1
FRR-1# show ip pim nexthop
Number of registered addresses: 1
Address         Interface      Nexthop
-------------------------------------------
10.190.0.12     ens224         10.180.0.194 
FRR-1# show ip pim nexthop-lookup 
% Command incomplete: show ip pim nexthop-lookup 
FRR-1# show ip pim nexthop-lookup 
  A.B.C.D  Source/RP address
FRR-1# show ip pim rp-info 
RP address       group/prefix-list   OIF         I am RP
10.190.0.12      224.0.0.0/4         ens224      no
FRR-1# show ip pim rpf 
  <cr>  
  json  JavaScript Object Notation
FRR-1# show ip pim rpf 
RPF Cache Refresh Delay:    50 msecs
RPF Cache Refresh Timer:    0 msecs
RPF Cache Refresh Requests: 4
RPF Cache Refresh Events:   3
RPF Cache Refresh Last:     01:07:54
Nexthop Lookups:            5
Nexthop Lookups Avoided:    0

Source          Group           RpfIface RpfAddress      RibNextHop      Metric Pref
FRR-1# show ip pim state 
Codes: J -> Pim Join, I -> IGMP Report, S -> Source, * -> Inherited from (*,G)
Installed Source           Group            IIF      OIL

FRR-1# show ip pim upstream
Iif       Source          Group           State       Uptime   JoinTimer RSTimer   KATimer   RefCnt
FRR-1# show ip pim upstream-join-desired 
Interface Source          Group           LostAssert Joins PimInclude JoinDesired EvalJD
FRR-1# show ip pim upstream-rpf 
Source          Group           RpfIface RibNextHop      RpfAddress     
FRR-1# 

FRR-2:

FRR-2# show ip igmp groups 
Interface Address         Group           Mode Timer    Srcs V Uptime  
ens256    10.180.0.201    232.0.7.0       INCL --:--:--    1 3 01:06:58
ens256    10.180.0.201    232.1.0.1       EXCL 00:02:30    1 3 00:34:25
FRR-2# show ip igmp interface 
Interface  State          Address  V  Querier  Query Timer    Uptime
ens224        up     10.180.0.198  3    other     --:--:--  04:35:02
ens256        up     10.180.0.201  3    local     00:00:05  04:28:15
lo0           up      10.180.0.15  3    local     00:00:27  01:02:34
FRR-2# show ip igmp sources 
Interface Address         Group           Source          Timer Fwd Uptime  
ens256    10.180.0.201    232.0.7.0       192.180.0.202   02:25   N 01:07:03
ens256    10.180.0.201    232.1.0.1       *               02:25   N 00:34:30
FRR-2# show ip igmp statistics 
IGMP RX statistics
Interface       : global
V1 query        : 0
V2 query        : 0
V3 query        : 327
V2 leave        : 0
V1 report       : 0
V2 report       : 0
V3 report       : 611
mtrace response : 0
mtrace request  : 0
unsupported     : 0
FRR-2# show ip pim assert
Interface Address         Source          Group           State  Winner          Uptime   Timer
FRR-2# show ip pim assert-internal 
CA:   CouldAssert
ECA:  Evaluate CouldAssert
ATD:  AssertTrackingDesired
eATD: Evaluate AssertTrackingDesired

Interface Address         Source          Group           CA  eCA ATD eATD
FRR-2# show ip pim assert-metric 
Interface Address         Source          Group           RPT Pref Metric Address        
FRR-2# show ip pim assert-winner-metric 
Interface Address         Source          Group           RPT Pref Metric Address        
FRR-2# show ip pim group-type 
SSM group range : 232.0.0.0/8
FRR-2# show ip pim interface 
Interface  State          Address  PIM Nbrs           PIM DR  FHR IfChannels
ens224        up     10.180.0.198         1            local    0          0
ens256        up     10.180.0.201         0            local    0          0
lo0           up      10.180.0.15         0            local    0          0
pimreg        up          0.0.0.0         0            local    0          0
FRR-2# show ip pim join 
Interface Address         Source          Group           State      Uptime   Expire Prune
FRR-2# show ip pim local-membership 
Interface  Address          Source           Group            Membership
FRR-2# 
FRR-2# show ip pim neighbor 
Interface         Neighbor    Uptime  Holdtime  DR Pri
ens224        10.180.0.197  01:10:44  00:01:33       1
FRR-2# show ip pim rp-info 
RP address       group/prefix-list   OIF         I am RP
FRR-2# show ip pim rpf 
RPF Cache Refresh Delay:    50 msecs
RPF Cache Refresh Timer:    0 msecs
RPF Cache Refresh Requests: 3
RPF Cache Refresh Events:   3
RPF Cache Refresh Last:     01:10:03
Nexthop Lookups:            48
Nexthop Lookups Avoided:    0

Source          Group           RpfIface RpfAddress      RibNextHop      Metric Pref
FRR-2# show ip pim upstream
Iif       Source          Group           State       Uptime   JoinTimer RSTimer   KATimer   RefCnt
FRR-2# show ip pim upstream-join-desired 
Interface Source          Group           LostAssert Joins PimInclude JoinDesired EvalJD
FRR-2# show ip pim upstream-rpf 
Source          Group           RpfIface RibNextHop      RpfAddress     
FRR-2# show ip pim nexthop
Number of registered addresses: 2
Address         Interface      Nexthop
-------------------------------------------
FRR-2# 

I really don't understand what is going on. I've tried all possibilities, all tutorials I could found and I still can't make it work.

EasyNetDev commented 5 years ago

Hi,

I've tried also a more simple setup:

FRR-R1 as source, FRR-R2 as PIM router and IGMP, and FRR-MCAST-RCV as receiver. I've write 2 programs: mcastclient and mcastserver.

First test:

If I'm running mcastclient on FRR-MCAST-RCV interface ens224:

3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:55:28:f9 brd ff:ff:ff:ff:ff:ff
    inet 10.180.0.202/30 brd 10.180.0.203 scope global ens224
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe55:28f9/64 scope link 
       valid_lft forever preferred_lft forever
root@FRR-MCAST-RCV:~# ip route 

default via X.X.X.X dev ens192 onlink -> is the public IP to connect with SSH
X.X.X.X/26 dev ens192 proto kernel scope link src X.X.X.X 
10.180.0.0/16 via 10.180.0.201 dev ens224 proto static metric 20 
10.180.0.200/30 dev ens224 proto kernel scope link src 10.180.0.202 
10.190.0.0/16 via 10.180.0.201 dev ens224 proto static metric 20 
10.190.128.0/27 via 10.180.0.201 dev ens224 proto static metric 20 

And mcastserver on FRR-R2 interface ens256:

4: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a2:1c:6f brd ff:ff:ff:ff:ff:ff
    inet 10.180.0.201/30 brd 10.180.0.203 scope global ens256
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea2:1c6f/64 scope link 
       valid_lft forever preferred_lft forever

root@FRR-2:~# ip r l
default via X.X.X.X dev ens192 onlink 
X.X.X.X/26 dev ens192 proto kernel scope link src X.X.X.X 
10.180.0.14 via 10.180.0.197 dev ens224 proto ospf metric 20 
10.180.0.196/30 dev ens224 proto kernel scope link src 10.180.0.198 
10.180.0.200/30 dev ens256 proto kernel scope link src 10.180.0.201 
10.190.128.0/27 via 10.180.0.197 dev ens224 proto ospf metric 20 

Everything is working. The server can send mcast on same VLAN:

root@FRR-2:~# ./mcastserver 
Opening the datagram socket...OK.
Setting the local interface...OK
Sending datagram message...OK
root@FRR-2:~# 

Client:

root@FRR-MCAST-RCV:~# ./mcastclient 
Opening datagram socket....OK.
Setting SO_REUSEADDR...OK.
Binding datagram socket...OK.
Adding multicast group...OK.

Reading datagram message...OK.
The message from multicast server is: "Multicast test message lol!"

I don't know how vSwitch is acting, broadcast or multicast, but is working. The setup with IPTV source (OdroidC2 sending multicast to the Cisco and the RTSP server is joining in multicast on same VLAN in a VM connected to the Cisco, I believe that multicast is working on ESXI)

Second test: FRR-R1 as source -> FRR-R2 as multicast router -> FRR-MCAST-RCV Is not working:

FRR-R1:

5: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:c2:0a:c1 brd ff:ff:ff:ff:ff:ff
    inet 10.180.0.197/30 brd 10.180.0.199 scope global ens256
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fec2:ac1/64 scope link 
       valid_lft forever preferred_lft forever
root@FRR-1:~# ip r l
default via X.X.X.X dev ens192 onlink 
X.X.X.X/26 dev ens192 proto kernel scope link src 5.154.185.184 
10.180.0.15 via 10.180.0.198 dev ens256 proto ospf metric 20 
10.180.0.196/30 dev ens256 proto kernel scope link src 10.180.0.197 
10.180.0.200/30 via 10.180.0.198 dev ens256 proto ospf metric 20 
10.190.128.0/27 dev ens161 proto kernel scope link src 10.190.128.1 
root@FRR-1:~# ping 10.180.0.202
PING 10.180.0.202 (10.180.0.202) 56(84) bytes of data.
64 bytes from 10.180.0.202: icmp_seq=1 ttl=63 time=0.542 ms
64 bytes from 10.180.0.202: icmp_seq=2 ttl=63 time=0.431 ms
^C
--- 10.180.0.202 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 6ms
rtt min/avg/max/mdev = 0.431/0.486/0.542/0.059 ms
root@FRR-1:~# 

FRR-R2:

3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a2:1c:65 brd ff:ff:ff:ff:ff:ff
    inet 10.180.0.198/30 brd 10.180.0.199 scope global ens224
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea2:1c65/64 scope link 
       valid_lft forever preferred_lft forever
4: ens256: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:a2:1c:6f brd ff:ff:ff:ff:ff:ff
    inet 10.180.0.201/30 brd 10.180.0.203 scope global ens256
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fea2:1c6f/64 scope link 
       valid_lft forever preferred_lft forever
root@FRR-2:~# ip r l
default via X.X.X.X dev ens192 onlink 
X.X.X.X/26 dev ens192 proto kernel scope link src X.X.X.X 
10.180.0.14 via 10.180.0.197 dev ens224 proto ospf metric 20 
10.180.0.196/30 dev ens224 proto kernel scope link src 10.180.0.198 
10.180.0.200/30 dev ens256 proto kernel scope link src 10.180.0.201 
10.190.128.0/27 via 10.180.0.197 dev ens224 proto ospf metric 20 

FRR-2# show ip igmp groups 
Interface Address         Group           Mode Timer    Srcs V Uptime  
ens256    10.180.0.201    232.1.7.1       EXCL 00:06:20    1 3 00:00:06
FRR-2# show ip igmp interface 
Interface  State          Address  V  Querier  Query Timer    Uptime
ens224        up     10.180.0.198  3    other     --:--:--  12:51:22
ens256        up     10.180.0.201  3    other     --:--:--  12:44:35
lo0           up      10.180.0.15  3    local     00:02:03  09:18:54
FRR-2# show ip igmp sources 
Interface Address         Group           Source          Timer Fwd Uptime  
ens256    10.180.0.201    232.1.7.1       *               --:--   Y 00:00:15
FRR-2# show ip igmp join 
Interface Address         Source          Group           Socket Uptime  
FRR-2# 
FRR-2# show ip pim state 
Codes: J -> Pim Join, I -> IGMP Report, S -> Source, * -> Inherited from (*,G)
Installed Source           Group            IIF      OIL
0         10.180.0.202     232.1.0.0        ens256   
0         10.180.0.202     232.1.7.0        ens256   
1         *                232.1.7.1        ens224   ens256(I   )

FRR-2# show ip pim interface 
Interface  State          Address  PIM Nbrs           PIM DR  FHR IfChannels
ens224        up     10.180.0.198         1            local    0          0
ens256        up     10.180.0.201         0            local    0          0
lo0           up      10.180.0.15         0            local    0          0
pimreg        up          0.0.0.0         0            local    0          0
FRR-2# show ip pim join 
Interface Address         Source          Group           State      Uptime   Expire Prune
FRR-2# show ip pim rp-info 
RP address       group/prefix-list   OIF         I am RP
10.180.0.15      232.0.0.0/8         lo0         yes
FRR-2# show ip pim upstream
Iif       Source          Group           State       Uptime   JoinTimer RSTimer   KATimer   RefCnt
FRR-2# show ip pim group-type 
SSM group range : 232.0.0.0/8
FRR-2# show ip mroute 
Source          Group           Proto  Input      Output     TTL  Uptime
*               232.1.7.1       IGMP   ens224     ens256     1    00:04:38

mcastserver on FRR-R1:

Sending datagram message...OK
Opening the datagram socket...OK.
Setting the local interface...OK
Sending datagram message...OK

mcastclient on FRR-MCAST-RCV:

root@FRR-MCAST-RCV:~# ./mcastclient 
Opening datagram socket....OK.
Setting SO_REUSEADDR...OK.
Binding datagram socket...OK.
Adding multicast group...OK.

No message received.

EasyNetDev commented 5 years ago

Hi all,

I've found in the end the problem: SSM Source-Specific Multicast. Then the PIM routers are correctly configured but you stream the data to 232.0.0.0/8 all routers will drop the join.

Solutions:

  1. Change the prefix-list for ip pim ssm prefix-list XXX to something else then the default 232.0.0.0/8
  2. Change multicast IP of the source.

Unfortunately the lake of documentation on internet I thought it was a bug in PIMD daemon or in Zebra, but after hard debugging on PIMD I'm notice this:

Mar 22 15:47:28 FRR-1 pimd[630]: pim_ecmp_nexthop_search: (10.180.0.14,224.0.0.0)(default) selected nhop interface lo0 addr 10.180.0.14 mod_val 0 iter 0 ecmp 0
Mar 22 15:47:28 FRR-1 pimd[630]: (10.190.128.4,232.0.5.0) register setup skipped as group is SSM

Hope that is good for others or to be added in the documentation. The issue started from the beginning when I've saw SSM configured as 232.0.0.0/8 and I didn't understood very well the concept and I thought that is a good multicast group for IPTV .. and everything went in a wrong way :).

Sorry for this wrong TT. Now I will deploy the multicast streaming in my network.

Issue closed. Resolution: don't use SSM multicast group 232.0.0.0/8 for your stream sources, or change the ip pim ssm prefix-list XX to something else.