RTI Connext C API Version 7.3.0

Transport plug-in using UDP/IPv4 for WAN communications. (NDDS_TRANSPORT_CLASSID_UDPv4_WAN) . More...

Data Structures

struct  NDDS_Transport_UDPv4_WAN_Property_t
 Configurable IPv4/UDP WAN Transport-Plugin properties. More...
 

Macros

#define NDDS_TRANSPORT_UDPV4_WAN_PROPERTY_DEFAULT
 Use this to initialize a NDDS_Transport_UDPv4_WAN_Property_t structure. More...
 

Functions

NDDS_Transport_Plugin * NDDS_Transport_UDPv4_WAN_new (const struct NDDS_Transport_UDPv4_WAN_Property_t *property_in)
 Create an instance of a UDPv4_WAN Transport Plugin. More...
 
NDDS_Transport_Plugin * NDDS_Transport_UDPv4_WAN_create (NDDS_Transport_Address_t *default_network_address_out, const struct DDS_PropertyQosPolicy *property_in)
 Create an instance of a UDPv4_WAN Transport Plugin, using the PropertyQosPolicy. More...
 
NDDS_Transport_Plugin * NDDS_Transport_UDPv4_WAN_create_from_properties_with_prefix (NDDS_Transport_Address_t *default_network_address_out, const struct DDS_PropertyQosPolicy *property_in, const char *propertyPrefix)
 Create an instance of a UDPv4_WAN Transport Plugin, using the PropertyQosPolicy. Same as NDDS_Transport_UDPv4_WAN_create but with a prefix for the input properties. It is used to create pluggable transports that use an underlying UDP transport. More...
 

Detailed Description

Transport plug-in using UDP/IPv4 for WAN communications. (NDDS_TRANSPORT_CLASSID_UDPv4_WAN) .

RTI Real-Time WAN Transport (RWT) is a transport that enables secure, scalable, and high-performance communication over wide area networks (WANs), including public networks.

It extends RTI Connext capabilities to WAN environments. Real-Time WAN Transport uses UDPv4 as the underlying IP transport-layer protocol to better anticipate and adapt to the challenges of diverse network conditions, device mobility, and the dynamic nature of WAN system architectures.

Real-Time WAN Transport, in combination with RTI Cloud Discovery Service (CDS), provides a complete, seamless solution out of the box for WAN connectivity.

This transport is not installed as part of an RTI Connext package; it must be downloaded and installed separately.

Real-Time WAN Transport replaces the transport capabilities of the Secure WAN Transport optionally available with previous RTI Connext releases (prior to 7.0.0), and provides the following capabilities:

Real-Time WAN Transport does not require third-party components, such as STUN servers, or protocols like SIP to handle session establishment. Using a single API and security model, you can leverage the extensive capabilities of the RTI Connext framework and ecosystem, including tools and infrastructure services, even for real-time connectivity from edge to cloud and back in highly distributed systems that communicate across wide area networks.

This transport plugin uses UDPv4 sockets to send and receive messages. It supports unicast communications in a single instance of the plugin. By default, this plugin will use all interfaces that it finds enabled and "UP" at instantiation time to send and receive messages. This transport is installed as a built-in transport plugin with the alias DDS_TRANSPORTBUILTIN_UDPv4_WAN_ALIAS.

In addition, you can configure an instance of this plugin to selectively use the network interfaces of a node by specifying the NDDS_Transport_Property_t::max_interface_count and the "white" and "black" lists in the base property's fields (NDDS_Transport_Property_t::allow_interfaces_list, NDDS_Transport_Property_t::deny_interfaces_list).

RTI Connext can implicitly create this plugin and register with the DDS_DomainParticipant if this transport is specified in DDS_TransportBuiltinQosPolicy.

To specify the properties of the Real-Time WAN Transport that is implicitly registered, you can either:

Note that all properties should be set before the transport is implicitly created and registered by RTI Connext. Any properties set after the builtin transport is registered will be ignored. See Built-in Transport Plugins for details on when a builtin transport is registered. To explicitly create an instance of this plugin, NDDS_Transport_UDPv4_WAN_new() should be called. The instance should be registered with RTI Connext, see NDDS_Transport_Support_register_transport. In some configurations one may have to disable the builtin UDPv4 transport plugin instance (DDS_TransportBuiltinQosPolicy, DDS_TRANSPORTBUILTIN_UDPv4_WAN), to avoid port conflicts with the newly created plugin instance.

