SlideShare a Scribd company logo
1 of 79
Download to read offline
CopyrightPrismTech,2017
Angelo	Corsaro,	PhD
CTO,	ADLINK	Tech.	Inc.		
CTO,	PrismTech	Corp.	
Co-Chair,	OMG	DDS-SIG	
angelo.corsaro@adlinktech.com
Data sharing in Extremely
Resource Constrained
Environments
Erik	Boasson
Senior	Technologist,	ADLINK	Tech.	Inc.		
erik.boasson@adlinktech.com
CopyrightPrismTech,2017
The Problem
CopyrightPrismTech,2017
Sensing in Smart Cities
has to deal with Memory,
Bandwidth and Power
Constraints
CopyrightPrismTech,2017
Sensing in Smart
Farming has to deal with
Memory, Bandwidth
and Power Constraints
CopyrightPrismTech,2017
Cost of connectivity is an
issue in Oil Exploration
platforms as sensing
1MByte costs over $8
Cost of connectivity is an
issue in Smart Grids as
the operator has to pay for
the 2G/3G/4G data-link
CopyrightPrismTech,2017
Low-Power Network-
Connectivity Landscape
CopyrightPrismTech,2017
Local/Personal-Area Networks
Low Power Local/Personal Area
Network have been an area of
active innovations in the past
several years
While proprietary solution are still
widely deployed, standards are
starting to gain more and more
market traction
CopyrightPrismTech,2017
Low-Power Wide-Area Networks
Low-Power Wide Area Network
technologies have initially emerged
in unlicensed spectrum, e.g. LoRa,
sigfox, and has a result have some
limitations on duty-cycle
LTE NB-IoT leverages 2G and 4G-
gap bandwidth to provide low-
power non-duty-cycle-constrained
connectivity
CopyrightPrismTech,2017
Data-Sharing /
Messaging
Standards Landscape
CopyrightPrismTech,2017
Data Sharing Standards
recommended in IoT/IIoT
References Architectures
and used in deployed
systems were not designed
for extremely resource
constrained environments
IoT/IIoT Standards
CopyrightPrismTech,2017
Some of the key limitations
are the wire-overhead (all),
dependency on TCP/IP
(AMQP, MQTT, OPC-UA) Push-
model (all), etc.
IoT/IIoT Standards
CopyrightPrismTech,2017
CoAP is a Resource-Oriented
protocol designed to deal
with resource constrained
environments
CoAP has been designed to
nicely map to HTTP
Constrained Application Protocol
CopyrightPrismTech,2017
CoAP lacks temporal decoupling
and the publish/subscribe model
was added as an after-thought to
the protocol
CoAP has limited dynamic
discovery and only supports UDP/IP
CoAP provides at most reliable un-
ordered delivery
CoAP Limitations
CopyrightPrismTech,2017
Low-Power Network-
Challenges
CopyrightPrismTech,2017
When compared with traditional
network technologies, Low-Power
networks have very small MTU, for
instance 802.15.4 has 127 bytes
As a consequence (1) wire-protocol
overhead has to be reduced to the
bare minimum to leave sufficient
space to application data, (2) The
wire overhead of IP is major and TCP/
IP is unacceptable (3) Fragmentation
is necessary
Small MTU
CopyrightPrismTech,2017
Battery powered applications
are often characterised by
extremely low duty cycles to
ensure that the battery can
last decades
This means that the traditional
push does not work and
traditional pull incurs in
unnecessary I/O and thus
energy waste
Low Duty Cycle
CopyrightPrismTech,2017
As Low Power WAN networks will become more
widely deployed and used in IoT the need for
reliable, ordered delivery will be driven by
applications like firmware update
Likewise, temporal decoupling will be essential to
facilitate the provisioning of large scale systems,
i.e. don’t need to wait for the device to be
online for provisioning it, just assert what’s the
new state is and let the system eventually
propagate it
Reliability
CopyrightPrismTech,2017
DDS-XRCE
Objective
The goal of DDS-XRCE is to bring DDS
connectivity to devices that are constrained
with respect to the node resources, such as
computational resources and power, as well
as the network.
The XRCE global
data space can
be implemented
by peers or by a
network or
brokers or both
depending on
deployment
network and
device constraints
Architectural Model
Broker
XRCE
App
Broker
Broker
Broker
XRCE
App
XRCE
App
XRCE
App
XRCE
XRCE
XRCE
XRCEXRCE
XRCE
DDS-XRCE
DDS-XRCE
XRCE
App XRCE
App
XRCE
App
DDS-XRCE
XRCE
App XRCE
App
XRCE
App
XRCE
XRCE
App
Peer-2-Peer
Peer-2-Peer
XRCE has been
designed to have
a trivial mapping
to DDS.
Thus Protocol
Gateways will be
easy to build in
SW or HW and
very efficient
DDS Interoperability
Broker
XRCE
App
Broker
Broker
Broker
XRCE
App
XRCE
App
XRCE
App
DDSIXRCE
XRCE
XRCE
XRCE
DDSI
DDSI
XRCE
XRCE
DDS
APP
DDS
App
DDS
APP
Gateway
Gateway
DDS-XRCE
DDS-XRCE
XRCE
App XRCE
App
XRCE
App
DDS-XRCE
XRCE
App XRCE
App
XRCE
App
XRCE
XRCE
App
Peer-2-Peer
Peer-2-Peer
CopyrightPrismTech,2017
Scope
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
…
Status
The OMG has solicited proposals for a DDS-XRCE
specification and received two, one from PrismTech
and one from RTI.
Vendors are now in the process of creating a joint
submission based on the PrismTech proposal.
This presentation describes the current state, some
changes are to be expected. Finalisation of the
specification is still on track for later this year.
XRCE-Abstractions
CopyrightPrismTech,2017
XRCE provides a data space
abstraction in which applications
can read and write data
autonomously and asynchronously.
The data read and written by XRCE
applications is associated with one or
more resources identified by a URI.
Depending on the context a
resource may represent a DDS topic
or a DDS instance.
Conceptual Model
DDS Global Data Space
...
Data
Writer
Data
Writer
Data
Writer
Data
Reader
Data
Reader
Data
Reader
Data
Reader
Data
Writer
R1
R2
R i
Rn
CopyrightPrismTech,2017
An XRCE Resource is a closed
description for a set of named values.
If the cardinality of the set is one then
we call it a Trivial Resource.
It is described by means of a URI which
may only include path expansions.
A Trivial Resource thus corresponds to a
URI without wildcards.
Resource Definition
--	These	are	Resources	
xrce://myhouse/**/bedroom/*/LightStatus		
xrce://myhouse/**/musicroom/LightStatus	
xrce://myhouse/**/LightStatus		
xrce://myhouse/**	
--	These	are	Trivial	Resources	
xrce://myhouse/floor/1/musicroom/LightStatus	
xrce://myhouse/floor/2/musicroom/LightStatus	
xrce://myhouse/floor/2/bedroom/erik/LightStatus		
Note, for compactness we take the liberty of representing
trivial resources by the single element that constitutes the
set as opposed to the single element set.
CopyrightPrismTech,2017
An XRCE Resource also has a set
of properties, which are name-
value pairs. These are used for
specifying QoS and for
extensibility.
For a resource X, there is a
number of predefined meta-data
resources for discovering child
resources and properties. These
are named X$ls, X$props, &c.,
and are handled automatically
by the XRCE agents.
Resource Definition
Given	these	resources:	
xrce://myhouse/floor/1/musicroom/LightStatus	
xrce://myhouse/floor/2/musicroom/LightStatus	
xrce://myhouse/floor/2/bedroom/erik/LightStatus		
For example:
Reading	xrce://myhouse/floor/2$ls	yields:	
		{musicroom,bedroom}
