Data Distribution Service
|This article may rely excessively on sources too closely associated with the subject, potentially preventing the article from being verifiable and neutral. (July 2014)|
||It has been suggested that Real-Time Publish-Subscribe (RTPS) Protocol be merged into this article. (Discuss) Proposed since November 2013.|
The Data Distribution Service for Real-Time Systems (DDS) is an Object Management Group (OMG) machine-to-machine middleware "m2m" standard that aims to enable scalable, real-time, dependable, high-performance and interoperable data exchanges between publishers and subscribers. DDS addresses the needs of applications like financial trading, air-traffic control, smart grid management, and other big data applications. The standard is used in applications such as smartphone operating systems, transportation systems and vehicles, software-defined radio, and by healthcare providers. DDS may also be used in certain implementations of the Internet of Things.
A few proprietary DDS systems had been available for several years. Starting in 2001, two vendors, the American group, Real-Time Innovations, and the French Thales Group teamed up to create the DDS specification, which was subsequently approved by the Object Management Group resulting in Version 1.0 in 2003.
- DDS 1.4 (April 2015)
- DDS 1.2 (January 1, 2007)
- DDS 1.1 (December 4, 2005)
- DDS 1.0 (June 1, 2003)
The DDS specification describes two levels of interfaces:
- A lower DCPS (Data-centric publish-subscribe) level that is targeted towards the efficient delivery of the proper information to the proper recipients.
- An optional higher DLRL (data local reconstruction layer) level, which allows for a simple integration of DDS into the application layer.
Starting with DDS version 1.4, the optional DLRL layer was moved to a separate DDS-DLRL specification:
- DomainParticipantFactory: A singleton factory; the main entry point to DDS.
- DomainParticipant: Entry point for the communication in a specific domain; it represents the participation of an application in one DDS Domain. Furthermore, it acts as a factory of DDS Publishers, Subscribers, Topics, MultiTopics and ContentFilteredTopics.
- TopicDescription: The most basic description of the data to be published and subscribed.
- Topic: Abstract base class for Topic, ContentFilteredTopic and MultiTopic. A specialized TopicDescription.
- ContentFilteredTopic: A specialized TopicDescription that additionally allows content-filtered subscriptions.
- MultiTopic: A specialized TopicDescription that additionally allows subscriptions to combine/filter/rearrange data from several topics.
- Publisher: A Publisher is an object responsible for the actual dissemination of publications.
- DataWriter: Sets the data values to be published under a given Topic.
- Subscriber: A Subscriber is an object responsible for the actual reception of data disseminated by publishers.
- DataReader: A DataReader allows the application to declare the data it wishes to receive (by making a subscription using a Topic, ContentFilteredTopic or MultiTopic) and to access the data received by the attached Subscriber.
DDS is networking middleware that simplifies complex network programming. It implements a publish/subscribe model for sending and receiving data, events, and commands among the nodes. Nodes that produce information (publishers) create "topics" (e.g., temperature, location, pressure) and publish "samples". DDS delivers the samples to subscribers that declare an interest in that topic.
DDS handles transfer chores: message addressing, data marshalling and demarshalling (so subscribers can be on different platforms from the publisher), delivery, flow control, retries, etc. Any node can be a publisher, subscriber, or both simultaneously.
The DDS publish-subscribe model virtually eliminates complex network programming for distributed applications.
DDS supports mechanisms that go beyond the basic publish-subscribe model. The key benefit is that applications that use DDS for their communications are decoupled. Little design time need be spent on handling their mutual interactions. In particular, the applications never need information about the other participating applications, including their existence or locations. DDS transparently handles message delivery without requiring intervention from the user applications, including:
- determining who should receive the messages
- where recipients are located
- what happens if messages cannot be delivered
DDS allows the user to specify Quality of Service (QoS) parameters to configure discovery and behavior mechanisms up-front. By exchanging messages anonymously, DDS simplifies distributed applications and encourages modular, well-structured programs.
DDS also automatically handles hot-swapping redundant publishers if the primary fails. Subscribers always get the sample with the highest priority whose data is still valid (that is, whose publisher-specified validity period has not expired). It automatically switches back to the primary when it recovers, too.
Both commercial and open-source implementations of DDS are available. These include APIs in Ada, C, C++, C#, Java, Scala, Lua, Pharo and Ruby. Open-source implementations are shown in the table below:
During demos, each vendor publishes and subscribes to each other's topics using a test suite called the Shapes Demo. For example, one vendor publishes information about a shape and the other vendors can subscribe to the topic and display the results on their own Shapes Display. Each vendor takes turns publishing the information and the other subscribe.
Two things made the demos possible:
- Data Distribution Service (DDS) Interoperability Spec sometimes referred to as DDS-I or the Real-Time Publish-Subscribe (RTPS) Protocol 
- The agreement to use a common model
In March 2009, three vendors (RTI, PrismTech and Twin Oaks) demonstrated interoperability between the individual, independent products that implement the OMG The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification, Version 2.1, January 2009  Specification. The demonstration included the discovery of each other's publishers and subscribers on different OS Platforms (Windows and Linux) and supported multicast and unicast network communications.
By March 2013, six more companies joined the interoperability demonstration: Object Technology Inc. (OCI, OpenDDS), Electronics and Telecommunications Research Institute (ETRI), IBM, Kongsberg, Milsoft, and RemedyIT.
The DDS Interoperability demonstration used multiple scenarios to highlight strength of the specifications and the rigor of all the implementations to the standard: The scenarios are:
- Basic Connectivity to network using Internet Protocol (IP)
- Discovery of publishers and subscribers
- Quality of Service (QoS) Compatibility between requester and offerer
- Delay-tolerant networking
- Multiple Topics and instances of topics
- Exclusive Ownerships of topics
- Content filtering of topic data including time and geographic
- Data Distribution Service for Real-time Systems (DDS) is the main Object Management Group (OMG) specification
- The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification defines an interoperability protocol sometimes referred to as the wire protocol. It ensures that information published on a topic using one vendor's DDS implementation is consumable by one or more subscribers using the same or different vendor's DDS implementations. Although the specification is targeted at the DDS community, its use is not limited.
- DDS for Lightweight CCM (dds4ccm) - This specification offers an architectural pattern that separates the business logic from the non-functional properties. A recent extension adds support for streams.
- DDS-Java: Java 5 Language PSM for DDS - This specification defines Java 5 language binding, referred to as a Platform Specific Model (PSM) for DDS. It specifies only the Data-Centric Publish-Subscribe (DCPS) portion of the DDS specification; Additionally, it encompasses the DDS APIs introduced by DDS-XTypes and DDS-CCM.
- DDS-PSM-Cxx: ISO/IEC C++ 2003 Language DDS PSM - This specification defines the ISO/IEC C++ PSM language binding, referred to as a Platform Specific Model (PSM) for DDS. It provides a new C++ API for programming DDS that is more natural to a C++ programmer. This specification does not impact the DDSI.
The specification provides mappings for:
- The Application Programming Interface (API) specified in DDS-XTypes
- Accessing Quality of Service (QoS) profiles specified in DDS-CCM
- Extensible and Dynamic Topic Types for DDS (DDS-XTypes) provides support for data-centric publish-subscribe communication where topics are defined with specific data structures. To be extensible, DDS topics use data types defined before compile time and used throughout the DDS global data space. This model is desirable when static type checking is useful.
- UML Profile for Data Distribution provides a Unified Modeling Language (UML) profile. It allows for DDS Domains and Topics to be part of the analysis and design modeling efforts of object-oriented systems.
This specification also defines how to publish and subscribe objects without first describing the types in another language, such as XML or OMG IDL.
- Interface Definition Language provides an Interface Definition Language (IDL) independently from the OMG Common Object Request Broker Architecture (CORBA) specification Chapter 3. This IDL 3.5 is completely compatible with the CORBA 3 specification, but is extracted as its own specification so that it can evolve independently from CORBA, however, the IDL specification is intended to remain compatible with CORBA in all future releases. When a new version of CORBA is released, it will point to IDL 3.5 instead of maintaining its own specification.
- Open architecture computing environment
- Object Management Group (OMG), standards body that developed the specification
- Real-Time Publish-Subscribe (RTPS) Protocol
- What Can DDS Do For Android, 2012, http://www.omg.org/hot-topics/documents/dds/Android_and_DDS1.pdf
- City of Tokyo Metropolitan Highway Line, 2013, http://www.omg.org/hot-topics/documents/dds/Tokyo_Snapshot_1.pdf
- Building the Internet of Things with DDS, 2013, http://www.omg.org/news/meetings/tc/nj-13/special-events/iot-pdfs/corsaro.pdf
- Data Distribution Service (DDS), Version 1.4, April 2015, http://www.omg.org/spec/DDS/1.4
- Data Distribution Service (DDS), Version 1.2, January 2007, http://www.omg.org/spec/DDS/1.2
- Data Distribution Service (DDS), Version 1.1, December 2005, http://www.omg.org/spec/DDS/1.1
- Data Distribution Service (DDS) , Version 1.0, December 2004, http://www.omg.org/spec/DDS/1.0
- US Patent US8874686
- US Patent US8671135
- US Patent US8150988
- US Patent US9015672
- Justia, Patents by Assignee Real-Time Innovations, Inc.
- 2009, March 2009, http://www.omg.org/news/meetings/GOV-WS/pr/rte-pres/ddsi-demo.pdf
- 2010, March 2010, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2010
- 2011, March 2011, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2011
- 2012, March 2012, https://community.rti.com/content/presentation/omg-dds-interoperability-demo-2012
- 2013, March 2013, http://www.slideshare.net/GerardoPardo/dds-interoperability-demo-2013-washington-dc
- OMG DDS Interoperability Demo video, December 2010, http://www.youtube.com/watch?v=Bn56V0NLW1E
- The Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification, Version 2.1, January 2009, OMG:formal/2009-01-05, http://www.omg.org/spec/DDSI/2.1
- Data Distribution Service for Real-time Systems (DDS), Version 1.2, formal/2007-01-01, January 2007, http://www.omg.org/spec/DDS/1.2
- DDS for Lightweight CCM (dds4ccm), Version 1.1, formal/2012-02-01, February 2012, http://www.omg.org/spec/dds4ccm/1.1/PDF/
- Programming languages — C++, 15 October 2003, ISO/IEC 14882, http://www.iso.org/iso/catalogue_detail.htm?csnumber=38110
- DDS-PSM-Cxx: ISO/IEC C++ 2003 Language DDS PSM, Version ptc/2011-01-02, January 2011, http://www.omg.org/spec/DDS-PSM-Cxx/1.0/Beta1/PDF
- Extensible and Dynamic Topic Types for DDS (DDS-XTypes), 1.0, formal/2012-11-10, November 2012, http://www.omg.org/spec/DDS-XTypes/1.0/PDF
- UML Profile for Data Distribution, version: 1.0, formal/08-04-07, April 2008, http://www.omg.org/spec/CCCMP/1.0/PDF
- DDS-Java: Java 5 Language PSM for DDSVersion 1.0, ptc/2012-12-01, March 2013 http://www.omg.org/spec/DDS-Java/1.0/Beta3/PDF
- Interface Definition Language (IDL), Version 3.5, March 2014, http://www.omg.org/spec/IDL35/3.5/
- OMG DDS Hot Topics Resource Page
- PocoCapsule for DDS A framework for component-based CORBA and DDS applications.
- Catalog of DDS Specifications