DDS QoS Unleashed Angelo Corsaro, Ph.D. PrismTech Chief Technology Officer

advertisement
Splice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS
DDS QoS Unleashed
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Angelo Corsaro, Ph.D.
Chief Technology Officer
PrismTech
OMG DDS SIG Co-Chair
angelo.corsaro@prismtech.com
Splice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ Recap of DDS Basics
‣ QoS Model
‣ DDS QoS
‣ QoS Patterns
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Agenda
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
The OMG DDS Standard
‣ Introduced in 2004 to address the Data
distribution challenges typical of Defense
and Aerospace Applications
‣ Key requirement for the standard were
high performance and scalability from
embedded to ultra-large-scale
deployments
‣ Today recommended by key
administration worldwide and widely
adopted well beyond Aerospace and
Defense in domains, such as, Automated
Trading, Simulations, SCADA, Telemetry, etc.
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
The OMG DDS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DDS v1.2 API Standard
Application
‣ Language Independent, OS and
Object/Relational Mapping
HW architecture independent
‣ DCPS. Standard API for Data-
Centric, Topic-Based, Real-Time
Publish/Subscribe
‣ DLRL. Standard API for creating
Object Views out of collection of
Topics
Data Local Reconstruction Layer (DLRL)
Ownership
Durability
Content
Subscription
Minimum Profile
Data Centric Publish/Subscribe (DCPS)
Real-Time Publish/Subscribe Protocol
DDS Interoperability Wire Protocol
UDP/IP
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
The OMG Data Distribution Service
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DDSI/RTPS v2.1 Wire Protocol
Standard
Application
Object/Relational Mapping
‣ Standard wire protocol allowing
interoperability between different
implementations of the DDS
standard
‣ Interoperability demonstrated
among key DDS vendors in March
2009
Data Local Reconstruction Layer (DLRL)
Ownership
Durability
Content
Subscription
Minimum Profile
Data Centric Publish/Subscribe (DCPS)
Real-Time Publish/Subscribe Protocol
DDS Interoperability Wire Protocol
UDP/IP
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
The OMG Data Distribution Service
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
How Does it
Works?!?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ DDS is based around the
en as a
e
s
e
b
n
a
c
Note: DDS
INDA
L
e
h
t
f
o
n
relaxatio
model
n
o
i
t
a
n
i
coord
Brokers
concept of a fully distributed
Global Data Space (GDS)
‣ Applications can autonomously
and asynchronously read/
written data in the GDS
DDS
Global Data Space
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
How Does it Work?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Brokers
‣ Publishers and
Subscribers can
join and leave the
GDS at any time
DDS
Publisher
Global Data Space
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
How Does it Work?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Brokers
Publisher
Subscriber
‣ Publishers and
Subscribers can
join and leave the
GDS at any time
DDS
Publisher
Publisher
Subscriber
Global Data Space
Subscriber
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
How Does it Work?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ Publishers and
Subscribers express
their intent to
produce/consume
specific type of data,
e.g., Topics
Brokers
Publisher
DDS
Publisher
Publisher
Subscriber
Subscriber
Global Data Space
Subscriber
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
How Does it Work?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ Subscriptions are
matched by taking
into account topics
(name, data type and
QoS)
Brokers
Publisher
DDS
Publisher
Publisher
Subscriber
Subscriber
Global Data Space
Subscriber
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
How Does it Work?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Brokers
Publisher
Subscriber
‣ Subscriptions are
dynamically matched
and Data flows from
Publisher to
Subscribers
DDS
Publisher
Publisher
Subscriber
Global Data Space
Subscriber
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
How Does it Work?
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Brokers
Publisher
Subscriber
‣ Subscriptions are
dynamically matched
and Data flows from
Publisher to
Subscribers
DDS
Publisher
Publisher
Subscriber
Global Data Space
Subscriber
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
How Does it Work?
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Defining Data
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Topic:
Track, UFO, AirCraft, ...
‣ Unit of information
exchanged between
Publisher and Subscribers.
‣ An association between a
unique name, a type and a
QoS setting
Name
Type
TrackedObject
Topic
QoS
{
}
Reliability
Deadline,
Priority
Transient,
...
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Topic -- the unit of information
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Topic Type:
‣ Type describing the data
associated with one or more
Topics
‣ A Topic type can have a key
represented by an arbitrary
number of attributes
‣ Expressed in IDL (or XML)
struct TrackedObject {
long
oId;
long
x;
long
y;
long
size;
};
#pragma keylist TrackedObject oId
struct FlightPlan {
string code;
long
trackId;
string origin;
string dest;
sequence<Coord> trajectory;
};
#pragma keylist FlightPlan code
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Topic -- the unit of information
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Topic Instances
‣ Each key value identifies a unique Topic Instance
‣ Topic’s instance lifetime can be explicitly
managed in DDS
Topic Samples
struct TrackedObject {
long
oId;
long
x;
long
y;
long
size;
};
#pragma keylist TrackedObject oId
‣ The values assumed by a Topic Instance over time
are referred as Instance Sample
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
DDS Topic Instances and Samples
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Topics
FlyingCar
Instances
UFO
Airfraft
Samples
ti
tj
tnow
time
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Topic/Instances/Samples Recap.
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
X0
X0 <= X <= X1
‣ DDS allows the use of a subset of
SQL92 to specify content-filtered
Topics
‣ Content filters can be applied on
Y0
the entire content of the Topic
Type
Y0 <= Y <= Y1
‣ Content filters are applied by DDS
Y1
each time a new sample is
produced/delivered
(x BETWEEN (RANGE x0 AND x1))
AND
(y BETWEEN (RANGE y0 AND y1))
X1
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Content Filtering
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
X0
X0 <= X <= X1
‣ DDS allows the use of a subset of
SQL92 to specify content-filtered
Topics
‣ Content filters can be applied on
Y0
the entire content of the Topic
Type
Y0 <= Y <= Y1
‣ Content filters are applied by DDS
Y1
each time a new sample is
produced/delivered
(x BETWEEN (RANGE x0 AND x1))
AND
(y BETWEEN (RANGE y0 AND y1))
X1
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Content Filtering
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Quality of Service
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ QoS-Policies provide
control over local and
end-to-end properties of
DDS entities
‣ Local properties
controlled by QoS are
related resource usage
Type Matching
QoS matching
QoS
QoS
QoS
QoS
QoS
QoS
QoS
Topic
Name
Publisher
...
DataWriter
writes
Type
reads
Subscriber
DataReader
...
...
DomainParticipant
DataWriter
writes
Type
reads
DataReader
DomainParticipant
Name
Topic
QoS
QoS
QoS
‣ End-to-end properties controlled by QoS are related to temporal and spatial
aspects of data distribution
‣ Some QoS-Policies are matched based on a Request vs. Offered Model thus
QoS-enforcement
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
QoS Model
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
QoS Policy
Applicability
RxO
Modifiable
DURABILITY
T, DR, DW
Y
N
DURABILITY
SERVICE
T, DW
N
N
LIFESPAN
T, DW
N/A
Y
HISTORY
T, DR, DW
N
N
P, S
Y
N
T, DR, DW
Y
N
P, S
N
Y
DESTINATION
ORDER
T, DR, DW
Y
N
OWNERSHIP
T, DR, DW
Y
N
OWNERSHIP
STRENGTH
DW
N/A
Y
PRESENTATIO
N
RELIABILITY
PARTITION
DEADLINE
T, DR, DW
Y
Y
LATENCY
BUDGET
T, DR, DW
Y
Y
T, DW
N/A
Y
TRANSPORT
PRIORITY
QoS Policy
Data
Availability
Applicability
RxO
Modifiable
TIME BASED
FILTER
DR
N/A
Y
RESOURCE
LIMITS
T, DR, DW
N
N
USER DATA
DP, DR, DW
N
Y
TOPIC DATA
T
N
Y
GROUP DATA
P, S
N
Y
T, DR, DW
Y
N
WRITER DATA
LIFECYCLE
DW
N/A
Y
READER DATA
LIFECYCLE
DR
N/A
Y
Resources
ENTITY
FACTORY
Data
Delivery
LIVELINESS
Data
Timeliness
Configuratio
n
Lifecycle
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Which properties does QoS controls?
TimeBasedFilter
Deadline
Throughput
Data
Latency
LatencyBudget
History
TransportPriority
Reliability
Data Delivery
Control over data distribution reliability
Control over data ordering
Control over presentation
Data
Availability
Ownership
Strength
Ownership
Control over data queueing
Control over data persistency
Control over data sources hot-swap
Control over Latency/Throughput tradeoff
Control over data latency
Control over data priority
Presentation
Lifespan
Destination
Order
Durability
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Which properties does QoS controls?
TimeBasedFilter
Deadline
Throughput
Data
Latency
LatencyBudget
History
TransportPriority
Lifespan
Data
Availability
Ownership
Strength
Ownership
Durability
Control over data queueing
Control over data persistency
Control over data sources hot-swap
Control over Latency/Throughput tradeoff
Control over data latency
Control over data priority
Reliability
Presentation
Data Delivery
Control over data distribution reliability
Control over data ordering
Control over presentation
Destination
Order
DDS provides programmatic QoS-driven
support for configuring the most important
properties of data distribution!
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ Design by contract was popularized
by Bertrand Meyer as a way of
making explicit the pre/post
condition and invariants associated
with methods and the state of a
class
‣ DDS QoS allows to extend design by
contract to non-functional aspects of
an application
class ACCOUNT create
make
feature
balance: INTEGER
owner: PERSON
minimum_balance: INTEGER is 1000
deposit (sum: INTEGER) is
-- Deposit sum into the account.
require
sum >= 0
do
add(sum)
ensure
balance = old balance + sum
end
--- Other methods
invariant
balance >= minimum_balance
end -- class ACCOUNT
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Design by Contract in DDS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Capturing System Invariants
‣ The weakest precondition, meaning the weakest QoS, required
by the system to properly perform should be captured as QoS
attached to the information model, e.g. Topics.
Refining Invariants
‣ QoS associated with the information model, should be only
strengthened by overriding QoS at a DataWriter level
‣ QoS should never be weakened by overriding it at a
DataReader level
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Design by Contract in DDS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
QoS Contract Enforcements
‣ The RxO model ensures that unless QoS are matched no
actual subscription will be established
‣ This ensure that only if QoS contracts are satisfied
communication will be established
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Design by Contract in DDS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
LIVELINESS
HISTORY
OWENERSHIP
LIFESPAN
OWN. STRENGTH
DEST. ORDER
DEADLINE
PARTITION
LATENCY BUDGET
PRESENTATION
TRANSPORT PRIO
RELIABILITY
TIME-BASED FILTER
USER DATA
RESOURCE LIMITS
TOPIC DATA
GROUP DATA
DW LIFECYCLE
DR LIFECYCLE
ENTITY FACTORY
RxO QoS
Local QoS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
LIVELINESS
HISTORY
OWENERSHIP
LIFESPAN
OWN. STRENGTH
DEST. ORDER
DEADLINE
PARTITION
Topic
PRESENTATION
LATENCY BUDGET
TRANSPORT PRIO
RELIABILITY
TIME-BASED FILTER
USER DATA
RESOURCE LIMITS
TOPIC DATA
GROUP DATA
DW LIFECYCLE
DR LIFECYCLE
ENTITY FACTORY
RxO QoS
Local QoS
Not Applicable
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
LIVELINESS
HISTORY
OWENERSHIP
LIFESPAN
OWN. STRENGTH
DEST. ORDER
DEADLINE
PARTITION
DataWriter
PRESENTATION
LATENCY BUDGET
TRANSPORT PRIO
RELIABILITY
TIME-BASED FILTER
USER DATA
RESOURCE LIMITS
TOPIC DATA
GROUP DATA
DW LIFECYCLE
DR LIFECYCLE
ENTITY FACTORY
RxO QoS
Local QoS
Not Applicable
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
LIVELINESS
HISTORY
OWENERSHIP
LIFESPAN
OWN. STRENGTH
DEST. ORDER
DEADLINE
PARTITION
PRESENTATION
DataReader
LATENCY BUDGET
TRANSPORT PRIO
RELIABILITY
TIME-BASED FILTER
USER DATA
RESOURCE LIMITS
TOPIC DATA
GROUP DATA
DW LIFECYCLE
DR LIFECYCLE
ENTITY FACTORY
RxO QoS
Local QoS
Not Applicable
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
LIVELINESS
HISTORY
OWENERSHIP
LIFESPAN
OWN. STRENGTH
DEST. ORDER
DEADLINE
PARTITION
Publisher
PRESENTATION
LATENCY BUDGET
TRANSPORT PRIO
RELIABILITY
TIME-BASED FILTER
USER DATA
RESOURCE LIMITS
TOPIC DATA
GROUP DATA
DW LIFECYCLE
DR LIFECYCLE
ENTITY FACTORY
RxO QoS
Local QoS
Not Applicable
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
LIVELINESS
HISTORY
OWENERSHIP
LIFESPAN
OWN. STRENGTH
DEST. ORDER
DEADLINE
PARTITION
Subscriber
PRESENTATION
LATENCY BUDGET
TRANSPORT PRIO
RELIABILITY
TIME-BASED FILTER
USER DATA
RESOURCE LIMITS
TOPIC DATA
GROUP DATA
DW LIFECYCLE
DR LIFECYCLE
ENTITY FACTORY
RxO QoS
Local QoS
Not Applicable
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
LIVELINESS
HISTORY
OWENERSHIP
LIFESPAN
OWN. STRENGTH
DEST. ORDER
DEADLINE
PARTITION
Domain
Participant
PRESENTATION
LATENCY BUDGET
TRANSPORT PRIO
RELIABILITY
TIME-BASED FILTER
USER DATA
RESOURCE LIMITS
TOPIC DATA
GROUP DATA
DW LIFECYCLE
DR LIFECYCLE
ENTITY FACTORY
RxO QoS
Local QoS
Not Applicable
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Organizing Data
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ The Partition QoS Policy
can be used as subjects
organizing the flow of data
‣ The Partition QoS Policy is
used to connect
Publishers/Subscribers to a
Partitions’ List which might
also contain wildcards, e.g.
tracks.*
QoS Domain
Policy Applicability
PARTITION
P, S
RxO
Modifiable
N
Y
Subscriber
Publisher
"tracks.kfo"
"tracks.ufo"
Subscriber
Publisher
‣ Topics are published and
subscribed across one or
more Partitions
Subscriber
Publisher
Partition
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Partitions QoS
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Example
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DataReader
<TrakedObject>
DataWriter
<TrakedObject>
"airspace.kfo.aircrafts"
Subscriber
DataReader
<TrakedObject>
Publisher
AirCraft
DataWriter
<FlightPlan>
FlightPlan
Subscriber
DataReader
<FlightPlan>
"airspace.tfo"
DataWriter
<FlightPlan>
Publisher
Tracks
Subscriber
DataReader
<Tracks>
"airspace.kfo.flyingcars"
DataWriter
<TrakedObject>
Subscriber
Publisher
FlyingCar
FlightPlan
DataWriter
<FlightPlan>
Global Data Space (GDS)
Partition
Topic
DataReader
<TrackedObject>
DataReader
<FlightPlan>
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DataReader
<TrakedObject>
DataWriter
<TrakedObject>
"airspace.kfo.aircrafts"
Subscriber
DataReader
<TrakedObject>
Publisher
AirCraft
DataWriter
<FlightPlan>
FlightPlan
Subscriber
DataReader
<FlightPlan>
"airspace.tfo"
DataWriter
<FlightPlan>
Publisher
Tracks
Subscriber
DataReader
<Tracks>
"airspace.kfo.flyingcars"
DataWriter
<TrakedObject>
Subscriber
Publisher
FlyingCar
FlightPlan
DataWriter
<FlightPlan>
“airspace.*”
Global Data Space (GDS)
Partition
Topic
DataReader
<TrackedObject>
DataReader
<FlightPlan>
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DataReader
<TrakedObject>
DataWriter
<TrakedObject>
"airspace.kfo.aircrafts"
Subscriber
DataReader
<TrakedObject>
Publisher
AirCraft
DataWriter
<FlightPlan>
FlightPlan
Subscriber
DataReader
<FlightPlan>
"airspace.tfo"
DataWriter
<FlightPlan>
Publisher
Tracks
Subscriber
DataReader
<Tracks>
"airspace.kfo.flyingcars"
DataWriter
<TrakedObject>
Subscriber
Publisher
FlyingCar
FlightPlan
DataWriter
<FlightPlan>
“airspace.kfo.*”
Global Data Space (GDS)
Partition
Topic
DataReader
<TrackedObject>
DataReader
<FlightPlan>
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Controlling
Reliability
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
QoS Policy
RELIABILITY
The RELIABILITY QoS indicate the
level of guarantee offered by the
DDS in delivering data to
subscribers.
Applicability
RxO
Modifiable
T, DR, DW
Y
N
QoS matching
QoS
QoS
QoS
Topic
QoS
QoS
Name
DataWriter
Publisher
writes
...
Type
reads
DataReader
...
...
DataWriter
writes
Type
reads
DataReader
Name
Topic
QoS
QoS
QoS
QoS matching
Subscriber
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Reliability QoS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
QoS Policy
Possible variants are:
RELIABILITY
Applicability
RxO
Modifiable
T, DR, DW
Y
N
‣ Reliable. In steady-state the
middleware guarantees that all
samples in the DataWriter
history will eventually be
delivered to all the DataReader
QoS matching
QoS
Topic
QoS
QoS
Name
DataWriter
Publisher
writes
...
Type
reads
DataReader
...
...
DataWriter
‣ Best Effort. Indicates that it is
acceptable to not retry
propagation of any samples
QoS
QoS
writes
Type
reads
DataReader
Name
Topic
QoS
QoS
QoS
QoS matching
Subscriber
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Reliability QoS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
QoS Policy
The HISTORY QoS policy
controls whether the DDS should
deliver only the most recent
value, attempt to deliver all
intermediate values, or do
something in between.
HISTORY
Applicability
RxO
Modifiable
T, DR, DW
N
N
QoS matching
QoS
QoS
QoS
Topic
QoS
QoS
Name
DataWriter
Publisher
writes
...
Type
reads
DataReader
...
...
DataWriter
writes
Type
reads
DataReader
Name
Topic
QoS
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
History QoS
How many data samples should I keep?
QoS
QoS
QoS matching
Subscriber
attempt to keep the most recent
“depth” samples of each instance
of data identified by its key
‣ Keep All. The DDS will attempt
to keep all the samples of each
instance of data identified by its
key.
DataReader
‣ Keep Last. The DDS will only
DataReader
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
The policy can be configured to provide
the following semantics:
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
History QoS
How many data samples should I keep?
1
1
2
1
3
1
History Depth = 1 (DDS Default)
1
1
1
2
1
3
1
4
1
5
2
1
2
2
2
3
2
4
2
5
3
1
3
2
3
3
3
4
3
5
History Depth = 5
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Topic Used in next section.
struct Counter {
int cID;
int count;
};
#pragma keylist Counter cID
History in
Action
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
History Depth = 1
(DDS Default)
DataReader
Network
1
1
2
1
1
2
3
1
2
2
Topic
DataReader Cache
2
3
History Depth = 1
(DDS Default)
1
2
2
3
3
1
DataWriter
Topic
DataWriter Cache
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
History Depth = 1
(DDS Default)
DataReader
Network
History Depth = 1
(DDS Default)
1
2
1
2
2
2
2
3
3
1
3
1
Topic
DataReader Cache
2
3
DataWriter
Topic
DataWriter Cache
Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the
DataWriter to matched DataReaders
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
History Depth = 1
(DDS Default)
DataReader
Network
History Depth = 1
(DDS Default)
1
2
1
2
2
3
2
3
3
1
3
1
Topic
DataReader Cache
DataWriter
Topic
DataWriter Cache
Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the
DataWriter to matched DataReaders
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
History = Keep All
DataReader
Network
1
1
2
1
1
2
3
1
2
2
Topic
DataReader Cache
2
3
History Depth = 1
(DDS Default)
1
2
2
3
3
1
DataWriter
Topic
DataWriter Cache
Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the
DataWriter to matched DataReaders
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
History = Keep All
DataReader
Network
History Depth = 1
(DDS Default)
1
1
1
2
1
2
2
1
2
2
2
3
3
1
3
1
2
Topic
DataReader Cache
3
DataWriter
Topic
DataWriter Cache
Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the
DataWriter to matched DataReaders
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
History = Keep All
DataReader
Network
1
1
1
2
2
1
2
2
3
1
2
3
Topic
DataReader Cache
History Depth = 1
(DDS Default)
1
2
2
3
3
1
DataWriter
Topic
DataWriter Cache
Note: The Reliability QoS controls wether data is sent reliably, or best-effort, from the
DataWriter to matched DataReaders
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
The reliability with which data is delivered to applications is
impacted in DDS by the following qualities of service
‣ RELIABILITY
‣ BEST_EFORT
‣ RELIABLE
‣ HISTORY
‣ KEEP_LAST (K)
‣ KEEP_ALL
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Putting it All Together
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ Theoretically, the only way
to assure that an
application will see all the
samples produced by a
writer is to use RELIABLE
+KEEP_ALL. Any other
combination could induce to
samples being discarded on
the receiving side because of
the HISTORY depth
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Putting it All Together
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ The RESOURCE_LIMITS QoS should always be taken in to
account when dealing with the reliable data distribution since
it impacts the memory usage (and potentially the DW blocking
probability)
‣ Three values have to be provided:
‣ max_samples_per_instance (>= history depth)
‣ max_samples (>= max_samples_per_instance)
‣ max_instances
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Reliability Gotchas
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Example
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Type
TrackedObject
Track
FlightPlan
Name
Name
Topic
QoS
{
}
BEST_EFFORT
KEEP_LAST(1)
RESOURCE_LIMITS
Type
TrackedObject
Topic
QoS
{
}
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Tracks and Flight Plans
RELIABLE
KEEP_LAST(1)
RESOURCE_LIMITS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
AerospaceViolation
struct ASViolation {
long
oId;
string sign;
long
vcode;
};
#pragma keylist ASViolation oId sign
Name
Type
ASViolation
Topic
QoS
{
}
RELIABLE
KEEP_ALL
RESOURCE_LIMITS
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Aerospace Violations
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Controlling
Real-Time Properties
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
QoS Policy
DEADLINE
Applicability
RxO
Modifiable
T, DR, DW
Y
Y
QoS matching
The DEADLINE QoS policy allows
to define the maximum interarrival time between data
samples
QoS
QoS
QoS
Topic
QoS
QoS
Name
DataWriter
Publisher
writes
...
Type
reads
DataReader
...
...
DataWriter
writes
Type
reads
DataReader
Name
Topic
QoS
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Deadline QoS
You can’t be later than...
QoS
QoS
QoS matching
Subscriber
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ DataWriter indicates that the application commits to write a
new value
at least once every deadline period
‣ DataReaders are notified by the DDS when the DEADLINE QoS
contract is violated
Publisher
Subscriber
Deadline
Deadline
Deadline Violation
Deadline
Deadline
Deadline
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Deadline QoS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
QoS Policy
The LATENCY_BUDGET QoS policy
specifies the maximum acceptable
delay from the time the data is
written until the data is inserted in the
receiver's application-cache
Applicability
RxO
Modifiable
T, DR, DW
Y
Y
LATENCY
BUDGET
QoS matching
QoS
QoS
QoS
Topic
QoS
QoS
Name
DataWriter
Publisher
writes
...
Type
reads
DataReader
...
...
DataWriter
writes
Type
reads
DataReader
Name
Topic
QoS
QoS
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Latency Budget QoS
I need to get there in at most...
QoS
QoS matching
Subscriber
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ The default value of the
duration is zero indicating
that the delay should be
minimized
‣ This policy is a hint to the
DDS, not something that
must be monitored or
enforced.
TBuff
Latency Budget = Latency = TBuff +T1+T2+T3
T3
T1
T2
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Latency Budget QoS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
QoS Policy
The TRANSPORT_PRIORITY
QoS policy is a hint to the
infrastructure as to how to
set the priority of the
underlying transport used to
send the data.
TRANSPORT
PRIORITY
Applicability
RxO
Modifiable
T, DW
-
Y
QoS matching
QoS
QoS
QoS
Topic
QoS
QoS
Name
DataWriter
Publisher
writes
...
Type
reads
DataReader
...
...
DataWriter
writes
Type
reads
DataReader
Name
Topic
QoS
QoS
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Transport Priority QoS
VIP Data, stay clear!
QoS
QoS matching
Subscriber
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
The real-time properties with which data is delivered to applications is impacted in DDS by the
following qualities of service:
Publisher
Subscriber
Deadline
Deadline
Deadline
Deadline
Deadline
‣ TRANSPORT_PRIORITY
‣ LATENCY_BUDGET
Deadline Violation
‣ In addition, DDS provides means for detecting performance failure, e.g., Deadline miss, by
means of the DEADLINE QoS
‣ Given a periodic task-set {T} with periods Di (with Di < Di+1) and deadline equal to the
period, than QoS should be set as follows:
‣ Assign to each task Ti a TRANSPORT_PRIORITY Pi such that Pi > Pi+1
‣ Set for each task Ti a DEADLINE QoS of Di
‣ For maximizing throughput and minimizing resource usage set for each Ti a
LATENCY_BUDGET QoS between Di /2
bound is Di-(RTT/2))
and Di/3 (this is a rule of thumb, the upper
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Putting it all Together QoS
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Example
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Type
TrackedObject
Track
FlightPlan
Name
Name
Topic
QoS
{
}
Type
TrackedObject
BEST_EFFORT
KEEP_LAST(1)
RESOURCE_LIMITS
DEADLINE (= Period)
TRANSPORT_PRIORITY
LATENCY_BUDGET (= Period/3)
Topic
QoS
{
}
RELIABLE
KEEP_LAST(1)
RESOURCE_LIMITS
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Tracks and Flight Plans
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
AerospaceViolation
struct ASViolation {
long
oId;
string sign;
long
vcode;
};
#pragma keylist ASViolation oId sign
Name
Type
ASViolation
Topic
QoS
{
}
RELIABLE
KEEP_ALL
RESOURCE_LIMITS
LATENCY_BUDGET (=0)
TRANSPORT_PRIORITY (= MAX_PRIO)
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Aerospace Violations
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Controlling the
Consistency Model
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
The DURABILITY QoS controls the data availability w.r.t. late joiners, specifically
the DDS provides the following variants:
QoS Policy
‣ Volatile. No need to keep data
instances for late joining data readers
Applicability
RxO
Modifiable
DURABILITY
T, DR, DW
Y
N
DURABILITY
SERVICE
T, DW
N
N
‣ Transient Local. Data instance
availability for late joining data reader is
tied to the data writer availability
QoS matching
QoS
Topic
QoS
outlives the data writer
QoS
Name
DataWriter
‣ Transient. Data instance availability
QoS
QoS
Publisher
writes
...
Type
reads
DataReader
...
...
DataWriter
writes
Type
reads
DataReader
Name
Topic
‣ Persistent. Data instance availability
outlives system restarts
QoS
QoS
QoS
QoS matching
Subscriber
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Durability QoS
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DataReader
DataReader
1
1
2
1
3
1
1
1
2
1
3
1
Topic
DataReader
Topic
DataReader Cache
1
1
DataReader Cache 2
1
3
1
Topic
DataReader Cache
Under an Eventual Consistency Model, DDS guarantees
that all matched Reader Caches will eventually be
identical of the respective Writer Cache
DataWriter
1
2
2
2
2
3
1
2
2
3
3
1
Topic
DDS
DataWriter Cache
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Eventual Consistency & R/W Caches
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
The DDS Consistency Model is a property that can be associated to
Topics or further refined by Reader/Writers. The property is controlled
by the following QoS Policies:
‣ DURABILITY
‣ VOLATILE | TRANSIENT_LOCAL | TRANSIENT | PERSISTENT
‣ LIFESPAN
‣ RELIABILITY
‣ RELIABLE | BEST_EFFORT
QoS Policy
Applicability
T, DR, DW
RxO
Y
Modifiable
N
T, DW
-
Y
RELIABILITY
T, DR, DW
Y
N
DESTINATION ORDER
T, DR, DW
Y
N
DURABILITY
LIFESPAN
‣ DESTINATION ORDER
‣ SOURCE_TIMESTAMP | DESTINATION_TIMESTAMP
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
QoS & Consistency Model
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY
DESTINATION_ORDER
LIFESPAN
VOLATILE
RELIABLE
SOURCE_TIMESTAMP
INF.
TRANSIENT_LOCAL
Eventual Consistency
(Reader Crash / Recovery)
RELIABLE
SOURCE_TIMESTAMP
INF.
Eventual Consistency
(Crash/Recovery)
TRANSIENT
RELIABLE
SOURCE_TIMESTAMP
INF.
Eventual Consistency
(Crash/Recovery)
PERSISTENT
RELIABLE
SOURCE_TIMESTAMP
INF.
Weak Consistency
ANY
ANY
DESTINATION_TIMESTAMP
ANY
Weak Consistency
Weak Consistency
ANY
BEST_EFFORT
ANY
ANY
ANY
ANY
ANY
N
Eventual Consistency
(No Crash / Recovery)
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
QoS & Consistency Model
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
P = {A, B}
S1
B
P1
m
A
J
F
D
C
P = {D, C, J}
P2
K
E
S = {A}
S4
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
P = {A, B}
S1
B
P1
m
A
A
J
F
D
C
P = {D, C, J}
P2
K
E
S = {A}
S4
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
P = {A, B}
S1
B
P1
A
m
A
A
J
F
D
C
P = {D, C, J}
P2
K
E
S = {A}
S4
A
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
P = {A, B}
S1
B
P1
B
A
m
A
A
J
F
D
C
P = {D, C, J}
P2
K
E
S = {A}
S4
A
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
P = {A, B}
S1
B
B
P1
A
m
A
A
J
F
D
C
P = {D, C, J}
P2
K
E
S = {A}
S4
A
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
P = {A, B}
S1
B
B
P1
A
m
S= {A, B, J}
A
A
J
F
D
S2
C
P = {D, C, J}
P2
K
E
S = {A}
S4
A
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
P = {A, B}
S1
B
B
P1
A
m
S= {A, B, J}
A
A
J
F
D
S2
C
BA
P = {D, C, J}
P2
K
E
S = {A}
S4
A
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
S1
B
B
A
m
A
S= {A, B, J}
F
S2
J
P = {D, C, J}
P2
K
D
C
BA
E
S = {A}
S4
A
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
S1
B
B
A
m
A
S= {A, B, J}
F
S2
J
P = {D, C, J}
P2
D
C
BA
S= {A, B, D, J}
K
S3
E
S = {A}
S4
A
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
S1
B
B
A
m
A
S= {A, B, J}
F
S2
JJ
P = {D, C, J}
P2
D
D
C
BA
S= {A, B, D, J}
K
S3
E
S = {A}
S4
A
JB
{A}
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
DURABILITY
RELIABILITY DESTINATION_ORDER
Eventual Consistency (Reader TRANSIENT_LOCAL
Crash / Recovery)
TRANSIENT
Eventual Consistency
(Crash/Recovery)
ANY
Weak Consistency
LIFESPAN
RELIABLE
SOURCE_TIMESTAMP
INF.
RELIABLE
SOURCE_TIMESTAMP
INF.
{B}
ANY
ANY
N
{J}
S = {A, D}
S1
B
B
A
m
A
S= {A, B, J}
F
S2
J
P = {D, C, J}
P2
D
D
C
BA
S= {A, B, D, J}
K
S3
E
S = {A}
S4
A
JB
{A}
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Example
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Type
TrackedObject
Track
FlightPlan
Name
Name
Topic
Type
QoS
{
}
TrackedObject
Topic
QoS
{
BEST_EFFORT
KEEP_LAST(1)
VOLATILE
DEST_ORDER
LIFESPAN (>= Period)
}
RELIABLE
KEEP_LAST(1)
TRANSIENT
- or - PERSISTENT
DEST_ORDER
LIFESPAN (Inf )
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Tracks and Flight Plans
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
AerospaceViolation
struct ASViolation {
long
oId;
string sign;
long
vcode;
};
#pragma keylist ASViolation oId sign
Name
Type
ASViolation
Topic
QoS
{
}
RELIABLE
KEEP_ALL
PERSISTENT
DEST_ORDER
LIFESPAN (Inf )
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Aerospace Violations
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Controlling
Replication
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Availability of data producers can be controlled via two QoS
Policies
‣ OWNERSHIP (SHARED vs. EXCLUSIVE)
‣ OWNERSHIP STRENGTH
‣ Instances of exclusively owned Topics can be modified (are
owned) by the higher strength writer
‣ Writer strength is used to coordinate replicated writers
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Availability
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
StockQuote
symbol: "MSFT"
StockQuote
StockQuote
name: "Microsoft
Corp."
StockQuote
symbol:
exchange:
"NASD""GOOG"
symbol:
"GOOG"
symbol:
"GOOG"
quote: 33.73
name:
name: "Google
"Google Inc."
Inc."
name: "Google Inc."
exchange:
"NASD"
exchange:StockQuote
"NASD"
exchange:
"NASD"
StockQuote
StockQuote
quote:
663.97
quote:
663.97
quote:symbol:
663.97"AAPL"
symbol:
symbol:
"AAPL"
"AAPL"
W1
name:
name:
name: "Apple
"Apple
"Apple Inc."
Inc."
Inc."
exchange:
exchange:
exchange: "NASD"
"NASD"
"NASD"
quote:
quote:
quote: 165.37
165.37
165.37
R1
STRENGTH=3
StockQuote
symbol: "AAPL"
StockQuote
name: "Apple Inc."
symbol:exchange:
"GOOG""NASD"
name: quote:
"Google
Inc."
165.37
StockQuote
exchange: "NASD"
symbol: "MSFT"
quote: 663.97
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
W1’
STRENGTH=2
R2
StockQuote
symbol: "AAPL"
StockQuote
name: "Apple Inc."
symbol:exchange:
"GOOG""NASD"
name: quote:
"Google
Inc."
165.37
StockQuote
exchange: "NASD"
symbol: "MSFT"
quote: 663.97
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
W2’’
STRENGTH=1
R3
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Availability
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
StockQuote
symbol: "MSFT"
StockQuote
StockQuote
name: "Microsoft
Corp."
StockQuote
symbol:
exchange:
"NASD""GOOG"
symbol:
"GOOG"
symbol:
"GOOG"
quote: 33.73
name:
name: "Google
"Google Inc."
Inc."
W1
name: "Google Inc."
exchange:
"NASD"
exchange: "NASD"
"NASD"
exchange:
quote:
quote:
663.97
quote: 663.97
663.97
STRENGTH=3
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
R1
StockQuote
symbol: "GOOG"
name: "Google Inc."
StockQuote
exchange: "NASD"
symbol: "MSFT"
quote: 663.97
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
W1’
R2
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
STRENGTH=2
StockQuote
symbol: "GOOG"
name: "Google Inc."
StockQuote
exchange: "NASD"
symbol: "MSFT"
quote: 663.97
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
W2’’
STRENGTH=1
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
R3
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Availability
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
StockQuote
symbol: "MSFT"
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
W1
STRENGTH=3
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
R1
StockQuote
symbol: "GOOG"
name: "Google Inc."
exchange: "NASD"
quote: 663.97
StockQuote
symbol: "MSFT"
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
StockQuote
symbol: "GOOG"
name: "Google Inc."
exchange: "NASD"
quote: 663.97
W1’
STRENGTH=2
StockQuote
symbol: "MSFT"
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
W2’’
STRENGTH=1
R2
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
StockQuote
symbol: "GOOG"
name: "Google Inc."
StockQuote
exchange: "NASD"
quote: 663.97symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
R3
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Availability
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
R1
StockQuote
symbol: "GOOG"
name: "Google Inc."
exchange: "NASD"
quote: 663.97
StockQuote
symbol: "GOOG"
name: "Google Inc."
exchange: "NASD"
quote: 663.97
R2
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
StockQuote
StockQuote
StockQuote
symbol: "MSFT"
"MSFT"
symbol:
symbol: "MSFT"
name: "Microsoft
"Microsoft Corp."
name:
name: "Microsoft Corp."
Corp."
exchange:
exchange: "NASD"
"NASD"
exchange:
"NASD"
quote: 33.73
33.73
quote:
quote:
33.73
W2’’
STRENGTH=1
StockQuote
symbol: "GOOG"
name: "Google Inc."
exchange: "NASD"
quote: 663.97
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
R3
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Availability
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
StockQuote
symbol: "MSFT"
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
R1
StockQuote
symbol: "GOOG"
name: "Google Inc."
exchange: "NASD"
quote: 663.97
StockQuote
symbol: "GOOG"
name: "Google Inc."
exchange: "NASD"
quote: 663.97
StockQuote
symbol: "MSFT"
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
StockQuote
symbol: "MSFT"
name: "Microsoft Corp."
exchange: "NASD"
quote: 33.73
W2’’
STRENGTH=1
R2
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
StockQuote
symbol: "GOOG"
name: "Google Inc."
exchange: "NASD"
quote: 663.97
StockQuote
symbol: "AAPL"
name: "Apple Inc."
exchange: "NASD"
quote: 165.37
R3
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Availability
OpenSplice DDS
Delivering Performance, Openness, and Freedom
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
Summing Up
+/-
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
‣ DDS makes it possible for you to express the non-functional
contract for your distributed applications
‣ DDS QoS Policies give you control over local and end-to-end
properties
‣ In summary QoS Policies and Data Centricity gives you the
ability to apply Design by Contract at a functional and nonfunctional level
OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DDS OpenSplice DD
Summing Up
OpenSplice DDS
Delivering Performance, Openness, and Freedom
References
http://www.opensplice.com/
http://www.opensplice.org/
http://www.slideshare.net/angelo.corsaro
emailto:opensplicedds@prismtech.com
http://bit.ly/1Sreg
http://www.youtube.com/OpenSpliceTube
http://twitter.com/acorsaro/
http://opensplice.blogspot.com
t
a
DS
D
g
ce
r
i
l
o
.
p
e
S
c
en
pli
p
s
n
O
e
d
p
o
a
.
o
w
w
nL
w
w
/
Do
/
:
p
t
t
h
OpenSplice DDS
The Universal Data Bus
:: http://www.opensplice.org :: http://www.opensplice.com :: http://www.prismtech.com ::
THANK You!
d it
n
u
Fo
?
k
l
our
e ta
y
h
e
t
dm
ed
y
n
o
e
j
?S
g
. En
n
S
i
.
r
t:
P
o
a
b
om
s
y
c
t
.
d
h
n
o
me
tec
Blo
m
s
com
i
@pr
o
r
sa
r
o
c
elo.
g
n
a
Download