From 6c2c47ab1ce092b5e989cbf820dd98f3758bffca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jes=C3=BAs=20P=C3=A9rez?= <78275223+jepemi@users.noreply.github.com> Date: Wed, 14 Feb 2024 20:15:20 +0100 Subject: [PATCH] Update TCP documentation (#654) * Refs #20314: Update TCP LAN example Signed-off-by: Jesus Perez * Refs #20314: Update TCP WAN example Signed-off-by: Jesus Perez * Refs #20314: Update TCP TLS example Signed-off-by: Jesus Perez * Refs #20314: Minor fixes Signed-off-by: Jesus Perez * Refs #20314: Extend WAN description, update image and modify examples Signed-off-by: Jesus Perez --------- Signed-off-by: Jesus Perez --- code/DDSCodeTester.cpp | 87 ++++- code/XMLTester.xml | 175 ++++++++++- docs/01-figures/TCP_WAN.png | Bin 42014 -> 81908 bytes docs/01-figures/TCP_WAN.svg | 489 ----------------------------- docs/fastdds/transport/tcp/tcp.rst | 63 +++- 5 files changed, 303 insertions(+), 511 deletions(-) delete mode 100644 docs/01-figures/TCP_WAN.svg diff --git a/code/DDSCodeTester.cpp b/code/DDSCodeTester.cpp index deee1204c..c37b28245 100644 --- a/code/DDSCodeTester.cpp +++ b/code/DDSCodeTester.cpp @@ -4647,7 +4647,6 @@ void dds_transport_examples () // Create a descriptor for the new transport. auto tcp_transport = std::make_shared(); tcp_transport->add_listener_port(5100); - tcp_transport->set_WAN_address("80.80.99.45"); // [OPTIONAL] ThreadSettings configuration tcp_transport->default_reception_threads(eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}); @@ -4661,10 +4660,12 @@ void dds_transport_examples () // Avoid using the default transport qos.transport().use_builtin_transports = false; + // [OPTIONAL] Set unicast locators eprosima::fastrtps::rtps::Locator_t locator; - eprosima::fastrtps::rtps::IPLocator::setIPv4(locator, "80.80.99.45"); - eprosima::fastrtps::rtps::IPLocator::setWan(locator, "80.80.99.45"); + locator.kind = LOCATOR_KIND_TCPv4; + eprosima::fastrtps::rtps::IPLocator::setIPv4(locator, "192.168.1.10"); eprosima::fastrtps::rtps::IPLocator::setPhysicalPort(locator, 5100); + // [OPTIONAL] Logical port default value is 0, automatically assigned. eprosima::fastrtps::rtps::IPLocator::setLogicalPort(locator, 5100); qos.wire_protocol().builtin.metatrafficUnicastLocatorList.push_back(locator); @@ -4693,14 +4694,89 @@ void dds_transport_examples () // Set initial peers. eprosima::fastrtps::rtps::Locator_t initial_peer_locator; initial_peer_locator.kind = LOCATOR_KIND_TCPv4; - eprosima::fastrtps::rtps::IPLocator::setIPv4(initial_peer_locator, "80.80.99.45"); + eprosima::fastrtps::rtps::IPLocator::setIPv4(initial_peer_locator, "192.168.1.10"); eprosima::fastrtps::rtps::IPLocator::setPhysicalPort(initial_peer_locator, 5100); + // If the logical port is set in the server side, it must be also set here with the same value. + // If not set in the server side in a unicast locator, do not set it here. eprosima::fastrtps::rtps::IPLocator::setLogicalPort(initial_peer_locator, 5100); qos.wire_protocol().builtin.initialPeersList.push_back(initial_peer_locator); + //!-- + } + + { + //CONF-TCP-TRANSPORT-SETTING-WAN-SERVER + eprosima::fastdds::dds::DomainParticipantQos qos; + + // Create a descriptor for the new transport. + auto tcp_transport = std::make_shared(); + tcp_transport->add_listener_port(5100); + tcp_transport->set_WAN_address("80.80.99.45"); + + // [OPTIONAL] ThreadSettings configuration + tcp_transport->default_reception_threads(eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}); + tcp_transport->set_thread_config_for_port(12345, eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}); + tcp_transport->keep_alive_thread = eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}; + tcp_transport->accept_thread = eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}; + + // Link the Transport Layer to the Participant. + qos.transport().user_transports.push_back(tcp_transport); // Avoid using the default transport qos.transport().use_builtin_transports = false; + + // [OPTIONAL] Set unicast locators (do not use setWAN(), set_WAN_address() overwrites it) + eprosima::fastrtps::rtps::Locator_t locator; + locator.kind = LOCATOR_KIND_TCPv4; + // [RECOMMENDED] Use the LAN address of the server + eprosima::fastrtps::rtps::IPLocator::setIPv4(locator, "192.168.1.10"); + // [ALTERNATIVE] Use server's WAN address. In that case, initial peers must be configured + // only with server's WAN address. + // eprosima::fastrtps::rtps::IPLocator::setIPv4(locator, "80.80.99.45"); + eprosima::fastrtps::rtps::IPLocator::setPhysicalPort(locator, 5100); + // [OPTIONAL] Logical port default value is 0, automatically assigned. + eprosima::fastrtps::rtps::IPLocator::setLogicalPort(locator, 5100); + + qos.wire_protocol().builtin.metatrafficUnicastLocatorList.push_back(locator); + qos.wire_protocol().default_unicast_locator_list.push_back(locator); + //!-- + } + + { + //CONF-TCP-TRANSPORT-SETTING-WAN-CLIENT + eprosima::fastdds::dds::DomainParticipantQos qos; + + // Disable the built-in Transport Layer. + qos.transport().use_builtin_transports = false; + + // Create a descriptor for the new transport. + // Do not configure any listener port + auto tcp_transport = std::make_shared(); + // [RECOMMENDED] Use client's WAN address if there are more clients in other local networks. + tcp_transport->set_WAN_address("80.80.99.47"); + qos.transport().user_transports.push_back(tcp_transport); + + // [OPTIONAL] ThreadSettings configuration + tcp_transport->default_reception_threads(eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}); + tcp_transport->set_thread_config_for_port(12345, eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}); + tcp_transport->keep_alive_thread = eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}; + tcp_transport->accept_thread = eprosima::fastdds::rtps::ThreadSettings{-1, 0, 0, -1}; + + // Set initial peers. + eprosima::fastrtps::rtps::Locator_t initial_peer_locator; + initial_peer_locator.kind = LOCATOR_KIND_TCPv4; + // [RECOMMENDED] Use both WAN and LAN server addresses + eprosima::fastrtps::rtps::IPLocator::setIPv4(initial_peer_locator, "192.168.1.10"); + eprosima::fastrtps::rtps::IPLocator::setWan(initial_peer_locator, "80.80.99.45"); + // [ALTERNATIVE] Use server's WAN address only. Valid if server specified its unicast locators + // with its LAN or WAN address. + // eprosima::fastrtps::rtps::IPLocator::setIPv4(initial_peer_locator, "80.80.99.45"); + eprosima::fastrtps::rtps::IPLocator::setPhysicalPort(initial_peer_locator, 5100); + // If the logical port is set in the server side, it must be also set here with the same value. + // If not set in the server side in a unicast locator, do not set it here. + eprosima::fastrtps::rtps::IPLocator::setLogicalPort(initial_peer_locator, 5100); + + qos.wire_protocol().builtin.initialPeersList.push_back(initial_peer_locator); //!-- } @@ -4745,7 +4821,6 @@ void dds_transport_examples () tls_transport->sendBufferSize = 9216; tls_transport->receiveBufferSize = 9216; tls_transport->add_listener_port(5100); - tls_transport->set_WAN_address("80.80.99.45"); // Create the TLS configuration using TLSOptions = eprosima::fastdds::rtps::TCPTransportDescriptor::TLSConfig::TLSOptions; @@ -4770,7 +4845,7 @@ void dds_transport_examples () // Set initial peers. Locator_t initial_peer_locator; initial_peer_locator.kind = LOCATOR_KIND_TCPv4; - IPLocator::setIPv4(initial_peer_locator, "80.80.99.45"); + IPLocator::setIPv4(initial_peer_locator, "192.168.1.10"); initial_peer_locator.port = 5100; qos.wire_protocol().builtin.initialPeersList.push_back(initial_peer_locator); diff --git a/code/XMLTester.xml b/code/XMLTester.xml index 177f965a5..fa0160f73 100644 --- a/code/XMLTester.xml +++ b/code/XMLTester.xml @@ -319,7 +319,6 @@ 5100 - 80.80.99.45 -1 @@ -356,23 +355,25 @@ tcp_server_transport false + - 80.80.99.45 -
80.80.99.45
+
192.168.1.10
5100 + 5100
+ - 80.80.99.45 -
80.80.99.45
+
192.168.1.10
5100 + 5100
@@ -436,8 +437,167 @@ -
80.80.99.45
+
192.168.1.10
+ 5100 + + 5100 +
+
+
+
+ + + + + +<--> +<--> + +CONF-TCP-TRANSPORT-SETTING-WAN-SERVER<--> + + + + tcp_server_wan_transport + TCPv4 + + 5100 + + 80.80.99.45 + + + -1 + 0 + 0 + -1 + + + + -1 + 0 + 0 + -1 + + + + -1 + 0 + 0 + -1 + + + -1 + 0 + 0 + -1 + + + + + + + + tcp_server_wan_transport + + false + + + + +
192.168.1.10
+ + + 5100 + + 5100 +
+
+
+ + + + + +
192.168.1.10
+ + + 5100 + + 5100 +
+
+
+
+
+
+ + + +<--> +<--> + +CONF-TCP-TRANSPORT-SETTING-WAN-CLIENT<--> + + + + tcp_client_wan_transport + TCPv4 + + 80.80.99.47 + + + -1 + 0 + 0 + -1 + + + + -1 + 0 + 0 + -1 + + + + -1 + 0 + 0 + -1 + + + -1 + 0 + 0 + -1 + + + + + + + + tcp_client_wan_transport + + false + + + + + + 80.80.99.45 +
192.168.1.10
+ + 5100 + 5100
@@ -548,7 +708,6 @@ 5100 - 80.80.99.45 @@ -595,7 +754,7 @@ -
80.80.99.45
+
192.168.1.10
5100
diff --git a/docs/01-figures/TCP_WAN.png b/docs/01-figures/TCP_WAN.png index e13929ccb2d94a220179a5c953e2ff6e7ea7b543..d83eb18e78d62742e176de2c181d4b8b76c5edd5 100644 GIT binary patch literal 81908 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 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - DomainChange - - - - INITIAL PEERS - - - - - - - - Integration Service - - - - 192.168.1.40 - - - - - - - - - Integration Service - - - - 80.80.99.45:5100 - - - - - - - - - - DomainChange - - - - LISTENING PORTS - - - - - - - - Integration Service - - - - 80.80.99.45 - - - - - - - - - - Integration Service - - - - 5100 - - - - - - - - - DDS World C - - - - - INTERNET - - - - TCP Client - TCP Server - - diff --git a/docs/fastdds/transport/tcp/tcp.rst b/docs/fastdds/transport/tcp/tcp.rst index e4545e60d..1587005bf 100644 --- a/docs/fastdds/transport/tcp/tcp.rst +++ b/docs/fastdds/transport/tcp/tcp.rst @@ -252,7 +252,7 @@ TCP Server or TCP Client. :language: xml :start-after: CONF-TCP-TRANSPORT-SETTING-SERVER :end-before: <--> - :lines: 2-4,6-73,75-76 + :lines: 2-4,6-74,76-77 * **TCP Client**: If you provide |BuiltinAttributes::initialPeersList-api| to the DomainParticipant, it will act as *TCP client*, trying to connect to the remote *servers* at the given addresses and ports. @@ -275,7 +275,13 @@ TCP Server or TCP Client. :language: xml :start-after: CONF-TCP-TRANSPORT-SETTING-CLIENT :end-before: <--> - :lines: 2-4,6-58,60-61 + :lines: 2-4,6-59,61-62 + +.. note:: + + Manually setting unicast locators is optional. If not setting them or setting them with a logical + port of ``0``, the client's initial peer shouldn't set its logical port (or set it to ``0``). Otherwise, + initial peer's logical port must match server's unicast logical port. :ref:`transport_tcp_example` shows how to use and configure a TCP transport. @@ -299,6 +305,47 @@ For example, imagine we have the scenario represented on the following figure: * Another DomainParticipant acts as a *TCP client* and has configured the server's IP address and port in its :ref:`Simple Initial Peers` list. +By using ``set_WAN_address(wan_ip)``, the WAN IP address is set on the participant's locators that +are communicated during the discovery phase. + +Like in the LAN case, manually setting unicast locators is optional. However, in this case, there are +some considerations to take into account when setting its IP addresses: + +* Setting the WAN IP address using the ``setWAN()`` method in unicast locators is ineffective because it + gets overridden by the ``set_WAN_address()`` call. + +* For assigning IP addresses to unicast locators, use only the ``setIPv4()`` or ``setIPv6()`` methods, which + are LAN IP setters. There are some configurations which allow using these setters with a WAN IP address. + +Depending on whether the server has manually set its metatraffic unicast locators and default unicast +locators, the client needs to adjust its initial peer list accordingly: + +* If the server's unicast locators are configured with the LAN IP address: + + * The initial peer can be set up with only the server's WAN IP using the LAN IP setter. + + * Alternatively, it can be configured with both the server's LAN and WAN IP addresses using the LAN + setter for the LAN IP and the WAN setter for the WAN IP. + +* If the server's unicast locators are configured with the WAN IP address: + + * The initial peer must be set up with only the server's WAN IP using the LAN setter. + + * Alternatively, it can be configured with the WAN IP address using both the LAN and WAN setters. + +* If the server has not set any unicast locators: + + * The initial peer can be configured with only the server's WAN IP using the LAN setter. + + * Alternatively, it can be configured with both the server's LAN and WAN IP addresses using the LAN + setter for the LAN IP and the WAN setter for the WAN IP. + +.. note:: + + Manually setting unicast locators is optional. If not setting them or setting them with a logical + port of ``0``, the client's initial peer shouldn't set its logical port (or set it to ``0``). Otherwise, + initial peer's logical port must match server's unicast logical port. + On the server side, the router must be configured to forward to the *TCP server* all traffic incoming to port ``5100``. Typically, a NAT routing of port ``5100`` to our machine is enough. Any existing firewall should be configured as well. @@ -314,7 +361,7 @@ The following examples show how to configure the DomainParticipant both in C++ a .. literalinclude:: /../code/DDSCodeTester.cpp :language: c++ - :start-after: //CONF-TCP-TRANSPORT-SETTING-SERVER + :start-after: //CONF-TCP-TRANSPORT-SETTING-WAN-SERVER :end-before: //!-- :dedent: 8 @@ -322,9 +369,9 @@ The following examples show how to configure the DomainParticipant both in C++ a .. literalinclude:: /../code/XMLTester.xml :language: xml - :start-after: CONF-TCP-TRANSPORT-SETTING-SERVER + :start-after: CONF-TCP-TRANSPORT-SETTING-WAN-SERVER :end-before: <--> - :lines: 2-4,6-73,75-76 + :lines: 2-4,6-79,81-82 On the client side, the DomainParticipant must be configured with the **public** IP address and |TCPTransportDescriptor::listening_ports-api| of the *TCP server* as @@ -336,7 +383,7 @@ with the **public** IP address and |TCPTransportDescriptor::listening_ports-api| .. literalinclude:: /../code/DDSCodeTester.cpp :language: c++ - :start-after: //CONF-TCP-TRANSPORT-SETTING-CLIENT + :start-after: //CONF-TCP-TRANSPORT-SETTING-WAN-CLIENT :end-before: //!-- :dedent: 8 @@ -344,9 +391,9 @@ with the **public** IP address and |TCPTransportDescriptor::listening_ports-api| .. literalinclude:: /../code/XMLTester.xml :language: xml - :start-after: CONF-TCP-TRANSPORT-SETTING-CLIENT + :start-after: CONF-TCP-TRANSPORT-SETTING-WAN-CLIENT :end-before: <--> - :lines: 2-4,6-58,60-61 + :lines: 2-4,6-65,67-68 .. _transport_tcp_example: