# DDS Note
Data Distribution Service™ is a middleware protocol and API standard that provides data connectivity, extreme reliability and a scalable architecture to meet real-time system requirements.
## PROS
- [Data-Centric Publish-Subscribe (DCPS)](https://www.omgwiki.org/ddsf/doku.php?id=ddsf:public:guidebook:06_append:glossary:d:dcps)
- extensive Quality of Service (QoS)
- setting transfer priority (?)
- peer-to-peer, transmit parallel
- request/reply mechanism: when invoking a service or send a command for which you’re expecting a response
- support one request, many response mode: format_id change ?
- (??) The elimination of a central server/broker means no single point of failure or attack, and no choke point from a performance perspective. This makes DDS-based systems extremely well-suited for edge-autonomy applications, where low latency, high reliability, and massive scalability are paramount. Yes, DDS can provide the functionality of all the other IoT solutions, but it can also deliver so much more.
## CONS
- slow (?) than message queue: DDS is inefficient because it publishes data everywhere.
- DDS is not secure: RTPS (Real Time Publish Subscribe protocol) using Transport Layer Security (TLS) transport / Datagram Transport Layer Security (DTLS)
- DDS is too complicated for my system: The area where a developer could get overwhelmed is when they first investigate the Quality of Service Policies that are provided by DDS. There are approximately 23 high-level QoS Policies, and inside each of these policies there can be a number of individual settings.
## check point
- Extensible and Dynamic Topic Types (X-Types) for DDS ?
- language: Formal language bindings exist for Java and C/C++ (including modern C++)
- RAM requirements
- is it possible to run into DDS crush or panic ?
- web-enabled DDS standard ?
## DDS Security specification
This specification provides a framework for securing systems at the data/topic level through the use of:
* Authentication
* Access control
* Encryption/decryption
* Data tagging
* Security event logging

## Ref
- [Cyclone DDS doc](https://cyclonedds.io/docs/cyclonedds/0.10.2/)
- [在軟體定義汽車中使用DDS中介軟體的安全機制](https://www.eettaiwan.com/20220325ta31-safety-mechanisms-using-the-dds-middleware-in-software-defined-cars/)
- [Myths About the DDS Standard](https://www.electronicdesign.com/technologies/embedded-revolution/article/21807399/11-myths-about-the-dds-standard)
- [DATA DISTRIBUTION SERVICE (DDS) - OMG](https://www.omg.org/omg-dds-portal/)
- [使用DDS來開發RTOS](http://po-jen.github.io/design/articles/ros_on_dds.html)
- [Fast DDS vs Cyclone DDS performance](https://www.eprosima.com/index.php/resources-all/performance/fast-dds-vs-cyclone-dds-performance)
: In the majority of the tested cases, Fast DDS exposes a lower and more stable latency than Cyclone DDS.