Closed EasyNetDev closed 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.
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:
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.
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:
FRR-R1:
FRR-R2:
FRR-MCAST-RCV:
Now the output:
Cisco SW4:
FRR-R1:
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.