DDS in the E-ELT Technology Demonstrator Reynald Bourtembourg | 10.05.2010.

Slides:



Advertisements
Similar presentations
Siebel Web Services Siebel Web Services March, From
Advertisements

Mobile Agents Mouse House Creative Technologies Mike OBrien.
MPI Message Passing Interface
© 2008 Cisco Systems, Inc. All rights reserved.Cisco ConfidentialPresentation_ID 1 Chapter 8: Monitoring the Network Connecting Networks.
10/04/2001 Associate Professor CS Department University of Valenciennes France Dr. Dhavy Gantsou.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
Chapter 19: Network Management Business Data Communications, 5e.
SIMWARE 4.X. Confidential 2 © NEXTEL AEROSPACE DEFENCE & SECURITY S.L., Reservados todos los derechos / All Rights Reserved 1. Capacities of SimWare.
CCNA – Network Fundamentals
C# and Windows Programming Application Domains and Remoting.
Introduction to push technology © 2009 Research In Motion Limited.
UNDERSTANDING JAVA APIS FOR MOBILE DEVICES v0.01.
22 May 2015Joe Hoffert Quality of Service Configuration DSML for the Data Distribution Service Joe Hoffert
Seminarium on Component-based Software Engineering Jan Willem Klinkenberg CORBA.
Notes to the presenter. I would like to thank Jim Waldo, Jon Bostrom, and Dennis Govoni. They helped me put this presentation together for the field.
1 ITC242 – Introduction to Data Communications Week 12 Topic 18 Chapter 19 Network Management.
Revision Week 13 – Lecture 2. The exam 5 questions Multiple parts Read the question carefully Look at the marks as an indication of how much thought and.
Workshop on Cyber Infrastructure in Combustion Science April 19-20, 2006 Subrata Bhattacharjee and Christopher Paolini Mechanical.
1 Programming systems for distributed applications Seif Haridi KTH/SICS.
Beyond Discovery Shaun Foley Principal Applications Engineer, RTI.
Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department Asst.Prof.Dr.Ahmet Ünveren SPRING Computer Engineering Department.
Buffer Overflow Attacks. Memory plays a key part in many computer system functions. It’s a critical component to many internal operations. From mother.
Web Services Michael Smith Alex Feldman. What is a Web Service? A Web service is a message-oriented software system designed to support inter-operable.
1 © 2001, Cisco Systems, Inc. All rights reserved. Voice Connector Features Voic Interoperability – 4.0(5) Voice Connector features Rahul Singh.
Anders Karlsson Principal Sales Engineer, MySQL MySQL Embedded - Getting started with libmysqld.
8 Copyright © 2004, Oracle. All rights reserved. Creating LOVs and Editors.
Beyond DHTML So far we have seen and used: CGI programs (using Perl ) and SSI on server side Java Script, VB Script, CSS and DOM on client side. For some.
© Keren Kalif Intro to Android Development Written by Keren Kalif, Edited by Liron Blecher Contains slides from Google I/O presentation.
Basics of Web Databases With the advent of Web database technology, Web pages are no longer static, but dynamic with connection to a back-end database.
C Copyright © 2009, Oracle. All rights reserved. Appendix C: Service-Oriented Architectures.
Designing and Performing Geographic Analysis Processes with GISCASE Cirano Iochpe, Guillermo N. Hess, Cláudio Ruschel, Alécio P. D. Binotto, Luciana V.
Introducing Axis2 Eran Chinthaka. Agenda  Introduction and Motivation  The “big picture”  Key Features of Axis2 High Performance XML Processing Model.
ANDROID Presented By Mastan Vali.SK. © artesis 2008 | 2 1. Introduction 2. Platform 3. Software development 4. Advantages Main topics.
Outline  Enterprise System Integration: Key for Business Success  Key Challenges to Enterprise System Integration  Service-Oriented Architecture (SOA)
第十四章 J2EE 入门 Introduction What is J2EE ?
Digital Multimedia, 2nd edition Nigel Chapman & Jenny Chapman Chapter 17 This presentation © 2004, MacAvon Media Productions Multimedia and Networks.
MCSE Guide to Microsoft Exchange Server 2003 Administration Chapter Two Installing and Configuring Exchange Server 2003.
Data Distribution Service as an alternative to CORBA Notification Service for the Alma Common Software Jorge A. Avarias Alfaro (ALMA UTFSM group/NRAO)
(Business) Process Centric Exchanges
Source: Peter Eeles, Kelli Houston, and Wojtek Kozaczynsky, Building J2EE Applicationa with the Rational Unified Process, Addison Wesley, 2003 Prepared.
WEB BASED DATA TRANSFORMATION USING XML, JAVA Group members: Darius Balarashti & Matt Smith.
Silberschatz, Galvin and Gagne  2002 Modified for CSCI 399, Royden, Operating System Concepts Operating Systems Lecture 7 OS System Structure.
1 © 2003, Cisco Systems, Inc. All rights reserved. CCNA 1 v3.0 Module 11 TCP/IP Transport and Application Layers.
What’s new in Kentico CMS 5.0 Michal Neuwirth Product Manager Kentico Software.
CSE 425: Data Types I Data and Data Types Data may be more abstract than their representation –E.g., integer (unbounded) vs. 64-bit int (bounded) A language.
By: PHANIDEEP NARRA. OVERVIEW Definition Motivation.NET and J2EE Architectures Interoperability Problems Interoperability Technologies Conclusion and.
Grid Services I - Concepts
Gaudi Framework Tutorial, April Job Options and Printing.
Supporting FIPA Interoperability for Legacy Multi-Agent Systems Christos Georgousopoulos 1 Omer F. Rana 1 ( ) 2.
 Common Object Request Broker Architecture  An industry standard developed by OMG to help in distributed programming.
