Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DDS in Action -- Part I

1,623 views

Published on

Introduced in 2004, the Data Distribution Service (DDS) has been steadily growing in popularity and adoption. Today, DDS is at the heart of a large number of mission and business critical systems, such as, Air Traffic Control and Management, Train Control Systems, Energy Production Systems, Medical Devices, Autonomous Vehicles, Smart Cities and NASA’s Kennedy Space Centre Launch System.

Considered the technological trends toward data-centricity and the rate of adoption, tomorrow, DDS will be at the at the heart of an incredible number of Industrial IoT systems.

To help you become an expert in DDS and exploit your skills in the growing DDS market, we have designed the DDS in Action webcast series. This series is a learning journey through which you will (1) discover the essence of DDS, (2) understand how to effectively exploit DDS to architect and program distributed applications that perform and scale, (3) learn the key DDS programming idioms and architectural patterns, (4) understand how to characterise DDS performances and configure for optimal latency/throughput, (5) grow your system to Internet scale, and (6) secure you DDS system.

Published in: Technology
  • Login to see the comments

DDS in Action -- Part I

  1. 1. Angelo Corsaro, PhD Chief Technology Officer ADLINK Technologies Inc. angelo.corsaro@adlinktech.com DDS in Action Part-I
  2. 2. CopyrightPrismTech,2015 Who is the Speaker?
  3. 3. CopyrightPrismTech,2015 ANGELO CORSARO, PHD Chief Technology Officer ADLINK Technologies, Inc. Chief Technology Officer PrismTech OMG DDS SIG Co-Chair Interests: IoT/IIoT, Fog and Cloud Computing, Innovation Management, High Performance Computing, Large Scale Distributed Systems, Real-Time Systems, Functional Programming Languages Angelo is a well-known and cited expert in the area of high performance and large scale distributed systems and with 100s of publications on referred journal, conferences, workshops, and magazines. Senior Advisor ECC Hobbies: Wind-surfing, Jazz/Fusion/Funk Bass Playing Practices: Patanjali’s Ashtanga Yoga
  4. 4. CopyrightPrismTech,2015 DDS, what?
  5. 5. CopyrightPrismTech,2015 DDS in131 Characters DDS is a standard technology for ubiquitous, interoperable, secure, platform independent, and real-time data sharing across network connected devices
  6. 6. CopyrightPrismTech,2015 The DDS Standard
  7. 7. CopyrightPrismTech,2015 DDS Standard Evolution 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 ‣ DDS 1.0 ‣ DDSI-RTPS 1.0 ‣ DDS-XTYPES 1.0 ‣ DDS-SECURITY 1.0 ‣ DDS-XTYPES 1.1 ‣ DDSI-RTPS 2.2 ‣ DDS 1.4 ‣ DLRL 1.4 ‣ DDS-RPC 1.0 ‣ DDSI-RTPS 2.0 ‣ DDS 1.2 ‣ DDS-PSM-CXX 1.0 ‣ DDS-PSM-Java 1.0 ‣ DDSI-RTPS 2.1 ‣ DDSI-RTPS 1.0 2016
  8. 8. CopyrightPrismTech,2015 Defines a high level API for programming language, OS and architecture independent data sharing DDS Standards TCP UDP IP 802.3 802.11 DDSI-RTPS L3: Network App App App L2: Data Link L1: Physical L4: Transport L5: Session L6: Presentation User L7: Application Security X-Types DCPS RPC ... 802.1 ... C/C++, Java, .Net, JavaScript, Python, etc.Data Centric Publish Subscribe (DCPS)
  9. 9. CopyrightPrismTech,2015 Defines a wire protocol for interoperable implementation of DCPS abstractions. This protocol assumes a best-effort transport layer, i.e., reliability is provided by DDSI. DDS Standards TCP UDP IP 802.3 802.11 DDSI-RTPS L3: Network App App App L2: Data Link L1: Physical L4: Transport L5: Session L6: Presentation User L7: Application Security X-Types DCPS RPC ... 802.1 ... C/C++, Java, .Net, JavaScript, Python, etc.DDS Interoperability Protocol (DDSI-RTPS)
  10. 10. CopyrightPrismTech,2015 Extends the DDS type system from nominal to structural, thus providing very good support for evolutions and forward compatibility. Defines APIs for dynamically defining and operating over DDS types DDS Standards TCP UDP IP 802.3 802.11 DDSI-RTPS L3: Network App App App L2: Data Link L1: Physical L4: Transport L5: Session L6: Presentation User L7: Application Security X-Types DCPS RPC ... 802.1 ... C/C++, Java, .Net, JavaScript, Python, etc.eXtensible Types (DDS-XTypes)
  11. 11. CopyrightPrismTech,2015 Defines a data-centric security architecture with pluggable Authentication, Access Control, Crypto and Logging. DDS Standards TCP UDP IP 802.3 802.11 DDSI-RTPS L3: Network App App App L2: Data Link L1: Physical L4: Transport L5: Session L6: Presentation User L7: Application Security X-Types DCPS RPC ... 802.1 ... C/C++, Java, .Net, JavaScript, Python, etc.Security (DDS-Security)
  12. 12. CopyrightPrismTech,2015 Extends DDS abstractions to support distributed service definition and remote operation invocations. DDS Standards TCP UDP IP 802.3 802.11 DDSI-RTPS L3: Network App App App L2: Data Link L1: Physical L4: Transport L5: Session L6: Presentation User L7: Application Security X-Types DCPS RPC ... 802.1 ... C/C++, Java, .Net, JavaScript, Python, etc.Remote Procedure Calls (DDS-RPC)
  13. 13. CopyrightPrismTech,2015 Upcoming Standards 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 ‣ DDS 1.0 ‣ DDSI-RTPS 1.0 ‣ DDS-XTYPES 1.0 ‣ DDS-SECURITY 1.0 ‣ DDS-XTYPES 1.1 ‣ DDSI-RTPS 2.2 ‣ DDS 1.4 ‣ DLRL 1.4 ‣ DDS-RPC 1.0 ‣ DDSI-RTPS 2.0 ‣ DDS 1.2 ‣ DDS-PSM-CXX 1.0 ‣ DDS-PSM-Java 1.0 ‣ DDSI-RTPS 2.1 ‣ DDSI-RTPS 1.0 2016 2017 ‣ DDS-XTYPES 1.2 ‣ DDSI-Security 1.1 ‣ DDS-XRCE (TBC) ‣ OPC-UA/DDS GTW (TBC)
  14. 14. CopyrightPrismTech,2015 Defines the most wire/power/memory efficient protocol in the market to provide DDS connectivity to extremely constrained targets, such as battery powered devices with less than 100 Kbytes of memory and connected through constrained networks DDS Standards eXtremely Resource Constrained Environments DDS (DDS-XRCE) DDS-XRCE XRCE Application L3: Network TCP UDP IP 6LowPAN 802.15.4 NB-IoT3G/4G Unspecified API App App App L2: Data Link L1: Physical L4: Transport L4: Session …
  15. 15. CopyrightPrismTech,2015 Defines a standard Gateway to simplify the bridging between from OPC-UA and DDS DDS Standards OPC-UA/DDS Gateway (DDS-OPCUA-GTW) Data Writer Data Writer DDS/OPC-UA Gateway OPC-UA Server +Client DDSI- RTPS OPC-UA Client OPC-UA Client OPC-UA Client OPC-UA Client
  16. 16. CopyrightPrismTech,2015 Who is using DDS?
  17. 17. CopyrightPrismTech,2015 DDS is used for data sharing within and across the vehicle. The environment is highly heterogeneous and requires dynamic pairing along with coordination of fast moving vehicles AUTONOMOUS VEHICLES
  18. 18. CopyrightPrismTech,2015 DDS is used as the integration technology for data sources and sinks. DDS is also often used as a control plane to control and provision equipment Smart Cities
  19. 19. CopyrightPrismTech,2015 DDS is used to integrate and normalise data sharing among the various elements of a smart grid at scale Duke’s Energy COW showed how only with DDS it was possible to distribute the phase alignment signal at scale wit hthe required 20ms periodicity Smart Grid
  20. 20. CopyrightPrismTech,2015 DDS leveraged to virtualise I/O and provide better decoupleng between I/ O, Control and Management functions of the system Smart Green Houses
  21. 21. CopyrightPrismTech,2015 The NASA Kennedy Space Centre uses DDS to collect the Shuttle Launch System Telemetry. DDS streams over 400.000 Msgs/sec In comparison, world-wide, Twitter deals with less than 7000 msgs/sec NASA Launch Systems
  22. 22. CopyrightPrismTech,2015 DDS is uses to share Flight Data within and across Air Traffic Control Centres. These applications have extremely high dependability constraints. Air Traffic Control
  23. 23. CopyrightPrismTech,2015 DDS is used in Smart Factories to provide horizontal and vertical data integration across the traditional SCADA layers. Smart Factory
  24. 24. CopyrightPrismTech,2015 DDS used to control the 100.000 mirrors that make up ELT’s optics. These mirrors are adjusted 100 times per second Extremely Large Telescope (ELT)
  25. 25. CopyrightPrismTech,2015 DDS is uses inside several medical devices to share data between the various stages of data acquisition, processing and visualisation Medical Devices
  26. 26. CopyrightPrismTech,2015 DDS is heavily used for data sharing in Robotics and is today at the heart of the Robot Operating System (ROS) Robotics
  27. 27. CopyrightPrismTech,2015 Why are these applications using DDS?
  28. 28. CopyrightPrismTech,2015 DDS PROVIDES AN EXTREMELY HIGH LEVEL AND POWERFUL ABSTRACTIONS ALONG WITH A ROCK SOLID INFRASTRUCTURE TO BUILD HIGHLY MODULAR AND DISTRIBUTED SYSTEMS
  29. 29. CopyrightPrismTech,2015 dds makes it much easier to solve some very hard distributed system problems, such as fault-tolerance, scalability and asymmetry
  30. 30. CopyrightPrismTech,2015 DDS is like a universal glue that allows to seal together highly heterogeneous environments while maintaining a single, elegant and efficient abstraction
  31. 31. CopyrightPrismTech,2015 DDS implementation are available for an incredible numbers of platforms, including enterprise, desktop, embedded, real- time, mobile, and web Platform Independent
  32. 32. CopyrightPrismTech,2015 DDS applications can be written in your favourite programming language. Interoperability across languages is taken care by DDS Polyglot
  33. 33. CopyrightPrismTech,2015 DDS: The Main Idea
  34. 34. CopyrightPrismTech,2015 Applications can autonomously and asynchronously read and write data enjoying spatial and temporal decoupling Virtualised Data Space DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS
  35. 35. CopyrightPrismTech,2015 A domain-wide information’s class A Topic defined by means of a <name, type, qos> Topic DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS Topic Type Name QoS
  36. 36. CopyrightPrismTech,2015 Built-in dynamic discovery isolates applications from network topology and connectivity details Dynamic Discovery DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS
  37. 37. CopyrightPrismTech,2015 QoS policies allow to express temporal and availability constraints for data QoS Enabled DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS
  38. 38. CopyrightPrismTech,2015 No single point of failure or bottleneck Decentralised Data-Space Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS TopicD QoS TopicD QoS TopicA QoS DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS
  39. 39. CopyrightPrismTech,2015 Connectivity is dynamically adapted to chose the most effective way of sharing data Adaptive Connectivity Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Writer TopicA QoS TopicB QoS TopicC QoS TopicD QoS TopicD QoS TopicD QoS TopicA QoS The communication between the DataWriter and matching DataReaders can be peer-to- peer exploiting UDP/IP (Unicast and Multicast)or TCP/IP The communication between the DataWriter and matching DataReaders can be “brokered” but still exploiting UDP/IP (Unicast and Multicast)or TCP/IP
  40. 40. CopyrightPrismTech,2015 Most frequently heard misconceptions
  41. 41. CopyrightPrismTech,2015 DDS can only work on a LAN as it requires multicast misconception #1
  42. 42. CopyrightPrismTech,2015 The only one thing that DDS assumes from the underlying transport is best effort one-to-one communication. DDS can and will exploit multicast when available, but does not require it in order to work! rectification #1
  43. 43. CopyrightPrismTech,2015 use DDS only if you need real-time misconception #2
  44. 44. CopyrightPrismTech,2015 While DDS support for predictable, real-time, communication is unparalleled, in a sense this is just a tiny detail. DDS main value is simplifying the design, development, deployment and maintenance of distributed systems rectification #2
  45. 45. CopyrightPrismTech,2015 DDS is not widely adopted misconception #3
  46. 46. CopyrightPrismTech,2015 DDS is not widely hyped as its main domain of applications has been thus far the mission and business critical applications as opposed to Internet applications. That said, it has far more deployments than many of the technologies currently hyped in IoT/IIoT. rectification #3
  47. 47. CopyrightPrismTech,2015 There are no Open source DDS implementations misconception #4
  48. 48. CopyrightPrismTech,2015 There are at least two mainstream Open Source implementations of DDS. One of them, from PrismTech, is OpenSplice DDS rectification #4
  49. 49. CopyrightPrismTech,2015 DDS cannot go through Firewall or naTS nor it can support to internet scale applications misconception #5
  50. 50. CopyrightPrismTech,2015 DDS vendors such as PrismTech have shown not only how DDS can be used to build Internet Scale systems but more importantly how some of the DDS features make it easier! rectification #5
  51. 51. CopyrightPrismTech,2015 Show me the Code
  52. 52. CopyrightPrismTech,2015 Writing Data in C++ #include <dds.hpp> int main(int, char**) { DomainParticipant dp(0); Topic<Meter> topic(“SmartMeter”); Publisher pub(dp); DataWriter<Meter> dw(pub, topic); while (!done) { auto value = readMeter() dw.write(value); std::this_thread::sleep_for(SAMPLING_PERIOD); } return 0; } enum UtilityKind { ELECTRICITY, GAS, WATER }; struct Meter { string sn; UtilityKind utility; float reading; float error; }; #pragma keylist Meter sn
  53. 53. CopyrightPrismTech,2015 Reading Data in C++ #include <dds.hpp> int main(int, char**) { DomainParticipant dp(0); Topic<Meter> topic(”SmartMeter”); Subscriber sub(dp); DataReader<Meter> dr(dp, topic); auto samples = dr.read(); std::for_each(samples.begin(), samples.end(), [](Sample<Meter>& sample) { std::cout << sample.data() << std::endl; }); return 0; } enum UtilityKind { ELECTRICITY, GAS, WATER }; struct Meter { string sn; UtilityKind utility; float reading; float error; }; #pragma keylist Meter sn
  54. 54. CopyrightPrismTech,2015 Homework
  55. 55. CopyrightPrismTech,2015 Download Vortex from http://bit.ly/vortex-download Run a few examples in the distribution, and look at the code If you can install Wireshark on your machine Before next Video…

×