Skip to content
William Woodall edited this page Nov 15, 2013 · 1 revision

Specifications

Specification committees are managed by the Object Management Group (OMG). Self described as a Data-centric Publish Subscribe (DCPS) system. Also defines a Data Local Reconstruction Layer (DLRL) system, which is used at the application level. The DLRL system provides a plain object interface backed by the publish subscribe system.

This presentation has a good overview/timeline of DDS related specifications' evolution:

http://www.slideshare.net/Angelo.Corsaro/dds-for-jms-programmers

DDS

http://en.wikipedia.org/wiki/Data_Distribution_Service

The Data Distribution Service for Real-Time Systems (DDS) is described as a Data-Centric Publish Subscribe (DCPS) system. This specification defines the concepts and behavior of the publish subscribe system as well as the generic API. This includes the core concepts, how discovery works, how the connection process behaves, how the API should look, what Quality of Service features exist, etc...

Versions of the DDS Specification

  • 1.2 June 1, 2003
  • 1.1 December 4, 2005
  • 1.0 January 1, 2007

DDSI/RTPS

http://en.wikipedia.org/wiki/RTPS_protocol

The "Real-time Publish-Subscribe Wire Protocol DDS Interoperability Wire Protocol Specification" (DDSI, DDS-I, or sometimes the RTPS protocol) defines the wire protocol which you must adhere to in order to be DDS interoperability compliant.

DDS shifted to this wire format which was based on the existing Real-time Publish-Subscribe wire protocol already in use by industrial electronics vendors in order to better support their use cases as they were potential new customers. I point that out to say that this wire protocol started as something used in industrial automation and electronics, then was adopted by multiple middleware companies as their common interoperability format, which lends to its credibility as something that works.

RTPS is defined by a set of modules, each with a definition as part of the PIM (Platform Independent Module) and definitions in one or more PSM (Platform Specific Module) definitions. This way the general concepts and constraints can be put into the common PIM, while there also exists a PSM for each potential implementation platform, allowing for flexibility in the implementation. For example, the PIM describes discovery and a corresponding PSM describes how to implement discovery on top of multicast UDP/IP. The four modules which make up RTPS are as follows:

  • Discovery
  • Behavior
  • Structure
  • Messages

Versions of the DDS-I

  • 2.1 January, 2009
  • 2.0 June, 2007
  • 1.2 June, 2006

RTPS Transport Model

RTPS allows for many different kinds of underlying transports, but all must implement basic unicast UDP/IP. The RTPS protocol was design to only need at least a connectionless service capable of sending packets best-effort. From the spec:

The general requirements RTPS poses on the underlying transport can be summarized as follows:

- The transport has a generalized notion of a unicast address (shall fit within 16 bytes).
- The transport has a generalized notion of a port (shall fit within 4 bytes), e.g., could be a UDP port, an offset in a shared memory segment, etc.
- The transport can send a datagram (uninterpreted sequence of octets) to a specific address/port. The transport can receive a datagram at a specific address/port.
- The transport will drop messages if incomplete or corrupted during transfer (i.e., RTPS assumes messages are complete and not corrupted).
- The transport provides a means to deduce the size of the received message.

UML4DDS

Allows you to build DDS applications using UML (Unified Modeling Language). UML is something else the OMG came up with.

This was created in 2008.

X-Types

This specification, titled "Extensible and Dynamic Topic Types for DDS", is a specification for defining types which can change over time by extension or mutation. This seems to be a replacement for the OMG's IDL system for defining types.

Two Language bindings are described:

  • Plain Language Bindings
  • Dynamic Language Bindings

The Plain Language Bindings appear to be just accessors for the data of a predefined message. The Dynamic Language Bindings add the ability to programmatically process or mutate type definitions are runtime.

Versions of X-Types

  • 1.0 November, 2012

Open Source Options

  • OpenDDS
  • Custom License (LGPL like?)
  • ConnextDDS (RTI)
  • Weird open license which requires contact info for anyone you distribute it to, be collected and returned to RTI
  • OpenSplice (PrismTech)
  • LGPL

Questions

Serialization/Encoding/Marshalling

  • Is the OMG IDL serialization required? Can other serialization libraries be used on top of DDS?

Discovery

  • How is the location value for a participant determined (IP address)?

Delayed Delivery (Persistent or Transient Durability)

  • Can a subscriber detect/specially handle when it is being "caught" up vs real-time data?

Topic Key's

  • Why not just use topic namespacing?

Time-Based Filtering QoS

  • Are "dropped" messages sent over the wire?
  • How is this handled in multicast situations, are sub->pub connections for TIME_BASED_FILTER'ed limited to p2p unicast?

Content-Based Filtering

  • How are the conditions formulated, in the host language (test function), or in some proto-language?

Ordered Delivery

  • How is this implemented, just use the HistoryCache and wait for some amount of time before giving up on next seq.?

Resources:

http://www.slideshare.net/JaimeMartin-eProsima/dds-advanced-tutorial-omg-june-2013-berlin-meeting http://www.slideshare.net/GerardoPardo/introduction-to-omg-dds-1-hour-45-slides