Hi,
My DDS project (v 5.0) has been working fine using shared memory in a standalong linux machine. Now, we want to change to use multicast to communicate over the network on multiple machines. I have changed my QOS profile as followed for multicast communication. After the change, I can see that shared memory segments are not created when starting up the DDS processes so I know that it is not using shared memory anymore. If I do netstat -g, I can see the multicast group is showing with the number of reference count increases. However, I am not able to get the reader and writer to communicate with each other via multicast. Do I need to change anything in the code support multicast communincation?
<participant_qos name="Base_participant_QOS">
<transport_builtin>
<mask>UDPv4</mask>
</transport_builtin>
<discovery>
<initial_peers>
<element>239.255.0.1</element>
</initial_peers>
<multicast_receive_addresses>
<element>239.255.0.1</element>
</multicast_receive_addresses>
</discovery>
..........
<datareader_qos name="Base_datareader_QOS">
<multicast>
<value>
<element> <!-- Must be a valid multicast address-->
<receive_address>239.255.0.1</receive_address>
</element>
</value>
</multicast>
> [system@localhost scripts]$ netstat -g
IPv6/IPv4 Group Memberships
Interface RefCnt Group
--------------- ------ ---------------------
lo 1 all-systems.mcast.net
eth0 4 239.255.0.1
eth0 1 224.0.0.251
eth0 1 all-systems.mcast.net
virbr0 4 239.255.0.1
virbr0 1 224.0.0.251
virbr0 1 all-systems.mcast.net
lo 1 ff02::1
eth0 1 ff02::1:ff15:1a5f
eth0 1 ff02::1
virbr0 1 ff02::1
virbr0-nic 1 ff02::1
Thanks,
Michlele
Hi Michelle,
It looks like you've made the minimum changes necessary to support multicast. Have you verified that the DataReader and DataWriter have discovered each other? You can check this via the listener callbacks or status structures.
If they have not discovered each other, you'll want to verify that your network can support multicast communication. You can use rtiddsping to verify that both machines can discover each other over DDS. If rtiddsping does not work, then the network is preventing the connection. Try just regular 'ping', and verify that you can reach the other machine.
If the network is indeed the cause, see this knowledge base article about common reasons: Why are my reader and writer applications unable to communicate?.
If the network shows no issues, then please let us know about the results of rtiddsping and the discovery match statuses.
thanks,
-sumeet