getting started with vortex

81
Data Sharing in Industrial IoT Angelo Corsaro, PhD Chief Technology Officer [email protected]

Upload: angelo-corsaro

Post on 15-Apr-2017

906 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Getting Started with Vortex

Data Sharing in Industrial IoT

AngeloCorsaro,PhDChiefTechnologyOfficer

[email protected]

Page 2: Getting Started with Vortex

Vortex is a standard technology for efficient, ubiquitous, interoperable, secure and platform independent data sharing across network connected devices

in151 Characters

Page 3: Getting Started with Vortex

Vortex's Coordination Model

Page 4: Getting Started with Vortex

Applications can autonomously and asynchronously read and

write data enjoying spatial and temporal decoupling

DDS Global Data Space

...

Data Writer

Data Writer

Data Writer

Data Reader

Data Reader

Data Reader

Data Reader

Data Writer

TopicAQoS

TopicBQoS

TopicCQoS

TopicDQoS

Global Data Space

Page 5: Getting Started with Vortex

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

TopicAQoS

TopicBQoS

TopicCQoS

TopicDQoS

Dynamic Discovery

Page 6: Getting Started with Vortex

The relevant portion of the data space is projected on

the application address space. Each typed projection is commonly called a Cache

No single point of failure or bottleneck

Decentralised Data Space

Data Writer

Data Writer

Data Writer

Data Reader

Data Reader

Data Reader

Data Writer

TopicAQoS

TopicBQoS

TopicCQoS

TopicDQoS

TopicDQoS

TopicDQoS

TopicAQoS

Page 7: Getting Started with Vortex

Connectivity is dynamically adapted to chose the most

effective way of sharing data

Adaptive ConnectivityData

Writer

Data Writer

Data Writer

Data Reader

Data Reader

Data Reader

Data Writer

TopicAQoS

TopicBQoS

TopicCQoS

TopicDQoS

TopicDQoS

TopicDQoS

TopicAQoS

ThecommunicationbetweentheDataWriterandmatchingDataReaderscanbepeer-to-peerexploitingUDP/IP(UnicastandMulticast)orTCP/IP

ThecommunicationbetweentheDataWriterandmatchingDataReaderscanbe“brokered”butstillexploitingUDP/IP(UnicastandMulticast)orTCP/IP

Page 8: Getting Started with Vortex

Topic

Page 9: Getting Started with Vortex

A domain-wide information’s class A Topic defined by means

of a <name, type, qos>

TopicDDS Global Data Space

...

Data Writer

Data Writer

Data Writer

Data Reader

Data Reader

Data Reader

Data Reader

Data Writer

TopicAQoS

TopicBQoS

TopicCQoS

TopicDQoS

TopicTypeName

QoS

Page 10: Getting Started with Vortex

Topic Types

Page 11: Getting Started with Vortex

Topic Types: Language Independent

Definitions

Page 12: Getting Started with Vortex

Topic types can be expressed using different syntaxes,

including IDL and ProtoBuf

Topic Type struct CarDynamics { string cid; long x; long y; float dx; long dy; } #pragma keylist CarDynamics cid

IDL

Page 13: Getting Started with Vortex

Topic types can be expressed using different syntaxes,

including IDL and ProtoBuf

Topic Type message CarDynamics { option (.omg.dds.type) = {name: "CarDynamics"}; required string cid = 0 [(.omg.dds.member).key = true]; required long x = 1; required long y = 2; required float dx = 3; required long dy = 4; }

ProtoBuf

Page 14: Getting Started with Vortex

Topic Types: Language Specific

Definitions

Page 15: Getting Started with Vortex

Topic types can be expressed using different syntaxes,

including IDL and ProtoBuf

Topic Type class CarDynamics: constructor: (@cid, @x, @y, @dx, @dy) ->

CoffeeScript

Page 16: Getting Started with Vortex

Topic types can be expressed using different syntaxes,

including IDL and ProtoBuf

Topic Type public struct CaDynamics { public string cid { get; set; } public int x { get; set; } public int y { get; set; } public int dx { get; set; } public int dy { get; set; } public CaDynamics (string cid, int x, int y, int dx, int dy) { this.cid = cid; this.x = x; this.y = y; this.dx = dx; this.dy = dy; } }

C#

Page 17: Getting Started with Vortex

Topic types can be expressed using different syntaxes,

including IDL and ProtoBuf

Topic Type @KeyList ( topicType = "CarDynamics", keys = {"cid"})public class CarDynamics { public String cid; public int x; public int dx; public int y; public int dy; public CarDynamics(String s, int a, int b, int c,int d) { this.cid = s; this.x = a; this.dx = b; this.y = c; this.dy = d; } @Override public String toString() { … }}

Java

Page 18: Getting Started with Vortex

