Interoperability Guide
One of DDS's greatest strengths is interoperability. HDDS can communicate with other DDS implementations out of the box, thanks to the standardized RTPS wire protocol.
Supported Implementations
HDDS has been tested and verified to interoperate with:
| Implementation | Vendor | RTPS Version | Status |
|---|---|---|---|
| FastDDS | eProsima | 2.3 | Fully compatible |
| RTI Connext | RTI | 2.5 | Fully compatible |
| CycloneDDS | Eclipse | 2.3 | Fully compatible |
| OpenDDS | OCI | 2.3 | Compatible (with notes) |
How Interoperability Works
All compliant DDS implementations use the RTPS (Real-Time Publish Subscribe) protocol for communication. This means:
- Automatic Discovery - Participants find each other via SPDP multicast
- Wire Compatibility - Data is serialized using CDR2 format
- QoS Negotiation - Compatible QoS policies are matched automatically
Quick Start
To communicate between HDDS and another DDS implementation:
- Use the same Domain ID (e.g., domain 0)
- Use the same Topic name (e.g., "sensor/temperature")
- Use compatible data types (same structure, generated from same IDL)
- Use compatible QoS (e.g., both RELIABLE or both BEST_EFFORT)
Example: HDDS Publisher → FastDDS Subscriber
HDDS Publisher (Rust):
let participant = DomainParticipant::new(0)?;
let topic = participant.create_topic::<Temperature>("sensor/temp")?;
let writer = participant.create_writer(&topic)?;
writer.write(&Temperature { sensor_id: "s1".into(), value: 23.5 })?;
FastDDS Subscriber (C++):
auto participant = DomainParticipantFactory::get_instance()->create_participant(0, ...);
auto topic = participant->create_topic("sensor/temp", "Temperature", ...);
auto reader = subscriber->create_datareader(topic, ...);
// Will receive data from HDDS publisher
Detailed Guides
- FastDDS Interop - Step-by-step FastDDS setup
- RTI Connext Interop - RTI configuration
- CycloneDDS Interop - Eclipse CycloneDDS setup
- QoS Translation Matrix - QoS mapping between vendors
Common Issues
Type Mismatch
Ensure both sides use the same IDL definition:
// Both HDDS and FastDDS should use this exact IDL
struct Temperature {
@key string sensor_id;
float value;
};
QoS Incompatibility
QoS policies must be compatible for matching:
| Writer QoS | Reader QoS | Result |
|---|---|---|
| RELIABLE | RELIABLE | Match |
| RELIABLE | BEST_EFFORT | Match |
| BEST_EFFORT | RELIABLE | No Match |
| BEST_EFFORT | BEST_EFFORT | Match |
Discovery Issues
If participants don't discover each other:
- Check firewall settings (ports 7400-7500)
- Verify multicast is enabled
- Check domain IDs match
- Use
hdds_viewerto debug traffic