Since we switched from using a MulticastSocket for sending of multicast packets to a DatagramSocket, the time-to-live (TTL) of a packet is always 1. The reason is that method setTimeToLive() only exists in MulticastSocket, but not in DatagramSocket.
We cannot revert the code and use a MulticastSocket to send multicasts, as this won't reveal the real IP address of the sender, but only the multicast address, and the real address is needed to drop packets at the transport level.
Investigate whether we could use reflection to get the DatagramSocketImpl and call setTimeToLive().