The Present and Future of DDS

4,631 views
4,457 views

Published on

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.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,631
On SlideShare
0
From Embeds
0
Number of Embeds
1,140
Actions
Shares
0
Downloads
202
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

The Present and Future of DDS

  1. 1. The Present and Future " of DDS Angelo Corsaro, Ph.D. Chief Technology Officer! OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com!
  2. 2. The Present
  3. 3. The DDS Standard
  4. 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. 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. 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. 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. 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. 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. 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. 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
  12. 12. How does it work?
  13. 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. 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. 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. 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. 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
  18. 18. Demo#1 DDS in Action
  19. 19. DDS X-Types
  20. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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.
  33. 33. X-Types Efficiency
  34. 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. 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. 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)
  37. 37. ISO C++ PSM
  38. 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. 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. 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. 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. 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. 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. 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 };
  45. 45. Writing Samples // ================== DataWriter =================== Copyright  2011,  PrismTech  –    All  Rights  Reserved.   try { dds::topic::Topic<RadarTrack> topic = DomainId id = 0; dp.create_topic<RadarTrack>("TrackTopic", DomainParticipant dp = "RadarTrack", tqos); TheParticipantFactory().create_participant(id); pub::qos::DataWriterQos dwqos(tqos); pub::qos::PublisherQos pqos; pqos << policy::Partition("Tracks"); pub::DataWriter<RadarTrack> dw = pub.create_datawriter(topic, dwqos); pub::Publisher pub = dp.create_publisher(pqos); RadarTrack track("alpha", 100, 200); topic::qos::TopicQos tqos; dw.write(track); tqos << policy::Reliability::Reliable() // or << policy::Durability::Transient() dw << track; << policy::History::KeepLast(10) << policy::TransportPriority(14); } catch (const dds::core::Exception& e) { }
  46. 46. Reading Samples // ================== DataReader=================== dds::topic::Topic<RadarTrack> topic = Copyright  2011,  PrismTech  –    All  Rights  Reserved.   dp.create_topic<RadarTrack>("TrackTopic", try { "RadarTrack", tqos); DomainId id = 0; DomainParticipant dp = sub::qos::DataReaderQos dwqos(tqos); TheParticipantFactory().create_participant(id); sub::DataReader<RadarTrack> dr = sub::qos::SubscriberQos sqos; sub.create_datareader(topic, drqos); sqos << policy::Partition("Tracks"); std::vector<RadarTrack> samples(MY_MAX_LEN); std::vector<SampleInfo> info(MY_MAX_LEN); sub::Subscriber sub = dr.read(samples.begin(), info.begin(), MY_MAX_LEN); dp.create_subscriber(sqos); topic::qos::TopicQos tqos; } catch (const dds::core::Exception& e) { } tqos << policy::Reliability::Reliable() << policy::Durability::Transient() << policy::History::KeepLast(10) << policy::TransportPriority(14);
  47. 47. OpenSplice DDS
  48. 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. 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. 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
  51. 51. Community Edition Copyright  2011,  PrismTech  –    All  Rights  Reserved.   ¨  OMG DDS v1.2 Application Content Real-Time Networking DDS v1.2 Ownership Durability Subscription ¨  Minimum Profile ¨  DDSI/RTPS v2.1 Real-Time Pub/Sub (DCPS) DDSI v2.1 Interoperable Wire Protocol Real-Time Networking (DDSI) Licensing Networking Technology ¨  LGPLv3 UDP/IP
  52. 52. Compact Edition All Community Ed. features Copyright  2011,  PrismTech  –    All  Rights  Reserved.   ¨  MDE Application Tuner ¨  Power Tools PowerTools Eclipse Visual Modeling Tool Content DDS v1.2 ¨  Ownership Durability Subscription ¨  Tuner Tool Minimum Profile Real-Time Pub/Sub (DCPS) DDSI v2.1 Licensing Real-Time Networking Interoperable Wire Protocol (DDSI) ¨  Commercial Subscription / Licenses Networking Technology PrismTech Source Code License UDP/IP ¨  (non-copy-left)
  53. 53. Professional Edition Copyright  2011,  PrismTech  –    All  Rights  Reserved.   All Compact Ed. Features MDE Application ¨  Tuner Object/Relational Mapping DLRL v1.2 PowerTools Object-Oriented Pub/Sub (DLRL) DDS v1.2 ¨  Content Ownership Durability Subscription ¨  Connectors Minimum Profile Real-Time Pub/Sub (DCPS) ¨  SOAP DDSI v2.1 Interoperable Wire Protocol SOAP Real-Time Networking (DDSI) Licensing Connectors Networking Technology ¨  Commercial Subscription / Licenses UDP/IP ¨  PrismTech Source Code License (non-copy-left)
  54. 54. Enterprise Edition ¨  All Professional Ed. Features Copyright  2011,  PrismTech  –    All  Rights  Reserved.   MDE Application Security Tuner Object/Relational Mapping ¨  PowerTools Object-Oriented Pub/Sub (DLRL) DDS v1.2 Connectors Content Ownership Persistence ¨  Subscription DBMS Minimum Profile DBMS Connectors Real-Time Pub/Sub(DCPS) ¨  DDSI v2.1 Real-Time Interoperable Wire SOAP Secure Networking Networking Protocol (DDSI) Licensing Connectors Networking Technology ¨  Commercial Subscription / Licenses UDP/IP ¨  PrismTech Source Code License (non-copy-left)
  55. 55. OpenSplice DDS [Users & Use Cases]
  56. 56. Some Selected Users Copyright  2011,  PrismTech  –    All  Rights  Reserved.  
  57. 57. Some Use Cases Aerospace & Defense Copyright  2011,  PrismTech  –    All  Rights  Reserved.   ¨  Naval Combat Management Systems ¨  Submarines ¨  Vetronics (Military Vehicles) ¨  Tactical Links ¨  Simulation ¨  Cybercrime ¨  Flycatcher Systems ¨  Data Fusion ¨  Battle Transformation Center
  58. 58. Some Use Cases Transportation Copyright  2011,  PrismTech  –    All  Rights  Reserved.   ¨  Drones ¨  Air Traffic Control & Management ¨  Metropolitan Transportation Financial Services ¨  Automated Trading Firms ¨  Risk Management Firms
  59. 59. The Future
  60. 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. 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. 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. 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. 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. 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
  66. 66. OpenSplice DDS Delivering Performance, Openness, and Freedom http://www.opensplice.com/ http://www.opensplice.org/ http://www.slideshare.net/angelo.corsaro emailto:opensplicedds@prismtech.com http://bit.ly/1Sreg http://twitter.com/acorsaro/ http://www.youtube.com/OpenSpliceTube http://opensplice.blogspot.com

×