Stops receiving DDS over wifi after a few minutes

2 posts / 0 new
Last post
JC
Offline
Last seen: 7 months 3 days ago
Joined: 02/03/2015
Posts: 16
Stops receiving DDS over wifi after a few minutes

I have a DDS application running on a tablet which works great but originally after 4 minutes on the dot it stopped recieving all DDS messages. If I restarted the application it would recieve DDS messages again but after exactly 4 minutes it would stop. After some googling I found that it was IGMP enabled on the router that was causing the problem so I checked the box in the setting to disable IGMP it. This then for the first time meant that I was recieving messages beyond 4 minutes however now it seems to stop at 6 minutes. If I connect via a cable it works indefinitly.Is there something else I need to do??

Howard's picture
Offline
Last seen: 4 hours 14 min ago
Joined: 11/29/2012
Posts: 446

Hmm, since DDS applications use and depend on the ability of the network to transmit and receive multicast packets to discover and maintain discovery connections with each other, usually, you want to have IGMP-support enabled by the network elements (e.g., routers).

With IGMP, routers know when an application is listening to a multicast address on a port and then will route packets sent to the multicast address to the port.  Connext DDS does a IGMP ADD_MEMBERSHIP to a multicats address which should result in the OS sending a IGMP ADD_MEMBERSHIP packet to the local router.  With IGMP enabled, the local router should know to forward the discovery packets send on multicast back to the Connext DDS application from other applications.

Besides initial discovery, Connext DDS will periodically send and expect to receive multicast discovery packets to and from other DDS apps.  If it stops receiving the periodic multicast discovery packet from another DDS app for any reason (for example the app dies...or the router stops forwarding the packet), then the local DDS app will assume that the other app is dead and stop sending any data to it.

(NOTE: this is the default out-of-the-box behavior, but you can specify the unicast address of the hosts on which the other applications are running and not use or depend on multicast to discover thoses hosts...if so, then you don't need multicast for discovery or to maintain connections if multicast isn't working on your network)

From a pure network point of view, the router is supposed to issue periodically IGMP QUERIES to the hosts from which it's received IGMP ADD_MEMBERSHIP packets to make sure that thoses hosts still want to receive the multicast packets (if the Connext DDS app on thoses hosts are still running, then the host should respond positively to the query).

You may need to modify the IGMP query timeout parameters of your router to get this to work correctly in your system.  Do a google of "IGMP query timeout" and look for equivalent parameters for the model of your WIFI router.

In addition, I assume that all of your applications are on the same subnet.  By default, Connext DDS uses a value of 1 for multicast TTL (time to live) (single subnet)...which is configurable to allow multicast to pass though multiple subnets, i.e., forwarded to other routers, but now you have to make sure that the IGMP configuration of all of the routers are compatible.