DDS Everywhere
Upcoming SlideShare
Loading in...5
×
 

DDS Everywhere

on

  • 1,178 views

An increasing number of applications, such as smart cities, mobile-health and smart grids, require to ubiquitously distribute and access real-time information from, and across, a vast variety of ...

An increasing number of applications, such as smart cities, mobile-health and smart grids, require to ubiquitously distribute and access real-time information from, and across, a vast variety of devices, ranging from embedded sensors to mobile devices. While the problem of ubiquity is solved at a computing and network connectivity level, it is by no means solved with respect to (1) real-time, and (2) resource efficient (e.g. battery life and network), data distribution.

This webcast will unveil PrismTech’s “DDS Everywhere” product strategy and will introduces a series of Innovations that have extended the OpenSplice ecosystem to seamlessly share data between embedded devices, traditional IT infrastructures, cloud applications and mobile devices.

Statistics

Views

Total Views
1,178
Views on SlideShare
1,122
Embed Views
56

Actions

Likes
1
Downloads
26
Comments
1

4 Embeds 56

https://twitter.com 42
http://www.icorsaro.net 10
http://icorsaro.net 3
http://dds4u.blogspot.fr 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • As usual, great job Angelo!
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

DDS Everywhere DDS Everywhere Presentation Transcript

  • OpenSplice DDS EverywhereOpenSplice DDS Angelo CORSARO, Ph.D. Chief Technology Officer OMG DDS Sig Co-Chair PrismTech angelo.corsaro@prismtech.com
  • DDS Everywhere Platform A DDS-based, interoperable Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ product family addressing OpenSplice OpenSplice systems needs from Embedded Cloud Community and Mobile to Enterprise and Cloud OpenSpliceOpenSplice DDS ☐ An Open Source core providing free access to the OpenSplice OpenSplice OpenSplice Ecosystem, security of supply and Enterprise Embedded a vibrant, innovative community
  • DDS Everywhere Platform Consumer Platforms ☐ Browser / HTML5 Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ iOS OpenSplice OpenSplice ☐ Android ☐ Cloud Cloud Community ☐ No-SQL ☐ Mobile/WiFi IP Transp. OpenSpliceOpenSplice DDS ☐ RTOS (VxWorks, QNX, ☐ OS (Linux, Windows, etc) etc.) ☐ Cloud ☐ FPGA OpenSplice OpenSplice ☐ DBMS ☐ BSP / No-OS ☐ No-SQL Enterprise Embedded ☐ IP + Exotic ☐ InfiniBand + IP Transports Transports Industrial IT Platforms Platforms
  • DDS Everywhere Platform ☐ Mobility ☐ Elasticity ☐ Cloud Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Integration OpenSplice OpenSplice Cloud Community OpenSpliceOpenSplice DDS ☐ Fault-Tolerance OpenSplice OpenSplice ☐ Throughput Enterprise Embedded ☐ Scalability ☐ Latency ☐ Determinism ☐ Latency ☐ Security ☐ Footprint ☐ Integration
  • OpenSplice EnterpriseOpenSplice DDS
  • Key Highlights ☐ The best middleware OpenSplice OpenSplice Copyright  2011,  PrismTech  –    All  Rights  Reserved. Cloud Community infrastructure to Simplify Distributed System Development OpenSplice ☐ Reduce complexity ofOpenSplice DDS building, testing, integrating, OpenSplice OpenSplice OpenSplice and deploying high- Tools Enterprise Embedded performance, scalable, and fault-tolerant distributed systems OpenSplice DDS
  • OpenSplice DDS New in v6.3
  • OpenSplice DDSI2E Enhanced version of the Interoperable wire Copyright  2011,  PrismTech  –    All  Rights  Reserved. protocol DDSI v2.1 Discovery ☐ Standardized discovery (locators) ☐ Dynamic unicast/multicast selection ☐ Optional static discoveryOpenSplice DDS Real-Time ☐ independently scheduled priority-lanes ☐ Support for Logical and Physical Partitioning ☐ Traffic-Shaping Security ☐ Encrypted network-Partitions
  • Record and Replay ☐ Dynamic recording of any topic- Copyright  2011,  PrismTech  –    All  Rights  Reserved. data in a DDS system ☐ Selective replay with variable RnR RnR RnR speed Service Service(s) Manager ☐ Distributed control by topic-based Record/Replay command Record/Replay command Any topic API (‘command’ & ‘status’ topics)OpenSplice DDS & status topics & status topics OpenSplice DDS ☐ Seamless integration with OpenSplice Tester (topic-based API) ☐ Dedicated RnR-Manager graphical GUI for scenario-definition and data import/analysis
  • OpenSplice DDS Record and Replay Tool Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • New DDS APIs Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ The original DDS API introduces some unnecessary accidental complexityOpenSplice DDS ☐ We’ve been working hard to standardize new C++/Java API for DDS that makes using it as simple as possible
  • Statistics Simple DataWriter with default QoS DDS v1.2 C++ API ISO C++ API Copyright  2011,  PrismTech  –    All  Rights  Reserved. 15 ☐ The new API reduces the number of lines of code 11 from 3x to 5x when compared to the originalOpenSplice DDS 8 DDS API! ☐ Less code means less bugs 4 0 SLOC
  • struct ShapeType { ISO C++ DDS API string color; long x; long y; long shapesize; }; #pragma keylist ShapeType color int main(int argc, char* argv[]) { try { Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Simple, Compact and ! ! // Create DomainParticipant DomainParticipant dp = DomainParticipant(0); Elegant ! ! // Create Topic Topic<ShapeType> topic(dp, "Circle"); // Create Publisher ! ! Publisher pub(dp); ☐ Type-safe // Create DataWriter QoS DataWriterQos dwqos = pub.default_datawriter_qos() << Durability::Transient() ☐ Orthogonal << History::KeepLast(10);OpenSplice DDS // Create DataWriter ! ! DataWriter<ShapeType> dw(pub, topic, dwqos); ☐ Efficient // Write ShapeType s = {"RED", 50, 70, 90}; dw << s; // - or - ☐ QoS DSL dw.write(s); ! ! ! } catch (const dds::core::Exception& e) { ! ! std::cout << e.what() << std::endl; ! } ! return 0; }
  • ISO C++ DDS API Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Unified and composable data selection API std::vector<std::string> p; p.push_back("100"); p.push_back("200");OpenSplice DDS Query q("x < %0 AND y < %1", p); auto data = reader ! .select() .instance(handle) // -- Select Instance ! ! .state(status::DataState::new_data()) // -- Filter on State ! ! .content(q) // -- Filter on Content .read(); // -- Execute the selection and read the data
  • Example: DataWriter int main(int argc, char* argv[]) { try { ! ! DomainParticipant dp(0); Copyright  2011,  PrismTech  –    All  Rights  Reserved. ! ! Topic<ShapeType> topic(dp, "Circle"); ! ! Publisher pub(dp); ! ! DataWriter<ShapeType> dw(pub, topic); ! ! uint32_t pos = 0; ! ! const uint32_t N = 300; ! ! for (int i = 0; i < N; ++i) { ! ! ! ShapeType bc = {"RED", i, i, 60};OpenSplice DDS ! ! ! ShapeType rc = {"BLUE", N-i, N-i, 60}; ! ! ! dw << rc; ! ! ! usleep(10000); ! ! } ! } catch (const dds::core::Exception& e) { ! ! std::cout << e.what() << std::endl; ! } ! return 0; }
  • Example: DataReader int main(int argc, char* argv[]) { try { DomainParticipant dp(0); Copyright  2011,  PrismTech  –    All  Rights  Reserved. Topic<ShapeType> topic(dp, "Circle"); Subscriber sub(dp); DataReader<ShapeType> dr(sub, topic); uint32_t pos = 0; const uint32_t N = 300; uint32_t max_size = 10; const uint32_t sleepTime = 500000;OpenSplice DDS while (true) { LoanedSamples<ShapeType> samples = dr.read(); std::cout << "-----------" << std::endl; for_each(samples.begin(), samples.end(), printShapeSample); usleep(sleepTime); } } catch (const dds::core::Exception& e) { std::cout << e.what() << std::endl; } return 0; }
  • Full C++ Shapes Application see: Copyright  2011,  PrismTech  –    All  Rights  Reserved. github.com/kydos/dds-psm-cxx/tree/master/examples/ishapes-driverOpenSplice DDS
  • OpenSplice CloudOpenSplice DDS
  • Key Highlights OpenSplice Gateway Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Brings DDS on mobile devices powered by OpenSplice OpenSplice OpenSplice Android/iOS Mobile Cloud Community ☐ Enables DDS-based OpenSpliceOpenSplice DDS Cloud Messaging for higher scalability, throughout and minimal OpenSplice OpenSplice cost per message Enterprise Embedded
  • OpenSplice Mobile Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Pure Java version of OpenSplice targeting the JVM DCPS Java 5 / Scala API ☐ DDSI Protocol Stack optimized DDSI for mobility and Android OS (Optimized for Mobility)OpenSplice DDS ☐ Only DDS on the market designed and Engineered for Android and the JVM
  • OpenSplice DDS OpenSplice Mobile Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • OpenSplice DDS Demo Copyright  2011,  PrismTech  –    All  Rights  Reserved.
  • Java 5 PSM Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ Idiomatic and ergonomic DDS API for Java ☐ Guaranteed code portability through clean separation of standard API (in an OMG provided JAR) and vendor implementationOpenSplice DDS ☐ QoS and Selector DSL simplify programming and make code more readable ☐ QoS Provider allows to “externalize” the QoS configuration
  • Java Shapes -- Reader package  org.omg.demo.dds.shapes; import  ...; Copyright  2011,  PrismTech  –    All  Rights  Reserved. /**  *  This  class  provides  a  simple  example  of  a  DDS  data  reader  using  the  new  Java  API.  */ public  class  ShapesReader  {        public  static  void  main(String  args[])  throws  Exception  {                if  (args.length  <  1)  {                        System.out.println("USAGE:ntShapesWriter  <topic>");                        System.out.println("nttopic  =  [Circle,  Square,  Triangle]");OpenSplice DDS                        System.exit(1);                }                final  String  shape  =                                args[1].substring(0,1).toUpperCase()  +   args[1].substring(1,args[1].length()).toLowerCase();                final  ServiceEnvironment  env  =                                ServiceEnvironment.createInstance(ShapesWriter.class.getClassLoader());
  • Java Shapes -- Reader                DomainParticipantFactory  factory  =                                DomainParticipantFactory.getInstance(env);                DomainParticipant  dp  =  factory.createParticipant(); Copyright  2011,  PrismTech  –    All  Rights  Reserved.                final  PolicyFactory  pf  =  env.getSPI().getPolicyFactory();                TopicQos  tqos  =  dp.getDefaultTopicQos();                tqos.withPolicies(pf.Durability().withTransient(),                                                        pf.Reliability().withReliable());                Topic<ShapeType>  topic  =  dp.createTopic(shape,  ShapeType.class);                Subscriber  sub  =  dp.createSubscriber();OpenSplice DDS                DataReaderQos  drqos  =                                sub.getDefaultDataReaderQos().withPolicies(                                                pf.Reliability().withBestEffort(),                                                pf.Durability().withTransient()                                );                DataReader<ShapeType>  dr  =                                sub.createDataReader(topic,  drqos,  new  ShapeTypeListener(),  Status.allStatuses(env));                Thread.currentThread().join();        } }
  • Java Shapes -- Writer public  class  ShapesWriter  {        public  static  void  main(String  args[])  throws  Exception  {                if  (args.length  <  4)  { Copyright  2011,  PrismTech  –    All  Rights  Reserved.                        System.out.println("USAGE:ntShapesWriter  <topic>  <circle>  <samples>  <period  ms>");                        System.out.println("nttopic  =  [Circle,  Square,  Triangle]");                        System.out.println("tcolor  =  [Red,  Blue,  Green,  Magenta,  Cyan]");                        System.exit(1);                }                final  String  shape  =                                args[1].substring(0,1).toUpperCase()  +  args[1].substring(1,args[1].length()).toLowerCase();                final  String  color  =  args[1].toUpperCase();OpenSplice DDS                final  int  samples  =  Integer.parseInt(args[2]);                final  int  period  =  Integer.parseInt(args[3]);                final  int  bound  =  100;                final  ServiceEnvironment  env  =                                ServiceEnvironment.createInstance(ShapesWriter.class.getClassLoader());
  • Java Shapes -- Writer                final  PolicyFactory  pf  =  env.getSPI().getPolicyFactory();                DomainParticipantFactory  factory  =                                DomainParticipantFactory.getInstance(env);                DomainParticipant  dp  =  factory.createParticipant(); Copyright  2011,  PrismTech  –    All  Rights  Reserved.                Topic<ShapeType>  topic  =  dp.createTopic(shape,  ShapeType.class);                Publisher  pub  =dp.createPublisher();                DataWriterQos  dwqos  =                                pub.getDefaultDataWriterQos().withPolicies(                                                pf.Reliability().withBestEffort(),                                                pf.Durability().withTransient());                DataWriter<ShapeType>  dw  =  pub.createDataWriter(topic);OpenSplice DDS                final  ShapeType  sample  =  new  ShapeType(color,  0,  0,  0);                for  (int  i  =  0;  i  <  samples;  ++i)  {                        sample                                .setX(((int)Math.random()%bound))                                .setY(((int)Math.random()%bound))                                .setShapesize(((int)Math.random()%bound));                        dw.write(sample);                        Thread.sleep(period);                }        } }
  • Performance Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ OpenSplice Mobile v1.0 beta features already very good performance ☐ Latency is low and prettyOpenSplice DDS stable ~3usec of difference from 32 to 1024 bytes
  • OpenSplice Gateway JMS Integration technology providing Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ XM connectivity from DDS to over 80 ST PP RE OpenSplice technologies, including WebSockets Gateway P and REST Cu AMQ sto m ☐ Java-based and easily deployableOpenSplice DDS DDSI-RTPS on the cloud Supported Connectors Include: ☐ Key building block for OpenSplice - JMS - HTTP - REST - AMQP Based Cloud Messaging Solutions - CometD - XMPP - CFX - Hibernate -WebSockets -HBase - TCP, UDP Sockets - Custom
  • WebSocket Integration 1 // Define endpoints 2 val inEndpoint = Copyright  2011,  PrismTech  –    All  Rights  Reserved. 3 "ddsi:"+ inTopic +":"+ inDomain +"/" + shapeType 4 val outEndpoint = 5 "websocket://"+inTopic.toLowerCase + "?sendToAll=true" 6 7 // Define a Route using the Scala DSL 8 val shapesRoute = new RouteBuilder { 9 override def configure() =OpenSplice DDS 10 from(inEndpoint) unmarshal("cdr") marshal() json() to(outEndpoint) To JSON 11 } Topic “Circle” ☐ This example requires Camel 2.10 DDS Domain 0
  • TCP/UDP Tunneling DDS Domain 0 ☐ Integrate different DDS Domains via TCP (or UDP) Topic “Circle” tunnel ☐ Per Topic bridging ☐ Unidirectional or bidirectional GW 1 ☐ Possibly adding SSL/TLS TCPOpenSplice DDS GW 2 1 // on GW1: 2 from("ddsi:Circle:0/ShapeType") 3 to("netty:tcp://localhost:6789?sync=false"); Topic “Circle” 1 // on GW2: 2 from("netty:tcp://localhost:6789?sync=false") 3 to("ddsi:Circle:0/ShapeType"); DDS Domain 0
  • OpenSplice EmbeddedOpenSplice DDS
  • Key Highlights OpenSplice OpenSplice Copyright  2011,  PrismTech  –    All  Rights  Reserved. Cloud Community ☐ The OpenSplice Embedded Product family brings DDS OpenSplice connectivity to devices and OpenSpliceOpenSplice DDS resource constrained real- OpenSplice OpenSplice Integrator time embedded systems Enterprise Embedded OpenSplice Lite OpenSplice RTE
  • FPGA Integrator GIOP/DDSI DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. Data Bridge Reader FPGA Data Writer GIOP Data Reader Data TopicD ICO GIOP DDSI Writer TopicA Data TopicB Reader Data Writer TopicC ... Data Data Writer ReaderOpenSplice DDS DDS Global Data Space ☐ ‘Out-of-the-box’ solution for integrating FPGA’s withDDS based systems ☐ Bridges the device-data (via GIOP) to the DDS-based system using a software ‘gateway’ providing full DDS QoS support to maintain & distribute the device-data ☐ Bridge-technology is be based either: ☐ OpenSplice Gateway (if a Java platform is available) or ☐ A small OpenSplice bridge application or pluggable-service
  • OpenSplice Lite ISO C++ API ☐ Bring software-based DDS Copyright  2011,  PrismTech  –    All  Rights  Reserved. implementation to a range of resource constrained devices Native C API ☐ Allow for variability on functionalities, transport and support of underlying OS/ DDSI / DDSI-E BSP OS TransportOpenSplice DDS ☐ Provides very low footprint and very high Abstraction Abstraction performance ☐ Footprint as low as 100/200 KB RTOS DSP Latency as low as 35-45 usec (on Gigabit uController ☐ GPP network)
  • OpenSplice RTE ☐ Bring the full power of DDS to real- Copyright  2011,  PrismTech  –    All  Rights  Reserved. time embedded systems DCPS API (C/C++/RT-Java) ☐ Provides low footprint, superlative DDSI-E / RT-NET scalability and and high performance OSOpenSplice DDS Abstraction ☐ Footprint 2MB RTOS ☐ Latency 75/80 usec (on Gigabit network) GPP
  • Putting it all TogetherOpenSplice DDS
  • DDS Everywhere! OpenSplice Mobile OpenSplice Mobile Embedded JVM OpenSplice DDS EnterpriseOpenSplice DDS OpenSplice Enterprise OS MQTT, AMQP, Gateway JMS, REST, .... OpenSplice OpenSplice RTE Lite RTOS Embedded OS
  • OpenSplice DDS Final Remarks
  • Concluding Remarks Copyright  2011,  PrismTech  –    All  Rights  Reserved. ☐ With the DDS Everywhere platform we are making DDS available on any device ☐ That means that: ☐ You can get DDS data from your system to anywhereOpenSplice DDS ☐ You can exploit the power of DDS across devices and technologies ☐ You have a single technology end-to-end that provides optimal efficiency, scalability, performance and more importantly data-centricity!
  • OpenSplice DDS
  • :: Connect with Us :: ¥opensplice.com ¥forums.opensplice.org ¥@acorsaro ¥opensplice.org ¥opensplicedds@prismtech.com ¥@prismtechOpenSplice DDS ¥ crc@prismtech.com ¥sales@prismtech.com ¥youtube.com/opensplicetube ¥slideshare.net/angelo.corsaro