Advanced Technology Office
28 rue Jean Rostand
91400, Orsay
France
Angelo	Corsaro,	PhD
Chief	Technology	Officer	
ADLINK	Tech.	Inc.	
angelo.corsaro@adlinktech.com
AT()
Cyclone
Sharing Data in the IoT Age
DDS
Prologue
Data is the Currency of IoT
The value of IoT systems is
proportional to their ability to
ubiquitously and timely access data
and use it to derive relevant insights
As reported in the Eclipse IoT
Developer Survey Data collection
has grown to become the second
major concern with an year on year
increase of 50%
Data Sharing in IoT
Data should flow where needed transparently
and independently from the location its source
so to allow for analytics to be deployed/
migrate where it makes the most sense, i.e.
edge, cloud, etc.
Location Transparency
Data Sharing in IoT
Peer-to-Peer and brokered architectures for
data sharing are essential to address the edge
and scale-out
Peer-to-Peer and Brokered
Data Sharing in IoT
Temporal decoupling is an essential property to
build system that scale, thus data production
and consumption should be decoupled in time.
Additionally, historical data needs to be
available for query and non-real-time analytics.
Durability
Data Sharing in IoT
Data-Level security should be provided to
simplify the deployment of secure IoT
systems, while not impacting they scalability
and performance requirements
Security
Data Sharing in IoT
Data sharing standard are a pre-prerequisite
for IoT.
Without standards there is not interoperability,
without interoperability there is not IoT
Interoperability
Cyclone DDS
Cyclone DDS is a standard-based
technology for ubiquitous, interoperable,
secure, platform independent, and real-
time data sharing across network
connected devices
Use Cases
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 with the required
20ms periodicity
Smart Grid
CopyrightPrismTech,2015
DDS leveraged to
virtualise I/O and
provide better
decoupling between I/
O, Control and
Management functions
of the system
Smart Green
Houses
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
CopyrightPrismTech,2015
DDS is used to share
Flight Data within and
across Air Traffic Control
Centres.
These applications have
extremely high
dependability constraints.
Air Traffic
Control
CopyrightPrismTech,2015
DDS is used in Smart
Factories to provide
horizontal and
vertical data
integration across the
traditional SCADA
layers.
Smart
Factory
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)
CopyrightPrismTech,2015
DDS is used inside
several medical
devices to share data
between the various
stages of data
acquisition, processing
and visualisation
Medical
Devices
CopyrightPrismTech,2015
DDS is heavily used
for data sharing in
Robotics and is today
at the heart of the
Robot Operating
System (ROS)
Robotics
CopyrightPrismTech,2015
Why are these
applications using DDS?
CopyrightPrismTech,2015
DDS PROVIDES AN EXTREMELY HIGH
LEVEL AND POWERFUL ABSTRACTIONS
ALONG WITH A ROCK SOLID
INFRASTRUCTURE TO BUILD HIGHLY
MODULAR AND DISTRIBUTED SYSTEMS
CopyrightPrismTech,2015
dds makes it much easier to solve some very
hard distributed system problems, such as
fault-tolerance, scalability and
asymmetry
CopyrightPrismTech,2015
DDS is like a universal glue that allows to
seal together highly heterogeneous
environments while maintaining a single,
elegant and efficient abstraction
Key Ideas
AT()
Abstraction
DDS applications
cooperate by
autonomously and
asynchronously
reading and writing
data on a Data Space
that provides spatial and
temporal decoupling 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
AT()
Topic
DDS uses Topics to capture
the properties of data
A DDS Topic is domain-wide
information’s class Topic
defined by means of a <name,
type, qos> tuple
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
AT()
QoS
DDS provides a rich set
of QoS policies to
express temporal and
availability
constraints of data
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
AT()
Dynamic Discovery
DDS has built-in
dynamic discovery
isolates applications
from network
topology and
connectivity details
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
AT()
Decentralised Data-Space
DDS data space is
decentralised.
Thus it has no
single point of
failure or
bottleneck
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
AT()
Adaptive Connectivity
Connectivity is
dynamically adapted to
chose the most effective
way of sharing data
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
AT()
Platform Independent
DDS implementation are
available for an incredible
numbers of platforms,
including enterprise,
desktop, embedded,
real-time, mobile, and
web
AT()
Polyglot
DDS applications can be
written in your favourite
programming language.
Interoperability across
languages is taken care
by DDS
Code Please…
Writing Data in Python
import cdds
import time



