Properties for NDDS_Transport_WAN_Property_t lists the properties that you can set for the WAN Transport.
Property Name (prefix with ‘dds.transport.WAN.wan1.’)1 Assuming you used ‘dds.transport.WAN.wan1’ as the alias to load the plugin. If not, change the prefix to match the string used with dds.transport.load_plugins. This prefix must begin with 'dds.transport.' |
Property Value Description |
dds.transport.load_plugins |
Required Comma-separated strings indicating the prefix names of all plugins that will be loaded by Connext DDS. You will use this string as the prefix to the property names. For example: “dds.transport.WAN.wan1". (This assumes you used ‘dds.transport.WAN.wan1’ as the alias to load the plugin. If not, change the prefix to match the string used with dds.transport.load_plugins.) This prefix must begin with 'dds.transport.' Note: You can load up to 8 plugins. |
library |
Required Must set to "libnddstransportwan.so" (for UNIX/Solaris systems) or "nddstransportwan.dll" (for Windows system). This library and the dependent OpenSSL libraries need to be in your library search path (pointed to by the environment variable LD_LIBRARY_PATH on UNIX/Solaris systems, Path on Windows systems, LIBPATH on AIX systems, DYLD_LIBRARY_PATH on Mac OS systems). |
create_function |
Required Must be "NDDS_Transport_WAN_create". |
aliases |
Used to register the transport plugin returned by NDDS_Transport_WAN_create() (as specified by <WAN_prefix>.create_function) to the DomainParticipant. Aliases should be specified as a comma-separated string, with each comma delimiting an alias. If it is not specified, the prefix—without the leading "dds.transport"—is used as the default alias for the plugin. For example, if the <WAN_prefix> is "dds.transport.mytransport", the default alias for the plugin is "mytransport". |
verbosity |
Specifies the verbosity of log messages from the transport. Possible values:
|
security_verbosity |
Specifies the verbosity of security related log messages from the transport. These are usually messages generated by OpenSSL. Possible values:
Default: If not set, the value is inherited from the verbosity property |
parent.parent.address_bit_count |
Number of bits in a 16-byte address that are used by the transport. Should be between 0 and 128. For example, for an address range of 0-255, the address_bit_count should be set to 8. |
parent.parent.properties_ |
A bitmap that defines various properties of the transport to the Connext DDS core. Currently, the only property supported is whether or not the transport plugin will always loan a buffer when Connext DDS tries to receive a message using the plugin. This is in support of a zero-copy interface. |
parent.parent.gather_send_ |
Specifies the maximum number of buffers that Connext DDS can pass to the send() function of the transport plugin. The transport plugin send() API supports a gather-send concept, where the send() call can take several discontiguous buffers, assemble and send them in a single message. This enables Connext DDS to send a message from parts obtained from different sources without first having to copy the parts into a single contiguous buffer. However, most transports that support a gather-send concept have an upper limit on the number of buffers that can be gathered and sent. Setting this value will prevent Connext DDS from trying to gather too many buffers into a send call for the transport plugin. Connext DDS requires all transport-plugin implementations to support a gather-send of least a minimum number of buffers. This minimum number is defined as NDDS_TRANSPORT_-PROPERTY_GATHER_SEND_BUFFER_COUNT_MIN. |
The maximum size of a message in bytes that can be sent or received by the transport plugin. This value must be set before the transport plugin is registered, so that Connext DDS can properly use the plugin. |
|
A list of strings, each identifying a range of interface addresses. Interfaces must be specified as comma-separated strings, with each comma delimiting an interface. If the list is non-empty, this "white" list is applied before the parent.parent.deny_interfaces list. It is up to the transport plugin to interpret the list of strings passed in. Usually this interpretation will be consistent with NDDS_Transport_String_To_Address_Fcn_cEA(). This property is not interpreted by the Connext DDS core; it is provided merely as a convenient and standardized way to specify the interfaces for the benefit of the transport plugin developer and user. You must manage the memory of the list. The memory may be freed after the DomainParticipant is enabled. |
|
A list of strings, each identifying a range of interface addresses. If the list is non-empty, deny the use of these interfaces. Interfaces must be specified as comma-separated strings, with each comma delimiting an interface. This "black" list is applied after the parent.parent.allow_interfaces list and filters out the interfaces that should not be used. It is up to the transport plugin to interpret the list of strings passed in. Usually this interpretation will be consistent with NDDS_Transport_String_To_Address_Fcn_cEA(). This property is not interpreted by the Connext DDS core; it is provided merely as a convenient and standardized way to specify the interfaces for the benefit of the transport plugin developer and user. You must manage the memory of the list. The memory may be freed after the DomainParticipant is enabled. |
|
parent.send_socket_buffer_size |
Size in bytes of the send buffer of a socket used for sending. On most operating systems, setsockopt() will be called to set the SENDBUF to the value of this parameter. This value must be greater than or equal to The maximum value is operating system-dependent. If NDDS_TRANSPORT_UDPV4_SOCKET_BUFFER_SIZE_OS_DEFAULT, then setsockopt() (or equivalent) will not be called to size the send buffer of the socket. |
parent.recv_socket_buffer_size |
Size in bytes of the receive buffer of a socket used for receiving. On most operating systems, setsockopt() will be called to set the RECVBUF to the value of this parameter. This value must be greater than or equal to parent.parent.message_size_max. The maximum value is operating system-dependent. If NDDS_TRANSPORT_UDPV4_SOCKET_BUFFER_SIZE_OS_DEFAULT, then setsockopt() (or equivalent) will not be called to size the receive buffer of the socket. |
parent.unicast_enabled |
Allows the transport plugin to use unicast UDP for sending and receiving. By default, it will be turned on. Also by default, it will use all the allowed network interfaces that it finds up and running when the plugin is instanced. |
parent.ignore_loopback_interface |
Prevents the transport plugin from using the IP loopback interface. Three values are allowed:
|
DEPRECATED parent.ignore_nonrunning_ |
This property is deprecated. Prevents the transport plugin from using a network interface that is not reported as RUNNING by the operating system. The transport checks the flags reported by the operating system for each network interface upon initialization. An interface which is not reported as UP will not be used. This property allows the same check to be extended to the IFF_RUNNING flag implemented by some operating systems. The RUNNING flag is defined to mean that "all resources are allocated", and may be off if there is no link detected, e.g., the network cable is unplugged. Two values are allowed:
|
parent.no_zero_copy |
Prevents the transport plugin from doing a zero copy. By default, this plugin will use the zero copy on OSs that offer it. While this is good for performance, it may sometime tax the OS resources in a manner that cannot be overcome by the application. The best example is if the hardware/device driver lends the buffer to the application itself. If the application does not return the loaned buffers soon enough, the node may error or malfunction. In case you cannot reconfigure the H/W, device driver, or the OS to allow the zero copy feature to work for your application, you may have no choice but to turn off zero copy use. By default this is set to 0, so Connext DDS will use the zero-copy API if offered by the OS. |
parent.send_blocking |
CHANGING THIS FROM THE DEFAULT CAN CAUSE SIGNIFICANT PERFORMANCE PROBLEMS. Controls the blocking behavior of send sockets. Two values are defined:
|
parent.transport_priority_mask |
Mask for the transport priority field. This is used in conjunction with transport_priority_mapping_low/high to define the mapping from DDS transport priority to the IPv4 TOS field. Defines a contiguous region of bits in the 32-bit transport priority value that is used to generate values for the IPv4 TOS field on an outgoing socket. For example, the value 0x0000ff00 causes bits 9-16 (8 bits) to be used in the mapping. The value will be scaled from the mask range (0x0000 - 0xff00 in this case) to the range specified by low and high. If the mask is set to zero, then the transport will not set IPv4 TOS for send sockets. |
parent.transport_priority_ |
Sets the low and high values of the output range to IPv4 TOS. These values are used in conjunction with transport_priority_mask to define the mapping from DDS transport priority to the IPv4 TOS field. Defines the low and high values of the output range for scaling. Note that IPv4 TOS is generally an 8-bit value. |
parent.transport_priority_ |
|
enable_security |
Required if you want to use security. |
recv_decode_buffer_size |
Size of buffer for decoding packets from wire. An extra buffer is required for storage of encrypted data. The minimum value for this property is parent.parent.message_size_max. |
port_offset |
Port offset to allow coexistence with non-secure UDP transport. |
dtls_handshake_resend_interval |
DTLS handshake retransmission interval in milliseconds |
dtls_connection_liveliness_ |
Liveliness interval (multiple of resend interval) The connection will be dropped if no message from the peer is received in this amount of time. This enables cleaning up state for peers that are no longer responding. A secure keep-alive message will be sent every half-interval if no other sends have occurred for a given DTLS connection during that time. Default: 60 ms |
A string that specifies the name of file containing Certificate Authority certificates. File should be in PEM format. See the OpenSSL manual page for SSL_load_verify_locations for more information. If you want to use security, tls.verify.ca_file or tls.verify.ca_path must be specified; both may be specified. |
|
A string that specifies paths to directories containing Certificate Authority certificates. Files should be in PEM format, and follow the OpenSSL-required naming conventions. See the OpenSSL manual page for SSL_CTX_load_verify_locations for more information. If you want to use security, tls.verify.ca_file or tls.verify.ca_path must be specified; both may be specified. |
|
tls.verify.verify_depth |
Maximum certificate chain length for verification. |
tls.verify.verify_peer |
If non-zero, use mutual authentication when performing TLS hand- shake (default). If zero, only the reader side will present a certificate, which will be verified by the writer side. |
tls.verify.callback |
This can be set to one of three values:
|
tls.cipher.cipher_list |
List of available (D)TLS ciphers. See the OpenSSL manual page for SSL_set_cipher_list for more information on the format of this string. |
tls.cipher.dh_param_files |
List of available Diffie-Hellman (DH) key files. For example: "foo.h:2048,bar.h:1024" means: dh_param_files[0].file = foo.pem, dh_param_files[0].bits = 2048, dh_param_files[1].file = bar.pem, dh_param_files[1].bits = 1024 |
tls.cipher.engine_id |
String ID of OpenSSL cipher engine to request. |
tls.identity.certificate_chain_file |
Required if you want to use security. A string that specifies the name of a file containing an identifying certificate chain (in PEM format). An identifying certificate is required for secure communication. The file must be sorted starting with the certificate to the highest level (root CA). If no private key is specified, this file will be used to load a non-RSA private key. |
tls.identity.private_key_password |
A string that specifies the password for private key. |
tls.identity.private_key_file |
A string that specifies that name of a file containing private key (in PEM format). If no private key is specified (all values are NULL), this value will default to the same file as the specified certificate chain file. |
tls.identity.rsa_private_key_file |
A string that specifies that name of a file containing an RSA private key (in PEM format). |
transport_instance_id[0] to |
Required A set of comma-separated values to specify the elements of the array. This value must be unique for all transport instances communicating with the same WAN Rendezvous Server. If less than the full array is specified, it will be right-aligned. For example, the string "01,02" results in the array being set to: |
interface_address |
Locator, as a string |
server |
Required Server locator, as a string. |
server_port |
Server port number. |
stun_retransmission_interval |
STUN request messages requiring a response are resent with this interval. The interval is doubled after each retransmission. Specified in msec. |
stun_number_of_retransmissions |
Maximum number of times STUN messages are resent unless a response is received. |
stun_liveliness_period |
Period at which messages are sent to peers to keep NAT holes open; and to the WAN server to refresh bound ports. Specified in msec. |
© 2018 RTI