How to enable IPv6 multicast on 21.02.0

Hi all,

I've successfully set up a routed IPv6 network across two OpenWRT devices and my LAN. At the far end of the network there is an IP camera streaming multicast IPv6 traffic, and I'd like to get it forwarded through both OpenWRT devices an onto my LAN so a machine on the LAN can watch the video stream.

I have ticked all the multicast-related tickboxes I could find in the OpenWRT settings, and there are multicast routes on both OpenWRT boxes, but they don't seem to forward any traffic.

Using tcpdump on the furthest OpenWRT device I can see the multicast traffic coming in on the expected incoming interface, but it is not being forwarded as I can't see it leaving the expected outgoing interface (or any interface for that matter, it is just dropped). So the first step appears to be how to configure this one OpenWRT device, which is seeing IPv6 multicast traffic come in on one of its interfaces, to forward that traffic out of the other interface.

Using tcpdump and looking at ICMPv6 traffic, I don't see any sort of MLD messages which I believe is required to subscribe and unsubscribe from multicast groups. I expected to see OpenWRT sending some MLD query messages but I don't see these.

I found an old post on this forum saying to run echo 1 > /proc/sys/net/ipv6/conf/all/mc_forwarding as this file contained 0, however this only gives me an access denied message, even as root. Doing some further research online suggests this value is read-only, and it changes to 1 automatically if you run an IPv6 multicast routing daemon, however I haven't seen any reference to this in the OpenWRT docs.

So my question is, has anyone gotten multicast IPv6 working? Do you need to run a daemon or can the kernel handle it automatically like it does with unicast traffic?

I'm running OpenWRT 21.02.0 r16279-5cc0535800 on both devices. They're set up as a point-to-point wireless link to connect two wired LANs (with the remote LAN consisting of just the OpenWRT box and the IP camera). I did have everything set up as a WDS bridge and this worked, but the problem was that the multicast traffic from local cameras was being unnecessarily forwarded over the wireless link to the remote camera, saturating the wireless link. I was hoping that by changing things to a routed network rather than a bridge, it would be easier to drop unnecessary multicast traffic at each hop, and only forward the multicast streams that someone has subscribed to.

Certainly if I traceroute to the IP camera I see an IPv6 address for each OpenWRT device at each hop, ping works fine and so does SSH to the IPv6 address, so the IPv6 unicast routing appears to work properly, it's just the multicast left to sort out.

I managed to get this working using the mcproxy program. Apparently omcproxy also does the job but I couldn't get it to run, and I couldn't get its luci package to do anything once installed - maybe I did something wrong.

mcproxy comes with UCI configuration but it just gave me shell errors so that doesn't appear to work either, but luckily it can be disabled and it will fall back to using the default /etc/mcproxy.conf which you configure yourself. Doing this did the trick, and got multicast routing functioning correctly.

I installed it on both OpenWRT routers and the multicast traffic is now forwarded as needed across both devices.

I documented the process on the wiki in case it helps anyone in the future.

2 Likes

Thanks for updating the wiki.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.