Topics, Instances and Samples

Page 20: Getting Started with Vortex

QoS policies allow to express temporal and availability

constraints for data

DDS Global Data Space

...

Data Writer

Data Writer

Data Writer

Data Reader

Data Reader

Data Reader

Data Reader

Data Writer

TopicAQoS

TopicBQoS

TopicCQoS

TopicDQoS

QoS - Enabled

Page 21: Getting Started with Vortex

A collection of policies that control non-

functional properties such as reliability,

persistence, temporal constraints and priority

QoS

HISTORY

LIFESPAN

DURABILITY

DEADLINE

LATENCY BUDGET

TRANSPORT PRIO

TIME-BASED FILTER

RESOURCE LIMITS

USER DATA

TOPIC DATA

GROUP DATA

OWENERSHIP

OWN. STRENGTH

LIVELINESS

ENTITY FACTORY

DW LIFECYCLE

DR LIFECYCLE

PRESENTATION

RELIABILITY

PARTITION

DEST. ORDER

RxO QoS Local QoS

Page 22: Getting Started with Vortex

QoS Policies controlling end-to-end properties

follow a Request vs. Offered

QoS Domain

Participant

DURABILITY

OWENERSHIP

DEADLINE

LATENCY BUDGET

LIVELINESS

RELIABILITY

DEST. ORDER

Publisher

DataWriter

PARTITION

DataReader

Subscriber

DomainParticipant

offered QoS

Topicwrites reads

Domain Idjoins joins

produces-in consumes-from

RxO QoS Policies

requested QoS

Page 23: Getting Started with Vortex

Interacting with the Data Cache

Page 24: Getting Started with Vortex

Each Data Reader is associated with a Cache

The Cache stores the last n∊𝜨∞ samples for each

relevant instance

Data Cache

Data Writer

Data Writer

Data Writer

Data Reader

Data Reader

Data Reader

Data Writer

TopicAQoS

TopicBQoS

TopicCQoS

TopicDQoS

TopicDQoS

TopicDQoS

TopicAQoS

Page 25: Getting Started with Vortex

Each Data Reader is associated with a Cache

The Cache stores the last n∊𝜨∞ samples for each

relevant instance

Data Cache

DataReader Cache

DataReader

...

Samples

Instances

Cache

Page 26: Getting Started with Vortex

The action of reading samples for a Reader Cache

is non-destructive.

Samples are not removed from the cache

Reading Data

DataReader Cache

DataReader

...

DataReader Cache

DataReader

...read

Page 27: Getting Started with Vortex

The action of taking samples for a Reader Cache

is destructive.

Samples are removed from the cache

Taking Data

DataReader Cache

DataReader

...

DataReader Cache

DataReader

...take

Page 28: Getting Started with Vortex

Samples can be selected using composable content

and status predicates

Sample Selectors

DataReader Cache

DataReader

...

Page 29: Getting Started with Vortex

Filters allow to control what gets into a DataReader

cache

Filters are expressed as SQL where clauses or as

Java/C/JavaScript predicates

Content-Filtering

DataReader Cache

DataReader

...

Filter

Application

Network

Page 30: Getting Started with Vortex

Content Filters can be used to project on the

local cache only the Topic data

satisfying a given predicate

Content Filters structCarDynamics{

@keystringcid;longx;longy;floatdx;longdy;}

cid x y dx dyGR 33N GO 167 240 45 0LO 00V IN 65 26 65 0AN 637 OS 32 853 0 50AB 123 CD 325 235 80 0

“dx>50ORdy>50”

Type

CarDynamics

cid x y dx dyLO 00V IN 65 26 65 0AB 123 CD 325 235 80 0

Reader Cache

Page 31: Getting Started with Vortex

Queries allow to control what gets out of a

DataReader Cache

Queries are expressed as SQL where clauses or as

Java/C/JavaScript predicates

Content-Based Selection

DataReader Cache

DataReader

...

Query

DataReader Cache

DataReader

...

Application

Network

Page 32: Getting Started with Vortex

Reader Cache

Queries can be used to select out of the local cache

the data matching a given predicate

QueriesstructCarDynamics{@keystringcid;longx;longy;floatdx;longdy;}

cid x y dx dyGR 33N GO 167 240 45 0LO 00V IN 65 26 65 0AN 637 OS 32 853 0 50AB 123 CD 325 235 80 0

“dx>50ORdy>50”

Type

CarDynamics

cid x y dx dyGR 33N GO 167 240 45 0LO 00V IN 65 26 65 0AN 637 OS 32 853 0 50AB 123 CD 325 235 80 0

cid x y dx dyLO 00V IN 65 26 65 0AB 123 CD 325 235 80 0

query

Page 33: Getting Started with Vortex

State based selection allows to control what gets out of a DataReader Cache