CopyrightPrismTech,2017
An XRCE Query is the conjunction of a Resource, and a Predicate over the
resource content and properties. The query is separated from the resource
by a “?”.
A Trivial Resource has a value, therefore a selection on a Trivial Resource
yields a single value or none at all. A query on a non-trivial resource may
yield many values.
XRCE does not prescribe a format for the value of a resource, and therefore
the meaning of a query is dependent on the chosen format. If a query
cannot be evaluated on the value of some resource, the result is empty.
Selection
xrce://myhouse/floor/2/bedroom/jeanclaude/LightStatus?	
xrce://myhouse/floor/*/bedroom/*/LightStatus?{luminosity>0}	
xrce://myhouse/floor/*/bedroom/*/LightStatus?{property.durability	=	transient	&&	luminosity>0}		
xrce://myhouse/floor/1/musicroom/LightStatus/ID12345?{inRange(property.location,	someLocation,	
radius)}	
xrce://myhouse/floor/1/musicroom/LightStatusπ{deviceId,	property.location}
For example: these are legal XRCE Queries
XRCE Protocol
CopyrightPrismTech,2017
The XRCE protocol specifies how the XRCE global data
space can be implemented “on the wire”.
It is still evolving, but we do not expect any major
changes between now and the final specification.
XRCE Protocol
CopyrightPrismTech,2017
XRCE messages are all composed by a single byte header
and a body.
Message Structure
	7	6	5	4	3	2	1	0	
+-+-+-+-+-+-+-+-+	
|R|S|X|MessageId|	
+---------------+	
|					Body						|	
+---------------+	
R: This is the reliability bit and is set to 1 for message that are intended to be reliable
S: This is the synchronicity bit and is set to 1 to indicate synchronous messages requiring the receiving party
to respond immediately
X: An extension bit used by some messages to indicate additional fields are present
CopyrightPrismTech,2017
XRCE always uses little-endian for its data and primarily uses
variable-length encoding (VLE) to save in the common cases
VLE is a value-based encoding, agnostic to the word size used
to represent the number in memory and encodes 7 bits per byte
Encoding
[0016 .. 7f16]
[8016 .. ff16] ; [0016 .. 7f16]
[8016 .. ff16] ; [8016 .. ff16] ; [0016 .. 7f16]
&c.
0 .. 27-1
27 .. 214-1
214 .. 221-1
&c.
⬄
CopyrightPrismTech,2017
The source address of each message is assumed to be a unique
address of the sender.
Data sent to such an address will in principle arrive at the sender
(or be lost).
Each node has a unique ID (e.g., a UUID) that remains the same
even when it changes network address.
The ID is only exchanged for session establishment.
Addressing
XRCE Protocol

SCOUTING
CopyrightPrismTech,2017
Scouting is the discovery of other nodes in the network.
If the transport has its own discovery (Bluetooth for
example), the scouting phase may be skipped.
Scouting
CopyrightPrismTech,2017
Scout is a request for other nodes in the network
to send a Hello. MASK encodes the type: broker,
durability, peer, client, … it is requesting a
response from.
Hello informs nodes of locators, properties. MASK
encodes the type of the node itself. The locators
allow a node to specify additional addresses at
which it is reachable, e.g., multicast addresses.
When a client sends “SCOUT broker” brokers
would respond with HELLO. Armed with this
knowledge, the client can try to open a session
with a broker.
Scout and Hello
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|0|1|0|		SCOUT		|	
		+---------------+	
		~					MASK						~	
		+---------------+	
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|0|0|P|		HELLO		|	
		+---------------+	
		~					MASK						~	
		+---------------+	
		~			[Locator]			~	
		+---------------+	
		~			[Property]		~	
		+---------------+	
P is set iff properties present
XRCE Protocol

SESSION MANAGEMENT
CopyrightPrismTech,2017
For two nodes to communicate in XRCE, they need to establish a session. With
a session comes the ability to publish or subscribe. Included in the session are
conduits, pairs of logical reliable and best-effort channels for data.
A “client” typically only needs a single session, with its broker. In mesh
networks, it is expected that brokers would typically need sessions with other
brokers as well.
The conduits can be implemented over any transport, e.g., TCP (would make
sense in client/broker over Ethernet), multicast UDP (e.g., peer-to-peer),
Bluetooth, …
Session Management
CopyrightPrismTech,2017
Open is a request to establish a
session.
• VMAJ/VMIN is protocol version
• PID is the requesting node’s
unique id (PID is short for peer id)
• SN-Length represent the number
of bytes used to represent
sequence numbers for this session
• lease_period is the lease duration
expression in units of 100ms
• auth is a sequence of bytes for
authentication data
Opening a Session
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|0|1|0|		OPEN			|	
		+---------------+	
		|		VMAJ	|	VMIN		|	
		+---------------+	
		|			SN-Length			|	
		+---------------+	
		~						PID						~	
		+---------------+	
		~		lease_period	~	
		+---------------+	
		~						auth					~	
		+---------------+
CopyrightPrismTech,2017
Accept is the successful response to an
Open.
• OPID is the requesting node’s unique
id
• APID is the accepting node’s unique
id
• lease_period is the lease duration
expression in units of 100ms
• auth is a sequence of bytes for
authentication data
Opening a session
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|0|1|0|	ACCEPT		|	
		+---------------+	
		~					OPID						~	
		+---------------+	
		~					APID						~	
		+---------------+	
		~		lease_period	~	
		+---------------+	
		~						auth					~	
		+---------------+
CopyrightPrismTech,2017
To reject a request for opening a
session and to explicitly close an
existing session, a Close message is
used.
• OPID is the sending node’s unique id
• APID is the other node’s unique id
• Reason is a one byte code for the
reason
Rejecting or closing a session
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|0|1|0|		CLOSE		|	
		+---------------+	
		~					OPID						~	
		+---------------+	
		~					APID						~	
		+---------------+	
		|				Reason					|	
		+---------------+
CopyrightPrismTech,2017
To reject a request for
opening a session and
to explicitly close an
existing session, a
Close message is used.
- PID is the sending
node’s unique id
- Reason is a one byte
code for the reason
Session
FSM
XRCE Protocol

DECLARATIONS
CopyrightPrismTech,2017
Resources, publications, subscriptions, selections all need to be
declared before one can publish or read/receive data.
Declarations are buffered until committed.
Resources may be declared multiple times, but they may also be
declared once and then used by everyone.
Combined with the numerical ids for the resources, this allows small
clients to use only a few small messages to declare their
publications/subscriptions.
Declarations
CopyrightPrismTech,2017
Resources and Selections are uniquely identified by numerical
ids to save space on the wire.
The relationship between a Resource ID and a Resource is
established when declaring a resource. Resource IDs are global,
everyone in the XRCE domain must use the same mapping of ID
to Resource.
RIDs are positive, even integers.
Resource IDs
CopyrightPrismTech,2017
Subscribing to a trivial resource can be done using the Resource ID.
Subscribing to a more complicated selection requires choosing a Selection ID.
Applications can each define their own selections, so these are in principle
local to the session.
This allows a broker to send just the data matching the selection to a client,
relieving the client from knowing all the matching resource ids and performing
the matching itself.
When a broker is pushing data to multiple clients the Selection IDs may be
different even for the same selection. The broker would then have to send the
data multiple times, even if the clients support multicast. Hence we allow
rebinding Selection IDs.
Selection IDs
CopyrightPrismTech,2017
The general Declare message is a
container for a list of Declarations.
• it is always reliable
• SN is sequence number
Note that it is very similar to regular
data. The use of a separate
message kind avoids the use of
predefined resource ids.
Declare message
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|1|S|X|	DECLARE	|	
		+---------------+	
		~						SN							~	
		+---------------+	
		~	[Declaration]	~	
		+---------------+
CopyrightPrismTech,2017
This declares that (numerical) resource
id RID corresponds to Resource.
Resource need not be trivial.
• P is set iff properties present
• The properties are a sequence of
name-value pairs
• In the absence of properties, the
resource has a default QoS,
corresponding to DDS reliable, keep-
last-1, volatile
Declare: Resource
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|P|C|X|	RESOURCE|	
		+---------------+	
		~						RID						~	
		+---------------+	
		~				Resource			~	
		+---------------+	
		~			[Property]		~	
		+---------------+
