Interoperability with RTI

6 posts / 0 new
Last post
Offline
Last seen: 7 years 11 months ago
Joined: 01/06/2017
Posts: 3
Interoperability with RTI

Hi ,

 I m trying to establish interoperability between a simple Helloworld application with RTI Connext DDS and Opensplice DDS. I am using the community version of Opensplice and the EVAL  license version of RTI.

 On the, OpenSplice side I use the default ospl_sp_ddsi.xml.

 The RTI config file being used is attached

 Both applications use the domain id of 0.

I am able to see that both use RTPS protocol using wireshark application.

The idl files and the Topic names are the same in both applications.

I am not able to communicate between these applications.

I am trying this having both applications running on different nodes.

What more should I check so that i am able to communicate between the two applications?

 Regards 

AttachmentSize
Plain text icon RTI config file831 bytes
rip
rip's picture
Offline
Last seen: 2 weeks 4 days ago
Joined: 04/06/2012
Posts: 324

There was an early issue with PT's community splice, in that the RTPS protocol was not enabled by default (or not even included in the distribution).  I thought they'd finally changed that, but it may be they haven't.

Splice still needs to use IPv4 to communicate to other Splice instances, so it would still show up in Wireshark.  But if the Wireshark instance has RTPS protocol support available, it should show both the Splice instance and the Connext instance emitting RTPS discovery packets.  If all you are seeing is RTPS discovery packets from the Connext node, then I would look at the config for Splice.



Offline
Last seen: 7 years 11 months ago
Joined: 01/06/2017
Posts: 3

Hi,

Please find the config for Splice attached. Is there something in code which has to be taken care of during design of such interoperable applications?

Let me know if the config of Splice or Config of RTI need some more inputs.

 

Regards

 

 

File Attachments: 
Gerardo Pardo's picture
Offline
Last seen: 1 week 2 days ago
Joined: 06/02/2010
Posts: 602

Hello,

It seems from your RTI configuration configuration that you are trying to disable multicast explicitly. What is the reason for that? On the other hand your OpenSplice configuration is allowing multicast...

Is multicast not enabled between the two nodes? This is the standard way DDS applications normally discover each other.

If multicast is possible between your nodes then I would try to get it working that way first...

Also I assume that you already tested that two RTI applications can communicate between those two nodes and likewise two OpenSplice applications. This would help separate network setup issues versus interoperability issues.

Finally, can you share the IDL for your Helloworld?

Gerardo

 

Offline
Last seen: 7 years 11 months ago
Joined: 01/06/2017
Posts: 3

Thanks Gerardo. I was able to get the pub-sub of RTI and PrismTech working interoperably. 

Now, I see that if I have 2 publishers, one of RTI application and other of PrismTech  and Subscriber of Prismtech, i see that the data packets are not interleaved. Eventough they are started so that I get an interleaving pattern, I see that first I get all the RTI data-messages and then Prismtech data-messages or vice versa , depending on which application I have started first.  Is there any pattern in which the port listens at the subscriber end for RTI and PrismTech messages. Can we interleave the data ?

Regards

Offline
Last seen: 5 years 11 months ago
Joined: 01/31/2019
Posts: 1

Hello,

I'm trying to connect a OpenDDS node with a MicroDDS RTI node. The remote node (MicroDDS) sends inline QoS in its DATA(p) messages. How can I include inline QoS configuration in my OpenDDS node? My RTPS configuration is:

TransportConfig_rch config =
TransportRegistry::instance()->create_config("rtps_interop");

TransportInst_rch inst =
TransportRegistry::instance()->create_inst("the_rtps_transport",
"rtps_udp");
RtpsUdpInst_rch rui = static_rchandle_cast<RtpsUdpInst>(inst);
rui->handshake_timeout_ = 1;

config->instances_.push_back(inst);
TransportRegistry::instance()->global_config(config);

bool multicast = true;
unsigned int resend = 1;
std::string partition, governance, permissions;
int defaultSize = 0;
RtpsDiscovery_rch disc = make_rch<RtpsDiscovery>("RtpsDiscovery");

disc->resend_period(ACE_Time_Value(resend));
disc->sedp_multicast(multicast);
TheServiceParticipant->add_discovery(static_rchandle_cast<Discovery>(disc));
TheServiceParticipant->set_repo_domain(DomainID, disc->key());

The remote DATA(p) MicroDDS message is attachted in DATA(p) RTPS message image.

 I hope someone could help me :-) 

Thanks in advances and best regards

 

Miguel Ángel

File Attachments: