DLNA Server not reachable accross VLANs

Hi Community,

I am struggling with the following setup (devices in different VLANs and subnets):

|DLNA Server (10.0.10.11)| <-base-vlan-> |Router| <-iot-vlan-> |Smart TV (10.0.20.17)|

If both devices are in the same VLAN/Subnet everything works fine, however, once separated the SmartTV is not able to find the DLNA Server.
I think it should only require uPnP and the Firewall was disabled for the test:

/ip upnp
set enabled=yes
/ip upnp interfaces
add interface=base-vlan type=internal
add interface=iot-vlan type=internal

The setup should be straightforward. Did I miss something? Help is highly appreciated :smiley:

As all auto-discovery stuff, also discovery of DLNA servers works using broadcasts … and broadcasts don’t traverse routers (that’s one of main features of segmented networks). If you can somehow statically configure your smart TV with DLNA server’s address (or FQDN), then I’m pretty sure your setup would work. But I doubt you can setup TV like that.

So I guess you’ll have to move both TV and DLNA server into same LAN subnet … this way or another.

Or set up a DLNA proxy or forwarder on something attached to all of the VLANs. People have used Raspberry Pi, or similar small low power computing devices; alternatively you could run something in a container or VM if you have a suitable host, e.g. some NAS have this facility.

wouldn’t IGMP proxy be applicable here?

/routing igmp-proxy interface
add alternative-subnets=10.0.20.0/24 interface=base-vlan upstream=yes
add interface=iot-vlan

I thought that I might be able to handle this within the router.
Regarding the IGMP Proxy, I tried exactly as suggested but my TV still does not find the server. Any ideas?

Yes it will likely not work with simple multicast routing, what you likely need is a mDNS relay. MikroTik does not offer it.

DLNA most of times doesn’t have anything to do with multicast (IGMP, PIM, etc). After client (smart TV) discovers DLNA server, it continues with unicast connections. Yes, for broadcast discovery, mDNS proxy might help.

That’s a pity, anyway, thank you very much for your support.

Hi. Sorry for reviving this old thread, but it's pretty googlable, so I just wanted to pop in and say that DLNA has everything to do with multicast routing. In any case, at least the implementations that I've seen do.

DLNA works atop SSDP. Media servers send out multicast UDP ssdp:alive packets periodically to 239.255.255.250:1900, and clients search for media servers by sending multicast UDP ssdp:discover packets to the same group address. That's the case for pretty much everything I've seen: Jellyfin, Plex, VLC, Samsung TVs... Those packets are actually plain HTTP over UDP, you can capture them with Wireshark and then read them to understand what's happening if something goes wrong.

Anyhow, when a client receives an ssdp:alive, it will immediately know how to contact the server, because an ssdp:alive packet contains the location it should connect to to get the main xml file with all the important stuff in it. However, if trying to discover a server with ssdp:discover (the way it arguably shoud be done), the server will need to actually respond to the client from its own unicast address with the location URI. Keep this in mind when building firewalls.

Now, the reason why it didn't work with IGMP Proxy or other things is probably because until quite recently, MikroTik has been quite bad when it comes to everything to do with multicast. But, at this particular point in time, it seems they're finally figuring stuff out. If you set up a PIM SM instance with your VLAN interfaces in interface templates and don't forget to duplicate them in IGMP interface thingamajig for ROS 7.25+, it should just work. Moreover, MikroTik now has a built-in mDNS proxy thing that you can just enable so that services which rely on that stuff can work across VLANs.

My personal experience with Jellyfin & VLC across two VLANs has been eeh... flaky, but it definitely can work.

I've had a lot of time on my hands recently, so I've been trying to figure out why my inter-VLAN DLNA stopped working at some point. Isolated things to a minimal setup, went back all the way to RouterOS 7.13 and worked my way back up, everything works as far back as RouterOS 7.16, and it broke at no point (although for some reason VLAN configuration just didn't work until like ROS 7.15), with a small update to the configuration needed on RouterOS 7.25. I then tested it on my home network, no bueno. The server just did not receive the packets for group 239.255.255.250, even though a multicast client for that group set up on the router that the server's connected to, on the same VLAN as the server (you can do that in /routing/gmp), would receive the packets. I then proceeded to use socat on the server to see if that would work, and the server suddenly started receiving the packets. It seemed to me like nothing changed in /bridge/mdb, nothing changed in PIM SM UIB SG table, it just started working magically. A few days have passed at this point, I've rebooted the server several times, I even shut it down for a while. It still receives the group packets just fine. I don't know what in the Linux kernel IGMP brain fart is going on, but I'm monitoring it now.