CopyrightPrismTech,2017
Essentially the same message can
also be used to delete resources
from the system. This is propagated
to all applications currently
interacting with the resource.
Deleting a non-trivial resource has
the effect of deleting all resources
currently matching with the
expression.
Declare: Delete Resource
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|P|1|X|	RESOURCE|	
		+---------------+	
		~						RID						~	
		+---------------+	
		~				Resource			~	
		+---------------+	
		~			[Property]		~	
		+---------------+
CopyrightPrismTech,2017
This declares the sender as a
publisher of values for the
Resource/Selection identified by
RID/SID, or cancels a previous
declaration.
• P is set iff properties are included
• C is 0 if it is a declaration, 1 if it is
the cancellation of a declaration
Declare: Publication
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|P|C|X|			PUB			|	
		+---------------+	
		~			RID	|	SID			~	
		+---------------+	
		~			[Property]		~	
		+---------------+
CopyrightPrismTech,2017
This declares a subscription to the resource/selection
identified by RID/SID.


SubMode determines whether it is a pull/push/
periodic pull/periodic push/push-pull subscriber.
Periodic push tells the publisher that the subscriber
will listen for data every X seconds; periodic pull that
it will request data every X seconds. Push-pull means
a notification of data is pushed, but the data itself is
not.
• P is set iff properties are included
• C is 0 if it a subscription is taken, 1 if it is being
cancelled
Declare: Subscription
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|P|C|X|			SUB			|	
		+---------------+	
		~			RID	|	SID			~	
		+---------------+	
		~				SubMode				~	
		+---------------+	
		~			[Property]		~	
		+---------------+
CopyrightPrismTech,2017
This declares a selection (i.e., a
query) and associates it with a
Selection ID. To actually subscribe
to a selection, one must still send a
Sub declaration.
• P is set iff properties are given
• G is set iff SID is a global identifier
for this selection, rather than one
bound to this session
Declare: Selection
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|P|C|G|SELECTION|	
		+---------------+	
		~						SID						~	
		+---------------+	
		~					Query					~	
		+---------------+	
		~			[Property]		~	
		+---------------+
CopyrightPrismTech,2017
This defines a new binding for the given
selection, i.e., an alias for the old
selection ID.
This allows the sender to use NewXID
instead of OldXID. Its primary purpose is to
allow multicast push to clients that chose
different IDs for the same selection.
• G is set iff the NewXID is a global id
(similar to G in Selection declaration).
Declare: Selection ID binding
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|G|X|X|	IDBIND		|	
		+---------------+	
		~					OldXID				~	
		+---------------+	
		~					NewXID				~	
		+---------------+
XRCE Protocol

Data Exchange
CopyrightPrismTech,2017
All data messages and declarations are transported over a conduit,
which is a pair of a reliable and a best-effort channel in a session.
Multiple conduits may be used in parallel, to avoid head-of-line blocking
and to allow multicasting across session in addition within a session.
The default conduit 0 is used unless messages are prefixed with a special
Conduit message.
Conduits
CopyrightPrismTech,2017
Best-Effort Channel Specification
CopyrightPrismTech,2017
The best-effort channel implementation is relatively
straight forward.
The XRCE runtime has to make a reasonable effort to
send the message over the associated transport and
ensure that messages, whilst may be dropped, shall
never be delivered to receive out of order.
Best-effort Channel Implementation
CopyrightPrismTech,2017
Reliable Channel Specification
CopyrightPrismTech,2017
The Petri Net describes
the behaviour of a
Reliable Channel with a
buffer of n places. It is
worth to mention that the
specification assumes
that a NACK can only be
received for the head of
the queue. This may seem
a restriction, but in reality
it only means that when
receiving a NACK for
message with sequence
number k the previous
messages have been
acknowledged.
Reliable Channel Behaviour
CopyrightPrismTech,2017
Conduit is used to specify
that the next messages in the
packet (or the next message
for non-packet-based
transports) are sent over
conduit CID instead of over
the default conduit.
Z=1 implies a compact
representation where HL bits
encode Id-1, i.e. 00 => Id = 1
Conduit selection
									7	6	5	4	3	2	1	0	
								+-+-+-+-+-+-+-+-+	
								|Z|H|L|	CONDUIT	|	
								+---------------+	
								|						Id							|	
								+-+-+-+-+-+-+-+-+
CopyrightPrismTech,2017
Synch is used to inform the recipient of the
range of sequence numbers available for
retransmission on the reliable channel of the
conduit. It also allows informing a late joiner of
the current sequence number in the channel.
• SN is the lowest sequence number available
• N is the number of messages available; N =
0 is allowed
If S is set, requires an immediate ACK/
ACKNACK response.
Synchronising a Conduit
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|1|S|0|	SYNCH			|	
		+---------------+	
		~						SN							~	
		+---------------+	
		|						N								|	
	 +---------------+
CopyrightPrismTech,2017
ACKNACK with M=0 (no mask) is used to
acknowledge all reliable messages on
conduit CID up to but not including SN.
ACKNACK with M=1 (mask included) is
used to acknowledge all reliable messages
on conduit CID up to but not including SN,
and furthermore request a retransmission
of message number SN and those for
which a bit is set in Mask. Bit 0 in Mask
corresponds to SN+1, Bit 1 to SN+2, &c.
ACK/NACK
			7	6	5	4	3	2	1	0	
		+-+-+-+-+-+-+-+-+	
		|0|0|M|	ACKNACK	|	
		+---------------+	
		~						SN							~	
		+---------------+	
		~					Mask						~	
		+---------------+
Writing Data
CopyrightPrismTech,2017
XRCE allows writing a resource
w/o any kind of prior
registration or discovery
The cost of this abstraction is
that the full-resource name
has to be sent on the wire
One Shot Write
	 	
	 7	6	5	4	3	2	1	0	
	 +-+-+-+-+-+-+-+-+	
	 |R|S|X|		WDATA		|	
	 +---------------+	
		~						SN							~	
	 +---------------+	
	 ~			Resource				~		
	 +---------------+	
	 ~				Payload				~	
	 +---------------+
CopyrightPrismTech,2017
XRCE provides built-in support for very efficiently
sending a sample or a batch of samples. Notice
that for a single sample the minimum overhead
is of only 3 bytes.
- P is set iff PRID is present.
- PRID is the ID of the trivial resource for which
this is a value, for cases where a selection is
used, so that the subscriber knows the resource
the data belongs to
for BDATA, P set => a sequence of (RID, Payload)
pairs, else just a sequence of Payloads.
Note that these forms are the only messages for
streaming data, and are also used for the
response to a pulling read.
Streaming Write
			7	6	5	4	3	2	1	0	
	 +-+-+-+-+-+-+-+-+	
	 |R|S|P|	SDATA			|	
	 +---------------+	
	 ~						SN							~	
	 +---------------+	
	 ~			RID	|	SID			~		
	 +---------------+	
	 ~						PRID					~	
	 +---------------+	
	 ~			[Payload]			~	
	 +---------------+
7	6	5	4	3	2	1	0	
+-+-+-+-+-+-+-+-+	
|R|S|P|		BDATA		|	
+---------------+	
~						SN							~	
+---------------+	
~			RID	|	SID			~		
+---------------+	
~[RID,[Payload]]~	
+---------------+
CopyrightPrismTech,2017
Fragmentation
	7	6	5	4	3	2	1	0	
+-+-+-+-+-+-+-+-+	
|1|N|X|		FRAG			|	
+-+-+-----------+	
~				SN-Base				~	
+---------------+	
~		Total-Frags		~	
+---------------+
XRCE needs to support small MTUs, therefore, it
needs to automatically fragment larger
payloads.
Fragmentation in XRCE is done by prefixing a
WDATA or SDATA with a small message (in the
same packet)
• SN-Base is first sequence number of
fragmented payload, present only if N=1
• N=1 indicates that the total number of
fragments following this packet is known.
• fragments must be ~MTU large
Reading Data
CopyrightPrismTech,2017
Pulling data
			7	6	5	4	3	2	1	0	
	 +-+-+-+-+-+-+-+-+	
	 |1|S|N|		PULL			|	
	 +---------------+	
		~						SN							~	
	 +---------------+	
	 ~			RID	|	SID			~										
	 +---------------+	
	 ~				PullID					~	
	 +---------------+	
	 ~			MaxSamples		~	
	 +---------------+	
