DDS - Data Distribution Service ================================ .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **What is DDS?** DDS stands for **Data Distribution Service**. It is a middleware protocol and API standard developed by the Object Management Group (OMG) for **real-time, scalable, and high-performance data exchange** between devices or applications using a **publish-subscribe communication model**. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Why is DDS useful?** * Enables **low-latency**, **high-throughput**, and **real-time data exchange**. * Ideal for **distributed systems** with multiple producers and consumers of data. * Supports **Quality of Service (QoS)** settings for reliability, durability, latency, etc. * Facilitates **data-centric communication**, where data itself is the focus. * Scales easily from **embedded systems to enterprise applications**. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **How it works?** * DDS uses a **publish-subscribe architecture**: * **Publishers** send data on defined topics. * **Subscribers** express interest in topics and receive matching data. * Communication is **data-centric**, not message-centric. * It includes a **Data-Centric Publish-Subscribe (DCPS)** layer for real-time data delivery. * DDS manages **discovery, reliability, filtering, and QoS** automatically. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Where is DDS used?** * **Autonomous vehicles** (for sensor fusion, control systems). * **Robotics** (e.g., ROS 2 uses DDS as its middleware). * **Defense and aerospace** (command and control systems). * **Medical devices** (data communication between equipment). * **Industrial automation**, **telecom**, and **financial systems**. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which OSI layer does this protocol belong to?** * DDS operates primarily at the **Application Layer (Layer 7)**. * It also provides features that interact with **Session** and **Presentation** layers, especially for QoS and data formatting. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **IS DDS Windows specific?** * No, DDS is **not Windows-specific**. * DDS implementations are cross-platform and support **Windows**, **Linux**, **macOS**, **RTOSes**, and embedded platforms. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **IS DDS Linux Specific?** * No, DDS is **not Linux-specific**. * Linux is commonly used for DDS-based systems, especially in robotics and embedded applications, but it is widely supported on many platforms. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which Transport Protocol is used by DDS?** * DDS implementations typically use: * **UDP** for real-time, best-effort or reliable communication. * **TCP** for reliable, connection-oriented communication (optional). * Some versions support **shared memory**, **serial**, or **custom transports** for embedded environments. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Which Port is used by DDS?** * DDS uses **dynamic port ranges**, depending on the implementation and configuration. * Example: RTI Connext DDS may use ports like **7400-7500 UDP**, but these can be customized. * DDS uses the **Real-Time Publish-Subscribe (RTPS)** protocol which defines its own discovery and communication ports. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow **Is DDS using Client server model?** * No, DDS uses a **peer-to-peer publish-subscribe model**, not a traditional client-server model. * Every node can act as a **publisher**, **subscriber**, or both, and they **discover each other dynamically** without a central broker. .. panels:: :container: container pb-4 :column: col-lg-12 p-2 :card: shadow Topics in this section, * :ref:`Learnings in this section ` * :ref:`Terminology ` * :ref:`Version Info ` * :ref:`DDS Version&IEEE Details ` * :ref:`DDS Basic Setup on Ubuntu using IPv4 ` * :ref:`DDS Basic Setup on Ubuntu using IPv6 ` * :ref:`DDS Protocol Packet Details ` * :ref:`DDS Usecases ` * :ref:`DDS Basic Features ` * :ref:`Reference links ` .. _DDS_step1: .. tab-set:: .. tab-item:: Learnings in this section * In this section, you are going to learn .. _DDS_step2: .. tab-set:: .. tab-item:: Terminology * Terminology .. _DDS_step3: .. tab-set:: .. tab-item:: Version Info * Version Info .. _DDS_step5: .. tab-set:: .. tab-item:: DDS Version&RFC Details * rfc details .. _DDS_step18: .. tab-set:: .. tab-item:: DDS Basic Setup on Ubuntu using IPv4 * setup .. _DDS_step19: .. tab-set:: .. tab-item:: DDS Basic Setup on Ubuntu using IPv6 * setup .. _DDS_step6: .. tab-set:: .. tab-item:: DDS Protocol Packet Details * packet details .. _DDS_step7: .. tab-set:: .. tab-item:: DDS Usecases * usecases .. _DDS_step8: .. tab-set:: .. tab-item:: DDS Basic Features * features .. _DDS_step17: .. tab-set:: .. tab-item:: Reference links * Reference links