GRID ANATOMY Advanced Computing Concepts – Dr. Emmanuel Pilli.
Slide 1 of 15 © Ingeniørhøjskolen i Århus CORBA Programming: Presentation of a simple “Hello World” CORBA client and server application.
20 February 2016Joe Hoffert Quality of Service Configuration DSML for the Data Distribution Service Joe Hoffert
© 2015 Wind River. All Rights Reserved. Integrating FACE™ Aligned Componentry Larry Kinnan Principal Technologist, Wind River.
Space Data Link Secure Protocol Interoperability Testing Interfaces Definition Proposal Bruno Saba DCT/TV/IN 26/04/2010.
C++ Programming Lecture 14 Arrays – Part I The Hashemite University Computer Engineering Department (Adapted from the textbook slides)
Java Programming: Advanced Topics 1 Building Web Applications Chapter 13.
1 A Look at the Application Authorized users can access Communicator! NXT from any Internet-capable computer via the Web.
SESSION 1 Introduction in Java. Objectives Introduce classes and objects Starting with Java Introduce JDK Writing a simple Java program Using comments.
AMSA TO 4 Advanced Technology for Sensor Clouds 09 May 2012 Anabas Inc. Indiana University.
CORBA Antonio Vasquez, John Shelton, Nidia, Ruben.
Outline Introduction and motivation, The architecture of Tycho,
Data Transport for Online & Offline Processing
Self Healing and Dynamic Construction Framework:
Microsoft .NET 3. Language Innovations Pan Wuming 2017.
CMPE419 Mobile Application Development
Overview of the OMG Data Distribution Service
Lecture 4: RPC Remote Procedure Call CDK: Chapter 5
Distributed System using Web Services
CMPE419 Mobile Application Development
Presentation transcript:

DDS in the E-ELT Technology Demonstrator Reynald Bourtembourg |

OpenSplice DDS evaluation Reynald Bourtembourg | Architecture DLRL Pluggable services Tools Editions Evolution of the DDS Standard

Architecture Reynald Bourtembourg |

DLRL (Data Local Reconstruction Layer) Reynald Bourtembourg | OpenSplice = only DDS implementation providing the DLRL Mapping relation Topic information model onto user defined object model OO programming interface  data-encapsulation  single inheritance  OO-language based object navigation Extra configuration steps to define the mapping objects- topics (xml file)

Pluggable services Reynald Bourtembourg | networking service durability service DDSI networking service (DDSI = interoperability protocol) DBMS-connect Connector  data exchange between DDS and any DBMS having ODBC v3 compliant interface Secure Networking (encrypted data)

Tools Reynald Bourtembourg | OpenSplice configurator mmstat DDS Tuner DDSTouchstone PowerTools MDE

OpenSplice DDS confgurator Reynald Bourtembourg |

mmstat Reynald Bourtembourg |

DDS Tuner Reynald Bourtembourg |

DDS Touchstone Reynald Bourtembourg | Scenario-driven Open Source benchmarking framework for evaluating performance of DDS implementations C, C++ and Java Transceivers – Transponders  Ping Pong communication  to measure jitter and latency Transmitters and Receivers  to measure throughput and efficiency Entities dynamically created, configured and destructed (DefTopic and QosTopic samples) Measurements published on ReportTopic DDS topic watcher and spotter tools to display the results Scenario manually created with DDS Tuner or using plain text scenario file Scenario can be replayed using recorder tool

PowerTools MDE Reynald Bourtembourg |