XRCE supports both push and pull modes. In a
pull mode, the broker maintains the data and
the client explicitly pulls the data towards it.
• Pull is always reliable
• N is set iff PullID and MaxSamples present
• PullID is “like” a cursor in an RDMS, MaxSamples
is the maximum number of samples to be
returned at a time. A second Pull with the
same ID will continue enumerating data from
the set.
The combination of PullID and N allow allowing
iterating through large data sets in nested loops.
XRCE vs. CoAP
CopyrightPrismTech,2017
• 1 byte header including message code
• Message pipelining and batching
• In order delivery
• Batched ACK/NACK
• Durability
• Secure Multicast (from DDS-Security)
• Can negotiate Push/Pull/Push-Pull/Periodic Push /
Periodic Pull
• Will run w/o IP
XRCE vs. CoAP
XRCE CoAP
Protocol Overhead
1 byte header including message code 1 byte header + 1 byte message code
Delivery Ordered, and fragmentation support No ordering guarantees
Batching
Message pipelining and batching
ACK/NACK
Batched ACK/NACK One ACK per message
Durability Durability
Interaction Model
Push/Pull/Push-Pull/Periodic Push /
Periodic Pull
Pull
Transport No assumptions Assume IP/based
Fan-out
Can leverage multicast thus sending a
single message regardless of the size of
the group
1 message per observer, as a
consequence the load on the server and
the network grows linearly
XRCE @ Work
Summing Up
CopyrightPrismTech,2017
Defines the most wire/
power/memory efficient
protocol in the market to
provide DDS connectivity to
extremely constrained
targets
DDS-XRCE
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
…
CopyrightPrismTech,2017
Supports peer-to-peer as well as
broker-based communication
Provides reliability and
fragmentation above packet-
oriented best-effort transports
Can leverage multicast
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
…
CopyrightPrismTech,2017
Current prototype runs on
8-bit micro-controllers and
takes in 1 KByte of RAM
and has wire-overhead of
3-4 bytes for data samples
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
…
CopyrightPrismTech,2017

More Related Content

What's hot

DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA ExplainedAngelo Corsaro
 
The Data Distribution Service: The Communication Middleware Fabric for Scala...
The Data Distribution Service: The Communication  Middleware Fabric for Scala...The Data Distribution Service: The Communication  Middleware Fabric for Scala...
The Data Distribution Service: The Communication Middleware Fabric for Scala...Angelo Corsaro
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with VortexAngelo Corsaro
 
Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexAngelo Corsaro
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with VortexAngelo Corsaro
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationAngelo Corsaro
 
Getting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaGetting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaAngelo Corsaro
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféAngelo Corsaro
 
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXReactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXAngelo Corsaro
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security StandardAngelo Corsaro
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part IAngelo Corsaro
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service TutorialAngelo Corsaro
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
Vortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsVortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsAngelo Corsaro
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity StandardAngelo Corsaro
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeAngelo Corsaro
 
Classical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSClassical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSAngelo Corsaro
 
Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAngelo Corsaro
 

What's hot (20)

DDS In Action Part II
DDS In Action Part IIDDS In Action Part II
DDS In Action Part II
 
DDS and OPC UA Explained
DDS and OPC UA ExplainedDDS and OPC UA Explained
DDS and OPC UA Explained
 
The Data Distribution Service: The Communication Middleware Fabric for Scala...
The Data Distribution Service: The Communication  Middleware Fabric for Scala...The Data Distribution Service: The Communication  Middleware Fabric for Scala...
The Data Distribution Service: The Communication Middleware Fabric for Scala...
 
Architecting IoT Systems with Vortex
Architecting IoT Systems with VortexArchitecting IoT Systems with Vortex
Architecting IoT Systems with Vortex
 
Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with VortexConnected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with Vortex
 
Getting Started with Vortex
Getting Started with VortexGetting Started with Vortex
Getting Started with Vortex
 
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair MonetisationData Decentralisation: Efficiency, Privacy and Fair Monetisation
Data Decentralisation: Efficiency, Privacy and Fair Monetisation
 
Getting Started in DDS with C++ and Java
Getting Started in DDS with C++ and JavaGetting Started in DDS with C++ and Java
Getting Started in DDS with C++ and Java
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveXReactive Data Centric Architectures with Vortex, Spark and ReactiveX
Reactive Data Centric Architectures with Vortex, Spark and ReactiveX
 
The DDS Security Standard
The DDS Security StandardThe DDS Security Standard
The DDS Security Standard
 
DDS Tutorial -- Part I
DDS Tutorial -- Part IDDS Tutorial -- Part I
DDS Tutorial -- Part I
 
The Data Distribution Service Tutorial
The Data Distribution Service TutorialThe Data Distribution Service Tutorial
The Data Distribution Service Tutorial
 
zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Vortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of ThingsVortex: The Intelligent Data Sharing Platform for the Internet of Things
Vortex: The Intelligent Data Sharing Platform for the Internet of Things
 
Vortex II -- The Industrial IoT Connectivity Standard
Vortex II -- The  Industrial IoT  Connectivity StandardVortex II -- The  Industrial IoT  Connectivity Standard
Vortex II -- The Industrial IoT Connectivity Standard
 
Vortex Tutorial Part 2
Vortex Tutorial Part 2Vortex Tutorial Part 2
Vortex Tutorial Part 2
 
Cyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT AgeCyclone DDS: Sharing Data in the IoT Age
Cyclone DDS: Sharing Data in the IoT Age
 
Classical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDSClassical Distributed Algorithms with DDS
Classical Distributed Algorithms with DDS
 
Advanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part IIAdvanced OpenSplice Programming - Part II
Advanced OpenSplice Programming - Part II
 

Similar to Data Sharing in Extremely Resource Constrained Envionrments

zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolAngelo Corsaro
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsJaime Martin Losa
 
HPC DAY 2017 | The network part in accelerating Machine-Learning and Big-Data
HPC DAY 2017 | The network part in accelerating Machine-Learning and Big-DataHPC DAY 2017 | The network part in accelerating Machine-Learning and Big-Data
HPC DAY 2017 | The network part in accelerating Machine-Learning and Big-DataHPC DAY
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSAngelo Corsaro
 
Fog Computing with VORTEX
Fog Computing with VORTEXFog Computing with VORTEX
Fog Computing with VORTEXAngelo Corsaro
 
Java Abs Scalable Wireless Ad Hoc Network Simulation Using
Java Abs   Scalable Wireless Ad Hoc Network Simulation UsingJava Abs   Scalable Wireless Ad Hoc Network Simulation Using
Java Abs Scalable Wireless Ad Hoc Network Simulation Usingncct
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)Gerardo Pardo-Castellote
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDSkerush
 
What's the Right Messaging Standard for the IoT?
What's the Right Messaging  Standard for the IoT?What's the Right Messaging  Standard for the IoT?
What's the Right Messaging Standard for the IoT?Angelo Corsaro
 
Oracle Cloud Infraestructure Update
Oracle Cloud Infraestructure UpdateOracle Cloud Infraestructure Update
Oracle Cloud Infraestructure UpdateRaphaelCampelo
 
Big Data Learnings from a Vendor's Perspective
Big Data Learnings from a Vendor's PerspectiveBig Data Learnings from a Vendor's Perspective
Big Data Learnings from a Vendor's PerspectiveAerospike, Inc.
 
IRJET- Efficient Geometric Range Search on RTREE Occupying Encrypted Spatial ...
IRJET- Efficient Geometric Range Search on RTREE Occupying Encrypted Spatial ...IRJET- Efficient Geometric Range Search on RTREE Occupying Encrypted Spatial ...
IRJET- Efficient Geometric Range Search on RTREE Occupying Encrypted Spatial ...IRJET Journal
 
Apache Spark and Apache Ignite: Where Fast Data Meets IoT
Apache Spark and Apache Ignite: Where Fast Data Meets IoTApache Spark and Apache Ignite: Where Fast Data Meets IoT
Apache Spark and Apache Ignite: Where Fast Data Meets IoTDenis Magda
 
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin MeetingeProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin MeetingJaime Martin Losa
 
