In the 2008 I began studying the Distribution Data Service, this was a very interesting argument and, I thought that this was a very modern way to approach the network problem.


In September 2009 I became the Italian FAE (Field Application Engineer) for RTI (Real Time for Innovations), and now I spend a lot of my time working on the DDS, helping the customers to develop their best product with the DDS.


Sometimes I make conferences in the High Scools or in the Universities, you can find the material used for these conferences selecting the menu 

The OMG Data-Distribution Service for Real-Time Systems (DDS) is the first open international middleware standard directly addressing publish-subscribe communications for real-time and embedded systems.

DDS introduces a virtual Global Data Space where applications can share information by simply reading and writing data-objects addressed by means of an application-defined name (Topic) and a key. DDS features fine and extensive control of QoS parameters, including reliability, bandwidth, delivery deadlines, and resource limits. DDS also supports the construction of local object models on top of the Global Data Space.

There are a lot of sites on the internet about the DDS, to start you can go to the OMG DDS portal or on the wikipedia site




From the Wikipedia:


DDS architecture

DDS entities

DomainParticipantFactory: A singleton factory that is 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 for the creation of DDS Publishers, Subscribers, Topics, MultiTopics and ContentFilteredTopics.

TopicDescription: Abstract base class for Topic, ContentFilteredTopic and MultiTopic.

Topic: A specialization of TopicDescription that is the most basic description of the data to be published and subscribed.

ContentFilteredTopic: A specialized TopicDescription like the Topic that additionally allows content-based subscriptions.

MultiTopic: A specialization of TopicDescription like the Topic that additionally allows subscriptions to combine/filter/rearrange data coming from several topics.

Publisher: A Publisher is the object responsible for the actual dissemination of publications.

DataWriter: Allows the application to set the value of the data to be published under a given Topic.

Subscriber: A Subscriber is the object responsible for the actual reception of the data resulting from its subscriptions.

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 model

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 are producing information (publishers) create "topics" (e.g., temperature, location, pressure) and publish "samples." DDS takes care of delivering the sample to all subscribers that declare an interest in that topic.

DDS handles all the transfer chores: message addressing, data marshalling and demarshalling (so subscribers can be on different platforms than 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 entirely decoupled. Very little design time has to be spent on how to handle their mutual interactions. In particular, the applications never need information about the other participating applications, including their existence or locations. DDS automatically handles all aspects of message delivery, without requiring any intervention from the user applications, including:

determining who should receive the messages,

where recipients are located,

what happens if messages cannot be delivered.

This is made possible by the fact that DDS allows the user to specify Quality of Service (QoS) parameters as a way to configure automatic-discovery mechanisms and specify the behavior used when sending and receiving messages. The mechanisms are configured up-front and require no further effort on the user's part. By exchanging messages in a completely anonymous manner, DDS greatly simplifies distributed application design 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.

Since 2009, I'm the Field Application Engineer for RTI in Italy, in this site you can find some useful info about the RTI DDS implementation. Just take a look to