State base selectors predicate on samples meta-

information

State-Based Selection

DataReader Cache

DataReader

...

State Selector

DataReader Cache

DataReader

...

Application

Network

Page 34: Getting Started with Vortex

Sample State (READ, NOT_READ) allows to distinguish between new

samples and samples that have already been read

State-Based Selection

DataReader Cache

DataReader

...

State Selector

DataReader Cache

DataReader

...

Application

Network

Page 35: Getting Started with Vortex

The View State (NEW, NOT_NEW) allows to distinguish a new instance

from an existing one

State-Based Selection

DataReader Cache

DataReader

...

State Selector

DataReader Cache

DataReader

...

Application

Network

Page 36: Getting Started with Vortex

The Instance State (ALIVE, NOT_ALIVE_DISPOSED,

NOT_ALIVE_NO_WRITERS) allows to track the life-cycle transitions of the instance to which a sample belongs

State-Based Selection

DataReader Cache

DataReader

...

State Selector

DataReader Cache

DataReader

...

Application

Network

Page 37: Getting Started with Vortex

Selector Example

// == ISO C++ DDS API ==

auto data = dr.select() .content(query) .state(data_state) .instance(handle) .read();

Page 38: Getting Started with Vortex

your first vortex app

Page 40: Getting Started with Vortex

Cop

yrig

ht P

rism

Tech

, 201

5

Writing Data in C++#include <dds.hpp>

int main(int, char**) {

DomainParticipant dp(0); Topic<Meter> topic(“SmartMeter”); auto pqos = dp.get_default_pubqos() << Partition (“FR:IdF:Essonne:Gif:Essonne:Mnts:123”); Publisher pub(dp, pqos); DataWriter<Meter> dw(pub, topic);

while (!done) { auto value = readMeter() dw.write(value); std::this_thread::sleep_for(SAMPLING_PERIOD); }

return 0; }

enumUtilityKind{ ELECTRICITY, GAS, WATER};structMeter{ stringsn; UtilityKindutility; floatreading; floaterror;};#pragmakeylistMetersn

Page 41: Getting Started with Vortex

Cop

yrig

ht P

rism

Tech

, 201

5

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; }

enumUtilityKind{ ELECTRICITY, GAS, WATER};structMeter{ stringsn; UtilityKindutility; floatreading; floaterror;};#pragmakeylistMetersn

Page 46: Getting Started with Vortex

Vortex Technology Stack

Page 47: Getting Started with Vortex

Device implementations optimised for OT, IT and

consumer platforms

Native support for Cloud and Fog Computing Architectures

Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 48: Getting Started with Vortex

Available across IT, Consumer and OT platforms Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 49: Getting Started with Vortex

Polyglot and Interoperable across Programming

Languages Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 50: Getting Started with Vortex

Fully Independent of the Cloud Infrastructure

Private Clouds

Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 51: Getting Started with Vortex

Native Integration with the hottest real-time analytics

platforms and CEP Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 52: Getting Started with Vortex

Integration with mainstream Dashboard Technologies

Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 53: Getting Started with Vortex

High Performance 30 μs peer-to-peer latency

4+ Mmsgs/sec p2p throughput

Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 54: Getting Started with Vortex

>10 μs fog/cloud routing latency

High Performance Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 55: Getting Started with Vortex

SecureData-Level security with Pluggable Authentication Access Control and Crypto

Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 56: Getting Started with Vortex

Default Plug-insX.509 Public Key

Infrastructure (PKI) based authentication

Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 57: Getting Started with Vortex

Default Plug-insAccess Control List file

signed by a shared Certificate Authority for

Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 58: Getting Started with Vortex

Default Plug-ins

Crypto based on TLS Cipher Suite

Device-2-DeviceDevice-2-Cloud

Fog-2-Cloud

Device-2-Fog

Cloud-2-Cloud

Fog-2-Fog

infra

structure

sdk

Page 59: Getting Started with Vortex

SecureData-Security as opposed to simply Transport-Level

security

Arthur Dent

Arthur Dent

Ford Prefect

Zaphod Beeblebrox

Marvin

Trillian

left/A(r,w), left/B(r)

left/A(r,w), left/B(r,w), left/X(r)

