Skip to main content

QoS Translation Matrix

Reference for translating QoS policies between HDDS and other DDS implementations.

Reliability

HDDSFastDDSCycloneDDSRTI Connext
Reliability::BestEffortBEST_EFFORT_RELIABILITY_QOSDDS_RELIABILITY_BEST_EFFORTDDS_BEST_EFFORT_RELIABILITY_QOS
Reliability::ReliableRELIABLE_RELIABILITY_QOSDDS_RELIABILITY_RELIABLEDDS_RELIABLE_RELIABILITY_QOS

Configuration Examples

HDDS:

DataWriterQos::default()
.reliability(Reliability::Reliable {
max_blocking_time: Duration::from_millis(100),
})

FastDDS (XML):

<reliability>
<kind>RELIABLE_RELIABILITY_QOS</kind>
<max_blocking_time><sec>0</sec><nanosec>100000000</nanosec></max_blocking_time>
</reliability>

CycloneDDS (XML):

<Reliability><Kind>reliable</Kind><MaxBlockingTime>100ms</MaxBlockingTime></Reliability>

RTI Connext:

<reliability><kind>RELIABLE_RELIABILITY_QOS</kind>
<max_blocking_time><sec>0</sec><nanosec>100000000</nanosec></max_blocking_time>
</reliability>

Durability

HDDSFastDDSCycloneDDSRTI Connext
Durability::VolatileVOLATILE_DURABILITY_QOSvolatileDDS_VOLATILE_DURABILITY_QOS
Durability::TransientLocalTRANSIENT_LOCAL_DURABILITY_QOStransient_localDDS_TRANSIENT_LOCAL_DURABILITY_QOS
Durability::TransientTRANSIENT_DURABILITY_QOStransientDDS_TRANSIENT_DURABILITY_QOS
Durability::PersistentPERSISTENT_DURABILITY_QOSpersistentDDS_PERSISTENT_DURABILITY_QOS

History

HDDSFastDDSCycloneDDSRTI Connext
History::KeepLast { depth: N }KEEP_LAST_HISTORY_QOS, depth=Nkeep_last, depth=NDDS_KEEP_LAST_HISTORY_QOS
History::KeepAllKEEP_ALL_HISTORY_QOSkeep_allDDS_KEEP_ALL_HISTORY_QOS

Configuration Examples

HDDS:

DataWriterQos::default().history(History::KeepLast { depth: 10 })

FastDDS:

<history><kind>KEEP_LAST_HISTORY_QOS</kind><depth>10</depth></history>

CycloneDDS:

<History><Kind>keep_last</Kind><Depth>10</Depth></History>

RTI Connext:

<history><kind>KEEP_LAST_HISTORY_QOS</kind><depth>10</depth></history>

Deadline

HDDSFastDDSCycloneDDSRTI Connext
Deadline::from_millis(N)<period><sec/><nanosec/></period><Deadline>Nms</Deadline><period><sec/><nanosec/></period>

Configuration Examples

HDDS:

DataWriterQos::default().deadline(Duration::from_millis(100))

FastDDS:

<deadline><period><sec>0</sec><nanosec>100000000</nanosec></period></deadline>

CycloneDDS:

<Deadline>100ms</Deadline>

RTI Connext:

<deadline><period><sec>0</sec><nanosec>100000000</nanosec></period></deadline>

Liveliness

HDDSFastDDSCycloneDDSRTI Connext
Liveliness::AutomaticAUTOMATIC_LIVELINESS_QOSautomaticDDS_AUTOMATIC_LIVELINESS_QOS
Liveliness::ManualByParticipantMANUAL_BY_PARTICIPANT_LIVELINESS_QOSmanual_by_participantDDS_MANUAL_BY_PARTICIPANT_LIVELINESS_QOS
Liveliness::ManualByTopicMANUAL_BY_TOPIC_LIVELINESS_QOSmanual_by_topicDDS_MANUAL_BY_TOPIC_LIVELINESS_QOS

