From 31a4804d71fe354198bc27e634e8cbcd373b5506 Mon Sep 17 00:00:00 2001 From: Jesus Perez Date: Wed, 28 Feb 2024 17:34:11 +0100 Subject: [PATCH 1/2] Refs #20508: Add wait_for_logical_port_negotiation_ms to transport descriptor Signed-off-by: Jesus Perez --- docs/03-exports/aliases-api.include | 1 + docs/fastdds/transport/tcp/tcp.rst | 6 + docs/fastdds/xml_configuration/transports.rst | 209 +++++++++--------- 3 files changed, 113 insertions(+), 103 deletions(-) diff --git a/docs/03-exports/aliases-api.include b/docs/03-exports/aliases-api.include index ef42b1460..b2bea2b85 100644 --- a/docs/03-exports/aliases-api.include +++ b/docs/03-exports/aliases-api.include @@ -632,6 +632,7 @@ .. |TCPTransportDescriptor::keep_alive_thread-api| replace:: :cpp:var:`keep_alive_thread` .. |TCPTransportDescriptor::accept_thread-api| replace:: :cpp:var:`accept_thread` .. |TCPTransportDescriptor::tls_config-api| replace:: :cpp:var:`tls_config` +.. |TCPTransportDescriptor::wait_for_logical_port_negotiation_ms-api| replace:: :cpp:var:`wait_for_logical_port_negotiation_ms` .. |TCPTransportDescriptor::TLSConfig-api| replace:: :cpp:struct:`TLSConfig` .. |TCPTransportDescriptor::TLSConfig::add_verify_mode-api| replace:: :cpp:func:`add_verify_mode()` diff --git a/docs/fastdds/transport/tcp/tcp.rst b/docs/fastdds/transport/tcp/tcp.rst index a033766fd..960a4e387 100644 --- a/docs/fastdds/transport/tcp/tcp.rst +++ b/docs/fastdds/transport/tcp/tcp.rst @@ -132,6 +132,12 @@ The following table describes the common data members for both TCPv4 and TCPv6. - |ThreadSettings| - - |ThreadSettings| for the threads processing incoming TCP connection requests. + * - |TCPTransportDescriptor::wait_for_logical_port_negotiation_ms-api| + - ``uint32_t`` + - 50 + - Time to wait for logical port negotiation (in ms). If a logical port is under negotiation, it waits for the + negotiation to finish up to this timeout before trying to send a message to that port. Zero value means waiting + indefinitely. .. note:: diff --git a/docs/fastdds/xml_configuration/transports.rst b/docs/fastdds/xml_configuration/transports.rst index be3e39010..35c480509 100644 --- a/docs/fastdds/xml_configuration/transports.rst +++ b/docs/fastdds/xml_configuration/transports.rst @@ -23,109 +23,112 @@ The following table lists all the available XML elements that can be defined wit element for the configuration of the transport layer. A more detailed explanation of each of these elements can be found in :ref:`comm-transports-configuration`. -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| Name | Description | Values | Default | -+===============================+====================================================+======================+==========+ -| ```` | Unique name to identify each transport | ``string`` | | -| | descriptor. | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Type of the transport descriptor. | UDPv4 | UDPv4 | -| | +----------------------+ | -| | | UDPv6 | | -| | +----------------------+ | -| | | TCPv4 | | -| | +----------------------+ | -| | | TCPv6 | | -| | +----------------------+ | -| | | SHM | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Size in bytes of the send socket buffer. |br| | ``uint32_t`` | 0 | -| | If the value is zero then *Fast DDS* will use |br| | | | -| | the system default socket size. | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Size in bytes of the reception socket |br| | ``uint32_t`` | 0 | -| | buffer. If the value is zero then *Fast DDS* |br| | | | -| | will use the system default socket size. | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | The maximum size in bytes of the transport's |br| | ``uint32_t`` | 65500 | -| | message buffer. | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Number of channels opened with each initial |br| | ``uint32_t`` | 4 | -| | remote peer. | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Allows defining an interfaces |whitelist|. | |whitelist| | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | *Time To Live* (**UDP only**). See |br| | ``uint8_t`` | 1 | -| | :ref:`transport_udp_udp`. | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Whether to set the non-blocking send mode on |br| | ``bool`` | ``false``| -| | the socket (**NOT available for SHM type**). See | | | -| | |br| :ref:`transport_udp_transportDescriptor` and | | | -| | |br| :ref:`transport_tcp_transportDescriptor`. | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Port used for output bound. |br| | ``uint16_t`` | 0 | -| | If this field isn't defined, the output port |br| | | | -| | will be random (**UDP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Public WAN address when using **TCPv4** |br| | IPv4 formatted |br| | | -| | **transports**. This field is optional if the |br| | ``string``: |br| | | -| | transport doesn't need to define a WAN |br| | ``XXX.XXX.XXX.XXX`` | | -| | address (**TCPv4 only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Frequency in milliseconds for sending | ``uint32_t`` | 50000 | -| | :ref:`RTCP ` |br| | | | -| | keep-alive requests (**TCP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Time in milliseconds since the last |br| | ``uint32_t`` | 10000 | -| | keep-alive request was sent to consider a |br| | | | -| | connection as broken (**TCP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | The maximum number of logical ports to try |br| | ``uint16_t`` | 100 | -| | during :ref:`RTCP` | | | -| | negotiations (**TCP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | The maximum number of logical ports per |br| | ``uint16_t`` | 20 | -| | request to try during | | | -| | :ref:`RTCP` negotiations |br| | | | -| | (**TCP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Increment between logical ports to try during |br| | ``uint16_t`` | 2 | -| | :ref:`RTCP` negotiation |br| | | | -| | (**TCP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Local port to work as TCP acceptor for input |br| | ``List `` | | -| | connections. If not set, the transport will |br| | | | -| | work as TCP client only. If set to 0, an |br| | | | -| | available port will be automatically assigned |br| | | | -| | (**TCP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Allows to define TLS related parameters and |br| | :ref:`tcp-tls` | | -| | options (**TCP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Calculates the Cyclic Redundancy Code (CRC) |br| | ``bool`` | ``true`` | -| | for error control (**TCP only**). |br| | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Check the CRC for error control (**TCP** |br| | ``bool`` | ``true`` | -| | **only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Socket option for disabling the Nagle |br| | ``bool`` | ``false``| -| | algorithm. (**TCP only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Size (in bytes) of the shared-memory segment. |br| | ``uint32_t`` | 262144 | -| | (Optional, **SHM only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Capacity (in number of messages) available to |br| | ``uint32_t`` | 512 | -| | every Listener (Optional, **SHM only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ````| Maximum time-out (in milliseconds) used when |br| | ``uint32_t`` | 1000 | -| | checking whether a Listener is alive |br| | | | -| | (Optional, **SHM only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Complete path (including file) where RTPS |br| | ``string`` | Empty | -| | messages will be stored for debugging |br| | | | -| | purposes. An empty string indicates no trace |br| | | | -| | will be performed (Optional, **SHM only**). | | | -+-------------------------------+----------------------------------------------------+----------------------+----------+ ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| Name | Description | Values | Default | ++===========================================+====================================================+======================+==========+ +| ```` | Unique name to identify each transport | ``string`` | | +| | descriptor. | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Type of the transport descriptor. | UDPv4 | UDPv4 | +| | +----------------------+ | +| | | UDPv6 | | +| | +----------------------+ | +| | | TCPv4 | | +| | +----------------------+ | +| | | TCPv6 | | +| | +----------------------+ | +| | | SHM | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Size in bytes of the send socket buffer. |br| | ``uint32_t`` | 0 | +| | If the value is zero then *Fast DDS* will use |br| | | | +| | the system default socket size. | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Size in bytes of the reception socket |br| | ``uint32_t`` | 0 | +| | buffer. If the value is zero then *Fast DDS* |br| | | | +| | will use the system default socket size. | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | The maximum size in bytes of the transport's |br| | ``uint32_t`` | 65500 | +| | message buffer. | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Number of channels opened with each initial |br| | ``uint32_t`` | 4 | +| | remote peer. | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Allows defining an interfaces |whitelist|. | |whitelist| | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | *Time To Live* (**UDP only**). See |br| | ``uint8_t`` | 1 | +| | :ref:`transport_udp_udp`. | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Whether to set the non-blocking send mode on |br| | ``bool`` | ``false``| +| | the socket (**NOT available for SHM type**). See | | | +| | |br| :ref:`transport_udp_transportDescriptor` and | | | +| | |br| :ref:`transport_tcp_transportDescriptor`. | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Port used for output bound. |br| | ``uint16_t`` | 0 | +| | If this field isn't defined, the output port |br| | | | +| | will be random (**UDP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Public WAN address when using **TCPv4** |br| | IPv4 formatted |br| | | +| | **transports**. This field is optional if the |br| | ``string``: |br| | | +| | transport doesn't need to define a WAN |br| | ``XXX.XXX.XXX.XXX`` | | +| | address (**TCPv4 only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Frequency in milliseconds for sending | ``uint32_t`` | 50000 | +| | :ref:`RTCP ` |br| | | | +| | keep-alive requests (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Time in milliseconds since the last |br| | ``uint32_t`` | 10000 | +| | keep-alive request was sent to consider a |br| | | | +| | connection as broken (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | The maximum number of logical ports to try |br| | ``uint16_t`` | 100 | +| | during :ref:`RTCP` | | | +| | negotiations (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | The maximum number of logical ports per |br| | ``uint16_t`` | 20 | +| | request to try during | | | +| | :ref:`RTCP` negotiations |br| | | | +| | (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Increment between logical ports to try during |br| | ``uint16_t`` | 2 | +| | :ref:`RTCP` negotiation |br| | | | +| | (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Local port to work as TCP acceptor for input |br| | ``List `` | | +| | connections. If not set, the transport will |br| | | | +| | work as TCP client only. If set to 0, an |br| | | | +| | available port will be automatically assigned |br| | | | +| | (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Allows to define TLS related parameters and |br| | :ref:`tcp-tls` | | +| | options (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Calculates the Cyclic Redundancy Code (CRC) |br| | ``bool`` | ``true`` | +| | for error control (**TCP only**). |br| | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Check the CRC for error control (**TCP** |br| | ``bool`` | ``true`` | +| | **only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Socket option for disabling the Nagle |br| | ``bool`` | ``false``| +| | algorithm. (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ````| Time to wait for logical port negotiation (in ms) | ``uint32_t`` | ``50`` | +| | |br| (**TCP only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Size (in bytes) of the shared-memory segment. |br| | ``uint32_t`` | 262144 | +| | (Optional, **SHM only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Capacity (in number of messages) available to |br| | ``uint32_t`` | 512 | +| | every Listener (Optional, **SHM only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Maximum time-out (in milliseconds) used when |br| | ``uint32_t`` | 1000 | +| | checking whether a Listener is alive |br| | | | +| | (Optional, **SHM only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Complete path (including file) where RTPS |br| | ``string`` | Empty | +| | messages will be stored for debugging |br| | | | +| | purposes. An empty string indicates no trace |br| | | | +| | will be performed (Optional, **SHM only**). | | | ++-------------------------------------------+----------------------------------------------------+----------------------+----------+ The following XML code shows an example of transport protocol configuration using all configurable parameters. More examples of transports descriptors can be found in the :ref:`comm-transports-configuration` section. From de5706afd0c9d022f70185a465e0d8df9636e3c0 Mon Sep 17 00:00:00 2001 From: Jesus Perez Date: Thu, 29 Feb 2024 11:52:24 +0100 Subject: [PATCH 2/2] Refs #20508: Reuse unused transport descriptor tcp_negotiation_timeout Signed-off-by: Jesus Perez --- docs/03-exports/aliases-api.include | 2 +- docs/fastdds/transport/tcp/tcp.rst | 9 +- docs/fastdds/xml_configuration/transports.rst | 212 +++++++++--------- 3 files changed, 112 insertions(+), 111 deletions(-) diff --git a/docs/03-exports/aliases-api.include b/docs/03-exports/aliases-api.include index b2bea2b85..19eb546be 100644 --- a/docs/03-exports/aliases-api.include +++ b/docs/03-exports/aliases-api.include @@ -632,7 +632,7 @@ .. |TCPTransportDescriptor::keep_alive_thread-api| replace:: :cpp:var:`keep_alive_thread` .. |TCPTransportDescriptor::accept_thread-api| replace:: :cpp:var:`accept_thread` .. |TCPTransportDescriptor::tls_config-api| replace:: :cpp:var:`tls_config` -.. |TCPTransportDescriptor::wait_for_logical_port_negotiation_ms-api| replace:: :cpp:var:`wait_for_logical_port_negotiation_ms` +.. |TCPTransportDescriptor::tcp_negotiation_timeout-api| replace:: :cpp:var:`tcp_negotiation_timeout` .. |TCPTransportDescriptor::TLSConfig-api| replace:: :cpp:struct:`TLSConfig` .. |TCPTransportDescriptor::TLSConfig::add_verify_mode-api| replace:: :cpp:func:`add_verify_mode()` diff --git a/docs/fastdds/transport/tcp/tcp.rst b/docs/fastdds/transport/tcp/tcp.rst index 960a4e387..4b9a82fb3 100644 --- a/docs/fastdds/transport/tcp/tcp.rst +++ b/docs/fastdds/transport/tcp/tcp.rst @@ -132,12 +132,13 @@ The following table describes the common data members for both TCPv4 and TCPv6. - |ThreadSettings| - - |ThreadSettings| for the threads processing incoming TCP connection requests. - * - |TCPTransportDescriptor::wait_for_logical_port_negotiation_ms-api| + * - |TCPTransportDescriptor::tcp_negotiation_timeout-api| - ``uint32_t`` - - 50 + - 0 - Time to wait for logical port negotiation (in ms). If a logical port is under negotiation, it waits for the - negotiation to finish up to this timeout before trying to send a message to that port. Zero value means waiting - indefinitely. + negotiation to finish up to this timeout before trying to send a message to that port. Setting this option to + non-zero values increases the discovery time. Setting it to zero means no wait but could lead to loss of first + messages. .. note:: diff --git a/docs/fastdds/xml_configuration/transports.rst b/docs/fastdds/xml_configuration/transports.rst index 35c480509..3982222d4 100644 --- a/docs/fastdds/xml_configuration/transports.rst +++ b/docs/fastdds/xml_configuration/transports.rst @@ -23,112 +23,112 @@ The following table lists all the available XML elements that can be defined wit element for the configuration of the transport layer. A more detailed explanation of each of these elements can be found in :ref:`comm-transports-configuration`. -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| Name | Description | Values | Default | -+===========================================+====================================================+======================+==========+ -| ```` | Unique name to identify each transport | ``string`` | | -| | descriptor. | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Type of the transport descriptor. | UDPv4 | UDPv4 | -| | +----------------------+ | -| | | UDPv6 | | -| | +----------------------+ | -| | | TCPv4 | | -| | +----------------------+ | -| | | TCPv6 | | -| | +----------------------+ | -| | | SHM | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Size in bytes of the send socket buffer. |br| | ``uint32_t`` | 0 | -| | If the value is zero then *Fast DDS* will use |br| | | | -| | the system default socket size. | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Size in bytes of the reception socket |br| | ``uint32_t`` | 0 | -| | buffer. If the value is zero then *Fast DDS* |br| | | | -| | will use the system default socket size. | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | The maximum size in bytes of the transport's |br| | ``uint32_t`` | 65500 | -| | message buffer. | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Number of channels opened with each initial |br| | ``uint32_t`` | 4 | -| | remote peer. | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Allows defining an interfaces |whitelist|. | |whitelist| | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | *Time To Live* (**UDP only**). See |br| | ``uint8_t`` | 1 | -| | :ref:`transport_udp_udp`. | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Whether to set the non-blocking send mode on |br| | ``bool`` | ``false``| -| | the socket (**NOT available for SHM type**). See | | | -| | |br| :ref:`transport_udp_transportDescriptor` and | | | -| | |br| :ref:`transport_tcp_transportDescriptor`. | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Port used for output bound. |br| | ``uint16_t`` | 0 | -| | If this field isn't defined, the output port |br| | | | -| | will be random (**UDP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Public WAN address when using **TCPv4** |br| | IPv4 formatted |br| | | -| | **transports**. This field is optional if the |br| | ``string``: |br| | | -| | transport doesn't need to define a WAN |br| | ``XXX.XXX.XXX.XXX`` | | -| | address (**TCPv4 only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Frequency in milliseconds for sending | ``uint32_t`` | 50000 | -| | :ref:`RTCP ` |br| | | | -| | keep-alive requests (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Time in milliseconds since the last |br| | ``uint32_t`` | 10000 | -| | keep-alive request was sent to consider a |br| | | | -| | connection as broken (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | The maximum number of logical ports to try |br| | ``uint16_t`` | 100 | -| | during :ref:`RTCP` | | | -| | negotiations (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | The maximum number of logical ports per |br| | ``uint16_t`` | 20 | -| | request to try during | | | -| | :ref:`RTCP` negotiations |br| | | | -| | (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Increment between logical ports to try during |br| | ``uint16_t`` | 2 | -| | :ref:`RTCP` negotiation |br| | | | -| | (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Local port to work as TCP acceptor for input |br| | ``List `` | | -| | connections. If not set, the transport will |br| | | | -| | work as TCP client only. If set to 0, an |br| | | | -| | available port will be automatically assigned |br| | | | -| | (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Allows to define TLS related parameters and |br| | :ref:`tcp-tls` | | -| | options (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Calculates the Cyclic Redundancy Code (CRC) |br| | ``bool`` | ``true`` | -| | for error control (**TCP only**). |br| | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Check the CRC for error control (**TCP** |br| | ``bool`` | ``true`` | -| | **only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Socket option for disabling the Nagle |br| | ``bool`` | ``false``| -| | algorithm. (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ````| Time to wait for logical port negotiation (in ms) | ``uint32_t`` | ``50`` | -| | |br| (**TCP only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Size (in bytes) of the shared-memory segment. |br| | ``uint32_t`` | 262144 | -| | (Optional, **SHM only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Capacity (in number of messages) available to |br| | ``uint32_t`` | 512 | -| | every Listener (Optional, **SHM only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Maximum time-out (in milliseconds) used when |br| | ``uint32_t`` | 1000 | -| | checking whether a Listener is alive |br| | | | -| | (Optional, **SHM only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ -| ```` | Complete path (including file) where RTPS |br| | ``string`` | Empty | -| | messages will be stored for debugging |br| | | | -| | purposes. An empty string indicates no trace |br| | | | -| | will be performed (Optional, **SHM only**). | | | -+-------------------------------------------+----------------------------------------------------+----------------------+----------+ ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| Name | Description | Values | Default | ++===============================+====================================================+======================+==========+ +| ```` | Unique name to identify each transport | ``string`` | | +| | descriptor. | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Type of the transport descriptor. | UDPv4 | UDPv4 | +| | +----------------------+ | +| | | UDPv6 | | +| | +----------------------+ | +| | | TCPv4 | | +| | +----------------------+ | +| | | TCPv6 | | +| | +----------------------+ | +| | | SHM | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Size in bytes of the send socket buffer. |br| | ``uint32_t`` | 0 | +| | If the value is zero then *Fast DDS* will use |br| | | | +| | the system default socket size. | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Size in bytes of the reception socket |br| | ``uint32_t`` | 0 | +| | buffer. If the value is zero then *Fast DDS* |br| | | | +| | will use the system default socket size. | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | The maximum size in bytes of the transport's |br| | ``uint32_t`` | 65500 | +| | message buffer. | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Number of channels opened with each initial |br| | ``uint32_t`` | 4 | +| | remote peer. | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Allows defining an interfaces |whitelist|. | |whitelist| | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | *Time To Live* (**UDP only**). See |br| | ``uint8_t`` | 1 | +| | :ref:`transport_udp_udp`. | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Whether to set the non-blocking send mode on |br| | ``bool`` | ``false``| +| | the socket (**NOT available for SHM type**). See | | | +| | |br| :ref:`transport_udp_transportDescriptor` and | | | +| | |br| :ref:`transport_tcp_transportDescriptor`. | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Port used for output bound. |br| | ``uint16_t`` | 0 | +| | If this field isn't defined, the output port |br| | | | +| | will be random (**UDP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Public WAN address when using **TCPv4** |br| | IPv4 formatted |br| | | +| | **transports**. This field is optional if the |br| | ``string``: |br| | | +| | transport doesn't need to define a WAN |br| | ``XXX.XXX.XXX.XXX`` | | +| | address (**TCPv4 only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Frequency in milliseconds for sending | ``uint32_t`` | 50000 | +| | :ref:`RTCP ` |br| | | | +| | keep-alive requests (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Time in milliseconds since the last |br| | ``uint32_t`` | 10000 | +| | keep-alive request was sent to consider a |br| | | | +| | connection as broken (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | The maximum number of logical ports to try |br| | ``uint16_t`` | 100 | +| | during :ref:`RTCP` | | | +| | negotiations (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | The maximum number of logical ports per |br| | ``uint16_t`` | 20 | +| | request to try during | | | +| | :ref:`RTCP` negotiations |br| | | | +| | (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Increment between logical ports to try during |br| | ``uint16_t`` | 2 | +| | :ref:`RTCP` negotiation |br| | | | +| | (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Local port to work as TCP acceptor for input |br| | ``List `` | | +| | connections. If not set, the transport will |br| | | | +| | work as TCP client only. If set to 0, an |br| | | | +| | available port will be automatically assigned |br| | | | +| | (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Allows to define TLS related parameters and |br| | :ref:`tcp-tls` | | +| | options (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Calculates the Cyclic Redundancy Code (CRC) |br| | ``bool`` | ``true`` | +| | for error control (**TCP only**). |br| | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Check the CRC for error control (**TCP** |br| | ``bool`` | ``true`` | +| | **only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Socket option for disabling the Nagle |br| | ``bool`` | ``false``| +| | algorithm. (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Time to wait for logical port negotiation (in ms) | ``uint32_t`` | ``0`` | +| | |br| (**TCP only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Size (in bytes) of the shared-memory segment. |br| | ``uint32_t`` | 262144 | +| | (Optional, **SHM only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Capacity (in number of messages) available to |br| | ``uint32_t`` | 512 | +| | every Listener (Optional, **SHM only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ````| Maximum time-out (in milliseconds) used when |br| | ``uint32_t`` | 1000 | +| | checking whether a Listener is alive |br| | | | +| | (Optional, **SHM only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ +| ```` | Complete path (including file) where RTPS |br| | ``string`` | Empty | +| | messages will be stored for debugging |br| | | | +| | purposes. An empty string indicates no trace |br| | | | +| | will be performed (Optional, **SHM only**). | | | ++-------------------------------+----------------------------------------------------+----------------------+----------+ The following XML code shows an example of transport protocol configuration using all configurable parameters. More examples of transports descriptors can be found in the :ref:`comm-transports-configuration` section.