56.8 TRANSPORT_BUILTIN QosPolicy (DDS Extension)

Connext comes with three different transport plugins built into the core libraries (for most supported target platforms). These are plugins for UDPv4, shared memory (SHMEM), and UDPv6. (If you've installed RTI Real-Time WAN Transport, UDPv4_WAN is also available.)

This QosPolicy allows you to control which builtin transport plugins are used by a DomainParticipant to send and receive both discovery traffic and user data. By default, only the UDPv4 and shared memory plugins are enabled (for most platforms; on some platforms, the shared memory plugin is not available). You can disable one or all of the builtin transports.

In some cases, users will disable the shared memory transport when they do not want applications to use shared memory to communicate when running on the same node.

This QoS Policy contains the member in Table 56.11 DDS_TransportBuiltinQosPolicy.

See the API Reference HTML documentation for complete QoS details, including functional categories, defaults, and other QoS attributes. (API References are here: <NDDSHOME>/doc/api/connext_dds/api_<language>) For example, click here for QoS in the Modern C++ API.

Table 56.11 DDS_TransportBuiltinQosPolicy

Type

Field Name

Description

DDS_TransportBuiltinKindMask

mask

A mask with bits that indicate which builtin transports will be installed. Three different transport plug-ins are built into the core Connext libraries (for most supported target platforms): SHMEM, UDPv4, and UDPv6. (If you've installed Chapter 65 RTI Real-Time WAN Transport, UDPv4_WAN is also available.)

By default, the mask is set to SHMEM | UDPv4. Transports that are not in the mask will be disabled. MASK_NONE disables all the builtin transports.

You can set the mask programmatically or via XML. For example, programmatically, in traditional C++:

participant_qos.transport_builtin.mask = DDS_TRANSPORTBUILTIN_UDPv4 | DDS_TRANSPORTBUILTIN_SHMEM;

Via XML, you can use the <transport_builtin> tags. The following example effectively disables the shared memory transport by enabling only the UDPv4 transport for both discovery and user data:

<domain_participant_qos>
    <transport_builtin>
        <mask>UDPv4</mask>
    </transport_builtin>
</domain_participant_qos>

In XML only, you can additionally configure the builtin transport properties, such as <message_size_max>. See 62.4.6 Transport Properties.

Note: Currently, Connext will only listen for discovery traffic on the first multicast address (element 0) in multicast_receive_addresses.

56.8.1 Example

See 56.8.5 System Resource Considerations for an example of why you may want to use this QosPolicy.

In addition, customers may wish to install and use their own custom transport plugins instead of any of the builtin transports. In that case, this QosPolicy may be used to disable all builtin transports.

This QoSPolicy specifies the transports used by a DomainParticipant and all its entities (DataWriters and DataReaders) to send and receive both discovery and user data. To configure different transports for discovery traffic, see 56.2 DISCOVERY QosPolicy (DDS Extension) for DomainParticipants; see 59.27 TRANSPORT_SELECTION QosPolicy (DDS Extension) to configure different transports for DataWriters (to send user data) and DataReaders (to receive user data).

56.8.2 Properties

This QosPolicy cannot be modified after the DomainParticipant is created.

It can be set differently on the publishing and subscribing sides.

56.8.3 Related QosPolicies

56.8.4 Applicable DDS Entities

56.8.5 System Resource Considerations

You can save memory and other system resources if you disable the builtin transports that your application will not use. For example, if you only run a single application with a single DomainParticipant on each machine in your network, then you can disable the shared memory transport since your applications will never use it to send or receive messages.