Skip to content

Commit c3204d9

Browse files
mergify[bot]jepemi
andauthored
Update TCP documentation (#654) (#665)
* Update TCP documentation (#654) * Refs #20314: Update TCP LAN example Signed-off-by: Jesus Perez <jesusperez@eprosima.com> * Refs #20314: Update TCP WAN example Signed-off-by: Jesus Perez <jesusperez@eprosima.com> * Refs #20314: Update TCP TLS example Signed-off-by: Jesus Perez <jesusperez@eprosima.com> * Refs #20314: Minor fixes Signed-off-by: Jesus Perez <jesusperez@eprosima.com> * Refs #20314: Extend WAN description, update image and modify examples Signed-off-by: Jesus Perez <jesusperez@eprosima.com> --------- Signed-off-by: Jesus Perez <jesusperez@eprosima.com> (cherry picked from commit 6c2c47a) # Conflicts: # code/DDSCodeTester.cpp # code/XMLTester.xml # docs/fastdds/transport/tcp/tcp.rst * Refs #20314: Resolve conflicts Signed-off-by: Jesus Perez <jesusperez@eprosima.com> * Refs #20314: Fix xml tester Signed-off-by: Jesus Perez <jesusperez@eprosima.com> --------- Signed-off-by: Jesus Perez <jesusperez@eprosima.com> Co-authored-by: Jesús Pérez <78275223+jepemi@users.noreply.github.com> Co-authored-by: Jesus Perez <jesusperez@eprosima.com>
1 parent bb2e337 commit c3204d9

5 files changed

Lines changed: 260 additions & 509 deletions

File tree

code/DDSCodeTester.cpp

Lines changed: 78 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4453,13 +4453,23 @@ void dds_transport_examples ()
44534453
tcp_transport->sendBufferSize = 9216;
44544454
tcp_transport->receiveBufferSize = 9216;
44554455
tcp_transport->add_listener_port(5100);
4456-
tcp_transport->set_WAN_address("80.80.99.45");
44574456

44584457
// Link the Transport Layer to the Participant.
44594458
qos.transport().user_transports.push_back(tcp_transport);
44604459

44614460
// Avoid using the default transport
44624461
qos.transport().use_builtin_transports = false;
4462+
4463+
// [OPTIONAL] Set unicast locators
4464+
Locator_t locator;
4465+
locator.kind = LOCATOR_KIND_TCPv4;
4466+
IPLocator::setIPv4(locator, "192.168.1.10");
4467+
IPLocator::setPhysicalPort(locator, 5100);
4468+
// [OPTIONAL] Logical port default value is 0, automatically assigned.
4469+
IPLocator::setLogicalPort(locator, 5100);
4470+
4471+
qos.wire_protocol().builtin.metatrafficUnicastLocatorList.push_back(locator);
4472+
qos.wire_protocol().default_unicast_locator_list.push_back(locator);
44634473
//!--
44644474
}
44654475

@@ -4478,13 +4488,77 @@ void dds_transport_examples ()
44784488
// Set initial peers.
44794489
Locator_t initial_peer_locator;
44804490
initial_peer_locator.kind = LOCATOR_KIND_TCPv4;
4481-
IPLocator::setIPv4(initial_peer_locator, "80.80.99.45");
4482-
initial_peer_locator.port = 5100;
4491+
IPLocator::setIPv4(initial_peer_locator, "192.168.1.10");
4492+
IPLocator::setPhysicalPort(initial_peer_locator, 5100);
4493+
// If the logical port is set in the server side, it must be also set here with the same value.
4494+
// If not set in the server side in a unicast locator, do not set it here.
4495+
IPLocator::setLogicalPort(initial_peer_locator, 5100);
44834496

44844497
qos.wire_protocol().builtin.initialPeersList.push_back(initial_peer_locator);
4498+
//!--
4499+
}
4500+
4501+
{
4502+
//CONF-TCP-TRANSPORT-SETTING-WAN-SERVER
4503+
eprosima::fastdds::dds::DomainParticipantQos qos;
4504+
4505+
// Create a descriptor for the new transport.
4506+
auto tcp_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
4507+
tcp_transport->add_listener_port(5100);
4508+
tcp_transport->set_WAN_address("80.80.99.45");
4509+
4510+
// Link the Transport Layer to the Participant.
4511+
qos.transport().user_transports.push_back(tcp_transport);
44854512

44864513
// Avoid using the default transport
44874514
qos.transport().use_builtin_transports = false;
4515+
4516+
// [OPTIONAL] Set unicast locators (do not use setWAN(), set_WAN_address() overwrites it)
4517+
Locator_t locator;
4518+
locator.kind = LOCATOR_KIND_TCPv4;
4519+
// [RECOMMENDED] Use the LAN address of the server
4520+
IPLocator::setIPv4(locator, "192.168.1.10");
4521+
// [ALTERNATIVE] Use server's WAN address. In that case, initial peers must be configured
4522+
// only with server's WAN address.
4523+
// IPLocator::setIPv4(locator, "80.80.99.45");
4524+
IPLocator::setPhysicalPort(locator, 5100);
4525+
// [OPTIONAL] Logical port default value is 0, automatically assigned.
4526+
IPLocator::setLogicalPort(locator, 5100);
4527+
4528+
qos.wire_protocol().builtin.metatrafficUnicastLocatorList.push_back(locator);
4529+
qos.wire_protocol().default_unicast_locator_list.push_back(locator);
4530+
//!--
4531+
}
4532+
4533+
{
4534+
//CONF-TCP-TRANSPORT-SETTING-WAN-CLIENT
4535+
eprosima::fastdds::dds::DomainParticipantQos qos;
4536+
4537+
// Disable the built-in Transport Layer.
4538+
qos.transport().use_builtin_transports = false;
4539+
4540+
// Create a descriptor for the new transport.
4541+
// Do not configure any listener port
4542+
auto tcp_transport = std::make_shared<eprosima::fastdds::rtps::TCPv4TransportDescriptor>();
4543+
// [RECOMMENDED] Use client's WAN address if there are more clients in other local networks.
4544+
tcp_transport->set_WAN_address("80.80.99.47");
4545+
qos.transport().user_transports.push_back(tcp_transport);
4546+
4547+
// Set initial peers.
4548+
Locator_t initial_peer_locator;
4549+
initial_peer_locator.kind = LOCATOR_KIND_TCPv4;
4550+
// [RECOMMENDED] Use both WAN and LAN server addresses
4551+
IPLocator::setIPv4(initial_peer_locator, "192.168.1.10");
4552+
IPLocator::setWan(initial_peer_locator, "80.80.99.45");
4553+
// [ALTERNATIVE] Use server's WAN address only. Valid if server specified its unicast locators
4554+
// with its LAN or WAN address.
4555+
// IPLocator::setIPv4(initial_peer_locator, "80.80.99.45");
4556+
IPLocator::setPhysicalPort(initial_peer_locator, 5100);
4557+
// If the logical port is set in the server side, it must be also set here with the same value.
4558+
// If not set in the server side in a unicast locator, do not set it here.
4559+
IPLocator::setLogicalPort(initial_peer_locator, 5100);
4560+
4561+
qos.wire_protocol().builtin.initialPeersList.push_back(initial_peer_locator);
44884562
//!--
44894563
}
44904564