if __name__ == '__main__':

topic = dds.Topic("SmartMeter", "Meter")

dw = dds.Writer(topic)



while True:

m = readMeter()

dw.write(m)

time.sleep(0.1)
					enum	UtilityKind	{	
	 				ELECTRICITY,	
	 				GAS,	
	 				WATER	
						};	
							
						struct	Meter	{	
	 				string	sn;	
	 				UtilityKind	utility;	
	 				float	reading;	
	 				float	error;	
						};													
						#pragma	keylist	Meter	sn
Reading Data in Python 					enum	UtilityKind	{	
	 				ELECTRICITY,	
	 				GAS,	
	 				WATER	
						};	
							
						struct	Meter	{	
	 				string	sn;	
	 				UtilityKind	utility;	
	 				float	reading;	
	 				float	error;	
						};													
						#pragma	keylist	Meter	sn	
import cdds

import sys



def readData(dr): 

samples = dds.range(dr.read())

for s in samples:

sys.stdout.write(str(s.getData()))



if __name__ == '__main__':

t = dds.Topic("SmartMeter", "Meter")

dr = dds.Reader(t)

dr.onDataAvailable = readData
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
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);
LambdaDataReaderListener<DataReader<Meter>> lst;
lst.data_available = [](DataReader<Meter>& dr) {
auto samples = data.read();
std::for_each(samples.begin(), samples.end(), [](Sample<Meter>& sample) {
std::cout << sample.data() << std::endl;
}
}
dr.listener(lst);
// Print incoming data up to when the user does a Ctrl-C
std::this_thread::join();
return 0;
}
					enum	UtilityKind	{	
	 				ELECTRICITY,	
	 				GAS,	
	 				WATER	
						};	
							
						struct	Meter	{	
	 				string	sn;	
	 				UtilityKind	utility;	
	 				float	reading;	
	 				float	error;	
						};													
						#pragma	keylist	Meter	sn
Writing Data in Scala 					enum	UtilityKind	{	
	 				ELECTRICITY,	
	 				GAS,	
	 				WATER	
						};	
							
						struct	Meter	{	
	 				string	sn;	
	 				UtilityKind	utility;	
	 				float	reading;	
	 				float	error;	
						};													
						#pragma	keylist	Meter	sn	
import dds._

import dds.prelude._

import dds.config.DefaultEntities._

object SmartMeter {



def main(args: Array[String]): Unit = {

val topic = Topic[Meter](“SmartMeter”)

val dw = DataWriter[Meter](topic)
while (!done) {
val meter = readMeter()

dw.write(meter)
Thread.sleep(SAMPLING_PERIOD)
}

}

}
Reading Data in Scala 					enum	UtilityKind	{	
	 				ELECTRICITY,	
	 				GAS,	
	 				WATER	
						};	
							
						struct	Meter	{	
	 				string	sn;	
	 				UtilityKind	utility;	
	 				float	reading;	
	 				float	error;	
						};													
						#pragma	keylist	Meter	sn	
import dds._

import dds.prelude._

import dds.config.DefaultEntities._

