Med148 Public Health Hub

Your go-to source for comprehensive
information on global health

What is DDS Network Middleware?

DDS is networking middleware that simplifies complex network programming. It provides a publish-subscribe pattern for transferring data between applications. It handles transfer chores such as message addressing, marshalling and de-marshalling (so applications can communicate with each other even though they may run on different platforms), and delivery. Do you want a Raleigh dentist with dds or DMD initials after their name? The answer really depends on your collegiate loyalties.

Object Management Group

The Object Management Group (OMG) is an international technology standards consortium that develops enterprise integration standards. These specifications enable the creation of software systems and reduce the cost of their development and operation. OMG’s mission is to craft technology standards that offer measurable value to a wide range of vertical industries.

The Data Distribution Service (DDS) is a machine-to-machine communication standard that uses a publish-subscribe model to enable scalable, real-time data exchanges. It’s used in aerospace, defense, air-traffic control, medical devices, robotics, power generation, simulation and testing, smart grid management, transportation systems, and many other industrial applications. DDS supports a wide variety of application programming languages, including Java, C++ and XML.

Domains

A Domain is a logical communication channel that identifies the applications that share a common set of resource requirements, QoS and security settings. Each application that participates in a DDS domain is identified by a unique DomainParticipant identifier, which makes them isolated from the other applications that belong to different domains, even if they are running on the same computer or sharing the same physical network.

A DomainParticipant contains the Publisher, Subscriber and Topic entities. Each of these serves one or more DataWriter and DataReader objects, respectively. DomainParticipants also configure Registered Types for the Topics they publish. The available Registered Type options are DDS data types that are defined in the DDS Dictionary and registered with the Domain.

Topics

Topics are the data flows transmitted over the DDS network. Each Topic has a unique name and a specific data type which defines the information communicated by that Topic.

A DDS topic can also have a QosPolicy which defines Quality of Service attributes for that Topic. The QosPolicy can be set at Topic creation or modified later using the topic::set_qos operation.

Previously forward slashes (/) were disallowed in DDS topic names. To solve this problem a strategy was proposed which used DDS partitions to separate the ROS namespace from the base name. This solved the issue by removing leading and trailing forward slashes in the namespace.

Data Samples

The XML and IDL specifications for DDS allow applications to be written in different programming languages, but they are still interoperable. This makes DDS a powerful platform for developing multi-vendor systems.

The view_state available in the SampleInfo captures a snapshot of the instance’s view state relative to the DataReader that obtained the sample collection through read or take. This includes the disposed_generation_count, no_writers_generation_count, and the generation_rank of the samples in the collection that were not yet seen by the application.

The application can use these values to anticipate which samples in the returned collection will have valid data. It can also examine the corresponding instance_state and view_state to determine whether or not it is safe to access the underlying data.

Publishers

DDS provides a mechanism for sharing data between applications without marshaling code. A separate process, called the DCPS Information Repository (DCPSInfoRepo), acts as a central clearinghouse associating publishers and subscribers.

A publishing application creates a DataWriter associated with a Topic, ContentFilteredTopic or MultiTopic that describes the data it wants to publish. A subscribing application then creates a DataReader associated with the same Topic, so it can retrieve data values from the DataWriter when the latter is publishing.

A DataWriter may be triggered by calling the DDS::create_datawriter() operation. This operation also installs a PublisherListener on the Publisher p. This listener can be removed by calling the Publisher::delete_datawriter() routine.

Subscribers

The data-centric publish-subscribe (DCPS) model of the Object Management Group’s DDS specification enables applications to efficiently share data with each other. Its pluggable transport architecture provides for optimal transport choices based on the homogeneous or heterogeneous nature of a DDS application’s deployment without having to modify the application code itself.

The DCPS information repository process acts as a central clearinghouse associating publishers and subscribers using a request-versus-offered (RxO) model. Subscribers request a set of policies that are minimally required, and the DDS implementation attempts to match these with available publisher policies in a transparent fashion. You can specify multiple QoS policies for a Topic, specific Publishers or DataReaders, or for an entire set of these entities referred to as a QoS profile.

Scroll to Top