IRJET- Privacy Preserving Cloud Storage based on a Three Layer Security M...
IRJET-  	  Privacy Preserving Cloud Storage based on a Three Layer Security M...IRJET-  	  Privacy Preserving Cloud Storage based on a Three Layer Security M...
IRJET- Privacy Preserving Cloud Storage based on a Three Layer Security M...IRJET Journal
 
"Taming the Dragon": Zenoh's Genesis
"Taming the Dragon": Zenoh's Genesis "Taming the Dragon": Zenoh's Genesis
"Taming the Dragon": Zenoh's Genesis ZettaScaleTechnology
 
Benefits of an Agile Data Fabric for Business Intelligence
Benefits of an Agile Data Fabric for Business IntelligenceBenefits of an Agile Data Fabric for Business Intelligence
Benefits of an Agile Data Fabric for Business IntelligenceDataWorks Summit/Hadoop Summit
 
Smart, Secure and Efficient Data Sharing in IoT
Smart, Secure and Efficient Data Sharing in IoTSmart, Secure and Efficient Data Sharing in IoT
Smart, Secure and Efficient Data Sharing in IoTAngelo Corsaro
 

Similar to Data Sharing in Extremely Resource Constrained Envionrments (20)

zenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocolzenoh -- the ZEro Network OverHead protocol
zenoh -- the ZEro Network OverHead protocol
 
Distributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applicationsDistributed Systems: How to connect your real-time applications
Distributed Systems: How to connect your real-time applications
 
HPC DAY 2017 | The network part in accelerating Machine-Learning and Big-Data
HPC DAY 2017 | The network part in accelerating Machine-Learning and Big-DataHPC DAY 2017 | The network part in accelerating Machine-Learning and Big-Data
HPC DAY 2017 | The network part in accelerating Machine-Learning and Big-Data
 
Reactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDSReactive Data Centric Architectures with DDS
Reactive Data Centric Architectures with DDS
 
Fog Computing with VORTEX
Fog Computing with VORTEXFog Computing with VORTEX
Fog Computing with VORTEX
 
Java Abs Scalable Wireless Ad Hoc Network Simulation Using
Java Abs   Scalable Wireless Ad Hoc Network Simulation UsingJava Abs   Scalable Wireless Ad Hoc Network Simulation Using
Java Abs Scalable Wireless Ad Hoc Network Simulation Using
 
DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)DDS-XRCE (Extremely Resource Constrained Environments)
DDS-XRCE (Extremely Resource Constrained Environments)
 
Introducing Vortex Lite
Introducing Vortex LiteIntroducing Vortex Lite
Introducing Vortex Lite
 
Real Time Java DDS
Real Time Java DDSReal Time Java DDS
Real Time Java DDS
 
What's the Right Messaging Standard for the IoT?
What's the Right Messaging  Standard for the IoT?What's the Right Messaging  Standard for the IoT?
What's the Right Messaging Standard for the IoT?
 
Oci meetup v1
Oci meetup v1Oci meetup v1
Oci meetup v1
 
Oracle Cloud Infraestructure Update
Oracle Cloud Infraestructure UpdateOracle Cloud Infraestructure Update
Oracle Cloud Infraestructure Update
 
Big Data Learnings from a Vendor's Perspective
Big Data Learnings from a Vendor's PerspectiveBig Data Learnings from a Vendor's Perspective
Big Data Learnings from a Vendor's Perspective
 
IRJET- Efficient Geometric Range Search on RTREE Occupying Encrypted Spatial ...
IRJET- Efficient Geometric Range Search on RTREE Occupying Encrypted Spatial ...IRJET- Efficient Geometric Range Search on RTREE Occupying Encrypted Spatial ...
IRJET- Efficient Geometric Range Search on RTREE Occupying Encrypted Spatial ...
 
Apache Spark and Apache Ignite: Where Fast Data Meets IoT
Apache Spark and Apache Ignite: Where Fast Data Meets IoTApache Spark and Apache Ignite: Where Fast Data Meets IoT
Apache Spark and Apache Ignite: Where Fast Data Meets IoT
 
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin MeetingeProsima RPC over DDS - OMG June 2013 Berlin Meeting
eProsima RPC over DDS - OMG June 2013 Berlin Meeting
 
IRJET- Privacy Preserving Cloud Storage based on a Three Layer Security M...
IRJET-  	  Privacy Preserving Cloud Storage based on a Three Layer Security M...IRJET-  	  Privacy Preserving Cloud Storage based on a Three Layer Security M...
IRJET- Privacy Preserving Cloud Storage based on a Three Layer Security M...
 
"Taming the Dragon": Zenoh's Genesis
"Taming the Dragon": Zenoh's Genesis "Taming the Dragon": Zenoh's Genesis
"Taming the Dragon": Zenoh's Genesis
 
Benefits of an Agile Data Fabric for Business Intelligence
Benefits of an Agile Data Fabric for Business IntelligenceBenefits of an Agile Data Fabric for Business Intelligence
Benefits of an Agile Data Fabric for Business Intelligence
 
Smart, Secure and Efficient Data Sharing in IoT
Smart, Secure and Efficient Data Sharing in IoTSmart, Secure and Efficient Data Sharing in IoT
Smart, Secure and Efficient Data Sharing in IoT
 

More from Angelo Corsaro

zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data FabricAngelo Corsaro
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computeAngelo Corsaro
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingAngelo Corsaro
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing InfrastructureAngelo Corsaro
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing PlatformAngelo Corsaro
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture FourAngelo Corsaro
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture ThreeAngelo Corsaro
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture TwoAngelo Corsaro
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture OneAngelo Corsaro
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsAngelo Corsaro
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part IAngelo Corsaro
 
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...Angelo Corsaro
 
Fluid IoT Architectures
Fluid IoT ArchitecturesFluid IoT Architectures
Fluid IoT ArchitecturesAngelo Corsaro
 
Microservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIMicroservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIAngelo Corsaro
 
Vortex 2.0 -- The Industrial Internet of Things Platform
Vortex 2.0 -- The Industrial Internet of Things PlatformVortex 2.0 -- The Industrial Internet of Things Platform
Vortex 2.0 -- The Industrial Internet of Things PlatformAngelo Corsaro
 

More from Angelo Corsaro (20)

Zenoh: The Genesis
Zenoh: The GenesisZenoh: The Genesis
Zenoh: The Genesis
 
zenoh: The Edge Data Fabric
zenoh: The Edge Data Fabriczenoh: The Edge Data Fabric
zenoh: The Edge Data Fabric
 
Zenoh Tutorial
Zenoh TutorialZenoh Tutorial
Zenoh Tutorial
 
zenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query computezenoh: zero overhead pub/sub store/query compute
zenoh: zero overhead pub/sub store/query compute
 
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog ComputingBreaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
Breaking the Edge -- A Journey Through Cloud, Edge and Fog Computing
 
Eastern Sicily
Eastern SicilyEastern Sicily
Eastern Sicily
 
fog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructurefog05: The Fog Computing Infrastructure
fog05: The Fog Computing Infrastructure
 
fog05: The Fog Computing Platform
fog05: The Fog Computing Platformfog05: The Fog Computing Platform
fog05: The Fog Computing Platform
 
Programming in Scala - Lecture Four
Programming in Scala - Lecture FourProgramming in Scala - Lecture Four
Programming in Scala - Lecture Four
 
Programming in Scala - Lecture Three
Programming in Scala - Lecture ThreeProgramming in Scala - Lecture Three
Programming in Scala - Lecture Three
 
Programming in Scala - Lecture Two
Programming in Scala - Lecture TwoProgramming in Scala - Lecture Two
Programming in Scala - Lecture Two
 
Programming in Scala - Lecture One
Programming in Scala - Lecture OneProgramming in Scala - Lecture One
Programming in Scala - Lecture One
 
RUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming RuminationsRUSTing -- Partially Ordered Rust Programming Ruminations
RUSTing -- Partially Ordered Rust Programming Ruminations
 