object SmartMeterLog {

def main(args: Array[String]): Unit = {

val topic = Topic[Meter](“SmartMeter”)

val dr = DataReader[Meter](topic)

dr listen {

case DataAvailable(_) => dr.read.foreach(println)

}

}

}
Roadmap
AT()
Making it Simpler
IDL-less Topic Definition.
This will reduce the need for newcomers to learn about IDL and will reduce the
steps required to get started.
Pluggable Serialisation
Extend the API to allow the use of user-specified serialisers/deserialisers.
First Class State and Event.
Introduce first class concepts for State and Events so that user can avoid
understanding the various QoS.
DDS Browser.
Simple tool to list discovered participants, readers, writers and matches. This will be
quite useful for visualising and debugging DDS applications.
AT()
Networking
TSN Support.
TSN is very important for upcoming Industrial applications and we want
to have this in Cyclone ASAP. Thus thus will be made available in 2018.
Raw Ethernet Support.
The ability to run on Raw-Ethernet is useful for (1) performance and (2)
those cases in which DDS is used to provision the IP network.
ROS2
Replace OpenSplice with Cyclone in ROS2 and try to get eventually
Cyclone as the default implementation.
AT()
DDS Security
We are working on DDS Security for
Cyclone DDS.
This will provide protection against:
• Unauthorised Subscription
• Unauthorised Publication
• Tampering and Replay
• Unauthorised data access [See		DDS	Security	Specification	v1.0		p.9]
New Projects
Open Source Fog Stack
The fogOS unifies the compute,
storage and communication
fabric that spans across things,
edge and cloud infrastructure
It unifies administration,
management and monitoring
end-to-end
Designed to unify Fog and MEC
VM
C
UK C
BE UK
VM: Virtual Machine
C: Container
UK: Uni Kernel
BE: Binary Executable
uS: micro Service
uS
BE
UKUK
AT()
Architecture
fogOS is composed by:
NDN. At its lowest level, it leverages a Named Data
Network (NDN) infrastructure based on zenoh. DDS can
also be used as a transport — not necessarily an NDN
YAKS. A distributed key-value store that leverages the
NDN for scalability
Agent. The core logic of fogOS, it takes care of managing,
monitoring and orchestrating entities through plugins
Plugins. Plugins provide supports for atomic entities, OS,
networks, etc.
DDS | zenoh
YAKS
AgentPlugins
Network
Data Link
Physical
Transport
Call for Action
AT()
Action #1
DDS is still a niche
technology used
mostly in IIoT
applications
MESSAGING STANDARDS - TRENDS
62.61%
54.10%
34.95%
24.92%
22.49%
18.24%
12.77%
6.69%
5.78%
4.86%
4.26%
4.26%
1.52%
0%
10%
20%
30%
40%
50%
60%
70%
2016
2017
2018
Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). 39
AT()
Action #1
We want to
collaborate with
Eclipse IoT
community to expand
the adoption of DDS
and have this be the
standard-de-facto for
applications that
require peer-to-peer
MESSAGING STANDARDS - TRENDS
62.61%
54.10%
34.95%
24.92%
22.49%
18.24%
12.77%
6.69%
5.78%
4.86%
4.26%
4.26%
1.52%
0%
10%
20%
30%
40%
50%
60%
70%
2016
2017
2018
Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0).
MESSAGING STANDARDS - TRENDS
62.61%
54.10%
34.95%
24.92%
22.49%
18.24%
12.77%
6.69%
5.78%
4.86%
4.26%
4.26%
1.52%
0%
10%
20%
30%
40%
50%
60%
70%
2016
2017
2018
Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). 39
MESSAGING STANDARDS - TRENDS
62.61%
54.10%
34.95%
24.92%
22.49%
18.24%
12.77%
6.69%
5.78%
4.86%
4.26%
4.26%
1.52%
0%
10%
20%
30%
40%
50%
60%
70%
2016
2017
2018
Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). 39
MESSAGING STANDARDS - TRENDS
62.61%
54.10%
34.95%
24.92%
22.49%
18.24%
12.77%
6.69%
5.78%
4.86%
4.26%
4.26%
1.52%
0%
10%
20%
30%
40%
50%
60%
70%
2016
2017
2018
Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). 39
MESSAGING STANDARDS - TRENDS
62.61%
54.10%
34.95%
24.92%
22.49%
18.24%
12.77%
6.69%
5.78%
4.86%
4.26%
4.26%
1.52%
0%
10%
20%
30%
40%
50%
60%
70%
2016
2017
2018
Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0).
AT()
Action#2
Work with the Eclipse IoT
ecosystem to establish a
platform for fog computing
AT()
References
http://github.com/eclipse/cyclonedds
http://github.com/atolab/fog05
http://github.com/atolab/zhe

