Why DDS communication is not working
There are cases where no matter what you do, DDS applications do not want to communicate with each other.
In this post and video, I’ll share with you 4 reasons why DDS applications don’t communicate with each other and how you can verify and resolve the issue.
First, make sure your communication is not blocked by a firewall. So the first thing you should try is to disable a firewall. If the applications start communicating and you would like to have a firewall enabled, you will need to configure the firewall to allow DDS traffic to pass through the firewall.
Second. If you are running DDS applications on different computers, that are connected by a router or make sure it supports multicast. If the network does not support multicast, you need to specify the initial peers in your configuration. How do you check if your network supports multicast? You can use RTI Perftest from GitHub or general purpose Multicast Tester like the MCastTest tool.
Next. You need to check if you have compatible QoS settings. Even though you have got the Topic Names right and datatypes right, which you should also check. The more common problem is that your QoS settings are not compatible between the publishing application and subscribing application. To check if you have the same Topic name and data type is relatively easy, but to check if your QoS are compatible is more complicated. There are tools from DDS vendors, that you can use that can help you identify the problematic settings.
RTI Admin Console, FastDDS Monitor.
You can also run into problems when there is some clever switch or router that can control the delivery of multicasts packets with IGMP snooping. If your DDS applications disconnect from each other after some time, you just need to disable it.
For basic DDS problem testing, I strongly recommend the RTI PerfTest tool which is free.
If everything from the above fails, then you will need to start playing with Wireshark and try to get to the root of the problem with this tool. But that’s more complex.
I hope that this short video helped you to debug your problem or at least it will save you some time when you encounter non communicating DDS applications.