Fog Computing Defined
Fog Computing DefinedFog Computing Defined
Fog Computing Defined
 
DDS in Action -- Part I
DDS in Action -- Part IDDS in Action -- Part I
DDS in Action -- Part I
 
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...The Cloudy, Foggy and Misty Internet of Things --  Toward Fluid IoT Architect...
The Cloudy, Foggy and Misty Internet of Things -- Toward Fluid IoT Architect...
 
Fluid IoT Architectures
Fluid IoT ArchitecturesFluid IoT Architectures
Fluid IoT Architectures
 
Microservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part IIMicroservices Architecture with Vortex — Part II
Microservices Architecture with Vortex — Part II
 
Happy 2016!
Happy 2016!Happy 2016!
Happy 2016!
 
Vortex 2.0 -- The Industrial Internet of Things Platform
Vortex 2.0 -- The Industrial Internet of Things PlatformVortex 2.0 -- The Industrial Internet of Things Platform
Vortex 2.0 -- The Industrial Internet of Things Platform
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

Data Sharing in Extremely Resource Constrained Envionrments

  • 1. CopyrightPrismTech,2017 Angelo Corsaro, PhD CTO, ADLINK Tech. Inc. CTO, PrismTech Corp. Co-Chair, OMG DDS-SIG angelo.corsaro@adlinktech.com Data sharing in Extremely Resource Constrained Environments Erik Boasson Senior Technologist, ADLINK Tech. Inc. erik.boasson@adlinktech.com
  • 3. CopyrightPrismTech,2017 Sensing in Smart Cities has to deal with Memory, Bandwidth and Power Constraints
  • 4. CopyrightPrismTech,2017 Sensing in Smart Farming has to deal with Memory, Bandwidth and Power Constraints
  • 5. CopyrightPrismTech,2017 Cost of connectivity is an issue in Oil Exploration platforms as sensing 1MByte costs over $8
  • 6. Cost of connectivity is an issue in Smart Grids as the operator has to pay for the 2G/3G/4G data-link
  • 8. CopyrightPrismTech,2017 Local/Personal-Area Networks Low Power Local/Personal Area Network have been an area of active innovations in the past several years While proprietary solution are still widely deployed, standards are starting to gain more and more market traction
  • 9. CopyrightPrismTech,2017 Low-Power Wide-Area Networks Low-Power Wide Area Network technologies have initially emerged in unlicensed spectrum, e.g. LoRa, sigfox, and has a result have some limitations on duty-cycle LTE NB-IoT leverages 2G and 4G- gap bandwidth to provide low- power non-duty-cycle-constrained connectivity
  • 11. CopyrightPrismTech,2017 Data Sharing Standards recommended in IoT/IIoT References Architectures and used in deployed systems were not designed for extremely resource constrained environments IoT/IIoT Standards
  • 12. CopyrightPrismTech,2017 Some of the key limitations are the wire-overhead (all), dependency on TCP/IP (AMQP, MQTT, OPC-UA) Push- model (all), etc. IoT/IIoT Standards
  • 13. CopyrightPrismTech,2017 CoAP is a Resource-Oriented protocol designed to deal with resource constrained environments CoAP has been designed to nicely map to HTTP Constrained Application Protocol
  • 14. CopyrightPrismTech,2017 CoAP lacks temporal decoupling and the publish/subscribe model was added as an after-thought to the protocol CoAP has limited dynamic discovery and only supports UDP/IP CoAP provides at most reliable un- ordered delivery CoAP Limitations
  • 16. CopyrightPrismTech,2017 When compared with traditional network technologies, Low-Power networks have very small MTU, for instance 802.15.4 has 127 bytes As a consequence (1) wire-protocol overhead has to be reduced to the bare minimum to leave sufficient space to application data, (2) The wire overhead of IP is major and TCP/ IP is unacceptable (3) Fragmentation is necessary Small MTU
  • 17. CopyrightPrismTech,2017 Battery powered applications are often characterised by extremely low duty cycles to ensure that the battery can last decades This means that the traditional push does not work and traditional pull incurs in unnecessary I/O and thus energy waste Low Duty Cycle
  • 18. CopyrightPrismTech,2017 As Low Power WAN networks will become more widely deployed and used in IoT the need for reliable, ordered delivery will be driven by applications like firmware update Likewise, temporal decoupling will be essential to facilitate the provisioning of large scale systems, i.e. don’t need to wait for the device to be online for provisioning it, just assert what’s the new state is and let the system eventually propagate it Reliability
  • 20. Objective The goal of DDS-XRCE is to bring DDS connectivity to devices that are constrained with respect to the node resources, such as computational resources and power, as well as the network.
  • 21. The XRCE global data space can be implemented by peers or by a network or brokers or both depending on deployment network and device constraints Architectural Model Broker XRCE App Broker Broker Broker XRCE App XRCE App XRCE App XRCE XRCE XRCE XRCEXRCE XRCE DDS-XRCE DDS-XRCE XRCE App XRCE App XRCE App DDS-XRCE XRCE App XRCE App XRCE App XRCE XRCE App Peer-2-Peer Peer-2-Peer
  • 22. XRCE has been designed to have a trivial mapping to DDS. Thus Protocol Gateways will be easy to build in SW or HW and very efficient DDS Interoperability Broker XRCE App Broker Broker Broker XRCE App XRCE App XRCE App DDSIXRCE XRCE XRCE XRCE DDSI DDSI XRCE XRCE DDS APP DDS App DDS APP Gateway Gateway DDS-XRCE DDS-XRCE XRCE App XRCE App XRCE App DDS-XRCE XRCE App XRCE App XRCE App XRCE XRCE App Peer-2-Peer Peer-2-Peer
  • 23. CopyrightPrismTech,2017 Scope 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 …
  • 24. Status The OMG has solicited proposals for a DDS-XRCE specification and received two, one from PrismTech and one from RTI. Vendors are now in the process of creating a joint submission based on the PrismTech proposal. This presentation describes the current state, some changes are to be expected. Finalisation of the specification is still on track for later this year.
  • 26. CopyrightPrismTech,2017 XRCE provides a data space abstraction in which applications can read and write data autonomously and asynchronously. The data read and written by XRCE applications is associated with one or more resources identified by a URI. Depending on the context a resource may represent a DDS topic or a DDS instance. Conceptual Model DDS Global Data Space ... Data Writer Data Writer Data Writer Data Reader Data Reader Data Reader Data Reader Data Writer R1 R2 R i Rn
  • 27. CopyrightPrismTech,2017 An XRCE Resource is a closed description for a set of named values. If the cardinality of the set is one then we call it a Trivial Resource. It is described by means of a URI which may only include path expansions. A Trivial Resource thus corresponds to a URI without wildcards. Resource Definition -- These are Resources xrce://myhouse/**/bedroom/*/LightStatus xrce://myhouse/**/musicroom/LightStatus xrce://myhouse/**/LightStatus xrce://myhouse/** -- These are Trivial Resources xrce://myhouse/floor/1/musicroom/LightStatus xrce://myhouse/floor/2/musicroom/LightStatus xrce://myhouse/floor/2/bedroom/erik/LightStatus Note, for compactness we take the liberty of representing trivial resources by the single element that constitutes the set as opposed to the single element set.
  • 28. CopyrightPrismTech,2017 An XRCE Resource also has a set of properties, which are name- value pairs. These are used for specifying QoS and for extensibility. For a resource X, there is a number of predefined meta-data resources for discovering child resources and properties. These are named X$ls, X$props, &c., and are handled automatically by the XRCE agents. Resource Definition Given these resources: xrce://myhouse/floor/1/musicroom/LightStatus xrce://myhouse/floor/2/musicroom/LightStatus xrce://myhouse/floor/2/bedroom/erik/LightStatus For example: Reading xrce://myhouse/floor/2$ls yields: {musicroom,bedroom}
  • 29. CopyrightPrismTech,2017 An XRCE Query is the conjunction of a Resource, and a Predicate over the resource content and properties. The query is separated from the resource by a “?”. A Trivial Resource has a value, therefore a selection on a Trivial Resource yields a single value or none at all. A query on a non-trivial resource may yield many values. XRCE does not prescribe a format for the value of a resource, and therefore the meaning of a query is dependent on the chosen format. If a query cannot be evaluated on the value of some resource, the result is empty. Selection xrce://myhouse/floor/2/bedroom/jeanclaude/LightStatus? xrce://myhouse/floor/*/bedroom/*/LightStatus?{luminosity>0} xrce://myhouse/floor/*/bedroom/*/LightStatus?{property.durability = transient && luminosity>0} xrce://myhouse/floor/1/musicroom/LightStatus/ID12345?{inRange(property.location, someLocation, radius)} xrce://myhouse/floor/1/musicroom/LightStatusπ{deviceId, property.location} For example: these are legal XRCE Queries
  • 31. CopyrightPrismTech,2017 The XRCE protocol specifies how the XRCE global data space can be implemented “on the wire”. It is still evolving, but we do not expect any major changes between now and the final specification. XRCE Protocol
  • 32. CopyrightPrismTech,2017 XRCE messages are all composed by a single byte header and a body. Message Structure 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |R|S|X|MessageId| +---------------+ | Body | +---------------+ R: This is the reliability bit and is set to 1 for message that are intended to be reliable S: This is the synchronicity bit and is set to 1 to indicate synchronous messages requiring the receiving party to respond immediately X: An extension bit used by some messages to indicate additional fields are present
  • 33. CopyrightPrismTech,2017 XRCE always uses little-endian for its data and primarily uses variable-length encoding (VLE) to save in the common cases VLE is a value-based encoding, agnostic to the word size used to represent the number in memory and encodes 7 bits per byte Encoding [0016 .. 7f16] [8016 .. ff16] ; [0016 .. 7f16] [8016 .. ff16] ; [8016 .. ff16] ; [0016 .. 7f16] &c. 0 .. 27-1 27 .. 214-1 214 .. 221-1 &c. ⬄
  • 34. CopyrightPrismTech,2017 The source address of each message is assumed to be a unique address of the sender. Data sent to such an address will in principle arrive at the sender (or be lost). Each node has a unique ID (e.g., a UUID) that remains the same even when it changes network address. The ID is only exchanged for session establishment. Addressing
  • 36. CopyrightPrismTech,2017 Scouting is the discovery of other nodes in the network. If the transport has its own discovery (Bluetooth for example), the scouting phase may be skipped. Scouting
  • 37. CopyrightPrismTech,2017 Scout is a request for other nodes in the network to send a Hello. MASK encodes the type: broker, durability, peer, client, … it is requesting a response from. Hello informs nodes of locators, properties. MASK encodes the type of the node itself. The locators allow a node to specify additional addresses at which it is reachable, e.g., multicast addresses. When a client sends “SCOUT broker” brokers would respond with HELLO. Armed with this knowledge, the client can try to open a session with a broker. Scout and Hello 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |0|1|0| SCOUT | +---------------+ ~ MASK ~ +---------------+ 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |0|0|P| HELLO | +---------------+ ~ MASK ~ +---------------+ ~ [Locator] ~ +---------------+ ~ [Property] ~ +---------------+ P is set iff properties present
  • 39. CopyrightPrismTech,2017 For two nodes to communicate in XRCE, they need to establish a session. With a session comes the ability to publish or subscribe. Included in the session are conduits, pairs of logical reliable and best-effort channels for data. A “client” typically only needs a single session, with its broker. In mesh networks, it is expected that brokers would typically need sessions with other brokers as well. The conduits can be implemented over any transport, e.g., TCP (would make sense in client/broker over Ethernet), multicast UDP (e.g., peer-to-peer), Bluetooth, … Session Management
  • 40. CopyrightPrismTech,2017 Open is a request to establish a session. • VMAJ/VMIN is protocol version • PID is the requesting node’s unique id (PID is short for peer id) • SN-Length represent the number of bytes used to represent sequence numbers for this session • lease_period is the lease duration expression in units of 100ms • auth is a sequence of bytes for authentication data Opening a Session 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |0|1|0| OPEN | +---------------+ | VMAJ | VMIN | +---------------+ | SN-Length | +---------------+ ~ PID ~ +---------------+ ~ lease_period ~ +---------------+ ~ auth ~ +---------------+
  • 41. CopyrightPrismTech,2017 Accept is the successful response to an Open. • OPID is the requesting node’s unique id • APID is the accepting node’s unique id • lease_period is the lease duration expression in units of 100ms • auth is a sequence of bytes for authentication data Opening a session 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |0|1|0| ACCEPT | +---------------+ ~ OPID ~ +---------------+ ~ APID ~ +---------------+ ~ lease_period ~ +---------------+ ~ auth ~ +---------------+
  • 42. CopyrightPrismTech,2017 To reject a request for opening a session and to explicitly close an existing session, a Close message is used. • OPID is the sending node’s unique id • APID is the other node’s unique id • Reason is a one byte code for the reason Rejecting or closing a session 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |0|1|0| CLOSE | +---------------+ ~ OPID ~ +---------------+ ~ APID ~ +---------------+ | Reason | +---------------+
  • 43. CopyrightPrismTech,2017 To reject a request for opening a session and to explicitly close an existing session, a Close message is used. - PID is the sending node’s unique id - Reason is a one byte code for the reason Session FSM
  • 45. CopyrightPrismTech,2017 Resources, publications, subscriptions, selections all need to be declared before one can publish or read/receive data. Declarations are buffered until committed. Resources may be declared multiple times, but they may also be declared once and then used by everyone. Combined with the numerical ids for the resources, this allows small clients to use only a few small messages to declare their publications/subscriptions. Declarations
  • 46. CopyrightPrismTech,2017 Resources and Selections are uniquely identified by numerical ids to save space on the wire. The relationship between a Resource ID and a Resource is established when declaring a resource. Resource IDs are global, everyone in the XRCE domain must use the same mapping of ID to Resource. RIDs are positive, even integers. Resource IDs
  • 47. CopyrightPrismTech,2017 Subscribing to a trivial resource can be done using the Resource ID. Subscribing to a more complicated selection requires choosing a Selection ID. Applications can each define their own selections, so these are in principle local to the session. This allows a broker to send just the data matching the selection to a client, relieving the client from knowing all the matching resource ids and performing the matching itself. When a broker is pushing data to multiple clients the Selection IDs may be different even for the same selection. The broker would then have to send the data multiple times, even if the clients support multicast. Hence we allow rebinding Selection IDs. Selection IDs
  • 48. CopyrightPrismTech,2017 The general Declare message is a container for a list of Declarations. • it is always reliable • SN is sequence number Note that it is very similar to regular data. The use of a separate message kind avoids the use of predefined resource ids. Declare message 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |1|S|X| DECLARE | +---------------+ ~ SN ~ +---------------+ ~ [Declaration] ~ +---------------+
  • 49. CopyrightPrismTech,2017 This declares that (numerical) resource id RID corresponds to Resource. Resource need not be trivial. • P is set iff properties present • The properties are a sequence of name-value pairs • In the absence of properties, the resource has a default QoS, corresponding to DDS reliable, keep- last-1, volatile Declare: Resource 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |P|C|X| RESOURCE| +---------------+ ~ RID ~ +---------------+ ~ Resource ~ +---------------+ ~ [Property] ~ +---------------+
  • 50. CopyrightPrismTech,2017 Essentially the same message can also be used to delete resources from the system. This is propagated to all applications currently interacting with the resource. Deleting a non-trivial resource has the effect of deleting all resources currently matching with the expression. Declare: Delete Resource 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |P|1|X| RESOURCE| +---------------+ ~ RID ~ +---------------+ ~ Resource ~ +---------------+ ~ [Property] ~ +---------------+
  • 51. CopyrightPrismTech,2017 This declares the sender as a publisher of values for the Resource/Selection identified by RID/SID, or cancels a previous declaration. • P is set iff properties are included • C is 0 if it is a declaration, 1 if it is the cancellation of a declaration Declare: Publication 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |P|C|X| PUB | +---------------+ ~ RID | SID ~ +---------------+ ~ [Property] ~ +---------------+
  • 52. CopyrightPrismTech,2017 This declares a subscription to the resource/selection identified by RID/SID. 
 SubMode determines whether it is a pull/push/ periodic pull/periodic push/push-pull subscriber. Periodic push tells the publisher that the subscriber will listen for data every X seconds; periodic pull that it will request data every X seconds. Push-pull means a notification of data is pushed, but the data itself is not. • P is set iff properties are included • C is 0 if it a subscription is taken, 1 if it is being cancelled Declare: Subscription 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |P|C|X| SUB | +---------------+ ~ RID | SID ~ +---------------+ ~ SubMode ~ +---------------+ ~ [Property] ~ +---------------+
  • 53. CopyrightPrismTech,2017 This declares a selection (i.e., a query) and associates it with a Selection ID. To actually subscribe to a selection, one must still send a Sub declaration. • P is set iff properties are given • G is set iff SID is a global identifier for this selection, rather than one bound to this session Declare: Selection 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |P|C|G|SELECTION| +---------------+ ~ SID ~ +---------------+ ~ Query ~ +---------------+ ~ [Property] ~ +---------------+
  • 54. CopyrightPrismTech,2017 This defines a new binding for the given selection, i.e., an alias for the old selection ID. This allows the sender to use NewXID instead of OldXID. Its primary purpose is to allow multicast push to clients that chose different IDs for the same selection. • G is set iff the NewXID is a global id (similar to G in Selection declaration). Declare: Selection ID binding 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |G|X|X| IDBIND | +---------------+ ~ OldXID ~ +---------------+ ~ NewXID ~ +---------------+
  • 56. CopyrightPrismTech,2017 All data messages and declarations are transported over a conduit, which is a pair of a reliable and a best-effort channel in a session. Multiple conduits may be used in parallel, to avoid head-of-line blocking and to allow multicasting across session in addition within a session. The default conduit 0 is used unless messages are prefixed with a special Conduit message. Conduits
  • 58. CopyrightPrismTech,2017 The best-effort channel implementation is relatively straight forward. The XRCE runtime has to make a reasonable effort to send the message over the associated transport and ensure that messages, whilst may be dropped, shall never be delivered to receive out of order. Best-effort Channel Implementation
  • 60. CopyrightPrismTech,2017 The Petri Net describes the behaviour of a Reliable Channel with a buffer of n places. It is worth to mention that the specification assumes that a NACK can only be received for the head of the queue. This may seem a restriction, but in reality it only means that when receiving a NACK for message with sequence number k the previous messages have been acknowledged. Reliable Channel Behaviour
  • 61. CopyrightPrismTech,2017 Conduit is used to specify that the next messages in the packet (or the next message for non-packet-based transports) are sent over conduit CID instead of over the default conduit. Z=1 implies a compact representation where HL bits encode Id-1, i.e. 00 => Id = 1 Conduit selection 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |Z|H|L| CONDUIT | +---------------+ | Id | +-+-+-+-+-+-+-+-+
  • 62. CopyrightPrismTech,2017 Synch is used to inform the recipient of the range of sequence numbers available for retransmission on the reliable channel of the conduit. It also allows informing a late joiner of the current sequence number in the channel. • SN is the lowest sequence number available • N is the number of messages available; N = 0 is allowed If S is set, requires an immediate ACK/ ACKNACK response. Synchronising a Conduit 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |1|S|0| SYNCH | +---------------+ ~ SN ~ +---------------+ | N | +---------------+
  • 63. CopyrightPrismTech,2017 ACKNACK with M=0 (no mask) is used to acknowledge all reliable messages on conduit CID up to but not including SN. ACKNACK with M=1 (mask included) is used to acknowledge all reliable messages on conduit CID up to but not including SN, and furthermore request a retransmission of message number SN and those for which a bit is set in Mask. Bit 0 in Mask corresponds to SN+1, Bit 1 to SN+2, &c. ACK/NACK 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |0|0|M| ACKNACK | +---------------+ ~ SN ~ +---------------+ ~ Mask ~ +---------------+
  • 65. CopyrightPrismTech,2017 XRCE allows writing a resource w/o any kind of prior registration or discovery The cost of this abstraction is that the full-resource name has to be sent on the wire One Shot Write 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |R|S|X| WDATA | +---------------+ ~ SN ~ +---------------+ ~ Resource ~ +---------------+ ~ Payload ~ +---------------+
  • 66. CopyrightPrismTech,2017 XRCE provides built-in support for very efficiently sending a sample or a batch of samples. Notice that for a single sample the minimum overhead is of only 3 bytes. - P is set iff PRID is present. - PRID is the ID of the trivial resource for which this is a value, for cases where a selection is used, so that the subscriber knows the resource the data belongs to for BDATA, P set => a sequence of (RID, Payload) pairs, else just a sequence of Payloads. Note that these forms are the only messages for streaming data, and are also used for the response to a pulling read. Streaming Write 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |R|S|P| SDATA | +---------------+ ~ SN ~ +---------------+ ~ RID | SID ~ +---------------+ ~ PRID ~ +---------------+ ~ [Payload] ~ +---------------+ 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |R|S|P| BDATA | +---------------+ ~ SN ~ +---------------+ ~ RID | SID ~ +---------------+ ~[RID,[Payload]]~ +---------------+
  • 67. CopyrightPrismTech,2017 Fragmentation 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |1|N|X| FRAG | +-+-+-----------+ ~ SN-Base ~ +---------------+ ~ Total-Frags ~ +---------------+ XRCE needs to support small MTUs, therefore, it needs to automatically fragment larger payloads. Fragmentation in XRCE is done by prefixing a WDATA or SDATA with a small message (in the same packet) • SN-Base is first sequence number of fragmented payload, present only if N=1 • N=1 indicates that the total number of fragments following this packet is known. • fragments must be ~MTU large
  • 69. CopyrightPrismTech,2017 Pulling data 7 6 5 4 3 2 1 0 +-+-+-+-+-+-+-+-+ |1|S|N| PULL | +---------------+ ~ SN ~ +---------------+ ~ RID | SID ~ +---------------+ ~ PullID ~ +---------------+ ~ MaxSamples ~ +---------------+ XRCE supports both push and pull modes. In a pull mode, the broker maintains the data and the client explicitly pulls the data towards it. • Pull is always reliable • N is set iff PullID and MaxSamples present • PullID is “like” a cursor in an RDMS, MaxSamples is the maximum number of samples to be returned at a time. A second Pull with the same ID will continue enumerating data from the set. The combination of PullID and N allow allowing iterating through large data sets in nested loops.
  • 71. CopyrightPrismTech,2017 • 1 byte header including message code • Message pipelining and batching • In order delivery • Batched ACK/NACK • Durability • Secure Multicast (from DDS-Security) • Can negotiate Push/Pull/Push-Pull/Periodic Push / Periodic Pull • Will run w/o IP XRCE vs. CoAP XRCE CoAP Protocol Overhead 1 byte header including message code 1 byte header + 1 byte message code Delivery Ordered, and fragmentation support No ordering guarantees Batching Message pipelining and batching ACK/NACK Batched ACK/NACK One ACK per message Durability Durability Interaction Model Push/Pull/Push-Pull/Periodic Push / Periodic Pull Pull Transport No assumptions Assume IP/based Fan-out Can leverage multicast thus sending a single message regardless of the size of the group 1 message per observer, as a consequence the load on the server and the network grows linearly
  • 73.
  • 74.
  • 76. CopyrightPrismTech,2017 Defines the most wire/ power/memory efficient protocol in the market to provide DDS connectivity to extremely constrained targets DDS-XRCE 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 …
  • 77. CopyrightPrismTech,2017 Supports peer-to-peer as well as broker-based communication Provides reliability and fragmentation above packet- oriented best-effort transports Can leverage multicast 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 …
  • 78. CopyrightPrismTech,2017 Current prototype runs on 8-bit micro-controllers and takes in 1 KByte of RAM and has wire-overhead of 3-4 bytes for data samples 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 …