Cyclone DDS: Sharing Data in the IoT Age

  • 1.
    Advanced Technology Office 28rue Jean Rostand 91400, Orsay France Angelo Corsaro, PhD Chief Technology Officer ADLINK Tech. Inc. angelo.corsaro@adlinktech.com AT() Cyclone Sharing Data in the IoT Age DDS
  • 2.
  • 3.
    Data is theCurrency of IoT The value of IoT systems is proportional to their ability to ubiquitously and timely access data and use it to derive relevant insights As reported in the Eclipse IoT Developer Survey Data collection has grown to become the second major concern with an year on year increase of 50%
  • 4.
    Data Sharing inIoT Data should flow where needed transparently and independently from the location its source so to allow for analytics to be deployed/ migrate where it makes the most sense, i.e. edge, cloud, etc. Location Transparency
  • 5.
    Data Sharing inIoT Peer-to-Peer and brokered architectures for data sharing are essential to address the edge and scale-out Peer-to-Peer and Brokered
  • 6.
    Data Sharing inIoT Temporal decoupling is an essential property to build system that scale, thus data production and consumption should be decoupled in time. Additionally, historical data needs to be available for query and non-real-time analytics. Durability
  • 7.
    Data Sharing inIoT Data-Level security should be provided to simplify the deployment of secure IoT systems, while not impacting they scalability and performance requirements Security
  • 8.
    Data Sharing inIoT Data sharing standard are a pre-prerequisite for IoT. Without standards there is not interoperability, without interoperability there is not IoT Interoperability
  • 9.
  • 10.
    Cyclone DDS isa standard-based technology for ubiquitous, interoperable, secure, platform independent, and real- time data sharing across network connected devices
  • 11.
  • 12.
    CopyrightPrismTech,2015 DDS is usedto 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 with the required 20ms periodicity Smart Grid
  • 13.
    CopyrightPrismTech,2015 DDS leveraged to virtualiseI/O and provide better decoupling between I/ O, Control and Management functions of the system Smart Green Houses
  • 14.
    CopyrightPrismTech,2015 The NASA KennedySpace 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
  • 15.
    CopyrightPrismTech,2015 DDS is usedto share Flight Data within and across Air Traffic Control Centres. These applications have extremely high dependability constraints. Air Traffic Control
  • 16.
    CopyrightPrismTech,2015 DDS is usedin Smart Factories to provide horizontal and vertical data integration across the traditional SCADA layers. Smart Factory
  • 17.
    CopyrightPrismTech,2015 DDS used tocontrol the 100.000 mirrors that make up ELT’s optics. These mirrors are adjusted 100 times per second Extremely Large Telescope (ELT)
  • 18.
    CopyrightPrismTech,2015 DDS is usedinside several medical devices to share data between the various stages of data acquisition, processing and visualisation Medical Devices
  • 19.
    CopyrightPrismTech,2015 DDS is heavilyused for data sharing in Robotics and is today at the heart of the Robot Operating System (ROS) Robotics
  • 20.
  • 21.
    CopyrightPrismTech,2015 DDS PROVIDES ANEXTREMELY HIGH LEVEL AND POWERFUL ABSTRACTIONS ALONG WITH A ROCK SOLID INFRASTRUCTURE TO BUILD HIGHLY MODULAR AND DISTRIBUTED SYSTEMS
  • 22.
    CopyrightPrismTech,2015 dds makes itmuch easier to solve some very hard distributed system problems, such as fault-tolerance, scalability and asymmetry
  • 23.
    CopyrightPrismTech,2015 DDS is likea universal glue that allows to seal together highly heterogeneous environments while maintaining a single, elegant and efficient abstraction
  • 24.
  • 25.
    AT() Abstraction DDS applications cooperate by autonomouslyand asynchronously reading and writing data on a Data Space that provides spatial and temporal decoupling 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
  • 26.
    AT() Topic DDS uses Topicsto capture the properties of data A DDS Topic is domain-wide information’s class Topic defined by means of a <name, type, qos> tuple 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
  • 27.
    AT() QoS DDS provides arich set of QoS policies to express temporal and availability constraints of data 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
  • 28.
    AT() Dynamic Discovery DDS hasbuilt-in dynamic discovery isolates applications from network topology and connectivity details 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
  • 29.
    AT() Decentralised Data-Space DDS dataspace is decentralised. Thus it has no single point of failure or bottleneck 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
  • 30.
    AT() Adaptive Connectivity Connectivity is dynamicallyadapted to chose the most effective way of sharing data 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
  • 31.
    AT() Platform Independent DDS implementationare available for an incredible numbers of platforms, including enterprise, desktop, embedded, real-time, mobile, and web
  • 32.
    AT() Polyglot DDS applications canbe written in your favourite programming language. Interoperability across languages is taken care by DDS
  • 33.
  • 34.
    Writing Data inPython import cdds import time
 
 if __name__ == '__main__':
 topic = dds.Topic("SmartMeter", "Meter")
 dw = dds.Writer(topic)
 
 while True:
 m = readMeter()
 dw.write(m)
 time.sleep(0.1) enum UtilityKind { ELECTRICITY, GAS, WATER }; struct Meter { string sn; UtilityKind utility; float reading; float error; }; #pragma keylist Meter sn
  • 35.
    Reading Data inPython enum UtilityKind { ELECTRICITY, GAS, WATER }; struct Meter { string sn; UtilityKind utility; float reading; float error; }; #pragma keylist Meter sn import cdds
 import sys
 
 def readData(dr): 
 samples = dds.range(dr.read())
 for s in samples:
 sys.stdout.write(str(s.getData()))
 
 if __name__ == '__main__':
 t = dds.Topic("SmartMeter", "Meter")
 dr = dds.Reader(t)
 dr.onDataAvailable = readData
  • 36.
    Writing Data inC++ #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
  • 37.
    Reading Data inC++ #include <dds.hpp> int main(int, char**) { DomainParticipant dp(0); Topic<Meter> topic(”SmartMeter”); Subscriber sub(dp); DataReader<Meter> dr(dp, topic); LambdaDataReaderListener<DataReader<Meter>> lst; lst.data_available = [](DataReader<Meter>& dr) { auto samples = data.read(); std::for_each(samples.begin(), samples.end(), [](Sample<Meter>& sample) { std::cout << sample.data() << std::endl; } } dr.listener(lst); // Print incoming data up to when the user does a Ctrl-C std::this_thread::join(); return 0; } enum UtilityKind { ELECTRICITY, GAS, WATER }; struct Meter { string sn; UtilityKind utility; float reading; float error; }; #pragma keylist Meter sn
  • 38.
    Writing Data inScala enum UtilityKind { ELECTRICITY, GAS, WATER }; struct Meter { string sn; UtilityKind utility; float reading; float error; }; #pragma keylist Meter sn import dds._
 import dds.prelude._
 import dds.config.DefaultEntities._
 object SmartMeter {
 
 def main(args: Array[String]): Unit = {
 val topic = Topic[Meter](“SmartMeter”)
 val dw = DataWriter[Meter](topic) while (!done) { val meter = readMeter()
 dw.write(meter) Thread.sleep(SAMPLING_PERIOD) }
 }
 }
  • 39.
    Reading Data inScala enum UtilityKind { ELECTRICITY, GAS, WATER }; struct Meter { string sn; UtilityKind utility; float reading; float error; }; #pragma keylist Meter sn import dds._
 import dds.prelude._
 import dds.config.DefaultEntities._
 object SmartMeterLog {
 def main(args: Array[String]): Unit = {
 val topic = Topic[Meter](“SmartMeter”)
 val dr = DataReader[Meter](topic)
 dr listen {
 case DataAvailable(_) => dr.read.foreach(println)
 }
 }
 }
  • 40.
  • 41.
    AT() Making it Simpler IDL-lessTopic Definition. This will reduce the need for newcomers to learn about IDL and will reduce the steps required to get started. Pluggable Serialisation Extend the API to allow the use of user-specified serialisers/deserialisers. First Class State and Event. Introduce first class concepts for State and Events so that user can avoid understanding the various QoS. DDS Browser. Simple tool to list discovered participants, readers, writers and matches. This will be quite useful for visualising and debugging DDS applications.
  • 42.
    AT() Networking TSN Support. TSN isvery important for upcoming Industrial applications and we want to have this in Cyclone ASAP. Thus thus will be made available in 2018. Raw Ethernet Support. The ability to run on Raw-Ethernet is useful for (1) performance and (2) those cases in which DDS is used to provision the IP network. ROS2 Replace OpenSplice with Cyclone in ROS2 and try to get eventually Cyclone as the default implementation.
  • 43.
    AT() DDS Security We areworking on DDS Security for Cyclone DDS. This will provide protection against: • Unauthorised Subscription • Unauthorised Publication • Tampering and Replay • Unauthorised data access [See DDS Security Specification v1.0 p.9]
  • 44.
  • 46.
    Open Source FogStack The fogOS unifies the compute, storage and communication fabric that spans across things, edge and cloud infrastructure It unifies administration, management and monitoring end-to-end Designed to unify Fog and MEC VM C UK C BE UK VM: Virtual Machine C: Container UK: Uni Kernel BE: Binary Executable uS: micro Service uS BE UKUK
  • 47.
    AT() Architecture fogOS is composedby: NDN. At its lowest level, it leverages a Named Data Network (NDN) infrastructure based on zenoh. DDS can also be used as a transport — not necessarily an NDN YAKS. A distributed key-value store that leverages the NDN for scalability Agent. The core logic of fogOS, it takes care of managing, monitoring and orchestrating entities through plugins Plugins. Plugins provide supports for atomic entities, OS, networks, etc. DDS | zenoh YAKS AgentPlugins Network Data Link Physical Transport
  • 48.
  • 49.
    AT() Action #1 DDS isstill a niche technology used mostly in IIoT applications MESSAGING STANDARDS - TRENDS 62.61% 54.10% 34.95% 24.92% 22.49% 18.24% 12.77% 6.69% 5.78% 4.86% 4.26% 4.26% 1.52% 0% 10% 20% 30% 40% 50% 60% 70% 2016 2017 2018 Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). 39
  • 50.
    AT() Action #1 We wantto collaborate with Eclipse IoT community to expand the adoption of DDS and have this be the standard-de-facto for applications that require peer-to-peer MESSAGING STANDARDS - TRENDS 62.61% 54.10% 34.95% 24.92% 22.49% 18.24% 12.77% 6.69% 5.78% 4.86% 4.26% 4.26% 1.52% 0% 10% 20% 30% 40% 50% 60% 70% 2016 2017 2018 Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). MESSAGING STANDARDS - TRENDS 62.61% 54.10% 34.95% 24.92% 22.49% 18.24% 12.77% 6.69% 5.78% 4.86% 4.26% 4.26% 1.52% 0% 10% 20% 30% 40% 50% 60% 70% 2016 2017 2018 Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). 39 MESSAGING STANDARDS - TRENDS 62.61% 54.10% 34.95% 24.92% 22.49% 18.24% 12.77% 6.69% 5.78% 4.86% 4.26% 4.26% 1.52% 0% 10% 20% 30% 40% 50% 60% 70% 2016 2017 2018 Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). 39 MESSAGING STANDARDS - TRENDS 62.61% 54.10% 34.95% 24.92% 22.49% 18.24% 12.77% 6.69% 5.78% 4.86% 4.26% 4.26% 1.52% 0% 10% 20% 30% 40% 50% 60% 70% 2016 2017 2018 Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0). 39 MESSAGING STANDARDS - TRENDS 62.61% 54.10% 34.95% 24.92% 22.49% 18.24% 12.77% 6.69% 5.78% 4.86% 4.26% 4.26% 1.52% 0% 10% 20% 30% 40% 50% 60% 70% 2016 2017 2018 Copyright (c) 2018, Eclipse Foundation, Inc. | Made available under a Creative Commons Attribution 4.0 International License (CC BY 4.0).
  • 51.
    AT() Action#2 Work with theEclipse IoT ecosystem to establish a platform for fog computing
  • 52.