left/*(r,w)

left/*(r), right/(w)

left/A(r,w), left/B(r,w), right/C(r,w)

Ford Prefect

Zaphod Beeblebrox

Trillian

Marvin

A

B

A,BX

*

*

A,B,C

Identity Access RightsSessions are authenticated and communication is encrypted

Only the Topic included as part of the access rights are visible and accessible

Page 60: Getting Started with Vortex

SecureFine-grained access control

over Partition/Topic/Instance regular expressions

Arthur Dent

Arthur Dent

Ford Prefect

Zaphod Beeblebrox

Marvin

Trillian

left/A(r,w), left/B(r)

left/A(r,w), left/B(r,w), left/X(r)

left/*(r,w)

left/*(r), right/(w)

left/A(r,w), left/B(r,w), right/C(r,w)

Ford Prefect

Zaphod Beeblebrox

Trillian

Marvin

A

B

A,BX

*

*

A,B,C

Identity Access RightsSessions are authenticated and communication is encrypted

Only the Topic included as part of the access rights are visible and accessible

Page 61: Getting Started with Vortex

SecureSupport for Symmetric and Asymmetric Authentication

Arthur Dent

Arthur Dent

Ford Prefect

Zaphod Beeblebrox

Marvin

Trillian

left/A(r,w), left/B(r)

left/A(r,w), left/B(r,w), left/X(r)

left/*(r,w)

left/*(r), right/(w)

left/A(r,w), left/B(r,w), right/C(r,w)

Ford Prefect

Zaphod Beeblebrox

Trillian

Marvin

A

B

A,BX

*

*

A,B,C

Identity Access RightsSessions are authenticated and communication is encrypted

Only the Topic included as part of the access rights are visible and accessible

Page 62: Getting Started with Vortex

Boundary SecurityBoundary security support is

enabled by Vortex-Fog

Device-to-Cloud Communication

Peer-to-Peer (Broker-less)

Device-to-Device Communication

Fog Computing Fog ComputingFog Computing

TLS

TLS

Page 63: Getting Started with Vortex

Boundary SecuritySeparates security concerns at

different scales and controls what information is exposed

Device-to-Cloud Communication

Peer-to-Peer (Broker-less)

Device-to-Device Communication

Fog Computing Fog ComputingFog Computing

TLS

TLS

Page 64: Getting Started with Vortex

Typical Deployment

Page 65: Getting Started with Vortex

Vortex device, such as Lite, Café, and Web are used to share data between different kinds of applications within a car

Café and Web are typically used Android / HTML5 based infotainment

Lite in typically used in ECU, sensors and onboard analytics

Page 66: Getting Started with Vortex

Vortex Fog is used to transparently (for in car apps) decouple and control the data sharing within and across the car

Vortex Fog also helps defining security boundaries and policies

Page 67: Getting Started with Vortex

Vortex Fog efficiently and securely deals with car to car communication

Vortex Fog allows to decouple the transport used for in-car communication and that used for car-to-car communication

Page 68: Getting Started with Vortex

Vortex Fog efficiently and securely deals with cloud connectivity adapting traffic flows and protocols

Device-to-Cloud Communication

Cloud Analytics

Fog AnalyticsFog Analytics

Fog Analytics

Vortex Cloud efficiently and securely makes data available to any device at an Internet Scale

Page 69: Getting Started with Vortex

Vortex Cloud efficiently and securely makes data available to any device at an Internet Scale

Device-to-Cloud Communication

Cloud Analytics

Fog AnalyticsFog Analytics

Fog Analytics

Page 70: Getting Started with Vortex

Use Cases

Page 71: Getting Started with Vortex

Cop

yrig

ht P

rism

Tech

, 201

5

Connected Boulevard — Nice, FranceVortex enables is the data sharing platform

for the City Operating System

Tens of thousands of devices connected by Vortex

Page 72: Getting Started with Vortex

Autonomous Vehicles

coordination of fast moving autonomous vehicles

intermittent connectivity

dynamic pairing of devices

Page 73: Getting Started with Vortex

Cop

yrig

ht P

rism

Tech

, 201

4

Smart Factory0.5 TB of data

produced per day

Page 74: Getting Started with Vortex

Cop

yrig

ht P

rism

Tech

, 201

4

Smart-Grid

20ms deadline for phase alignment data

Page 75: Getting Started with Vortex

ESA Extremely Large & SMART Telescope (ELT)

1750 computing nodes

100.000 mirrors whose position is

adjusted 100 times per second!

ELT will allow astronomers to probe the earliest stages

of the formation of planetary systems and to detect water and organic

molecules in proto-planetary discs around

stars in the making

Page 76: Getting Started with Vortex

Launch System

80K+ data points with aggregate updates rate of ~400K msgs/sec

Page 77: Getting Started with Vortex

Connected Aircrafts

10 TB of data every 30m of flight

Page 78: Getting Started with Vortex

Oil Rig 30000 data pointsonly 1% of available data

used today

Page 79: Getting Started with Vortex

Smart Lightbulbs96Kbytes Memory

Connected Medical Devices

12 msec period for pleath data

Peer-to-Peer connectivity

Page 80: Getting Started with Vortex

Vortex enables Smart, Secure and Efficient Data Sharing in IoT

In Summary

Page 81: Getting Started with Vortex

Cop

yrig

ht P

rism

Tech

, 201

5