For additional details on how to configure and use the Real-Time WAN Transport, see the Core Libraries User's Manual.

Real-Time WAN Transport Property

Names in Property QoS Policy of Domain Participant

The following table lists the predefined property names that can be set in the DDS_DomainParticipantQos::property to configure the Real-Time WAN Transport plugin.

Property Names for Real-Time WAN Transport Plugin
Property Name Description
dds.transport.UDPv4_WAN.builtin.parent.classid See NDDS_Transport_Property_t::classid
Should be set to "NDDS_TRANSPORT_CLASSID_UDPv4_WAN"
dds.transport.UDPv4_WAN.builtin.parent.address_bit_count See NDDS_Transport_Property_t::address_bit_count
dds.transport.UDPv4_WAN.builtin.parent.properties_bitmap See NDDS_Transport_Property_t::properties_bitmap
dds.transport.UDPv4_WAN.builtin.parent.gather_send_buffer_count_max See NDDS_Transport_Property_t::gather_send_buffer_count_max
dds.transport.UDPv4_WAN.builtin.parent.message_size_max See NDDS_Transport_Property_t::message_size_max
dds.transport.UDPv4_WAN.builtin.parent.allow_interfaces See NDDS_Transport_Property_t::allow_interfaces_list and NDDS_Transport_Property_t::allow_interfaces_list_length.
Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example, 127.0.0.1,eth0
dds.transport.UDPv4_WAN.builtin.parent.deny_interfaces See NDDS_Transport_Property_t::deny_interfaces_list and NDDS_Transport_Property_t::deny_interfaces_list_length.
Interfaces should be specified as comma-separated strings, with each comma delimiting an interface. For example: 127.0.0.1,eth0
dds.transport.UDPv4_WAN.builtin.parent.max_interface_count See NDDS_Transport_Property_t::max_interface_count
dds.transport.UDPv4_WAN.builtin.parent.thread_name_prefix See NDDS_Transport_Property_t::thread_name_prefix
dds.transport.UDPv4_WAN.builtin.send_socket_buffer_size See NDDS_Transport_UDPv4_WAN_Property_t::send_socket_buffer_size
dds.transport.UDPv4_WAN.builtin.recv_socket_buffer_size See NDDS_Transport_UDPv4_WAN_Property_t::recv_socket_buffer_size
dds.transport.UDPv4_WAN.builtin.ignore_loopback_interface See NDDS_Transport_UDPv4_WAN_Property_t::ignore_loopback_interface
dds.transport.UDPv4_WAN.builtin.ignore_nonrunning_interfaces See NDDS_Transport_UDPv4_WAN_Property_t::ignore_nonrunning_interfaces
dds.transport.UDPv4_WAN.builtin.ignore_nonup_interfaces [DEPRECATED] See NDDS_Transport_UDPv4_WAN_Property_t::ignore_nonup_interfaces
dds.transport.UDPv4_WAN.builtin.no_zero_copy [DEPRECATED] See NDDS_Transport_UDPv4_WAN_Property_t::no_zero_copy
dds.transport.UDPv4_WAN.builtin.send_blocking See NDDS_Transport_UDPv4_WAN_Property_t::send_blocking
dds.transport.UDPv4_WAN.builtin.transport_priority_mask See NDDS_Transport_UDPv4_WAN_Property_t::transport_priority_mask
dds.transport.UDPv4_WAN.builtin.transport_priority_mapping_low See NDDS_Transport_UDPv4_WAN_Property_t::transport_priority_mapping_low
dds.transport.UDPv4_WAN.builtin.transport_priority_mapping_high See NDDS_Transport_UDPv4_WAN_Property_t::transport_priority_mapping_high
dds.transport.UDPv4_WAN.builtin.send_ping See NDDS_Transport_UDPv4_WAN_Property_t::send_ping
dds.transport.UDPv4_WAN.builtin.force_interface_poll_detection See NDDS_Transport_UDPv4_WAN_Property_t::force_interface_poll_detection
dds.transport.UDPv4_WAN.builtin.interface_poll_period See NDDS_Transport_UDPv4_WAN_Property_t::interface_poll_period
dds.transport.UDPv4_WAN.builtin.protocol_overhead_max See NDDS_Transport_UDPv4_WAN_Property_t::protocol_overhead_max
dds.transport.UDPv4_WAN.builtin.disable_interface_tracking See NDDS_Transport_UDPv4_WAN_Property_t::disable_interface_tracking
dds.transport.UDPv4_WAN.builtin.public_address See NDDS_Transport_UDPv4_WAN_Property_t::public_address
dds.transport.UDPv4_WAN.builtin.comm_ports See NDDS_Transport_UDPv4_WAN_Property_t::comm_ports_list
dds.transport.UDPv4_WAN.builtin.port_offset See NDDS_Transport_UDPv4_WAN_Property_t::port_offset
dds.transport.UDPv4_WAN.builtin.binding_ping_period

