OpenDDS和OpenSplice互操作性



我有两个程序,一个使用OpenSplice 6.7.1,另一个使用OpenDDS 3.10。

它们都使用RTPS作为协议,相同的域 ID目标端口(我使用 wireshark 进行了验证)。

问题是他们没有沟通。

我不知道我是否对配置做错了什么......我正在使用带有RTPS的OpenDDS的基本配置,对于OpenSplice,我在更改域ID后使用了提供的ospl.xml。

这是我的配置文件。对于 OpenDDS:

[common]
DCPSGlobalTransportConfig=$file
DCPSDefaultDiscovery=DEFAULT_RTPS
[transport/the_rtps_transport]
transport_type=rtps_udp

对于OpenSplice:

<OpenSplice>
<Domain>
<Name>ospl_sp_ddsi</Name>
<Id>223</Id>
<SingleProcess>true</SingleProcess>
<Description>Stand-alone 'single-process' deployment and standard DDSI networking.</Description>
<Service name="ddsi2">
<Command>ddsi2</Command>
</Service>
<Service name="durability">
<Command>durability</Command>
</Service>
<Service name="cmsoap">
<Command>cmsoap</Command>
</Service>
</Domain>
<DDSI2Service name="ddsi2">
<General>
<NetworkInterfaceAddress>AUTO</NetworkInterfaceAddress>
<AllowMulticast>true</AllowMulticast>
<EnableMulticastLoopback>true</EnableMulticastLoopback>
<CoexistWithNativeNetworking>false</CoexistWithNativeNetworking>
</General>
<Compatibility>
<!-- see the release notes and/or the OpenSplice configurator on DDSI interoperability -->
<StandardsConformance>lax</StandardsConformance>
<!-- the following one is necessary only for TwinOaks CoreDX DDS compatibility -->
<!-- <ExplicitlyPublishQosSetToDefault>true</ExplicitlyPublishQosSetToDefault> -->
</Compatibility>
</DDSI2Service>
<DurabilityService name="durability">
<Network>
<Alignment>
<TimeAlignment>false</TimeAlignment>
<RequestCombinePeriod>
<Initial>2.5</Initial>
<Operational>0.1</Operational>
</RequestCombinePeriod>
</Alignment>
<WaitForAttachment maxWaitCount="100">
<ServiceName>ddsi2</ServiceName>
</WaitForAttachment>
</Network>
<NameSpaces>
<NameSpace name="defaultNamespace">
<Partition>*</Partition>
</NameSpace>
<Policy alignee="Initial" aligner="true" durability="Durable" nameSpace="defaultNamespace"/>
</NameSpaces>
</DurabilityService>
<TunerService name="cmsoap">
<Server>
<PortNr>Auto</PortNr>
</Server>
</TunerService>
</OpenSplice>

我做错了什么?

多供应商互操作性已经在OMG活动中反复展示,但最近没有,所以可能任何一个产品都发生了回归。

您的 OpenSplice 配置(除了 domainId,它应该与应用程序中使用的 domainId 匹配,其中用户通常使用 DDS::D OMAIN_ID_DEFAULT 来指示他们想要使用 OSPL_URI 环境变量指向的配置中指定的 ID)是正确的默认配置。我相信您知道,如果您使用多宿主计算机,要使用的接口/IP 地址的 AUTO 设置是一个潜在的混淆来源。

因此,接下来是查看(DDSI)跟踪和/或wireshark捕获,看看您是否发现了两家供应商的DDSI线框(PrismTech为1.2,OCI为1.3)。

例如,当OpenSplice DDSI跟踪中没有发现供应商-1.3的迹象时,这表明仍然存在一些"基本"通信问题。

请注意,在这些OMG事件中,我们通常在域"0"和无模块IDL主题类型规范上使用(对我们来说是"捆绑")iShapes示例来验证互操作性,因此它不适用于您的应用程序,这也值得尝试(并检查/使用wireshark与该示例结合使用)

我也会继续关注社区论坛以获取有关此内容的新信息..

相关内容

  • 没有找到相关文章