@@ -4509,7 +4583,6 @@ void dds_transport_examples ()
45094583
tls_transport->sendBufferSize = 9216;
45104584
tls_transport->receiveBufferSize = 9216;
45114585
tls_transport->add_listener_port(5100);
4512-
tls_transport->set_WAN_address("80.80.99.45");
45134586

45144587
// Create the TLS configuration
45154588
using TLSOptions = eprosima::fastdds::rtps::TCPTransportDescriptor::TLSConfig::TLSOptions;
@@ -4534,7 +4607,7 @@ void dds_transport_examples ()
45344607
// Set initial peers.
45354608
Locator_t initial_peer_locator;
45364609
initial_peer_locator.kind = LOCATOR_KIND_TCPv4;
4537-
IPLocator::setIPv4(initial_peer_locator, "80.80.99.45");
4610+
IPLocator::setIPv4(initial_peer_locator, "192.168.1.10");
45384611
initial_peer_locator.port = 5100;
45394612
qos.wire_protocol().builtin.initialPeersList.push_back(initial_peer_locator);
45404613

code/XMLTester.xml

Lines changed: 131 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -476,23 +476,46 @@
476476
-->
477477
<transport_descriptors>
478478
<transport_descriptor>
479-
<transport_id>tcp_transport</transport_id>
479+
<transport_id>tcp_server_transport</transport_id>
480480
<type>TCPv4</type>
481481
<sendBufferSize>9216</sendBufferSize>
482482
<receiveBufferSize>9216</receiveBufferSize>
483483
<listening_ports>
484484
<port>5100</port>
485485
</listening_ports>
486-
<wan_addr>80.80.99.45</wan_addr>
487486
</transport_descriptor>
488487
</transport_descriptors>
489488