See NDDS_Transport_UDPv4_WAN_Property_t::binding_ping_period

See also
NDDS_Transport_Support_set_builtin_transport_property()

Macro Definition Documentation

◆ NDDS_TRANSPORT_UDPV4_WAN_PROPERTY_DEFAULT

#define NDDS_TRANSPORT_UDPV4_WAN_PROPERTY_DEFAULT

Use this to initialize a NDDS_Transport_UDPv4_WAN_Property_t structure.

Function Documentation

◆ NDDS_Transport_UDPv4_WAN_new()

NDDS_Transport_Plugin * NDDS_Transport_UDPv4_WAN_new ( const struct NDDS_Transport_UDPv4_WAN_Property_t property_in)

Create an instance of a UDPv4_WAN Transport Plugin.

An application may create and register multiple instances of this Transport Plugin with RTI Connext. Multiple instances of the plugin may be useful for partitioning the network interfaces across multiple RTI Connext domains. However, note that the underlying transport, the operating system's IP layer, is still a "singleton." For example, if a unicast transport has already bound to a port, and another unicast transport tries to bind to the same port, the second attempt will fail.

The transport plugin honors the interface "white" and "black" lists specified in the NDDS_Transport_UDP_Property_t::parent:

The format of a string in these lists is assumed to be in standard IPv4 dot notation, possibly containing wildcards. For example:

  • 10.10.30.232
  • 10.10.*.*
  • 192.168.1.*
  • etc. Strings not in the correct format will be ignored.
Parameters
property_in<<in>> Desired behavior of this transport. May be NULL for default property.
Returns
A UDPv4_WAN Transport Plugin instance on success; or NULL on failure.

◆ NDDS_Transport_UDPv4_WAN_create()

NDDS_Transport_Plugin * NDDS_Transport_UDPv4_WAN_create ( NDDS_Transport_Address_t default_network_address_out,
const struct DDS_PropertyQosPolicy property_in 
)

Create an instance of a UDPv4_WAN Transport Plugin, using the PropertyQosPolicy.

An application may create and register multiple instances of this Transport Plugin with RTI Connext. Multiple instances of the plugin may be useful for partitioning the network interfaces across multiple RTI Connext domains. However, note that the underlying transport, the operating system's IP layer, is still a "singleton." For example, if a unicast transport has already bound to a port, and another unicast transport tries to bind to the same port, the second attempt will fail.

The transport plugin honors the interface "white" and "black" lists specified in the NDDS_Transport_UDPv4_WAN_Property_t::parent:

The format of a string in these lists is assumed to be in standard IPv4 dot notation, possibly containing wildcards. For example:

  • 10.10.30.232
  • 10.10.*.*
  • 192.168.1.*
  • etc. Strings not in the correct format will be ignored.
Parameters
default_network_address_out<<out>> Network address to be used when registering the transport.
property_in<<in>> Desired behavior of this transport as defined in the DDS_DomainParticipantQos::property.
Returns
A UDPv4_WAN Transport Plugin instance on success; or NULL on failure.

◆ NDDS_Transport_UDPv4_WAN_create_from_properties_with_prefix()

NDDS_Transport_Plugin * NDDS_Transport_UDPv4_WAN_create_from_properties_with_prefix ( NDDS_Transport_Address_t default_network_address_out,
const struct DDS_PropertyQosPolicy property_in,
const char *  propertyPrefix 
)

Create an instance of a UDPv4_WAN Transport Plugin, using the PropertyQosPolicy. Same as NDDS_Transport_UDPv4_WAN_create but with a prefix for the input properties. It is used to create pluggable transports that use an underlying UDP transport.

Parameters
default_network_address_out<<out>> Network address to be used when registering the transport.
property_in<<in>> Desired behavior of this transport as defined in the DDS_DomainParticipantQos::property.
propertyPrefixPrefix for the properties. Expected UDP properties have the form prefix.property_name