OpenSplice DDS Community Edition Reynald Bourtembourg | Mailing list:

Reynald Bourtembourg | OpenSplice DDS Compact Edition + support

Reynald Bourtembourg | OpenSplice DDS Professional Edition + support

Reynald Bourtembourg | OpenSplice DDS Enterprise Edition + support

OpenSplice DDS Editions Reynald Bourtembourg | x X (1) (1) Each subscription can choose from one of the supported platforms

Evolution of the DDS Standard Reynald Bourtembourg | New C++ API  in the revised submission stage  should be adopted soon (this year)  SIMD (SIMple DDS) project New Java API Extensible and Dynamic Topic Types for DDS (DDS- Xtypes) Web-enabled DDS  Standardization of the interface between DDS and web technologies, WSDL/SOAP and REST DDSI improvements

SIMD Reynald Bourtembourg | // -- SIMD Include #include #include #include #include // -- Hello Include #include "gen/ccpp_hello.h" // -- Define the types related to the swatch::hello topic // -- this will define the following types: // -- swatch::helloTypeSupport // -- swatch::helloDataWriter // -- swatch::helloDataReader // -- swatch::helloSeq REGISTER_TOPIC_TRAITS(swatch::hello) int main(int argc, char* argv[]) { // -- init the simd runtime simd::Runtime::init(); // -- Set topic QoS simd::TopicQos tqos; tqos.set_reliable(); tqos.set_transient(); // -- create the DDS Topic simd::Topic helloTopic("helloTopic", tqos); // -- Set DataWriter QoS simd::DataWriterQos dwqos(tqos); dwqos.set_keep_last(history_depth); dwqos.set_auto_dispose(false); // -- create the DDS DataWriter simd::DataWriter writer(helloTopic, dwqos); // -- Busines logic : 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; }

SIMD Reynald Bourtembourg | // -- SIMD Include #include #include #include #include // -- Hello Include #include "gen/ccpp_hello.h" REGISTER_TOPIC_TRAITS(swatch::hello) int main(int argc, char* argv[]) { // -- init the simd runtime simd::Runtime::init(); #include “ccpp_dds_dcps.h” #include “gen/ccpp_hello.h” int main( int argc, char * argv[]) { DomainParticipantFactory_var dpf; DomainParticipant_ptr parentDP; ExtDomainParticipant_var participant; /* Create a DomainParticipantFactory and a DomainParticipant (using Default QoS settings) */ dpf = DomainParticipantFactory::get_instance(); parentDP = dpf->create_participant ( domain, PARTICIPANT_QOS_DEFAULT, NULL, ANY_STATUS); /* Narrow the normal participant to its extended representative */ participant = ExtDomainParticipantImpl::_narrow(parentDP); } SIMDOpenSplice DDS

SIMD Reynald Bourtembourg | … // -- Set topic QoS simd::TopicQos tqos; tqos.set_reliable(); tqos.set_transient(); // -- create the DDS Topic simd::Topic helloTopic("helloTopic", tqos); HelloTypeSupport_var helloTS; char * helloTypeName = NULL; ReturnCode_t status; TopicQos topic_qos; /* Register the required datatype for hello. */ helloTS = new HelloTypeSupport(); helloTypeName = helloTS->get_type_name(); status = helloTS->register_type( participant.in(), helloTypeName); /* Set the ReliabilityQosPolicy to RELIABLE. */ status = participant->get_default_topic_qos(topic_qos); topic_qos.reliability.kind = DDS::RELIABLE_RELIABILITY_QOS; topic_qos. durability.kind = DDS::TRANSIENT_DURABILITY_QOS; /* Create the DDS topic */ helloTopic = participant->create_topic( “hello Topic", helloTypeName, topic_qos, NULL, ANY_STATUS); SIMDOpenSplice DDS

Evolution of the DDS Standard Reynald Bourtembourg | Extensible and Dynamic Topic Types for DDS (DDS-XTypes):  API for definition of new data types at run-time without code generation  A reflective API for the construction, inspection, and manipulation of data samples based on dynamic type definitions  Ability to define data types using XML and XSD as well  Topics sparse updates (send only the modified fields)

Evolution of the DDS Standard Reynald Bourtembourg | DDSI improvements:  Support of non multicast discovery  Possibility to go through TCP/IP  Support compression of messages  Concept of queues

Interoperability tests Reynald Bourtembourg | Interoperable protocol Source code compatibility Unbounded IDL types Reliable large data transfer Interoperability tests (Open Splice DDS 4.2 – RTI DDS 4.4d)

