How to make 2 machines talk DDS to each other

3 posts / 0 new
Last post
Frank J. Crow's picture
Offline
Last seen: 8 years 5 months ago
Joined: 04/08/2011
Posts: 12
How to make 2 machines talk DDS to each other

I've got 2 machines sitting side-by-side.   Both running RHEL and RTI DDS 4.5d.   I have applications written by 3rd parties running on both that share the same IDLs and topic names and domain ID "0."   And no source.   And I'm pretty new to RTI DDS.

 

Application A on machine A will publish topics that are subscribed to by Application B on machine B.   Further, Application B will publish topics that Application A will subscribe to.

 

So far, sitting them on the same subnet, side-by-side and hoping for the best... doesn't seem to be working.   :-)

 

Any ideas?   Any pointers to documentation that address this scenario?

 

Thanks,

Frank

 

Organization:
Frank J. Crow's picture
Offline
Last seen: 8 years 5 months ago
Joined: 04/08/2011
Posts: 12

So I got my applications talking to each other across machine boundaries.   Of course, I'm not sure what changed, which also means that I have no idea what was wrong, if anything, in the first place.

 

While I'm happy to have it working, it would be nice if somebody could point me towards any RTI documentation that addresses machine-to-machine communications with RTI DDS.

 

Thanks,

Frank

 

Gerardo Pardo's picture
Offline
Last seen: 1 week 6 days ago
Joined: 06/02/2010
Posts: 591

 

RTI DDS should work machine to machine out-of-the-box as long as the two computers can communicate over multicast. This should be the case if they are in the same local network and do not have their firewalls configured to block the traffic.  

 

In my experience, in most cases this lack of communication is caused by the firewall configuration that blocks extenal traffic to the machine. Many operating systems ship with the firewall enabled by default.

 

RTI DDS has a couple of utility applications (rtiddsping and rtiddsspy) that can help you trouble-shoot whether the problem is the application or your network configuration. The process I usually follow is this:

 

1) Try regular "ping" between the two computers. If this does not work then you have an issue with your network setup. Note that if the computer you are 'pinging' has a firewall it might not respond so this could be the issue.

 

2) If "ping" works then try rtiddsping. In one computer I run  "rtiddsping -publisher"  in the second computer I run "rtiddsping -subscriber"  or alternatively in teh second computer I run "rtiddsspy -printData". If these applications do not communicate then there is also an issue with the network setup. But the issue is with the ability  If these applications do not communicate (but the regular "ping" did) then the problem is likely with having multicast access. Although in some cases it can also be the firewall if it is configured to allow ping to go through but block other traffic.

 

3) Finally if "rtiddsping" and "rtiddsspy" communicate but your application does not, then you could have some mis-configuration. For example:

- Applications are on different DDS domains

- Application use different Topic names

- Application use different data-types for the Topic

- Applications use incompatible QoS for reader and writer to the Topic

 

In this situation running rtiddspy against your application or running the RTI Analyzer tool or the RTI Monitoring tool can help you troubleshoot the problem.

 

If you are using RTI DDS 4.5d.  Then you should have the "RTI Launcher Tool" that can be used to start all the helper applications and tools I described.

 

Regards,

 

-Gerardo