This presentation provides an overview of the DDS technology describing the latest addition to the standard family as well as providing an outlook of what will be next.
4. Data Distribution for Real-Time Systems
¨ Introduced in 2004 to address the Data
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
Distribution challenges faced by a wide
class of Defense and Aerospace
Applications
¨ Key requirement for the standard were to
deliver very high, predictable,
performance while scaling from
embedded to ultra-large-scale
deployments
¨ Recommended by key administration
worldwide
¨ Widely adopted across several different
domains, e.g., Automated Trading,
Simulations, SCADA, Telemetry, etc.
5. DDS Standards Family
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
App Standard API
2004
DDS § Standard API for Data-
Centric Real-Time Pub/Sub
§ Automatic fail-over
§ Persistence
§ Dynamic Discovery
§ Content Filtering / Queries
6. DDS Standards Family
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
App App
Standard API
2004 2004
DDS DDS
2006 2006
DDSI/RTPS network DDSI/RTPS
Interoperable
Wire Protocol
§ High Performance
§ Interoperable Wire Protocol
7. DDS Standards Family
2008 2008
UML4DDS § UML-Based Modeling of UML4DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
DDS applications
App App
Standard API
2004 2004
DDS DDS
2006 2006
DDSI/RTPS network DDSI/RTPS
Interoperable
Wire Protocol
8. DDS Standards Family
2008 2008
UML4DDS UML4DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
App App
Standard API
2004 2004
2010
2010
DDS DDS
X-Types
X-Types
2006 2006
DDSI/RTPS network DDSI/RTPS
§ Extensible/Evolvable Type Interoperable
System Wire Protocol
§ Dynamic Topic Types, Data
Readers & Writers
§ Encoding Negotiation
9. DDS Standards Family
2008 § ISO C++ DDS PSM 2008
§ Simple, Safe, Efficient,
UML4DDS UML4DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
Elegant and Ergonomic API
App App
Standard API
2004 2010 2004
ISO-C++ PSM
2010
2010
DDS DDS
X-Types
X-Types
2006 2006
DDSI/RTPS network DDSI/RTPS
Interoperable
Wire Protocol
10. DDS Standards Family
2008 § Java 5 DDS PSM 2008
§ Simple, Safe, Efficient,
UML4DDS UML4DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
Elegant and Ergonomic API
App App
Standard API
2004 2010 2010 2004
ISO-C++ PSM Java5 PSM
2010
2010
DDS DDS
X-Types
X-Types
2006 2006
DDSI/RTPS network DDSI/RTPS
Interoperable
Wire Protocol
11. OMG DDS + DDSI/RTPS
¨ Language Independent, OS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
Application
and HW architecture
independent Object/Relational Mapping
Data Local Reconstruction Layer (DLRL)
¨ Standard API Topic-Based, Real-
Time Publish/Subscribe Ownership Durability
Content
Subscription
¨ Built-in support for fail-over, Minimum Profile
filtering, query, data durability Data Centric Publish/Subscribe (DCPS)
¨ Standard wire protocol allowing Real-Time Publish/Subscribe Protocol
interoperability between DDS Interoperability Wire Protocol
different implementations of the
DDS standard UDP/IP
13. What is Data Distribution?
[1/2]
Data distribution is about
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨
making application defined
data available where needed
and when needed
¨ Data is a first class concept, it
can be created, updated, read
and eventually disposed
¨ The last value (or last N-values)
of a Data is available
Global Data Space
14. What is Data Distribution?
[2/2]
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ The details of how
application data is
encapsulated and
propagated are dealt by
the data distribution
technology
15. DDS Topics
The definition of Data in DDS is com.myco.VehiclePositionTopic!
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨
tied to the definition of a Topic
¨ A Topic is the association Name
between:
¨ Unique Name
¨ Type
¨ QoS Type Topic QoS
¨ A Topic can have associated a
key in order to express data com::myco::VehiclePosition!
{Reliability,!
Deadline,!
instances identities Priority,!
Durability}!
16. Topic Types
struct VehiclePosition{!
string plate; //@Key!
¨ Topic types can be defined long x;!
in IDL, XML, Java
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
longy;!
}!
¨ Topics types are extensible
and evolvable
¨ Rich set of annotations to Topic TrakCo.VehiclePosition
deal with fields that might be
optional, shared, etc. Topic Type VehiclePosition
Topic Key plate x y
¨ Each unique key value
identifies a Topic Instance “A123” 101 202
Topic Instances “B456” 303 202
¨ Topic Instance, can be
Created, Read, Updated, “C789” 101 606
and Disposed (CRUD)
17. Topic Instances and Samples
¨ An update for a Topic Instance is called Sample
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ DDS can maintain a configurable history of samples per Topic
Instance
20. The Type System Debate
¨ The debate around type Programming Languages Type
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
Systems has animated computer scientist over several
decades and is far from being resolved
¨ New Programming Languages are continuing to appear
on both sides of the fence
Statically Typed (ex.) Dynamically Typed (ex.)
F #
21. Are you a Type-Phobic Type?
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ Proponents of Dynamically Typed Programming Languages
advocate against strong typing in favor of reduced verbosity
and added flexibility
Yet... Are they so sure that a type system always gets
between you and what you are trying to achieve?
22. Strongly Typed Type Systems
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ Well designed type-systems don’t add unnecessary verbosity
to your application since use sophisticated inference to
derive types
¨ Allow the detection of many errors at compile time, thus
improving productivity, safety, code quality and reducing the
potential for run-time errors
¨ Enable the generation of more efficient code
23. Types and Distributed Systems
¨ The “Type System debate” has not spared distributed systems
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ Today we can find different technologies taking different
approaches: from completely untyped to strongly typed
¨ The differences are in this case more complex to organize:
¨ Some technologies support only one type, being a string or an array
of bytes (e.g. AMQP)
¨ Other technologies support some predefined types (e.g JMS)
¨ Other technologies allow the definition of user-specified types (e.g
DDS)
24. Types and Distributed Systems
T3
T1
T2
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
T2
T3
T4
? T1
T4
T1 T1
T3 T2
User Defined Types Example:
T1 = RadarTrack T3 = FlightPlan
T1 T2 T3 T4
T2 = ClassificationInfo T4 = ...
25. Types and Distributed Systems
T3
T1
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
T2 T2
Pub/Sub Types
T3 T1
octect sequence
T4 T4
T1 T1
T3
AMQP T2
User Defined Types Example:
T1 = RadarTrack T3 = FlightPlan
T1 T2 T3 T4
T2 = ClassificationInfo T4 = ...
26. Types and Distributed Systems
T3
T1
T2
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
T2
MapMessage
T3 ObjectMessage TextMessage T1
T4 StreamMessage T4
ByteMessage Pub/Sub Types
T1 T1
JMS
T3 T2
Example:
T1 = RadarTrack T3 = FlightPlan
T2 = ClassificationInfo T4 = ...
27. Types and Distributed Systems
T3
T1 Pub/Sub Types == User Types!
T2
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
T2
T1 T1
T3 T1
T2 T3
T4 T3 T4
T4
T1 T1
T3
DDS T2
Example:
T1 = RadarTrack T3 = FlightPlan
T2 = ClassificationInfo T4 = ...
28. “Pre X-Types” DDS Type System
¨ Nominal Type-System w/o sub-typing
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ Designed with the Closed-World Assumption in
mind, e.g., the information model is global and
immutable
¨ Changes to the information model are either non-
transparent or non-interoperable with legacy, e.g.
require compile/deploy cyce
29. Example
¨ In pre X-Types DDS systems the struct RadarTrack {!
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
RadarTrack and RadarTrack3D string id; //@Key!
long x;!
cannot be associated with }!
longy;!
the same Topic by different
DDS entities
¨ Nor it is possible for Readers
expecting RadarTrack types struct RadarTrack3D {!
string id; //@Key!
to match Writers producing long x;!
longy;!
RadarTrack3D long z;!
}!
30. DDS X-Types Type System
¨ Structural Type System
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ Support extensible and evolvable types
¨ A structural sub-type relationship is used to match
DataReader and DataWriters
¨ Annotations + QoS Policy provide control on the
sub-typing rule
31. Example
¨ Under the X-Types type-system: struct RadarTrack {!
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ RadarTrack3D <: RadarTrack string id; //@Key!
long x;!
long y;!
¨ As a result Subscribers to }!
RadarTrack match Publishers of
RadartTrack3D
¨ How about the dual case? struct RadarTrack3D {!
¨ QoS allow to control whether type string id; //@Key!
widening are allowed and in provide long x;!
control on widened attributes have to long z;!
be initialized long y;!
}!
32. More on X-Types
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
The DDS X-Types standard also provides
¨ An API for dynamically registering topic types and
creating DataReader/Writer for these types
¨ A rich set of annotations for declaring shared and
optional attributes, etc.
34. Encoding Efficiency
Size for Serialized CoFlight Flight Data Plan
DDS serialization is
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨
several times more
efficient than JSON,
XML and YAML
¨ Differences can be
quite extreme when
dealing with complex
types
DDS encoding is 10x more space efficient than XML!
35. Encoding Impact on RTT
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
DDS RTT with different Serialization Format
¨ Inefficient encoding
can easily dominate
RTT
¨ DDS native encoding
is the most efficient
among extensible
encodings!
36. DDS is very Efficient!
DDS implementations are
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨
capable of delivering very
low and predictable
latencies
Latency (usec)
¨ No other Pub/Sub
technology can approach
similar level of
performance!
Size (bytes)
38. PIM/PSM Approach
The DDS standard is
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨
PIM (UML)
composed by a PIM
specified in UML and A
PSM specified in IDL
PSM (IDL)
¨ Language specific APIs are
IDL2C
derived via IDL-based IDL2C++
IDL2Java
mappings (e.g. IDL2C++,
etc.)
C C++ Java
39. What is the Problem?
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ IDL is very good for describing DDS Topic Types, yet...
¨ IDL’s biggest strength, namely (programming) language
independence, becomes its biggest weakness when trying to
define APIs that are well integrated with a programming
language
¨ For some programming languages (e.g. C++) the IDL2C++
mapping is “seasoned”
40. What is the Problem?
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ Resulting DDS APIs are more complicated than they should
¨ API don’t feel natural or ergonomic to programmers
¨ API (esp. for C++) don’t integrate well with standard libraries
nor implements common idioms/patterns.
41. Native C++/Java PSM
¨ The new C++/Java PSM are
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
derived starting directly from
the PIM
PIM (UML)
¨ The new C++/Java PSM take
advantage of all the features
available in C++/Java to ISO C++ PSM Java 5 PSM
provide a natural,
productive, efficient, safe
and portable API
42. ISO C++ PSM in a Nutshell
¨ Provides transparent, safe, precise and real-time automatic memory
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
management
¨ Takes advantage of C++ Template Meta-programming to automate
tasks such as type registration and provide a strongly typed API (no
downcast ever!)
¨ Provides a DDS API that exploits Iterators and containers as well as
other C++ Standard Types
¨ API is extensible, efficient and portable
43. Type Mapping
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ DDS primitive types are
mapped to C99/C++ standard
types
¨ DDS container types are
mapped to standard C++
containers, namely std::vector
and std::map
44. Topic Type Mapping
C++ Topic Type Mapping
class VehiclePosition {
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
IDL Topic Type Definition ! VehiclePosition();
! VehiclePosition(const std::string& plate,
! ! ! int32_t x, int32_t y);
struct VehiclePosition {
! string plate; ! virtual ~VehiclePosition();
! long x;
! long y; ! const std::string& plate() const;
}; ! void plate(const std::string& s);
#pragma keylist VehiclePosition plate
! const int32_t x() const;
! void x(int32_t i);
! const int32_t y() const;
! void y(int32_t i);
private:
! // Encapsulated state representation
};
48. Modern History
2008
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
• Gartner selects DDS as a Cool Technology and Prismtech/OpenSplice
DDS as the cool vendor among DDS provider
2009
• To propel and accelerate the adoption of DDS beyond Aerospace and
Defense PrismTech Open Sources OpenSplice DDS
2010
OpenSplice DDS • With over 3000 new users in the last year OpenSplice DDS establishes
#1 itself as the most widely used and deployed DDS implementation
49. Product Adoption
20000
OpenSplice Downloads
15000
~20000 Unique
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
Downloads
¨
10000
downloads
since October
5000
2009 3000
0
OpenSplice DDS Registered Users
¨ ~3000 Unique 2250
OpenSplice DDS 1500
Users 750
0
Oct 2009 Oct 2010
50. Product Organization
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
¨ Four different editions with Enterprise Edition
growing sets of functionalities
Professional Edition
¨ The Community Edition is
Open Source. Compact, Compact Edition
Professional and Enterprise
Edition are available through Community Edition
Commercial Subscriptions /
Licensing
60. DDS Standard Evolution
2008 2008
UML4DDS UML4DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
App App
Standard API
2004 2010 2010 2004
ISO-C++ PSM Java5 PSM
2010
2010
DDS DDS
X-Types
X-Types
2006 2006
DDSI/RTPS network DDSI/RTPS
Interoperable
Wire Protocol
61. DDS Standard Evolution
2008 2008
UML4DDS UML4DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
App App
Standard API
2004 2010 2010 2004
2011
2011
Web-DDS
Web-DDS
ISO-C++ PSM Java5 PSM
2010
2010
DDS DDS
X-Types
X-Types
2006 2006
DDSI/RTPS network DDSI/RTPS
Interoperable
§ Standardized way of
Wire Protocol accessing DDS from Web
Technologies
§ REST, W3C WS-*, RSS, etc.
62. DDS Standard Evolution
2008 2008
UML4DDS UML4DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
App App
Standard API
2004 2010 2010 2004
2011
2011
Web-DDS
Web-DDS
ISO-C++ PSM Java5 PSM
2010
2010
DDS DDS
X-Types
X-Types
2011 2011
ULS-DDSI network ULS-DDSI
§ Ultra-Large Scale Extensions Interoperable
to the DDSI/RTPS wire- Wire Protocol
protocol
§ New Discovery
§ Support for TCP, etc.
63. DDS Standard Evolution
2008 2008
UML4DDS UML4DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
App App
Standard API
2004 2010 2010 2004
2012
2011
2011
2012
Web-DDS
Web-DDS
ISO-C++ PSM Java5 PSM
Security
Security
2010
2010
DDS DDS
X-Types
X-Types
2006 2006
ULS-DDSI network ULS-DDSI
Interoperable § Interoperable Security
Wire Protocol Architecture
§ Pluggable Policy / Labeling
and Tagging
64. DDS Standard Evolution
2008 2008
UML4DDS § Remote Method UML4DDS
Invocations over DDS
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
§ Synchronous, Asynchronous
App and one ways RMI App
2012 2012
Standard API
DDS-RMI DDS-RMI
2004 2010 2010 2004
2012
2011
2011
2012
Web-DDS
Web-DDS
ISO-C++ PSM Java5 PSM
Security
Security
2010
2010
DDS DDS
X-Types
X-Types
2006 2006
ULS-DDSI network ULS-DDSI
Interoperable
Wire Protocol
65. Concluding Remarks
¨ The DDS specification provides you the most
Copyright
2011,
PrismTech
–
All
Rights
Reserved.
advanced middleware infrastructure for building
mission-critical systems
¨ The Specification is evolving to support System of
Systems and Cloud Messaging
¨ OpenSplice DDS is emerging as the leading
implementation in the DDS market, quickly
expanding well beyond its traditional core market