Interoperable protocol Reynald Bourtembourg | RTI DDS supports DDSI natively Configuration needed in OpenSplice DDS (ddsi network service) Using DDSI slightly decreases OpenSplice DDS performances DDS Domain issues (RTI DDS = id, OpenSplice DDS = path to xml file) OpenSplice DDS 4.3 limitations:  Only Best EFFORT reliability QoS implemented  Only VOLATILE durability QoS implemented  Fragmentation of large messages not implemented  QoS modifications after creation not possible  Standard discovery requires multicast (only discovery specified in the DDSI standard)

Source code compatibility Reynald Bourtembourg | DDS Standard specifies only the IDL No Standard C++ API (will come soon)  DDS:string_dup() - DDS:String_dup()  in() and inout() methods for sequences only in RTI DDS  OpenSplice DDS generates code defining new types  Constructors defined as private (Compilation pbs) Keys definition in IDL files - #pragma keylist)

Unbounded IDL types Reynald Bourtembourg | unbounded string default size in RTI DDS = 255 bytes -stringSize rtiddsgen option to change the assigned size no such limitation in OpenSplice DDS

Reliable data transfer Reynald Bourtembourg | RTI DDS requires asynchronous publisher to send data larger than 63K (ASYNCHRONOUS_PUBLISHER QoS policy) in OpenSplice DDS, (ddsi) network service is responsible for fragmenting, scheduling and send data through the network The samples sent must fit in the reserved shared memory segment (default = 10MB) fragmentation not yet supported by the OpenSplice DDS ddsi service

Interoperability tests Reynald Bourtembourg | PingPong application from OpenSplice DDS examples ported to RTI DDS RTI DDS 4.4d and OpenSplice DDS 4.2 Community Edition Success in exchanging data between RTI DDS and OpenSplice DDS applications Failure in exchanging data between RTI DDS and OpenSplice DDS applications running on the same machine Warning: log files in OpenSplice DDS can become big very quickly (OSPL_INFO_FILE, OSPL_LOG_PATH, OSPL_ERROR_FILE env variables) Interoperability demonstrated at the OMG:  Using a beta version of OpenSplice DDS.  No test on the same machine

OpenSplice DDS Evaluation: Conclusion Reynald Bourtembourg | Interesting open source alternative to RTI DDS Very flexible and extendable architecture based on service daemons Daemons must be robust DDS Tuner seems to be very useful Power Tools MDE can increase productivity Only implementation providing the DLRL, but not really needed Interoperability does not work yet new C++ PSM should provide better source code compatibility

TDEM Reynald Bourtembourg | Architecture RTI DDS CORBA Compatibility Kit Google Protocol Buffers and DDS

TDEM: Architecture Reynald Bourtembourg |

TDEM: RTI DDS CORBA Compatibility Kit Reynald Bourtembourg | to be able to use CORBA data types in DDS several limitations: Cannot pass a.midl file to rtiddsgen Could not pass a.idl file generated from a.midl file to rtiddsgen removed) if an idl file includes another idl file, we need to generate code for all these include files with rtiddsgen include not supported by rtiddsgen We could not reuse the same idl file as the one used with OpenDDS Cannot mix declaration of structures used only with CORBA and structures used by DDS and CORBA. rtiddsgen generates code for every structure present in the file

TDEM: Google Protocol Buffers Reynald Bourtembourg | package tutorial; message Person { required string name = 1; required int32 id = 2; optional string = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phone = 4; } // end message Person message AddressBook { repeated Person person = 1; }

TDEM: Google Protocol Buffers Reynald Bourtembourg | tutorial::AddressBook address_book; { // Read the existing address book. fstream input(argv[1], ios::in | ios::binary); if (!address_book.ParseFromIstream(&input)) { cerr << "Failed to parse address book." << endl; return -1; } } for (int i = 0; i < address_book.person_size(); i++) { const tutorial::Person& person = address_book.person(i); cout << "Person ID: " << person.id() << endl; cout << " Name: " << person.name() << endl; if (person.has_ ()) { cout << " address: " << person. () << endl; } for (int j = 0; j < person.phone_size(); j++) { const tutorial::Person::PhoneNumber& phone_number = person.phone(j); switch (phone_number.type()) { case tutorial::Person::MOBILE: cout << " Mobile phone #: “ << phone_number.number() << endl;...

TDEM: Google Protocol Buffers & DDS Reynald Bourtembourg | send Google Protocol Buffers messages with DDS typedef sequence SeqOctets; struct gpb_message { SeqOctets gpb_data; };

TDEM: Google Protocol Buffers & DDS Reynald Bourtembourg | if we use DDS, data should not be opaque to DDS (Content filtering, sparse updates in the future) DDS XTypes should provide the same advantages

Reynald Bourtembourg | Thank you for your attention! Questions?