490-
<participant profile_name="TCPParticipant">
489+
<participant profile_name="tcp_server_participant">
491490
<rtps>
492491
<userTransports>
493-
<transport_id>tcp_transport</transport_id>
492+
<transport_id>tcp_server_transport</transport_id>
494493
</userTransports>
495494
<useBuiltinTransports>false</useBuiltinTransports>
495+
<!-- Optional unicast locator set -->
496+
<defaultUnicastLocatorList>
497+
<locator>
498+
<tcpv4>
499+
<address>192.168.1.10</address>
500+
<physical_port>5100</physical_port>
501+
<!-- Optional logical port set -->
502+
<port>5100</port>
503+
</tcpv4>
504+
</locator>
505+
</defaultUnicastLocatorList>
506+
<!-- Optional metatraffic unicast locator set -->
507+
<builtin>
508+
<metatrafficUnicastLocatorList>
509+
<locator>
510+
<tcpv4>
511+
<address>192.168.1.10</address>
512+
<physical_port>5100</physical_port>
513+
<!-- Optional logical port set -->
514+
<port>5100</port>
515+
</tcpv4>
516+
</locator>
517+
</metatrafficUnicastLocatorList>
518+
</builtin>
496519
</rtps>
497520
</participant>
498521
<!--><-->
@@ -504,23 +527,121 @@
504527
-->
505528
<transport_descriptors>
506529
<transport_descriptor>
507-
<transport_id>tcp2_transport</transport_id>
530+
<transport_id>tcp_client_transport</transport_id>
508531
<type>TCPv4</type>
509532
</transport_descriptor>
510533
</transport_descriptors>
511534

