You are here: Compatibility > Transport Compatibility

Shared-Memory Transport Compatibility for Connext DDS 4.5f and 5.x

The shared-memory transport in Connext DDS 4.5f and higher does not interoperate with the shared-memory transport in previous releases of RTI Data Distribution Service.

If two applications, one using Connext DDS and one using RTI Data Distribution Service, run on the same node and they have the shared-memory transport enabled, they will fail with the following error:

[D0004|CREATE Participant|D0004|ENABLE] 
NDDS_Transport_Shmem_is_segment_compatible:incompatible shared memory protocol detected.
Current version 1.0 not compatible with 2.0.

A possible workaround for this interoperability issue is to disable the shared-memory transport and use local communications over UDPv4 by setting participant_qos.transport_builtin to DDS_TRANSPORTBUILTIN_UDPv4.

If you have an interoperability requirement and you cannot switch to UDPv4, please contact support@rti.com.

Transport Compatibility for Connext DDS 5.1.0

Changes to message_size_max

In Connext DDS 5.1.0, the default message_size_max for the UDPv4, UDPv6, TCP, Secure WAN, and shared-memory transports changed to provide better out-of-the-box performance. Consequently, Connext DDS 5.1.0 is not out-of-the-box compatible with applications running older versions of Connext DDS or RTI Data Distribution Service.

To guarantee that communication between two applications always occurs: for a given transport, keep a consistent value for message_size_max in all applications within a Connext DDS system.

How to Change Transport Settings in Connext DDS 5.1.0 Applications for Compatibility with 5.0.0

If you need compatibility with a previous release, you can easily revert to the transport settings used in Connext DDS 5.0.0. The new built-in Baseline.5.0.0 QoS profile contains all of the default QoS values from Connext DDS 5.0.0. Therefore, using it in a Connext DDS 5.1.0 application will ensure that Connext DDS 5.0.0 and 5.1.0 applications have compatible transport settings. Below is an example of how to inherit from this profile when configuring QoS settings:

<qos_profile name="MyProfile" 
 base_name="BuiltinQosLib::Baseline.5.0.0">
   ...
</qos_profile>

How to Change message_size_max in Connext DDS 5.0.0 Applications for Compatibility with 5.1.0

The transport configuration can be adjusted programmatically or by using XML configuration. The following XML snippet shows how to change message_size_max for the built-in UDPv4 transport to match the Connext DDS 5.1.0 default setting of 65,507:

<participant_qos>
  <property>
    <value>
      <element>
        <name>
         dds.transport.UDPv4.builtin.parent.message_size_max
        </name>
        <value>65507</value>
      </element>
    </value>
  </property>
</participant_qos>

See Chapter 15, Transport Plugins, in the RTI Connext DDS Core Libraries User’s Manual for more details on how to change a transport’s configuration.

To help detect misconfigured transport settings, Connext DDS 5.1.0 will send the transport information, specifically the message_size_max, during participant discovery. Sharing this information will also make it easier for tools to report on incompatible applications in the system. 

If two Connext DDS 5.1.0 DomainParticipants that discover each other have a common transport with different values for message_size_max, the Connext DDS core will print a warning message about that condition. Notice that older Connext DDS applications do not propagate transport information, therefore this checking is not done.

You can access a remote DomainParticipant’s transport properties by inspecting the new transport_info field in the DDS_ParticipantBuiltinTopicData structure. See Chapter 16, Built-in Topics, in the RTI Connext DDS Core Libraries User’s Manual for more details about this field. There is a related new field, transport_info_list_max_length, in the DomainParticipantResourceLimitsQosPolicy. See Table 8.12 in the RTI Connext DDS Core Libraries User’s Manual for more details about this field.

UDPv4, UDPv6, WAN, and TCP and Shared Memory show the new default transport settings.

Table 2 UDPv4, UDPv6, WAN, and TCP

 

Old Default (bytes)

New Default (bytes)

Non-INTEGRITY Platforms

