Continues migration with DDS, Common
This commit is contained in:
1 parent
9b15cee841
commit
fa48db111e
668 files changed
+111841
-2
No files matched your search
+544
@@ -0,0 +1,544 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Description
|
||||
XML QoS Profile for a project with DDS
|
||||
|
||||
For more information about XML QoS Profiles see Chapter 15 in the
|
||||
RTI Connext user manual.
|
||||
-->
|
||||
<dds xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="/opt/RTI/resource/qos_profiles_5.1.0/schema/rti_dds_qos_profiles.xsd">
|
||||
<!-- QoS Library containing the default QoS profile for the project
|
||||
|
||||
A QoS library is a named set of QoS profiles.
|
||||
-->
|
||||
<qos_library name="LtsProfiles">
|
||||
<!-- QoS profile used to configure reliable communication between the DataWriter and DataReader
|
||||
|
||||
A QoS profile groups a set of related QoS.
|
||||
-->
|
||||
|
||||
<qos_profile name="Base" base_name="BuiltinQosLibExp::Generic.StrictReliable" is_default_qos="true">
|
||||
<!-- Participent QoS -->
|
||||
<participant_qos>
|
||||
<property>
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.shmem.builtin.receive_buffer_size</name>
|
||||
<value>20971520</value> <!-- 20MB -->
|
||||
</element>
|
||||
</value>
|
||||
<!--FRAN: allow IP fragmentation (30jun2020)-->
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.UDPv4.builtin.parent.message_size_max</name>
|
||||
<value>1450</value>
|
||||
</element>
|
||||
</value>
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.UDPv4.builtin.multicast_ttl</name>
|
||||
<value>5</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.flow_controller.token_bucket.my_2_5Mbps_fc.token_bucket.period.sec</name>
|
||||
<value>0</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.flow_controller.token_bucket.my_2_5Mbps_fc.token_bucket.period.nanosec</name>
|
||||
<value>100000000</value>
|
||||
</element>
|
||||
<!-- UDP MTU -->
|
||||
<element>
|
||||
<name>dds.flow_controller.token_bucket.my_2_5Mbps_fc.token_bucket.bytes_per_token</name>
|
||||
<value>3072</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.flow_controller.token_bucket.my_2_5Mbps_fc.token_bucket.tokens_leaked_per_period</name>
|
||||
<value>0</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.flow_controller.token_bucket.my_2_5Mbps_fc.token_bucket.tokens_added_per_period</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.flow_controller.token_bucket.my_2_5Mbps_fc.token_bucket.max_tokens</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
<resource_limits>
|
||||
<!-- type_code is not needed for RTI 5.x and above-->
|
||||
<type_code_max_serialized_length>0</type_code_max_serialized_length>
|
||||
<!-- type_object is only needed if someone wants to dynamically decode the structures
|
||||
without haveing this info otherwise (e.g. programatically) which is not the case
|
||||
in our system-->
|
||||
<type_object_max_serialized_length>0</type_object_max_serialized_length>
|
||||
</resource_limits>
|
||||
<discovery_config>
|
||||
<!--FRAN: disable sending DATA(p) packets to domain 0, RTPX (30jun2020)-->
|
||||
<default_domain_announcement_period>
|
||||
<sec>DURATION_INFINITE_SEC</sec>
|
||||
<nanosec>DURATION_INFINITE_NSEC</nanosec>
|
||||
</default_domain_announcement_period>
|
||||
<publication_writer_publish_mode>
|
||||
<kind>ASYNCHRONOUS_PUBLISH_MODE_QOS</kind>
|
||||
<!-- <flow_controller_name>dds.flow_controller.token_bucket.my_2_5Mbps_fc</flow_controller_name> -->
|
||||
</publication_writer_publish_mode>
|
||||
<subscription_writer_publish_mode>
|
||||
<kind>ASYNCHRONOUS_PUBLISH_MODE_QOS</kind>
|
||||
<!-- <flow_controller_name>dds.flow_controller.token_bucket.my_2_5Mbps_fc</flow_controller_name> -->
|
||||
</subscription_writer_publish_mode>
|
||||
<participant_liveliness_assert_period>
|
||||
<sec>5</sec>
|
||||
<nanosec>0</nanosec>
|
||||
</participant_liveliness_assert_period>
|
||||
<participant_liveliness_lease_duration>
|
||||
<sec>20</sec>
|
||||
<nanosec>0</nanosec>
|
||||
</participant_liveliness_lease_duration>
|
||||
<max_liveliness_loss_detection_period>
|
||||
<sec>10</sec>
|
||||
<nanosec>0</nanosec>
|
||||
</max_liveliness_loss_detection_period>
|
||||
<publication_writer>
|
||||
<enable_multicast_periodic_heartbeat>1</enable_multicast_periodic_heartbeat>
|
||||
<!--FRAN: why these values?-->
|
||||
<min_send_window_size>20</min_send_window_size>
|
||||
<max_send_window_size>400</max_send_window_size>
|
||||
<heartbeats_per_max_samples>50</heartbeats_per_max_samples>
|
||||
<!--FRAN: set to 500ms instead of 50ms (30jun2020)-->
|
||||
<fast_heartbeat_period>
|
||||
<sec>0</sec>
|
||||
<nanosec>500000000</nanosec>
|
||||
</fast_heartbeat_period>
|
||||
<late_joiner_heartbeat_period>
|
||||
<sec>0</sec>
|
||||
<nanosec>500000000</nanosec>
|
||||
</late_joiner_heartbeat_period>
|
||||
<max_nack_response_delay>
|
||||
<sec>0</sec>
|
||||
<nanosec>500000000</nanosec>
|
||||
</max_nack_response_delay>
|
||||
</publication_writer>
|
||||
<subscription_writer>
|
||||
<enable_multicast_periodic_heartbeat>1</enable_multicast_periodic_heartbeat>
|
||||
<!--FRAN: set to 500ms instead of 50ms (30jun2020)-->
|
||||
<min_send_window_size>20</min_send_window_size>
|
||||
<max_send_window_size>400</max_send_window_size>
|
||||
<heartbeats_per_max_samples>50</heartbeats_per_max_samples>
|
||||
<fast_heartbeat_period>
|
||||
<sec>0</sec>
|
||||
<nanosec>500000000</nanosec>
|
||||
</fast_heartbeat_period>
|
||||
<late_joiner_heartbeat_period>
|
||||
<sec>0</sec>
|
||||
<nanosec>500000000</nanosec>
|
||||
</late_joiner_heartbeat_period>
|
||||
<max_nack_response_delay>
|
||||
<sec>0</sec>
|
||||
<nanosec>500000000</nanosec>
|
||||
</max_nack_response_delay>
|
||||
</subscription_writer>
|
||||
</discovery_config>
|
||||
</participant_qos>
|
||||
<!-- Publisher QOS -->
|
||||
|
||||
|
||||
<!--Patric: we enabled coherent sets -->
|
||||
<!-- QoS used to configure the data writer -->
|
||||
<!--
|
||||
<publisher_qos>
|
||||
<presentation>
|
||||
<access_scope>TOPIC_PRESENTATION_QOS</access_scope>
|
||||
<coherent_access>true</coherent_access>
|
||||
</presentation>
|
||||
</publisher_qos>
|
||||
<subscriber_qos>
|
||||
<presentation>
|
||||
<access_scope>TOPIC_PRESENTATION_QOS</access_scope>
|
||||
<coherent_access>true</coherent_access>
|
||||
</presentation>
|
||||
</subscriber_qos>
|
||||
-->
|
||||
|
||||
|
||||
<!-- QoS used to configure the data writer -->
|
||||
<datawriter_qos>
|
||||
<publish_mode>
|
||||
<kind>ASYNCHRONOUS_PUBLISH_MODE_QOS</kind>
|
||||
</publish_mode>
|
||||
<property>
|
||||
<value>
|
||||
<!-- The next setting is used to force dynamic memory
|
||||
allocation for samples with a serialized size of
|
||||
larger than 2K. Without setting
|
||||
pool_buffer_max_size, all memory would be obtained
|
||||
from a pre-allocated pool, which would greatly
|
||||
increase the memory usage in an application which
|
||||
sends large data.
|
||||
-->
|
||||
<element>
|
||||
<name>dds.data_writer.history.memory_manager.fast_pool.pool_buffer_max_size</name>
|
||||
<value>2048</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
<reliability>
|
||||
<kind>RELIABLE_RELIABILITY_QOS</kind>
|
||||
<!--FRAN: why 60 seconds?-->
|
||||
<max_blocking_time>
|
||||
<sec>60</sec>
|
||||
</max_blocking_time>
|
||||
</reliability>
|
||||
<durability>
|
||||
<kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
|
||||
</durability>
|
||||
<history>
|
||||
<kind>KEEP_LAST_HISTORY_QOS</kind>
|
||||
<depth>1</depth>
|
||||
</history>
|
||||
<resource_limits>
|
||||
<!--<max_samples_per_instance>1</max_samples_per_instance>-->
|
||||
<max_samples>8000</max_samples>
|
||||
</resource_limits>
|
||||
<protocol>
|
||||
<rtps_reliable_writer>
|
||||
<!--FRAN: why these values?-->
|
||||
<min_send_window_size>20</min_send_window_size>
|
||||
<max_send_window_size>400</max_send_window_size>
|
||||
<heartbeats_per_max_samples>50</heartbeats_per_max_samples>
|
||||
</rtps_reliable_writer>
|
||||
</protocol>
|
||||
<writer_resource_limits>
|
||||
<autoregister_instances>true</autoregister_instances>
|
||||
</writer_resource_limits>
|
||||
</datawriter_qos>
|
||||
|
||||
<!-- QoS used to configure the data reader -->
|
||||
<!--Patric: reader want all our LTS Topics via multicast now -->
|
||||
|
||||
<datareader_qos>
|
||||
<reliability>
|
||||
<kind>RELIABLE_RELIABILITY_QOS</kind>
|
||||
</reliability>
|
||||
<reader_data_lifecycle>
|
||||
<autopurge_nowriter_samples_delay>
|
||||
<sec>5</sec>
|
||||
<nanosec>DURATION_ZERO_NSEC</nanosec>
|
||||
</autopurge_nowriter_samples_delay>
|
||||
<autopurge_disposed_samples_delay>
|
||||
<sec>5</sec>
|
||||
<nanosec>DURATION_ZERO_NSEC</nanosec>
|
||||
</autopurge_disposed_samples_delay>
|
||||
</reader_data_lifecycle>
|
||||
<durability>
|
||||
<kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
|
||||
<!-- Set this field to 0 if you want brokered communication (all communication
|
||||
passes through the persistence service before being received by the datareader;
|
||||
i.e. datawriter and datareader cannot 'see' each other directly)
|
||||
-->
|
||||
<direct_communication>true</direct_communication>
|
||||
</durability>
|
||||
<history>
|
||||
<kind>KEEP_LAST_HISTORY_QOS</kind>
|
||||
<depth>1</depth>
|
||||
</history>
|
||||
<resource_limits>
|
||||
<!--<initial_samples>200</initial_samples> -->
|
||||
<!--<max_samples_per_instance>1</max_samples_per_instance> -->
|
||||
<!-- We limit max_samples on the reader so that if the
|
||||
writer is publishing samples faster than the reader is
|
||||
taking them then the reader will start sending NACKs
|
||||
for samples received after the number of samples in
|
||||
its queue reaches max_samples. This behavior will put
|
||||
pressure on the writer to throttle back its publishing
|
||||
speed.
|
||||
-->
|
||||
<max_samples>8000</max_samples>
|
||||
</resource_limits>
|
||||
<reader_resource_limits>
|
||||
<!-- Determines whether the DataReader pre-allocates
|
||||
storage for storing fragmented samples. This setting
|
||||
can be used to limit upfront memory allocation costs
|
||||
in applications which are dealing with large data
|
||||
-->
|
||||
<dynamically_allocate_fragmented_samples>true</dynamically_allocate_fragmented_samples>
|
||||
<max_samples_per_read>8000</max_samples_per_read>
|
||||
</reader_resource_limits>
|
||||
<property>
|
||||
<value>
|
||||
<!-- The next setting is used to force dynamic memory
|
||||
allocation for samples with a serialized size of
|
||||
larger than 2K. Without setting
|
||||
pool_buffer_max_size, all memory would be obtained
|
||||
from a pre-allocated pool, which would greatly
|
||||
increase the memory usage in an application which
|
||||
sends large data.
|
||||
-->
|
||||
<element>
|
||||
<name>dds.data_reader.history.memory_manager.fast_pool.pool_buffer_max_size</name>
|
||||
<value>2048</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
</datareader_qos>
|
||||
</qos_profile>
|
||||
|
||||
<!--FRAN: who uses this profile?-->
|
||||
<!--Function topic. tablets->server-->
|
||||
<qos_profile name="DataReaderWriter.FT" base_name="LtsProfiles::Base">
|
||||
<datareader_qos>
|
||||
<durability>
|
||||
<kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
|
||||
</durability>
|
||||
<history>
|
||||
<kind>KEEP_ALL_HISTORY_QOS</kind>
|
||||
</history>
|
||||
</datareader_qos>
|
||||
<datawriter_qos>
|
||||
<publish_mode>
|
||||
<kind>ASYNCHRONOUS_PUBLISH_MODE_QOS</kind>
|
||||
</publish_mode>
|
||||
<durability>
|
||||
<kind>TRANSIENT_LOCAL_DURABILITY_QOS</kind>
|
||||
</durability>
|
||||
<history>
|
||||
<kind>KEEP_LAST_HISTORY_QOS</kind>
|
||||
<depth>10</depth>
|
||||
</history>
|
||||
</datawriter_qos>
|
||||
</qos_profile>
|
||||
<!--Mostly used by the tablets as a special mode-->
|
||||
<qos_profile name="DomainParticipant.Shm" base_name="LtsProfiles::Base">
|
||||
<participant_qos>
|
||||
<transport_builtin>
|
||||
<mask>SHMEM</mask>
|
||||
</transport_builtin>
|
||||
<discovery>
|
||||
<multicast_receive_addresses/>
|
||||
<accept_unknown_peers>false</accept_unknown_peers>
|
||||
<initial_peers>
|
||||
<element>60@builtin.shmem://</element>
|
||||
</initial_peers>
|
||||
</discovery>
|
||||
<property>
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.shmem.builtin.host_id</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
</participant_qos>
|
||||
</qos_profile>
|
||||
|
||||
<!--Used by both tablets and server-->
|
||||
<qos_profile name="DomainParticipant.ShmUdp" base_name="LtsProfiles::Base">
|
||||
<participant_qos>
|
||||
<transport_builtin>
|
||||
<mask>UDPv4 | SHMEM</mask>
|
||||
</transport_builtin>
|
||||
</participant_qos>
|
||||
</qos_profile>
|
||||
|
||||
<!-- Both server and clients. Maybe not used-->
|
||||
<qos_profile name="DomainParticipant.ShmUdpLocalhost" base_name="DomainParticipant.ShmUdp">
|
||||
<participant_qos>
|
||||
<discovery>
|
||||
<multicast_receive_addresses/>
|
||||
<accept_unknown_peers>false</accept_unknown_peers>
|
||||
<initial_peers>
|
||||
<element>builtin.shmem://</element>
|
||||
<element>builtin.udpv4://127.0.0.1</element>
|
||||
</initial_peers>
|
||||
</discovery>
|
||||
<property>
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.UDPv4.builtin.multicast_enabled</name>
|
||||
<value>0</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.UDPv4.builtin.parent.allow_interfaces</name>
|
||||
<value>127.0.0.1</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
</participant_qos>
|
||||
</qos_profile>
|
||||
<!-- configured for tcp client -> listenport = -1 -->
|
||||
<qos_profile name="DomainParticipant.Tcp" base_name="LtsProfiles::Base">
|
||||
<participant_qos>
|
||||
<transport_builtin>
|
||||
<mask>MASK_NONE</mask>
|
||||
</transport_builtin>
|
||||
<property>
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.load_plugins</name>
|
||||
<value>dds.transport.TCPv4.tcp1</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.library</name>
|
||||
<value>nddstransporttcp</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.create_function</name>
|
||||
<value>NDDS_Transport_TCPv4_create</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.parent.classid</name>
|
||||
<value>NDDS_TRANSPORT_CLASSID_TCPV4_LAN</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.server_bind_port</name>
|
||||
<value>-1</value>
|
||||
</element>
|
||||
<!--
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.logging_verbosity_bitmap</name>
|
||||
<value>159</value>
|
||||
</element>
|
||||
-->
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.disable_nagle</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
<!--
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.send_max_wait_sec</name>
|
||||
<value>-1</value>
|
||||
</element>
|
||||
-->
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.max_packet_size</name>
|
||||
<value>63020</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.parent.message_size_max</name>
|
||||
<value>63020</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.recv_socket_buffer_size</name>
|
||||
<value>8388608</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.send_socket_buffer_size</name>
|
||||
<value>8388608</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.connection_liveliness.enable</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.connection_liveliness.lease_duration</name>
|
||||
<value>5</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.connection_liveliness.assertions_per_lease_duration</name>
|
||||
<value>2</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.outstanding_connection_cookies</name>
|
||||
<value>100</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.outstanding_connection_cookies_life_span</name>
|
||||
<value>5</value>
|
||||
</element>
|
||||
<element>
|
||||
<name>dds.transport.TCPv4.tcp1.force_asynchronous_send</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
<discovery_config>
|
||||
<participant_liveliness_assert_period>
|
||||
<sec>2</sec>
|
||||
<nanosec>0</nanosec>
|
||||
</participant_liveliness_assert_period>
|
||||
<participant_liveliness_lease_duration>
|
||||
<sec>5</sec>
|
||||
<nanosec>0</nanosec>
|
||||
</participant_liveliness_lease_duration>
|
||||
<max_liveliness_loss_detection_period>
|
||||
<sec>2</sec>
|
||||
<nanosec>0</nanosec>
|
||||
</max_liveliness_loss_detection_period>
|
||||
</discovery_config>
|
||||
</participant_qos>
|
||||
</qos_profile>
|
||||
|
||||
|
||||
<!--FRAN: 3 new profiles for each kind of host (30jun2020)-->
|
||||
<!--This implements asymmetric discovery-->
|
||||
<qos_profile name="DomainParticipant.Client" base_name="DomainParticipant.ShmUdp">
|
||||
<participant_qos>
|
||||
<transport_builtin>
|
||||
<mask>SHMEM</mask>
|
||||
</transport_builtin>
|
||||
<discovery>
|
||||
<accept_unknown_peers>false</accept_unknown_peers>
|
||||
<initial_peers>
|
||||
<element>60@builtin.shmem://</element>
|
||||
</initial_peers>
|
||||
</discovery>
|
||||
<property>
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.shmem.builtin.host_id</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
</participant_qos>
|
||||
</qos_profile>
|
||||
|
||||
<!--FRAN: 3 new profiles for each kind of host (30jun2020)-->
|
||||
<!--This implements asymmetric discovery-->
|
||||
<qos_profile name="DomainParticipant.Server" base_name="DomainParticipant.ShmUdp">
|
||||
<participant_qos>
|
||||
<transport_builtin>
|
||||
<mask>SHMEM</mask>
|
||||
</transport_builtin>
|
||||
<discovery>
|
||||
<accept_unknown_peers>false</accept_unknown_peers>
|
||||
<initial_peers>
|
||||
<element>60@builtin.shmem://</element>
|
||||
</initial_peers>
|
||||
</discovery>
|
||||
<property>
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.shmem.builtin.host_id</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
</participant_qos>
|
||||
</qos_profile>
|
||||
<!--FRAN: 3 new profiles for each kind of host (30jun2020)-->
|
||||
<!--This implements asymmetric discovery-->
|
||||
<qos_profile name="DomainParticipant.Tablet" base_name="DomainParticipant.ShmUdp">
|
||||
<participant_qos>
|
||||
<transport_builtin>
|
||||
<mask>SHMEM</mask>
|
||||
</transport_builtin>
|
||||
<discovery>
|
||||
<accept_unknown_peers>false</accept_unknown_peers>
|
||||
<initial_peers>
|
||||
<element>60@builtin.shmem://</element>
|
||||
</initial_peers>
|
||||
</discovery>
|
||||
<property>
|
||||
<value>
|
||||
<element>
|
||||
<name>dds.transport.shmem.builtin.host_id</name>
|
||||
<value>1</value>
|
||||
</element>
|
||||
</value>
|
||||
</property>
|
||||
</participant_qos>
|
||||
</qos_profile>
|
||||
</qos_library>
|
||||
</dds>
|
||||
Reference in new issue
Block a user