512-
<participant profile_name="TCP2Participant">
535+
<participant profile_name="tcp_client_participant">
513536
<rtps>
514537
<userTransports>
515-
<transport_id>tcp2_transport</transport_id>
538+
<transport_id>tcp_client_transport</transport_id>
516539
</userTransports>
517-
<useBuiltinTransports>false</useBuiltinTransports>
540+
<useBuiltinTransports>false</useBuiltinTransports>
518541
<builtin>
519542
<initialPeersList>
520543
<locator>
521544
<tcpv4>
522-
<address>80.80.99.45</address>
545+
<address>192.168.1.10</address>
523546
<physical_port>5100</physical_port>
547+
<!-- To be set if set in server -->
548+
<port>5100</port>
549+
</tcpv4>
550+
</locator>
551+
</initialPeersList>
552+
</builtin>
553+
</rtps>
554+
</participant>
555+
<!--><-->
556+
557+
<!-->CONF-TCP-TRANSPORT-SETTING-WAN-SERVER<-->
558+
<!--
559+
<?xml version="1.0" encoding="UTF-8" ?>
560+
<dds>
561+
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
562+
-->
563+
<transport_descriptors>
564+
<transport_descriptor>
565+
<transport_id>tcp_server_wan_transport</transport_id>
566+
<type>TCPv4</type>
567+
<listening_ports>
568+
<port>5100</port>
569+
</listening_ports>
570+
<wan_addr>80.80.99.45</wan_addr>
571+
</transport_descriptor>
572+
</transport_descriptors>
573+
574+
<participant profile_name="tcp_server_wan_participant">
575+
<rtps>
576+
<userTransports>
577+
<transport_id>tcp_server_wan_transport</transport_id>
578+
</userTransports>
579+
<useBuiltinTransports>false</useBuiltinTransports>
580+
<!-- Optional unicast locator set -->
581+
<defaultUnicastLocatorList>
582+
<locator>
583+
<tcpv4>
584+
<address>192.168.1.10</address>
585+
<!-- Alternatively use WAN address -->
586+
<!-- <address>80.80.99.45</address> -->
587+
<physical_port>5100</physical_port>
588+
<!-- Optional logical port set -->
589+
<port>5100</port>
590+
</tcpv4>
591+
</locator>
592+
</defaultUnicastLocatorList>
593+
<!-- Optional metatraffic unicast locator set -->
594+
<builtin>
595+
<metatrafficUnicastLocatorList>
596+
<locator>
597+
<tcpv4>
598+
<address>192.168.1.10</address>
599+
<!-- Alternatively use WAN address -->
600+
<!-- <address>80.80.99.45</address> -->
601+
<physical_port>5100</physical_port>
602+
<!-- Optional logical port set -->
603+
<port>5100</port>
604+
</tcpv4>
605+
</locator>
606+
</metatrafficUnicastLocatorList>
607+
</builtin>
608+
</rtps>
609+
</participant>
610+
<!--><-->
611+
612+
<!-->CONF-TCP-TRANSPORT-SETTING-WAN-CLIENT<-->
613+
<!--
614+
<?xml version="1.0" encoding="UTF-8" ?>
615+
<dds>
616+
<profiles xmlns="http://www.eprosima.com/XMLSchemas/fastRTPS_Profiles">
617+
-->
618+
<transport_descriptors>
619+
<transport_descriptor>
620+
<transport_id>tcp_client_wan_transport</transport_id>
621+
<type>TCPv4</type>
622+
<!-- Recommended client's WAN set -->
623+
<wan_addr>80.80.99.47</wan_addr>
624+
</transport_descriptor>
625+
</transport_descriptors>
626+
627+
<participant profile_name="tcp_client_wan_participant">
628+
<rtps>
629+
<userTransports>
630+
<transport_id>tcp_client_wan_transport</transport_id>
631+
</userTransports>
632+
<useBuiltinTransports>false</useBuiltinTransports>
633+
<builtin>
634+
<initialPeersList>
635+
<locator>
636+
<tcpv4>
637+
<!-- Recommended use of both WAN and LAN server addresses -->
638+
<wan_address>80.80.99.45</wan_address>
639+
<address>192.168.1.10</address>
640+
<!-- Alternatively use server's WAN addresses only -->
641+
<!-- <address>80.80.99.45</address> -->
642+
<physical_port>5100</physical_port>
643+
<!-- To be set if set in server -->
644+
<port>5100</port>
524645
</tcpv4>
525646
</locator>
526647
</initialPeersList>
@@ -577,7 +698,6 @@
577698
<listening_ports>
578699
<port>5100</port>
579700
</listening_ports>
580-
<wan_addr>80.80.99.45</wan_addr>
581701
</transport_descriptor>
582702
</transport_descriptors>
583703

@@ -623,7 +743,7 @@
623743
<initialPeersList>
624744
<locator>
625745
<tcpv4>
626-
<address>80.80.99.45</address>
746+
<address>192.168.1.10</address>
627747
<physical_port>5100</physical_port>
628748
</tcpv4>
629749
</locator>

docs/01-figures/TCP_WAN.png

39 KB
Loading

0 commit comments

Comments
 (0)