All problems with RTP module flooding network, Wifi are caused by lack of IGMP support in rtp_send module.
When pulseaudio with rtp_recv module is started proper IGMPv2 signalling works like it should:
root@orangepione:~# tshark -i eth0 -Y "igmp" Capturing on 'eth0' 117 6.950723148 192.168.254.141 -> 239.255.1.56 IGMPv2 46 Membership Report group 239.255.1.56 177 10.430705605 192.168.254.141 -> 239.255.1.56 IGMPv2 46 Membership Report group 239.255.1.56 215 13.660683494 192.168.254.141 -> 239.255.1.56 IGMPv2 46 Membership Report group 239.255.1.56
Pulseaudio creates Multicast group (I don't use default group). As IGMP signalling is OK - IGMP capable switches enable that multicast group only on ports that need it.
If pulseaudio is configured with rtp_send module - there is no IGMP signalling.
Looking at code of module-rtp-recv.c we can find:
mr4.imr_multiaddr = ((const struct sockaddr_in*) sa)->sin_addr; r = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr4, sizeof(mr4));
IP_ADD_MEMBERSHIP tells kernel to join multicast group.
There is no such command is module-rtp-send.c
It needs fixing ASAP
All problems with RTP module flooding network, Wifi are caused by lack of IGMP support in rtp_send module.
When pulseaudio with rtp_recv module is started proper IGMPv2 signalling works like it should:
root@orangepione:~# tshark -i eth0 -Y "igmp"
Capturing on 'eth0'
117 6.950723148 192.168.254.141 -> 239.255.1.56 IGMPv2 46 Membership Report group 239.255.1.56
177 10.430705605 192.168.254.141 -> 239.255.1.56 IGMPv2 46 Membership Report group 239.255.1.56
215 13.660683494 192.168.254.141 -> 239.255.1.56 IGMPv2 46 Membership Report group 239.255.1.56
Pulseaudio creates Multicast group (I don't use default group). As IGMP signalling is OK - IGMP capable switches enable that multicast group only on ports that need it.
If pulseaudio is configured with rtp_send module - there is no IGMP signalling.
Looking at code of module-rtp-recv.c we can find:
r = setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mr4, sizeof(mr4));
IP_ADD_MEMBERSHIP tells kernel to join multicast group.
There is no such command is module-rtp-send.c
It needs fixing ASAP