Ownership

HDDSFastDDSCycloneDDSRTI Connext
Ownership::SharedSHARED_OWNERSHIP_QOSsharedDDS_SHARED_OWNERSHIP_QOS
Ownership::ExclusiveEXCLUSIVE_OWNERSHIP_QOSexclusiveDDS_EXCLUSIVE_OWNERSHIP_QOS

Presentation

HDDSFastDDSCycloneDDSRTI Connext
Presentation::InstanceINSTANCE_PRESENTATION_QOSinstanceDDS_INSTANCE_PRESENTATION_QOS
Presentation::TopicTOPIC_PRESENTATION_QOStopicDDS_TOPIC_PRESENTATION_QOS
Presentation::GroupGROUP_PRESENTATION_QOSgroupDDS_GROUP_PRESENTATION_QOS

Destination Order

HDDSFastDDSCycloneDDSRTI Connext
DestinationOrder::ByReceptionBY_RECEPTION_TIMESTAMPby_reception_timestampDDS_BY_RECEPTION_TIMESTAMP
DestinationOrder::BySourceBY_SOURCE_TIMESTAMPby_source_timestampDDS_BY_SOURCE_TIMESTAMP

Resource Limits

HDDSFastDDSCycloneDDSRTI Connext
max_samplesmax_samplesMaxSamplesmax_samples
max_instancesmax_instancesMaxInstancesmax_instances
max_samples_per_instancemax_samples_per_instanceMaxSamplesPerInstancemax_samples_per_instance

Configuration Examples

HDDS:

DataReaderQos::default()
.resource_limits(ResourceLimits {
max_samples: 1000,
max_instances: 100,
max_samples_per_instance: 10,
})

FastDDS:

<resource_limits>
<max_samples>1000</max_samples>
<max_instances>100</max_instances>
<max_samples_per_instance>10</max_samples_per_instance>
</resource_limits>

CycloneDDS:

<ResourceLimits>
<MaxSamples>1000</MaxSamples>
<MaxInstances>100</MaxInstances>
<MaxSamplesPerInstance>10</MaxSamplesPerInstance>
</ResourceLimits>

Partition

HDDSFastDDSCycloneDDSRTI Connext
Partition::new(["a", "b"])<name>a</name><name>b</name>Partition("a,b")<name>a</name><name>b</name>

Time-Based Filter

HDDSFastDDSCycloneDDSRTI Connext
TimeBasedFilter::from_millis(N)minimum_separationMinimumSeparationminimum_separation

Transport Priority

HDDSFastDDSCycloneDDSRTI Connext
TransportPriority::new(N)<value>N</value>N/A<value>N</value>

Compatibility Rules

Matching Requirements

QoS PolicyRequirement for Match
ReliabilityWriter ≥ Reader
DurabilityWriter ≥ Reader
DeadlineWriter period ≤ Reader period
OwnershipWriter = Reader
LivelinessWriter kind ≥ Reader kind
PresentationAccess scope compatible
PartitionAt least one overlap

Default Values Comparison

PolicyHDDS DefaultFastDDS DefaultCycloneDDS DefaultRTI Default
ReliabilityBestEffortBestEffortBestEffortBestEffort
DurabilityVolatileVolatileVolatileVolatile
HistoryKeepLast(1)KeepLast(1)KeepLast(1)KeepLast(1)
DeadlineInfiniteInfiniteInfiniteInfinite
LivelinessAutomaticAutomaticAutomaticAutomatic

Wire Compatibility Notes

All DDS implementations use the same RTPS wire protocol, so QoS policies are communicated during discovery. However:

  1. Vendor extensions: Some vendors have proprietary QoS extensions not compatible with others
  2. Defaults may differ: Explicit configuration recommended for interoperability
  3. Type consistency: XTypes support varies; use @appendable for safety

Next Steps