INTEGRITY Platforms 1Due to limits imposed by the INTEGRITY platform, the new default settings for all INTEGRITY platforms are treated differently than other platforms. Please see the RTI Connext DDS Core Libraries Platform Notes for more information on the issues with increasing the message_size_max default values on INTEGRITY platforms. Notice that interoperation with INTEGRITY platforms will require updating the transport property message_size_max so that it is consistent across all platforms.

message_size_max

9,216

65,5072The value 65507 represents the maximum user payload size that can be sent as part of a UDP packet.

9,216

send_socket_buffer_size

9,216

131,072

131,072

recv_socket_buffer_size

9,216

131,072

131,072

 

Table 3 Shared Memory

 

Old Default (bytes)

New Default (bytes)

Non-INTEGRITY Platforms

INTEGRITY Platforms

message_size_max

9,216

65,536

9,216

received_message_count_max

32

64

8

receive_buffer_size

73,728

1,048,576

18,432

Changes to Peer Descriptor Format

In Connext DDS 5.1.0, the way in which you provide a participant ID interval changed from [a,b] to [a-b].

Transport Compatibility for Connext DDS 5.2.0

In Connext DDS 5.2.0, the UDPv6 and SHMEM transport kinds changed to address an RTPS-compliance issue (RTI Issue ID CORE-5788).

Transport

5.1.0 and lower

5.2.0 and higher

UDPv6

5

2

SHMEM

2

0x01000000 (16777216)

Because of this change, out-the-box compatibility with previous Connext DDS releases using both UDPv6 and SHMEM transports is broken. Connext DDS 5.1.0 and earlier applications will not communicate out-of-the-box with Connext DDS 5.2.0 applications over UDPv6 and SHMEM. (See below for how to resolve this.)

Observed Error Messages

You may see the following error messages when the UDPv6 transport is not enabled:

5.1.0 Application:

can't reach:
locator:
transport: 16777216
address: 0000:0000:0100:0000:0000:0000:0000:0000
port: 21410
encapsulation:
transport_priority: 0
aliasList: ""

5.2.0 Application:

PRESParticipant_checkTransportInfoMatching:Warning: 
discovered remote participant 'yyyyy' using the 'shmem' 
transport with class ID 2.
This class ID does not match the class ID 16777216 of the 
same transport in the local participant 'xxxxx'.
These two participants will not communicate over the 'shmem' 
transport.
Check the value of the property 
'dds.transport.use_510_compatible_locator_kinds' in the 
local participant.
COMMENDBeWriterService_assertRemoteReader:Discovered remote 
reader using a non-addressable locator for a transport with 
class ID 2.
This can occur if the transport is not installed and/or 
enabled in the local participant. See 
https://community.rti.com/kb/what-does-cant-reach-locator-error-message-mean 
for additional info.
can't reach:
locator:
transport: 2
address: 0002:0000:0100:0000:0000:0000:0000:0000
port: 21412
encapsulation:
transport_priority: 0
aliasList: ""

How to Change Transport Settings in 5.2.0 Applications for Compatibility with 5.1.0

If you need compatibility with a previous release, there are two ways to do so:

Transport Compatibility for Connext DDS 5.2.0 on Solaris Platforms with Sparc CPUs

In Connext DDS 5.2.0, the SHMEM transport has changed to address a potential bus error on Solaris platforms on Sparc 64-bit CPUs3RTI Issue ID CORE-6777 (). The change is not backward compatible with previous Sparc Solaris releases (32-bit or 64-bit).

If a 5.2.0 application tries to communicate with an older version using the shared memory transport, you will see this error:

[D0004|CREATE Participant|D0004|ENABLE] 
NDDS_Transport_Shmem_is_segment_compatible:
incompatible shared memory protocol detected. 
Current version 3.0 not compatible with x.0.

To avoid this error, disable the shared memory transport by setting the QoS policy participant_qos.transport_builtin so that it does not contain the shared memory transport. For example:

<participant_qos>
    <transport_builtin>
        <mask>UDPv4</mask>
    </transport_builtin>
</participant_qos>

© 2015 RTI