+ All Categories
Home > Technology > OMG DDS: The Data Distribution Service for Real-Time Systems

OMG DDS: The Data Distribution Service for Real-Time Systems

Date post: 13-Nov-2014
Category:
Upload: angelo-corsaro
View: 5,980 times
Download: 4 times
Share this document with a friend
Description:
These slides were presented at the CANOE Summer School in OSLO (http://bit.ly/pYSD2) and provide an introduction to the OMG DDS Pub/Sub Standard.
Popular Tags:
134
Angelo Corsaro, Ph.D. Product Strategy Manager OMG RTESS and DDS SIG Co-Chair [email protected] Delivering Performance, Openness, and Freedom Open Splice DDS OMG DDS: The Data Distribution Service for Real-Time Systems
Transcript

Angelo Corsaro, Ph.D.Product Strategy Manager

OMG RTESS and DDS SIG [email protected]

Delivering Performance, Openness, and Freedom

OpenSplice DDS

OMG DDS: The Data Distribution Service for Real-Time Systems

Age

nda

Motivating Forces

The Standard

Architectural Principles

Programming Model

Future Directions

Complex Information Management

Scalability, Persistence, Security

Distributed Systems

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

The Need for Data DistributionGeographical ScaleTime Scale

Near Real-Time Fault-Tolerant Information

Processing

Throughput, Availability

Real-Time Information Processing

DeterminismParallelism

Systemic Signal

Processing

Data Processing

Parallel Systems

Data Distribution

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Data Exchange / Distribution‣ Network Centric Architectures are emerging as a key trend for next generation military and civil

system of systems

‣ Efficient, scalable and QoS-enabled data dissemination is an enabling technology for Network Centric Systems

Adapted from “The Future of AWACS”,

by LtCol Joe Chapa

Joint Forces

Global Info Grid

Joint Forces

Global Info Grid

The Right Information => To the Right People => At the Right Time

Age

nda

Motivating Forces

The Standard

Architectural Principles

Programming Model

Future Directions

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Addressing Data Distribution Challenges

The OMG DDS Standard‣ Introduced in 2004 to address the Data

Distribution challenges faced by a wide class of Defense and Aerospace Applications

‣ Key requirement for the standard were its ability to deliver very high performance while seamlessly scaling from embedded to ultra-large-scale deployments

‣ Today recommended by key administration worldwide and widely adopted across several different application domains, such as, Automated Trading, Simulations, SCADA, Telemetry, etc.

DDS is standard designed to address the data-distribution challenges across a wide class of Defense and Aerospace Applications

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

The OMG Data Distribution Service (DDS)

DDS v1.2 API Standard‣ Language Independent, OS and HW architecture

independent

‣ DCPS. Standard API for Data-Centric, Topic-Based, Real-Time Publish/Subscribe

‣ DLRL. Standard API for creating Object Views out of collection of Topics

DDSI/RTPS v2.1 Wire Protocol Standard‣ Standard wire protocol allowing interoperability

between different implementations of the DDS standard

‣ Interoperability demonstrated among key DDS vendors in March 2009

Object/Relational Mapping

Ownership DurabilityContent

Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

Data Local Reconstruction Layer (DLRL)

DDS Interoperability Wire Protocol

Application

UDP/IP

Real-Time Publish/Subscribe Protocol

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

OMG DDS RecommendationsMandated/Recommended by key Administrations

‣US Navy: Open Architecture

‣DISR/DISA: Net-centric Systems

‣EuroControl: Air Traffic Control Center Operational Interoperability

‣QinetiQ: Recommending DDS for VSI

A Great Time for DDS!

! The infrastructure evolution cycle is churning…– New -> Emerging -> Standard -> Commodity

– Middleware is emerging as OS declines

! …DDS is maturing…– OMG focus

– Wire spec

– Tools

– Enterprise integration

– Multiple products fielded

– Deployed applications!

! …and adoption is on the rise– Navy

– DISR

– FCS/SoSCOE

– Many significant applications

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

OMG DDS AdoptionsAdopted by Most Challenging International Programs

‣US FCS/SOSCOE

‣European Next Generation Flight Data Processor

‣US ZUMWALT [DDG(1000)]

‣VTID adopting DDS for the architectural demonstrator

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

OMG DDS ApplicabilityAdapted from NSWC-DD Open Architecture Documentation

Non Real-Time Soft Real-Time Hard Real-Time Extreme Real-Time

Com

mun

icat

ion

Tech

nolo

gies

Sta

ndar

ds

The DDS is the only technology that spans across the board.

Web SVCs

Java RTSJ

JMS

CORBA RT-CORBA

OMG Data Distribution Service (DDS)

MPI

It guarantees exceptional real-time behavior, while providing unparalleled level of throughput !

Message Passing Interface

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Some DDS Use CasesDefense

‣ Combat Management Systems

‣ Flycatcher system

‣ Unmanned Vehicles (Air + Land)

‣ Tactical Links

‣ Radar Processing

‣ Submarine Systems

‣ Future Combat Systems

‣ Simulation

SCADA/Utilities

‣ Industrial Automation

‣ Power Grids

‣ Rocket Launch Systems

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Some DDS Use Cases

Transportation

‣ Air Traffic Management/Control

‣ Metropolitan Traffic Management

‣ Underground Metropolitan Transportation

Financial Services

‣ Automated Trading Firms

‣ Compliance Systems

‣ Market Data Platforms

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Leading DDS Implementations

‣ Full Implementation of the OMG DDS Standard (DCPS+DLRL + DDSI)

‣ DCPS + DDSI available as Open Source at http://www.opensplice.org

‣ Developed and Commercially supported by PrismTech

‣ Implementation of the OMG DDS Standard (DCPS + DDSI)

‣ Developed and Commercially supported by RTI

‣ Partial Implementation of the OMG DDS Standard (Subset of DCPS)

‣ Available as Open Source at http://www.opendds.com

‣ Developed and Commercially supported by OCI

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

DDS vs AMQP

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Scope of Standardization

Object/Relational Mapping

Ownership DurabilityContent

Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

Data Local Reconstruction Layer (DLRL)

DDS Interoperability Wire Protocol

Application

UDP/IP

Real-Time Publish/Subscribe Protocol

DD

SI

v2

.1D

DS

v1

.2

Interoperability Wire Protocol

(TCP, SCTP, UDP)/IP

Advanced Message Queuing Protocol

AM

QP

v0

.10

API (?)

Application

Wire Protocol Standard

Pub/Sub Standard API

Object Relational Mapping Standard API

AMQP OMG DDS

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Architectural Style

Publisher

SubscriberPublisher

Publisher

Subscriber

Subscriber

Broker

OMG DDS

Publisher

SubscriberPublisher

Publisher

Subscriber

Subscriber

Broker

Broker

Broker

Broker

Broker

AMQP

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Key Differences in Summary

‣ Brokered Communication Architecture

‣ Peer-to-Peer Communication Architecture

AMQP

‣ Wire Protocol Standard‣ Interoperability across AMQP

implementations

‣ Wire Protocol + API Standard‣ Interoperability across DDS implementations

‣ Application Portability across DDS Implementation

‣ Header Based Routing ‣ Content-Based Filtering/Quering

‣ Not geared for High-Performance ‣ Designed bottom-up for maximum performance and determinism

DDS

Age

nda

Motivating Forces

The Standard

Architectural Principles

Programming Model

Future Directions

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Loosely Coupled Technology

Publisher

Subscriber

Publisher

Publisher

Subscriber

Subscriber

Subscriber

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Counting the “W’s” of Coupling

Client

Request

Reply

Server The “4Ws” of Client/Server‣ Who+Where: Space Coupling

‣ What: Structural Coupling

‣ When: Time CouplingClient/Server CORBA, COM+, Java RMI, .Net Remoting, Web SVCs

DDS

A Single “W” for DDS‣ What: Structural Coupling

DDS features dynamic discovery and full time decoupling!

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

High Performance/Availability Pub/Sub

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

High Performance Pub/Sub

‣ Fully distributed, Peer-to-Peer Communication

‣No Single Point of Failure

‣No Single Point of Bottleneck

‣Multicast-enabled

‣High performance and highly scalable

‣High availability

‣hot-swap

‣hot-hot architecture

The right data, at the right place, at the right time

-- All the Time.

Publisher

SubscriberPublisher

Publisher

Subscriber

Subscriber

Brokers

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Data-CentricPub/Sub

Object/Relational Mapping

Ownership DurabilityContent

Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

Data Local Reconstruction Layer (DLRL)

DDS Interoperability Wire Protocol

Application

UDP/IP

Real-Time Publish/Subscribe Protocol

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Data-Centric Pub/Sub

‣ Distributed Relational Data Model

‣ Local Queries

‣ Continuous Queries / Content Based Subscriptions

‣Windows

‣ Object/Relational Mapping

‣ Support for a subset of SQL-92

Perfect Blend of Data-Centric and Real-Time Publish/Subscribe Technologies

‣ Data-Centric Features are built-in and don’t rely on an external DBMS

‣ Providing thus performance, scalability, and availability

A

B

CD

E

F

m

J

K

Publisher

SubscriberPublisher

Publisher

Subscriber

Subscriber

DBMS

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

“Visualizing” Data-Centric Pub/Sub

A

B

CD

E

F

m

J

K

Publisher

D

E

J

K

A F

CD

A

B D

E

J

K

Subscriber

Subscriber

Subscriber

CD

A

B

Publisher

J

K

A F

Publisher

D

E

A

B

CD

E

F

m

J

K

Publisher

SubscriberPublisher

Publisher

Subscriber

Subscriber

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Organizing Information

‣ All DDS communication is happens within a Domain

‣ Domain can divided into Partitions

‣ Topics are published and subscribed across on or more Partitions

DomainPartition

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Topics and Data-Centric Pub/Sub‣ Topics. Unit of information exchanged between

Publisher and Subscribers.

‣ Data Types. Type associated to a Topic must be a structured type expressed in IDL

‣ Topic Instances. Key values in a datatype uniquely identify a Topic Instance (like rows in table)

‣ Content Awareness. SQL Expressions can be used to do content-aware subscriptions, queries, joins, and correlate topic instances

struct TempSensor { long tID; float temp; float humidity; };#pragma keylist TempSensor tID

tID temp humidity

1

2

3

21 62

27 78

25.5 72.3

TempSensor

Instances

tID

temp

humidity

1

21

62

tID

temp

humidity

1

23

65

tID

temp

humidity

1

22

63

Timet1 t2 t3

Samples

Topic Type

Topic

SELECT * FROM TempSensor t WHERE t.temp > 25

tID temp humidity

2

3

27 78

25.5 72.3

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Distributed Relational Information Modeling

‣ Topic Keys can be used to identify instances as well as relationships

‣ Relationships can be navigated by relying on a subset of SQL 92

‣ One-to-many relationships can be captured using foreign keys

‣Many-to-many relationships need to be modeled using a topics

‣ Keys can be represented by an arbitrary number of Topic fields

tID: inttemp: floathumidity: floatrID: int

TempSensorrID: intwidth: floatheight: floatlength: floatfID: int

Room

fID: intlevel: intopen: int

Floor

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Data Centric Publish/Subscribe

Fully Distributed Global Data Space

struct TempSensor { int tID; float temp; float humidity; };#pragma keylist TempSensor tID

tID temp humidity

1 18 60

tID temp humidity

1

2

3

18 60

22 75

21 71

tID temp humidity

3 21 71

TempSensor

TempSensor

tID temp humidity

2 22 75

TempSensor

Publishers Subscribers

TempSensor

tID temp humidity

2

3

22 75

21 71

TempSensor

SELECT * FROM TempSensor t WHERE s.temp > 20

tID temp humidity

1 18 60

TempSensor

s.tID == 1

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Data Centric Publish/Subscribe

Fully Distributed Global Data Space

tID temp humidity

1

2

3

21 62

22 75

21 71

tID temp humidity

3 21 71

TempSensor

TempSensor

tID temp humidity

2 22 75

TempSensor

Publishers Subscribers

TempSensor

TempSensor

SELECT * FROM TempSensor t WHERE s.temp > 20

tID temp humidity

1 21 62

TempSensor

s.tID == 1

tID temp humidity

1 21 62

tID temp humidity

1

2

3

21 62

22 75

21 71

struct TempSensor { int tID; float temp; float humidity; };#pragma keylist TempSensor tID

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Processing Content & Structure

P

S1

S2

S3

{iID = 1}

{temp > 21 | humidity > 75}

{ temp <16 }

DDS provides some of the most useful features found in Complex Event Processing platforms!

Complex Event Processing...

tID temp humidity

3 21.5 72.3

tID temp humidity

2 20 78tID temp humidity

1 21 62

‣ Local Queries

‣ Continuous Queries (Content-based Subscriptions)

‣ Topics Joins & Projections

‣ Events windows (via History QoS)

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Processing Content & Structure

P

S1

S2

S3

{iID = 1}

{temp > 21 | humidity > 75}

{ temp <16 }

Complex Event Processing...

tID temp humidity

1 21 62

tID temp humidity

2

3

20 78

21.5 72.3

DDS provides some of the most useful features found in Complex Event Processing platforms!

‣ Local Queries

‣ Continuous Queries (Content-based Subscriptions)

‣ Topics Joins & Projections

‣ Events windows (via History QoS)

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Object-OrientedPub/Sub

Object/Relational Mapping

Ownership DurabilityContent

Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

Data Local Reconstruction Layer (DLRL)

DDS Interoperability Wire Protocol

Application

UDP/IP

Real-Time Publish/Subscribe Protocol

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Object/Relational Mapping

‣ Automatically bridges the Object/Relational Impedance Mismatch

‣ Arbitrary object reconstructions

‣ Automatic Relationships Management

‣ Inheritance

‣ Local Operations

‣ Local/Distributed State

getTemp()getHumidity()

temp: floathumidity: float

TempSensor

set_climate();

width: floatheight: floatlength: floatclimate: int

Room

set_status()set_climate()get_level()

level: intopen: intclimate: int

Floor

setTemp()setHumidity()setFanLevel()start()stop()pause():

temp: floathumidity: float

Conditioner * 1

*

1

*1

tID: inttemp: floathumidity: floatrID: int

TTempSernsor

rID: intwidth: floatheight: floatlength: floatfID: int

TRoom

fID: intlevel: intopen: int

TFloor

cID: inttemp: floathumidity: floatfan_level: intstatus: intrID: int

TConditioner

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Object/Relational MappingUnleashing the power of Objects...

Relational

Object Oriented

call_sign: stringroute: listorigin: stringdest: stringaircraft: stringradar_id: string

FlightTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopicimage: stringrefresh_rate: intvisible: booluid: GUID

FlightViewTopiccall_sign: stringuid: GUIDhandle: Handle

FlightViewAssociation

OO ➡ Relational

‣ Middleware can automatically manage the generation and association between the Object-Oriented Model and the Relational Model

Relational ➡ OO

‣ The Relational Model can be mapped to an Object Oriented model‣ The mapping is under control of the architect

operationOne()operationTwo()

x: floaty: floatz: floatradar_id: string

RadarTrack

operationX()operationY()

call_sign: stringroute: listorigin: stringdest: stringaircraft: string

Flight

*1

display()

image: stringrefresh_rate: intvisible: booluid: GUID

FlightView

**

handle: HandleCanvas

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Multiple Object/Relational Mappings

DCPScall_sign: stringroute: listorigin: stringdest: stringaircraft: stringradar_id: string

FlightTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopicimage: stringrefresh_rate: intvisible: booluid: GUID

FlightViewTopiccall_sign: stringuid: GUIDhandle: Handle

FlightViewAssociation

DL

RL

display()

image: stringrefresh_rate: intvisible: booluid: GUIDx: floaty: floatz: floatcall_sign: string

FastFlightView

DLRL

Multiple Mappings‣ Different Object/Relatioal Mappings (ORM) can be used for different subsystems‣ The state is shared across all the local reconstruction (ORMs)

operationOne()operationTwo()

x: floaty: floatz: floatradar_id: string

RadarTrack

operationX()operationY()

call_sign: stringroute: listorigin: stringdest: stringaircraft: string

Flight

*1

display()

image: stringrefresh_rate: intvisible: booluid: GUID

FlightView

**

handle: HandleCanvas

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

An Example

image: stringrefresh_rate: intvisible: booluid: GUID

FlightViewTopic

call_sign: stringroute: listorigin: stringdest: stringaircraft: stringradar_id: string

FlightTopic

operationOne()operationTwo()

x: floaty: floatz: floatradar_id: string

RadarTrack

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

display()

image: stringrefresh_rate: intvisible: booluid: GUIDx: floaty: floatz: floatcall_sign: string

FastFlightView

Primary RadarHigh-End 3D Visualization

Flight Data Processor

RadarTrack

operationX()operationY()

call_sign: stringroute: listorigin: stringdest: stringaircraft: string

Flight

RadarTrackList

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopicx: floaty: floatz: floatradar_id: string

RadarTrackTopicx: floaty: floatz: floatradar_id: string

RadarTrackTopic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

An Example

image: stringrefresh_rate: intvisible: booluid: GUID

FlightViewTopic

call_sign: stringroute: listorigin: stringdest: stringaircraft: stringradar_id: string

FlightTopic

operationOne()operationTwo()

x: floaty: floatz: floatradar_id: string

RadarTrack

display()

image: stringrefresh_rate: intvisible: booluid: GUIDx: floaty: floatz: floatcall_sign: string

FastFlightView

Primary RadarHigh-End 3D Visualization

Flight Data Processor

RadarTrack

operationX()operationY()

call_sign: stringroute: listorigin: stringdest: stringaircraft: string

Flight

RadarTrackList

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopicx: floaty: floatz: floatradar_id: string

RadarTrackTopicx: floaty: floatz: floatradar_id: string

RadarTrackTopic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

An Example

image: stringrefresh_rate: intvisible: booluid: GUID

FlightViewTopic

call_sign: stringroute: listorigin: stringdest: stringaircraft: stringradar_id: string

FlightTopic

operationOne()operationTwo()

x: floaty: floatz: floatradar_id: string

RadarTrack

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

display()

image: stringrefresh_rate: intvisible: booluid: GUIDx: floaty: floatz: floatcall_sign: string

FastFlightView

Primary RadarHigh-End 3D Visualization

Flight Data Processor

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

operationOne()operationTwo()

x: floaty: floatz: floatradar_id: string

RadarTrack

Secondary Radar

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

RadarTrack

operationX()operationY()

call_sign: stringroute: listorigin: stringdest: stringaircraft: string

Flight

RadarTrackList

RadarTrack

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

Automatically Manage Relationships

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Custom Filter Example

image: stringrefresh_rate: intvisible: booluid: GUID

FlightViewTopic

call_sign: stringroute: listorigin: stringdest: stringaircraft: stringradar_id: string

FlightTopic

operationOne()operationTwo()

x: floaty: floatz: floatradar_id: string

RadarTrack

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

display()

image: stringrefresh_rate: intvisible: booluid: GUIDx: floaty: floatz: floatcall_sign: string

FastFlightView

Primary RadarHigh-End 3D Visualization

Flight Data Processor

operationOne()operationTwo()

x: floaty: floatz: floatradar_id: string

RadarTrack

Secondary Radar

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

RadarTrack

operationX()operationY()

call_sign: stringroute: listorigin: stringdest: stringaircraft: string

Flight

RadarTrackList

RadarTrack

SQL FilterCustom Filter

SQL FilterCustom Filter

Filter based on Region-of-interest

Automatically Manage Relationships

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopic

x: floaty: floatz: floatradar_id: string

RadarTrackTopicx: floaty: floatz: floatradar_id: string

RadarTrackTopicx: floaty: floatz: floatradar_id: string

RadarTrackTopic

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

...Putting it all Together

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

DCPS Application

‣ The application works directly at the DCPS level

‣When using OO Programming Languages the Object/Relational Impedance Mismatch has to be manually dealt

Ownership DurabilityContent

Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

DD

S v

1.2

tID: inttemp: floathumidity: floatrID: int

TTempSensor

rID: intwidth: floatheight: floatlength: floatfID: int

TRoom

fID: intlevel: intopen: int

TFloor

cID: inttemp: floathumidity: floatfan_level: intstatus: intrID: int

TConditioner

Application

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

DLRL Application

‣ The DLRL Layer is used to provide a Language Integrated access to DDS data

‣ The Designer has great freedom in deciding how Objects have to map to Topics

‣ Different Object Reconstruction can be created for different applications Ownership Durability

Content Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

DD

S v

1.2

getTemp()getHumidity()

temp: floathumidity: float

TempSensor

set_climate();set_temp()set_humidity()

width: floatheight: floatlength: floatclimate: int

Room

set_status()set_climate()get_level()

level: intopen: intclimate: int

Floor

setTemp()setHumidity()setFanLevel()start()stop()pause():

temp: floathumidity: floatfan_level: intstatus: int

Conditioner *1

*

1

*

1

tID: inttemp: floathumidity: floatrID: int

TTempSensor

rID: intwidth: floatheight: floatlength: floatfID: int

TRoom

fID: intlevel: intopen: int

TFloor

cID: inttemp: floathumidity: floatfan_level: intstatus: intrID: int

TConditioner

Object/Relational Mapping

Data Local Reconstruction Layer (DLRL) DD

S v

1.2

Application

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Generic DDS Application

‣ In the most general case, different portion of the application might rely on DLRL or DCPS depending on their specific needs

‣ DCPS access might be required for accessing and tuning some specific QoS

Object/Relational Mapping

Data Local Reconstruction Layer (DLRL)

Ownership DurabilityContent

Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

DD

S v

1.2

getTemp()getHumidity()

temp: floathumidity: float

TempSensor

set_climate();set_temp()set_humidity()

width: floatheight: floatlength: floatclimate: int

Room

set_status()set_climate()get_level()

level: intopen: intclimate: int

Floor

setTemp()setHumidity()setFanLevel()start()stop()pause():

temp: floathumidity: floatfan_level: intstatus: int

Conditioner *1

*

1

*

1

tID: inttemp: floathumidity: floatrID: int

TTempSensor

rID: intwidth: floatheight: floatlength: floatfID: int

TRoom

fID: intlevel: intopen: int

TFloor

cID: inttemp: floathumidity: floatfan_level: intstatus: intrID: int

TConditioner

Application

Application

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

QoS-EnabledPub/Sub

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Communicating with Topics, Partitions and Domains

1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

Instances1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

Instances1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

InstancesDataReaderDataReaderDataReaderDataReaderDataReaderDataReaderDataWriterDataWriterDataWriterDataWriter

struct TempSensor { int tID; float temp; float humidity; };#pragma keylist TempSensor tID

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Communicating with Topics, Partitions and Domains

1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

Instances1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

Instances1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

InstancesDataReaderDataReaderDataReaderDataReaderDataReaderDataReaderDataWriterDataWriterDataWriterDataWriter

Partition

struct TempSensor { int tID; float temp; float humidity; };#pragma keylist TempSensor tID

PublisherSubscriber

Arrows show structural relationships, not data-flows

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Communicating with Topics, Partitions and Domains

1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

Instances1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

Instances1 21 62

2 20 61

3 25 70 25

1 22 62 1 23 63

2 19 60

3 25 71 3 25 74 3 26 77

Samples

Topic

InstancesDataReaderDataReaderDataReaderDataReaderDataReaderDataReaderDataWriterDataWriterDataWriterDataWriter

PublisherSubscriberPartition

Domain

Domain Participant

struct TempSensor { int tID; float temp; float humidity; };#pragma keylist TempSensor tID

Arrows show structural relationships, not data-flows

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

QoS Model

‣ QoS-Policies are used to control relevant properties of OpenSplice DDS entities, such as:‣ Temporal Properties

‣ Priority

‣ Durability

‣ Availability

‣ ...

‣ Some QoS-Policies are matched based on a Request vs. Offered Model thus QoS-enforcement

‣ Publications and Subscriptions match only if the declared vs. requested QoS are compatible ‣ e.g., it is not possible to match a publisher which delivers data unreliably with a subscriber which requires reliability

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

......

QoS QoS

Type Matching

DomainParticipant DomainParticipant

QoS QoS

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Sample QoS Policies

‣ Rich set of QoS allow to configure several different aspects of data availability, delivery and timeliness

‣ QoS can be used to control and optimize network as well as computing resource

QoS Policy Applicability RxO Modifiable

DURABILITY

DURABILITY SERVICE

LIFESPAN

HISTORY

PRESENTATION

RELIABILITY

PARTITION

DESTINATION ORDER

OWNERSHIP

OWNERSHIP STRENGTH

DEADLINE

LATENCY BUDGET

TRANSPORT PRIORITY

TIME BASED FILTER

RESOURCE LIMITS

USER_DATA

TOPIC_DATA

GROUP_DATA

T, DR, DW Y N Data AvailabilityT, DW N N

Data Availability

T, DW - Y

Data Availability

T, DR, DW N N

Data Availability

P, S Y N Data DeliveryT, DR, DW Y N

Data Delivery

P, S N Y

Data Delivery

T, DR, DW Y N

Data Delivery

T, DR, DW Y N

Data Delivery

DW - Y

Data Delivery

T, DR, DW Y Y Data TimelinessT, DR, DW Y Y

Data Timeliness

T, DW - Y

Data Timeliness

DR - Y Resources

T, DR, DW N N

Resources

DP, DR, DW N Y ConfigurationT N Y

Configuration

P, S N Y

Configuration

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

......

QoS QoS

Type Matching

DomainParticipant DomainParticipant

QoS QoS

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Mapping QoS

Data Latency

LatencyBudget TransportPriority

Throughput

DeadlineTimeBasedFilter

Control over Latency/Throughput tradeoff Control over data latency Control over data priority

Data Availability

OwnershipOwnershipStrength

Durability

History

Lifespan

Control over data queueing Control over data persistency Control over data sources hot-swap

Data Delivery

Reliability

DestinationOrder

Presentation

Control over data distribution reliability Control over data ordering Control over presentation

OpenSplice DDS provides programmatic QoS-driven support for configuring the most important properties of data distribution!

Which properties does QoS controls?

© 2008, PrismTech. All Rights Reserved

Data Timeliness

Data Latency

LatencyBudget TransportPriority

Throughput

DeadlineTimeBasedFilter

QoS Policy Applicability RxO Modifiable

DEADLINE

LATENCY

BUDGET

TRANSPORT

PRIORITY

T, DR, DW Y Y

Data

Timeliness

T, DR, DW Y Y

T, DW - Y

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

DeadlineThe DEADLINE QoS policy allows to define the maximum inter-arrival time between data samples

QoS Policy Applicability RxO Modifiable

DEADLINE T, DR, DW Y Y

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......

You can’t be later than...

‣ DataWriter indicates that the application commits to write a new value at least once every deadline period

‣ DataReaders are notified by the DDS when the DEADLINE QoS contract is violated

Publisher Subscriber

DeadlineDeadlineDeadlineDeadlineDeadline

Deadline Violation

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Latency BudgetThe LATENCY_BUDGET QoS policy specifies the maximum acceptable delay from the time the data is written until the data is inserted in the receiver's application-cache

QoS Policy Applicability RxO Modifiable

LATENCY

BUDGET

T, DR, DW Y Y

‣ The default value of the duration is zero indicating that the delay should be minimized

‣ This policy is a hint to the DDS, not something that must be monitored or enforced.

I need to get there in at most...

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......

T1

T2

T3

Latency Budget = Latency = TBuff +T1+T2+T3TBuff

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Transport Priority

The TRANSPORT_PRIORITY QoS policy is a hint to the infrastructure as to how to set the priority of the underlying transport used to send the data.

QoS Policy Applicability RxO Modifiable

TRANSPORT

PRIORITY

T, DW - Y

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......

VIP Data, stay clear!

© 2008, PrismTech. All Rights Reserved

Data Availability

Data Availability

OwnershipOwnershipStrength

Durability

History

Lifespan

QoS Policy Applicability RxO Modifiable

DURABILITY

DURABILITY

SERVICE

LIFESPAN

HISTORY

T, DR, DW Y N

Data

Availability

T, DW N N

T, DW - Y

T, DR, DW N N

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Durability

‣ Volatile. No need to keep data instances for late joining data readers

‣ Transient Local. Data instance availability for late joining data reader is tied to the data writer availability

‣ Transient. Data instance availability outlives the data writer

‣ Persistent. Data instance availability outlives system restarts

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......

The DURABILITY QoS controls the data availability w.r.t. late joiners, specifically the DDS provides the following variants:

The DURABILITY_SERVICE QoS provide control over configuration of the service that implements the transient and persistent durability features

QoS Policy Applicability RxO Modifiable

DURABILITY

DURABILITY

SERVICE

T, DR, DW Y N

T, DW N N

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Lifespan

‣ The LIFESPAN QoS policy allows to control what happens to stale data

‣ It specifies the validity interval for data written by the DataWriter

‣ The default validity interval is infinite

QoS Policy Applicability RxO Modifiable

LIFESPAN T, DW - Y

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......

For how long will this data be available?

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

HistoryThe HISTORY QoS policy controls whether the DDS should deliver only the most recent value, attempt to deliver all intermediate values, or do something in between. The policy can be configured to provide the following semantics:

QoS Policy Applicability RxO Modifiable

HISTORY T, DR, DW N N

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......

‣ Keep Last. The DDS will only attempt to keep the most recent “depth” samples of each instance of data identified by its key

‣ Keep All. The DDS will attempt to keep all the samples of each instance of data identified by its key.

‣ On the DataWriter Samples are kept until delivered to all known subscribers

‣ On the DataReader side samples are kept until the application “takes” them

How many data samples should I keep?

© 2008, PrismTech. All Rights Reserved

Data DeliveryData Delivery

Reliability

DestinationOrder

Presentation

QoS Policy Applicability RxO Modifiable

PRESENTATION

RELIABILITY

PARTITION

DESTINATION

ORDER

OWNERSHIP

OWNERSHIP

STRENGTH

P, S Y N

Data Delivery

T, DR, DW Y N

P, S N Y

T, DR, DW Y N

T, DR, DW Y N

DW - Y

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Reliability

The RELIABILITY QoS indicate the level of guarantee offered by the DDS in delivering data to subscribers. Possible variants are:

QoS Policy Applicability RxO Modifiable

RELIABILITY T, DR, DW Y N

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......

‣ Reliable. In steady-state the middleware guarantees that all samples in the DataWriter history will eventually be delivered to all the DataReader

‣ Best Effort. Indicates that it is acceptable to not retry propagation of any samples

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Ownership The OWNERSHIP QoS specifies whether it is allowed for multiple DataWriters to write the same instance of the data and if so, how these modifications should be arbitrated. Possible choices are:

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......

QoS Policy Applicability RxO Modifiable

OWNERSHIP T, DR, DW Y N

‣ Shared. Multiple writers are allowed to update the same instance and all the updates are made available to the reader

‣ Exclusive. Indicates that each instance can only be owned by one DataWriter, but the owner of an instance can change dynamically -- due to liveliness changes

‣ The selection of the owner is controlled by the setting of the OWNERSHIP_STRENGTH QoS policy

Who owns the data?

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Ownership StrengthThe OWNERSHIP_STRENGTH Specifies the value of the “strength” used to arbitrate among DataWriters that attempt to modify the same data instance

Publisher

DataWriter

Topic

Type

QoS

Name

writes

QoS

QoS

DataWriter

Topic

Typewrites

Subscriber

DataReaderreads

QoS

DataReaderreads

...

QoS

Name

QoS

QoS QoS

QoS matching

QoS matching

......QoS Policy Applicability RxO Modifiable

OWNERSHIP

STRENGTH

DW - Y

‣ Data instance are identified by the couple (Topic, Key)

‣ The policy applies only if the OWNERSHIP is EXCLUSIVE

How strong are you?

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Ownership @ Work‣ A Topic can have Shared or Exclusive Ownership

‣ Exclusively owned Topics can be modified by a single writer

‣ Writer strength is used to coordinate replicated writers

R1

R2

R3

symbol: "MSFT"name: "Microsoft Corp."exchange: "NASD"quote: 33.73

StockQuote

symbol: "GOOG"name: "Google Inc."exchange: "NASD"quote: 663.97

StockQuote

W1

W2’’

STRENGTH=3

STRENGTH=1

symbol: "MSFT"name: "Microsoft Corp."exchange: "NASD"quote: 33.73

StockQuote

symbol: "GOOG"name: "Google Inc."exchange: "NASD"quote: 663.97

StockQuotesymbol: "AAPL"name: "Apple Inc."exchange: "NASD"quote: 165.37

StockQuote

W1’

STRENGTH=2

symbol: "MSFT"name: "Microsoft Corp."exchange: "NASD"quote: 33.73

StockQuote

symbol: "GOOG"name: "Google Inc."exchange: "NASD"quote: 663.97

StockQuotesymbol: "AAPL"name: "Apple Inc."exchange: "NASD"quote: 165.37

StockQuote

symbol: "GOOG"name: "Google Inc."exchange: "NASD"quote: 663.97

StockQuote

symbol: "GOOG"name: "Google Inc."exchange: "NASD"quote: 663.97

StockQuote

symbol: "AAPL"name: "Apple Inc."exchange: "NASD"quote: 165.37

StockQuotesymbol: "AAPL"name: "Apple Inc."exchange: "NASD"quote: 165.37

StockQuote

symbol: "AAPL"name: "Apple Inc."exchange: "NASD"quote: 165.37

StockQuote

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Managing Hot-Swap‣ A Topic can have Shared or Exclusive Ownership

‣ Exclusively owned Topics can be modified by a single writer

‣ Writer strength is used to coordinate replicated writers

symbol: "MSFT"name: "Microsoft Corp."exchange: "NASD"quote: 33.73

StockQuote

symbol: "GOOG"name: "Google Inc."exchange: "NASD"quote: 663.97

StockQuote

symbol: "AAPL"name: "Apple Inc."exchange: "NASD"quote: 165.37

StockQuote

symbol: "AAPL"name: "Apple Inc."exchange: "NASD"quote: 165.37

StockQuote

symbol: "GOOG"name: "Google Inc."exchange: "NASD"quote: 663.97

StockQuote

symbol: "GOOG"name: "Google Inc."exchange: "NASD"quote: 663.97

StockQuote

symbol: "AAPL"name: "Apple Inc."exchange: "NASD"quote: 165.37

StockQuote

symbol: "MSFT"name: "Microsoft Corp."exchange: "NASD"quote: 33.73

StockQuote

symbol: "MSFT"name: "Microsoft Corp."exchange: "NASD"quote: 33.73

StockQuote

R1

R2

R3W2’’

STRENGTH=1

Age

nda

Motivating Forces

The Standard

Architectural Principles

Programming Model

Future Directions

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Shared Global Data Space

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Shared Global Data SpaceCoordination Model

‣ DDS applications are asynchronous and communicate by reading/writing from/to a Global Data Space

‣ DDS applications communicate by simply addressing items in the Global Data Space and without any direct knowledge of the parties involved in the production/consumption of data

Consistency Model

‣ The Shared Global Data Space implemented by DDS, can be configured to supports at most the “Eventual Consistency Model”

‣ Under an Eventual Consistency Model we are guaranteed that eventually all application in the system will have a consistent view of the “world”s

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Eventual Consistency & R/W Caches

Under an Eventual Consistency Model, DDS guarantees that all matched Reader Caches will eventually be identical of the respective Writer Cache

Topic

DataReader

1 1

2 1

3 1

DataReader Cache Topic

1 2

2 3

3 1

DataWriter Cache

DataWriter

1 2

2 2 2 3

Topic

DataReader

1 1

2 1

3 1

DataReader Cache

Topic

DataReader

1 1

2 1

3 1

DataReader Cache

DDS

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

QoS Impacting the Consistency Model

The DDS Consistency Model is a property that can be associated to Topics or further refined by Reader/Writers. The property is controlled by the following QoS Policies:

‣ DURABILITY ‣ VOLATILE | TRANSIENT_LOCAL | TRANSIENT | PERSISTENT

‣ LIFESPAN

‣ RELIABILITY‣ RELIABLE | BEST_EFFORT

‣ DESTINATION ORDER‣ SOURCE_TIMESTAMP | DESTINATION_TIMESTAMP

QoS Policy Applicability RxO Modifiable

DURABILITY

LIFESPAN

RELIABILITY

DESTINATION ORDER

T, DR, DW Y N

T, DW - Y

T, DR, DW Y N

T, DR, DW Y N

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

QoS Impacting the Consistency Model

DURABILITY RELIABILITY DESTINATION_ORDER LIFESPAN

Eventual Consistency (No Crash / Recovery)

Eventual Consistency (Reader Crash / Recovery)

Eventual Consistency(Crash/Recovery)

Eventual Consistency(Crash/Recovery)

Weak Consistency

Weak ConsistencyWeak Consistency

VOLATILE RELIABLE SOURCE_TIMESTAMP INF.

TRANSIENT_LOCAL RELIABLE SOURCE_TIMESTAMP INF.

TRANSIENT RELIABLE SOURCE_TIMESTAMP INF.

PERSISTENT RELIABLE SOURCE_TIMESTAMP INF.

ANY ANY DESTINATION_TIMESTAMP ANY

ANY BEST_EFFORT ANY ANY

ANY ANY ANY N

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Eventual Consistency @ Work

B A

B

CD

E

F

m

J

K

A

P1

P2

S1

S2

B

A

B

A

P = {A, B}

S = {A, D}

S= {A, B, J}

P = {D, C, J}

B

S4

S = {A}

A

Eventual Consistency (Reader Crash / Recovery)Eventual Consistency(Crash/Recovery)

TRANSIENT_LOCAL RELIABLE SOURCE_TIMESTAMP INF.

TRANSIENT RELIABLE SOURCE_TIMESTAMP INF.

DURABILITY RELIABILITY DESTINATION_ORDER LIFESPAN

{A}

{B}

Weak Consistency ANY ANY ANY N {J}

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Eventual Consistency @ Work

A

B

CD

E

F

m

J

KP2

S1

S2

S3

A

BA

B

S= {A, B, D, J}

J

B

D

J

S = {A, D}

S= {A, B, J}

P = {D, C, J}

S4

S = {A}

A

Eventual Consistency (Reader Crash / Recovery)Eventual Consistency(Crash/Recovery)

TRANSIENT_LOCAL RELIABLE SOURCE_TIMESTAMP INF.

TRANSIENT RELIABLE SOURCE_TIMESTAMP INF.

DURABILITY RELIABILITY DESTINATION_ORDER LIFESPAN

{A}

{B}

Weak Consistency ANY ANY ANY N {J}

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Design Guidelines

‣ For all (non-periodic) Topics for which an eventually consistent model is required use the following QoS settings:

‣ For information produced periodically, with a period P, where P is small enough to be acceptable as a consistency convergence delay, the following QoS settings will provide an approximation of the eventual consistency:

Eventual Consistency (Crash / Recovery)

TRANSIENT RELIABLE SOURCE_TIMESTAMP INF.

DURABILITY RELIABILITY DESTINATION_ORDER LIFESPAN

Eventual Consistency (Crash / Recovery)

VOLATILE BEST_EFFORT SOURCE_TIMESTAMP INF.

DURABILITY RELIABILITY DESTINATION_ORDER LIFESPAN

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Getting the DataRead Semanticsstruct Counter {

int cID; int count;};#pragma keylist Counter cID

Topic Used in next section.

DataReader Cache

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Reading Samples

‣ Read iterates over the available sample instances

‣ Samples are not removed from the local cache as result of a read

‣ Read samples can be read again, by accessing the cache with the proper options (more later)

DataReader

1 1

2 1

3 1

2 2

Samples Read Samples not Read

1 2 1 3 1 4

2 3

3 2 3 3 3 4 3 5

DataReader Cache

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Reading Samples

‣ Read iterates over the available sample instances

‣ Samples are not removed from the local cache as result of a read

‣ Read samples can be read again, by accessing the cache with the proper options (more later)

Samples Read Samples not Read

DataReader

1 1

2 1

3 1

2 2

1 2 1 3 1 4

2 3

3 2 3 3 3 4 3 5

DataReader Cache

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Reading Samples

‣ Read iterates over the available sample instances

‣ Samples are not removed from the local cache as result of a read

‣ Read samples can be read again, by accessing the cache with the proper options (more later)

Samples Read Samples not Read

DataReader

1 1

2 1

3 1

2 2

1 2 1 3 1 4

2 3

3 2 3 3 3 4 3 5

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Sample, Instance and View States

‣ DataReaders are provided with data samples ane state information allowing to detect relevant transitions in the life-cycle of data as well as data writers

‣ Sample State (READ | NOT_READ): Determines wether a sample has already been read by this DataWriter or not.

‣ Instance State (ALIVE, NOT_ALIVE, DISPOSED). Determines wether (1) writer exist for the specific instance, or (2) no matched writers are currently available, or (3) the instance has been disposed

‣ View State (NEW, NOT_NEW). Determines wether this is the first sample of a new (or re-born) instance

Dat

aRea

der

History Depth = 2

DataReader Cache

Samples

1 1

2 2

3 1

1 2

2 3

SampleInfo

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Anatomy of a Read

DDS::ReturnCode_t read( TSeq& samples, DDS::SampleInfoSeq& info, long max_samples, DDS::SampleStateMask samples_state, DDS::ViewStateMask views_state, DDS::InstanceStateMask instances_state)

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Reading Data

TSeq samples;SampleInfoSeq info;

reader->read(samples, info, DDS::LENGTH_UNLIMITED, DDS::NOT_READ_SAMPLE_STATE, DDS::ANY_VIEW_STATE, DDS::ANY_INSTANCE_STATE);

// Do something

reader->return_loan(samples, info);

TSeq samples(N);SampleInfoSeq info(N);

reader->read(samples, info, N, DDS::NOT_READ_SAMPLE_STATE, DDS::ANY_VIEW_STATE, DDS::ANY_INSTANCE_STATE);

// Do something

Example 1 Example 2

Example 3

reader->read(samples, info, N, DDS::NOT_READ_SAMPLE_STATE, DDS::NEW_VIEW_STATE, DDS::ALIVE_INSTANCE_STATE);

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Getting the DataTake Semanticsstruct Counter {

int cID; int count;};#pragma keylist Counter cID

Topic Used in next section.

DataReader Cache

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Taking Samples

‣ Take iterates over the available sample instances

‣ Taken Samples are removed from the local cache as result of a take

‣DataReader

1 1

2 1

3 1

2 2

Samples not Taken

1 2 1 3 1 4

2 3

3 2 3 3 3 4 3 5

DataReader Cache

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Taking Samples

‣ Take iterates over the available sample instances

‣ Taken Samples are removed from the local cache as result of a take

Samples not Taken

DataReader 2 2

1 2 1 3 1 4

2 3

3 2 3 3 3 4 3 5

DataReader Cache

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Taking Samples

‣ Take iterates over the available sample instances

‣ Taken Samples are removed from the local cache as result of a take

Samples not Taken

DataReader

1 3 1 4

2 3

3 3 3 4 3 5

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Anatomy of a take

DDS::ReturnCode_t take( TSeq& samples, DDS::SampleInfoSeq& info, long max_samples, DDS::SampleStateMask samples_state, DDS::ViewStateMask views_state, DDS::InstanceStateMask instances_state)

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Writing Datastruct Counter { int cID; int count;};#pragma keylist Counter cID

Topic Used in next section.

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Writing Samples

‣ Samples are written in the local cache

‣ Writer control the creation of instances

‣ The DDS ensures that the local caches for the matched DataReader will be eventually consistent with that of the Data Writer DataWriter Cache

Topic

1 1

Last Sample Written

DataWriter

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Writing Samples

‣ Samples are written in the local cache

‣ Writer control the creation of instances

‣ The DDS ensures that the local caches for the matched DataReader will be eventually consistent with that of the Data Writer DataWriter Cache

Topic

1 1

Last Sample Written

DataWriter1 2

DataWriter Cache

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Writing Samples

‣ Samples are written in the local cache

‣ Writer control the creation of instances

‣ The DDS ensures that the local caches for the matched DataReader will be eventually consistent with that of the Data Writer

1 2

Last Sample Written

DataWriter1 3

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Anatomy of a write

DDS::ReturnCode_t write(const T& sample, InstanceHandle_t handle);

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Writing Data

writer->write(sample, DDS::HANDLE_NIL);

InstanceHandle_t handle = writer->register_instance(sample);// ...writer->write(sample, handle);

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Managing Data History

struct Counter { int cID; int count;};#pragma keylist Counter cID

Topic Used in next section.

Topic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

How many samples?

‣ The History QoS Controls the number of samples-per-instance that will be stored by the middleware on behalf of a Reader

‣ Keep Last K. The History QoS can be set so to always have the latest K samples

‣ Keep All. The History QoS can be set so keep all samples produced by the writer and not yet taken, until resource limits are not reached

DataReader

DataReader

1 1

2 1

3 1

History Depth = 1 (DDS Default)

History Depth = 5

Topic

1 1

2 1

3 1

1 2 1 3 1 4 1 5

2 2 2 3 2 4 2 5

3 2 3 3 3 4 3 5

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

History in Action

Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders

Topic

DataReader

1 1

2 1

3 1

History Depth = 1 (DDS Default)

DataReader Cache

Topic

1 2

2 3

3 1

History Depth = 1 (DDS Default)

DataWriter Cache

DataWriter1 2

2 2 2 3

Network

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

History in Action

Topic

DataReader

1 2

2 2

3 1

History Depth = 1 (DDS Default)

DataReader Cache

Topic

1 2

2 3

3 1

History Depth = 1 (DDS Default)

DataWriter Cache

DataWriter2 3

Network

Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

History in Action

Topic

DataReader

1 2

2 3

3 1

History Depth = 1 (DDS Default)

DataReader Cache

Topic

1 2

2 3

3 1

History Depth = 1 (DDS Default)

DataWriter Cache

DataWriter

Network

Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

History in Action

Topic

DataReader

1 1

2 1

3 1

History Depth = 2

DataReader Cache

Topic

1 2

2 3

3 1

History Depth = 1 (DDS Default)

DataWriter Cache

DataWriter1 2

2 2 2 3

Network

Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

History in Action

Topic

DataReader

1 1

2 1

3 1

History Depth = 2

DataReader Cache

Topic

1 2

2 3

3 1

History Depth = 1 (DDS Default)

DataWriter Cache

DataWriter

1 2

2 2

2 3

Network

Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

History in Action

Topic

DataReader

1 1

2 2

3 1

History Depth = 2

DataReader Cache

Topic

1 2

2 3

3 1

History Depth = 1 (DDS Default)

DataWriter Cache

DataWriter

1 2

2 3

Network

Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the DataWriter to matched DataReaders

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Application / DDS Coordination

struct Counter { int cID; int count;};#pragma keylist Counter cID

Topic Used in next section.

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Application / DDS Coordination

DDS provides three main mechanism for exchanging information with the application

‣ Polling. The application polls from time to time for new data or status changes. The interval might depend on the kind of applications as well as data

‣WaitSets. The application registers a WaitSet with DDS and waits (i.e. is suspended) until one of the specified events has happened.

‣ Listeners. The application registers a listener with a specific DDS entity to be notified when relevant events occur, such as state changes or

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Putting it All TogetherWriting a DDS Application

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Steps for Writing a DDS ApplicationWriting a DDS application can be decomposed in the following few simple steps:

‣ Step#1: Define Topics

‣ Step #2: Identify QoS representing key non-functional invariants for your system‣ Transport Priority

‣ Deadline

‣ Durability

‣ Step #3: Define Topics / Partition Mapping

‣ Step #4: Identify Topic Readers/Writers

‣ Step #5: Define QoS requirements for Readers/Writers‣ History

‣ Latency Budget

‣ Auto-Dispose

‣ Transport Priority

‣ Deadline

‣ Step #6: Code-it in your favorite programming language

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Making the Hello DDS World

Step #1: Topic definition

‣ We are going to define a simple key-less topic that will carry the name to greet.

module swatch {

struct hello { string<256> name; };#pragma keylist hello

};

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Making the Hello DDS World

Step #2: Topic QoS

‣ Reliability QoS: RELIABLE

‣ Durability QoS: TRANSIENT

module swatch {

struct hello { string<256> name; };#pragma keylist hello

};

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Making the Hello DDS World

Step #3: Topics/Partitions Mapping

‣ swatch::hello will be mapped into the default-partition (thus no action to take)

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Making the Hello DDS World

Step #4: Readers/Writers

‣ A Generic DataReader that will read the topic swatch:: hello ‣We’ll be able to run as many of this as we want

‣ A Generic DataWriter that will read the topic swatch:: hello‣We’ll be able to run as many of this as we want

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Making the Hello DDS World

‣ Step #5: Define QoS requirements for Readers/Writers

‣ Writer:‣ Inherit TopicQoS, and

‣ No-Auto Dispose

‣ History QoS: Keep Last N

‣ Reader‣ Inherit TopicQoS, and

‣ History QoS: Keep Last N

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Hello World in a Conceptual Picture

Network

Dat

aRea

der

History Depth = 2

DataReader Cache

Samples

1 1

2 2

3 1

1 2

2 3

SampleInfo

1

2

3

1

2

swatch::hello

History Depth = 2

DataWriter Cache

Samples

1 1

2 2

3 1

1 2

2 3

SampleInfo

1

2

3

1

2

swatch::hello

Dat

aWri

ter

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Visualizing the Strucutre...

PublisherSubscriber Default Partition

Domain

Domain Participant

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Step #6: Coding

How many lines of code is going to take this example?

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

SIMple Dds == SIMD!

‣ Today we’ll write our DDS application using SIMD

‣ SIMD is a C++ library that takes advantage of C++ Template Meta-Programming to:‣ Vastly Improve Productivity

‣ Simplify Usage

‣ Automate Resource Management (All DDS Entities are Garbage Collected via Ref-Counting)

‣ Zero Overhead

SIMD

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Hello-pub.cpp (Default QoS)

int main(int argc, char* argv[]) { if (!parse_args(argc, argv)) return 1;

// -- init the SIMD runtime simd::Runtime::init(); // -- create the DDS Topic simd::Topic<swatch::hello> helloTopic("helloTopic"); // -- create the DDS DataWriter simd::DataWriter<swatch::hello> writer(helloTopic, dwqos);

swatch::hello sample; std::stringstream ss; for (int i = 0; i < N; ++i) { ss << i; std::string tmp = ss.str() + "." + message; ss.str(""); sample.name = DDS::string_dup(tmp.c_str()); std::cout << "<<= " << sample.name << std::endl; writer.write(sample); usleep(period*1000); } std::cout << "[done]" << std::endl; return 0; }

Only 3-lines of DDS-Specific Code Business Logic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Hello-pub.cppint main(int argc, char* argv[]) { if (!parse_args(argc, argv)) return 1; // -- init the SIMD runtime simd::Runtime::init(); simd::TopicQos tqos; tqos.set_reliable(); tqos.set_transient();

// -- create the DDS Topic simd::Topic<swatch::hello> helloTopic("helloTopic", tqos); simd::DataWriterQos dwqos(tqos); dwqos.set_keep_last(history_depth); dwqos.set_auto_dispose(false); // -- create the DDS DataWriter simd::DataWriter<swatch::hello> writer(helloTopic, dwqos);

swatch::hello sample; std::stringstream ss; for (int i = 0; i < N; ++i) { ss << i; std::string tmp = ss.str() + "." + message; ss.str(""); sample.name = DDS::string_dup(tmp.c_str()); std::cout << "<<= " << sample.name << std::endl; writer.write(sample); usleep(period*1000); } std::cout << "[done]" << std::endl; return 0; }

Business Logic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Hello-sub.cpp (Default QoS)

int main(int argc, char* argv[]) { if (!parse_args(argc, argv)) return 1; // -- init the SIMD runtime simd::Runtime::init(); // -- create the DDS Topic simd::Topic<swatch::hello> helloTopic("helloTopic");

// -- create the DDS DataReader simd::DataReader<swatch::hello> reader(helloTopic);

swatch::helloSeq samples; DDS::SampleInfoSeq infos; while (true) { reader.read(samples, infos); for (int i = 0; i < samples.length(); ++i) { std::cout << "=>> " << samples[i].name << std::endl; } if (samples.length() > 0) std::cout << "--" << std::endl; reader.return_loan(samples, infos); usleep(period*1000); } return 0;}Only 3-lines of DDS-Specific Code

Business Logic

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Hello-sub.cppint main(int argc, char* argv[]) { if (!parse_args(argc, argv)) return 1; // -- init the SIMD runtime simd::Runtime::init(); simd::TopicQos tqos; tqos.set_reliable(); tqos.set_transient();

// -- create the DDS Topic simd::Topic<swatch::hello> helloTopic("helloTopic", tqos); simd::DataReaderQos drqos(tqos); drqos.set_keep_last(history_depth);

// -- create the DDS DataReader simd::DataReader<swatch::hello> reader(helloTopic, drqos);

swatch::helloSeq samples; DDS::SampleInfoSeq infos; while (true) { reader.read(samples, infos); for (int i = 0; i < samples.length(); ++i) { std::cout << "=>> " << samples[i].name << std::endl; } if (samples.length() > 0) std::cout << "--" << std::endl; reader.return_loan(samples, infos); usleep(period*1000); } return 0;}

Business Logic

Age

nda

Motivating Forces

The Standard

Architectural Principles

Programming Model

Future Directions

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

DDS TodayDevelopment

‣ UML Profile for DDS

‣ IDL Derived API

Integration

‣ Complete knowledge of the information model

‣ Consistent information model across systems

Deployment

‣ Optimized for LAN, multi-LAN deployment

‣WAN deployments supported via:‣Multicast-enabled VPN

‣DDSI Unicast

Object/Relational Mapping

Ownership DurabilityContent

Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

Data Local Reconstruction Layer (DLRL)

DDS Interoperability Wire Protocol

Application

UDP/IP

Real-Time Publish/Subscribe Protocol

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

DSS Standard Directions

The DDS Standard will be extended in the following directions:

‣Simplicity. New, API for ISO STD C++, and Java 6

‣Extensibility and Integration. Extensible and Dynamic Topic Types

‣Scale. Support for large-scale WAN deployments

‣Data Access. Support for accessing the DDS Global Data Space via

SOA and Web Technologies (e.g. REST, WS-*, JMS, etc.)

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Simplicity

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

ISO STD C++ PSM for DDSContext

‣ The DDS API is currently derived from the existing IDL2C++ standard

‣ The existing C++ API, although being very powerful, does not always hide accidental complexity

‣ The existing C++ API does not leverage the latest ISO STD C++ features, such as standard containers, iterators, templates, etc.

‣ The existing C++ API leaves the burden of DDS entities manual memory management to the programmer

Upcoming Standard

‣ Fully aligned with the ISO STD C++ Standard and also looking forward to the upcoming C++0x

‣ Simpler, neater, safer API

‣ Automatic Memory Management (still debated)

Status

‣ Final joint revised submission due for the Dec 2009 OMG Meeting

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Extensibility

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Extensible and Dynamic Topic TypesContext

‣ The OMG DDS standard has been designed to effectively support statically defined data models.

‣ This assumption ensures that topics data types are known at compile time, that every member of the DDS global data space agrees precisely on the same topic-type association

‣ Extensions are captured by either DLRL classes inheritance, or by IS-A relations at the DCPS layer

‣ Under this model:‣ it is hard to cope with data models evolving over time unless all the elements of the system

are upgraded consistently.

‣ It is hard to deal with dynamically defined topics, although in some case this is achievable by means of proprietary APIs.

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Extensible and Dynamic Topic TypesUpcoming Standard: Four dimension considered

‣ Topic’s Type Definition

‣Available syntax for defining the types associated with a topic

‣Currently IDL only is supported

‣Support for sparse types as well as for some pre-defined topic types

‣ Encapsulation Definition

‣Controls how a topic is encapsulated on the wire

‣Currently CDR is specified

‣ Extensibility Mechanism

‣Controls how Topics Types can be extended without breaking interoperability w.r.t. portion of the system relying on older version of the same topic

‣ Dynamic API

‣An API which allows to publish and subscribe topics for a Topic that is not known a priory

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Type Extensibility & Evolution‣ Type evolution captures the changes that a type experience in a system throughout its

life-time

‣ Type extension capture, via sub-typing, refinement and specialization.

‣NOTE: Often Type Extension is (ab)used in order to capture type evolution, but this is an “trick” more than a good practice

struct RadarTrack { long trackID; long x; long y;};#pragma keylist RadarTrack trackID

Type Evolution

Type Extension

struct RadarTrack { long trackID; long x; long y; float estErr;};#pragma keylist RadarTrack trackID

struct RadarTrack3D : RadarTrack { long z;};#pragma keylist RadarTrack3D RadarTrack3D::RadarTrack::trackID

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Extensible and Dynamic Topic Types

Status

‣ Joint Revised Submission available on OMG WWW

‣ Joint Revision Submission due on Sep 2009

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Scale

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

DDS for Ultra-Large-Scale SystemsContext

‣ The DDS Standard covers very well the “System” Use Case

‣ Natural extension point exist in the DDS Standard properly support Ultra-Large-Scale Systems, over WAN

‣ Further standardization is required to ensure that the nice DDS properties enjoyed on a “System” are carried on in a “Ultra-Large-Scale System” w/o limiting interoperability or trading it for scalability

Upcoming Standard

‣ Ultra-Large-Scale extensions for DDS

Status

‣ 2 Concept paper submitted by leading vendors to the OMG RTWS ’09

‣ RFP process to be kick-started at the Sept ’09 OMG meeting

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

DDS for Ultra-Large-Scale Systems

‣ DDS-Level Routers will be introduced that establish a Peer-to-Peer overlay that relays DDS data over the WAN

‣ A Network of Super-Nodes is used for ensuring:‣ Scalable (Global) Discovery

‣ Subscription Management (when crossing the boundaries of a System)

‣ Support for establishing communication between Pub and Sub (perhaps via STUNT to circumvent NAT/FIREWALL issues)

N1,0

N1,1

N2,0

N2,1

N2,2 N

2,3

N2,4

N2,5

H1,0,0

H1,0,1

H1,0,k

H1,1,h

H1,1,0

H1,1,1

H2,0,i

H 2,1,j

H 2,1,k H2,1,h

H 2,1,n

H 2,1,m

R

R

R

R

R

R

R

R

SN

SN

SN

SN

SN

D e l i v e r i n g P e r f o r m a n c e , O p e n n e s s , a n d F r e e d o m

OpenSplice DDS

Data Access

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

RESTful DDSContext

‣ REST is becoming the dominant way of accessing resources via the internet and a new style of implementing Web Services, supported by the latest Web2.0 applications, e.g. Twitter, Blogspot, etc.

‣ REST provides basic CRUD functionalities that nicely map to DDS

‣ REST’s resource-based approach nicely maps to DDS Data-based approach, since a Topic nicely maps into a resource

‣ A RESTful access to the DDS global data space is natural and enables to naturally address Topics, e.g.:‣ http://buket.mywww.com/system/domain/partition/topic/

Upcoming Standard

‣ RESTful DDS

Status

‣ Initial RFP Drafting

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

© 2009, PrismTech. All Rights Reserved

Concluding RemarksState of the Art

‣ The OMG DDS Standard uniquely addresses some of the key requirements for next generation Mission Critical Systems

‣ The OMG DDS is one of the few middleware standard defining both API as well as Wire-Protocol, thus ensuring application portability and interworking

‣ The DDS Standard has been recommended/mandated by key administration throughout the world as well as adopted by the most challenging Defense programs

Looking Ahead

‣ The DDS Standard is swiftly moving forward to expand its applicability, simplify its use, and facilitate integration

Object/Relational Mapping

Ownership DurabilityContent

Subscription

Minimum Profile

Data Centric Publish/Subscribe (DCPS)

Data Local Reconstruction Layer (DLRL)

DDS Interoperability Wire Protocol

Application

UDP/IP

Real-Time Publish/Subscribe Protocol

Pro

prie

tary

Info

rmat

ion

- D

istri

butio

n w

ithou

t Exp

ress

ed W

ritte

n P

erm

issi

on is

Pro

hibi

ted.

Online Resources

http://www.opensplice.com/

emailto:[email protected]

http://www.youtube.com/OpenSpliceTube

http://opensplice.blogspot.com http://bit.ly/1Sreg

http://www.dds-forum.org

http://portals.omg.org/dds

© 2009, PrismTech. All Rights Reserved

http://twitter.com/acorsaro/


Recommended