Overview of The OMG Data Distribution Service: Douglas C. Schmidt & Jeff Parsons
Overview of The OMG Data Distribution Service: Douglas C. Schmidt & Jeff Parsons
Overview of The OMG Data Distribution Service: Douglas C. Schmidt & Jeff Parsons
Air
Nav Frame WTS
Legacy DoD systems are designed to be:
AP FLIR
• Stovepiped
GPS IFF • Proprietary
• Brittle & non-adaptive
• Expensive to develop & evolve
Cyclic
Exec • Vulnerable
Utility
“Broken” “Works”
• Minimize latency, jitter, & footprint
• Bound priority inversions
• Allocate & manage resources Resources
statically
“Harder” Requirements
Problem: Lack of any resource3 can break nearly anything & everything
Tutorial on DDS Douglas C. Schmidt
Applications Applications
Interceptor Sys Cond Sys Cond Sys Cond Sys Cond Interceptor
Middleware Middleware
Mechanism & Property
} {
Workload & Managers Workload &
Replicas Replicas
Endsystem Endsystem
Adaptive 5
Real-time Middleware
Tutorial on DDS Douglas C. Schmidt
Problem: Network-centricity is an
Desired afterthought in today’s systems
Utility
Curve
“Working
Utility
Range”
Resources
“Softer” Requirements
6
Tutorial on DDS Douglas C. Schmidt
Dynamic Mission
Replanning
Image Processing
& Tracking
Dynamic Mission
Replanning
Image Processing
& Tracking
Asynchronous
Event Handling Asynchronous
Transfer of
Physical Control
Memory
Access Synchronization
Memory
Management Scheduling
Modeling Tools Real-time JVMs Model Checking Real-time ORBs Aspect Languages
9
Tutorial on DDS Douglas C. Schmidt
Problem: Net-centricity is
10afterthought in platform-centric
Tutorial on DDS Douglas C. Schmidt
Track
Processing • C2 & C4ISR information management
Java Messaging
based on J2EE & Java Messaging
Service Service (JMS)
• Best suited for operational
J2EE
Middleware
enterprise environments
• e.g., large data centers connect
Enterprise via wireline networks
Network & OS • Poorly suited for tactical
environments
• e.g., lack of QoS policies &
RTOS integration, extremely
high time/space overhead
Publisher Subscriber
13
Tutorial on DDS Douglas C. Schmidt
Overview of the Data Distribution Service (DDS)
• DDS is an highly efficient OMG
pub/sub standard Topic NEW TOPIC
• e.g., fewer layers, less R
overhead
• DDS provides meta-events for Data
Writer
Data
Reader
detecting dynamic changes R R
NEW
SUBSCRIBER
Publisher Subscriber
NEW
PUBLISHER
14
Tutorial on DDS Douglas C. Schmidt
Overview of the Data Distribution Service (DDS)
• DDS is an highly efficient OMG
pub/sub standard HISTORY Topic RESOURCE LIMITS
• e.g., fewer layers, less R
overhead
• DDS provides meta-events for Data
Writer
S1 Data
Reader
detecting dynamic changes R S2
R
S3
• DDS provides policies for
S4
specifying many QoS
S5
requirements of tactical
Publisher S6 Subscriber
information management
S7
systems, e.g.,
• Establish contracts that LATENCY
precisely specify a wide
variety of QoS policies at
multiple system layers
S7
X
S7 S6 S5 S4 S3 S2 S1
COHERENCY
RELIABILITY
15
Tutorial on DDS Douglas C. Schmidt
Overview of the Data Distribution Service (DDS)
• DDS is an highly efficient OMG
DESTINATION
pub/sub standard Topic FILTER
• e.g., fewer layers, less R
overhead
• DDS provides meta-events for Data S1 Data
Writer SOURCE Reader
detecting dynamic changes R S2
FILTER R
• DDS provides policies for S3
requirements of tactical S5
Publisher Subscriber
information management S6
systems, e.g., S7
• DDS spec only defines policies & interfaces between application & service
• Doesn’t address protocols & techniques for different actors implementing the service
• Doesn’t address management of internal DDS resources
18
Tutorial on DDS Douglas C. Schmidt
The Application
Application
DLRL
{
Application
DLRL
Application
DLRL
Application
DLRL
DCPS
Communication
19
Tutorial on DDS Douglas C. Schmidt
3
1 1
Node Node Node
2 3
1
1
Node Node Node
DomainParticipant
Domain20
1
Tutorial on DDS Douglas C. Schmidt
DCPS Entities
DCPS Entities include • Data can be accessed in two ways
– Topics – Wait-based (synchronous calls)
• Typed data – Listener-based (asynchronous callbacks)
– Publishers • Sophisticated support for filtering
• Contain DataWriters – e.g., Topic, Content-FilteredTopic, or
– Subscribers MultiTopic
• Contain DataReaders • Configurable via (many) QoS policies
– DomainParticipants
Topic Topic Topic
• Entry points
Domain
Participant
Data Data Data Data Data Data
Reader Writer Writer Reader Reader Writer
Data Domain
21
Tutorial on DDS Douglas C. Schmidt
22
Tutorial on DDS Douglas C. Schmidt
Subscriber
Publisher
Subscriber
time-based filter
• Very predictable
• Data is sent without reply
• Publishers and subscribers match and obey QoS Deadline policy settings
• Time-based Filter QoS policy gives bandwidth control
23
Tutorial on DDS Douglas C. Schmidt
Data S1 Data
Writer Reader
R S2
R
S3
S4
S5
Publisher S6 Subscriber
S7
S7 S6 S5 S4 S3 S2 S1
24
Tutorial on DDS Douglas C. Schmidt
25
Tutorial on DDS Douglas C. Schmidt
26
Tutorial on DDS Douglas C. Schmidt
27
Tutorial on DDS Douglas C. Schmidt
28
Tutorial on DDS Douglas C. Schmidt
29
Tutorial on DDS Douglas C. Schmidt
30
Tutorial on DDS Douglas C. Schmidt
Topics
• A DDS Topic is the connection
between publishers & Domain
ID 35
subscribers.
• A Topic is comprised of a Name Topic
and a Type.
name “MySensor”
– Name must be unique in the
Domain.
Type
– Many Topics can have the
same Type. name “AnalogSensor”
• Provision is made for content- string sensor_id [ key ]
based subscriptions.
– MultiTopics correspond to float value
SQL join
– Content-Filtered Topics
correspond to SQL select.
31
Tutorial on DDS Douglas C. Schmidt
Topic-Based Publish/Subscribe
Pressure
Temperature
32
Tutorial on DDS Douglas C. Schmidt
application
33
Tutorial on DDS Douglas C. Schmidt
Content-based Subscriptions
34
Tutorial on DDS Douglas C. Schmidt
Filter Expression and Expression Params determine which Topic instances the Subscriber receives.
35
Tutorial on DDS Douglas C. Schmidt
MultiTopic
MultiTopics can combine, filter, and rearrange data from multiple Topics.
36
Tutorial on DDS Douglas C. Schmidt
37
Tutorial on DDS Douglas C. Schmidt
……
// register the data type associated with the topic
FooDataType foo_dt;
foo_dt.register_type (dp,
“Foo”);
// create a topic
Topic_var foo_topic =
dp->create_topic (“Foo_topic”, //topic name
“Foo”, // type name
TOPIC_QOS_DEFAULT, // Qos policy
NULL); // topic listener
38
Tutorial on DDS Douglas C. Schmidt
39
Tutorial on DDS Douglas C. Schmidt
dp->get_default_publisher_qos (pQos);
Publisher_var p =
dp->create_publisher (pQos, NULL);
40
Tutorial on DDS Douglas C. Schmidt
MyListener::on_data_available(DataReader reader)
{
FooSeq_var received_data;
SampleInfoSeq_var sample_info;
reader->take(received_data.out (),
sample_info.out (),
ANY_SAMPLE_STATE,
ANY_LIFECYCLE_STATE);
// Use received_data
……
}
41
Tutorial on DDS Douglas C. Schmidt
ConditionSeq_var active_conditions;
Duration_t timeout = {3,0};
waitset->wait(active_conditions.out (), timeout);
...
FooSeq_var received_data;
SampleInfoSeq_var sample_info;
reader->take_w_condition(received_data.out (),
sample_info.out (),
foo_condition);
// Use received_data
42
Tutorial on DDS Douglas C. Schmidt
Benchmark Scenario
• Two processes perform IPC in which a client initiates a request to transmit
a number of bytes to the server along with a seq_num (pubmessage), &
the server simply replies with the same seq_num (ackmessage).
– The invocation is essentially a two-way call, i.e., the
client/server waits for the request to be completed.
• The client & server are collocated.
• DDS & JMS provides topic-based pub/sub model.
• Notification Service uses push model.
• SOAP uses p2p schema-based model.
43
Tutorial on DDS Douglas C. Schmidt
Testbed Configuration
• Hostname
blade14.isislab.vanderbilt.edu
• OS version (uname -a)
Linux version 2.6.14-1.1637_FC4smp ([email protected])
• GCC Version
g++ (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-47.fc4)
• CPU info
Intel(R) Xeon(TM) CPU 2.80GHz w/ 1GB ram
44
Tutorial on DDS Douglas C. Schmidt
Test Parameters
// Complex Sequence Type
struct Inner { • Average round-trip latency &
string info; dispersion
long index; • Message types:
}; – sequence of bytes
typedef sequence<Inner> – sequence of complex type
InnerSeq;
• Lengths in powers of 2
struct Outer {
• Ack message of 4 bytes
long length;
• 100 primer iterations
InnerSeq nested_member;
• 10,000 stats iterations
};
typedef sequence<Outer>
ComplexSeq;
45
Tutorial on DDS Douglas C. Schmidt
DDS1 DDS2
DDS3 GSOAP
10000
JMS Notification Service
Avg. Latency (usecs)
1000
100
10
4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
46
Tutorial on DDS Douglas C. Schmidt
47
Tutorial on DDS Douglas C. Schmidt
• From the results we can see that DDS has significantly better
performance than other SOA & pub/sub services.
• Although there is a wide variation in the performance of the
DDS implementations, they are all at least twice as fast as
other pub/sub services.
48
Tutorial on DDS Douglas C. Schmidt
Encoding/Decoding Benchmarks
49
Tutorial on DDS Douglas C. Schmidt
1000000
100
10
0.1
0.01
4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
Sequence Length
50
Tutorial on DDS Douglas C. Schmidt
1000000
DDS3 Byte Sequence
DDS3 Complex Sequence
100000
GSOAP Byte Sequence
GSOAP Complex Sequence
10000
Time (usecs)
1000
100
10
1
4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384
Sequence Length
51
Tutorial on DDS Douglas C. Schmidt
52
Tutorial on DDS Douglas C. Schmidt
DDS
publishers
Information consumer subscribe to information of interest
Information producer publish information
DDS matches & routes relevant info to interested subscribers
53
Tutorial on DDS Douglas C. Schmidt
Track
Track 3D_Track DLRL
Cache
54
Tutorial on DDS Douglas C. Schmidt
Goals of DLRL
• Data Local Reconstruction Layer (DLRL) model is local to an application
• “Object-oriented” access to data
• Application developers can
– describe classes with their methods, data fields, & relations
– attach some of those data fields to DCPS entities
– manipulate these objects (i.e., create, read, write, delete) using native
language constructs
– activate attached DCPS entities to update objects
– have these objects managed in a cache
• Like a mapping or binding (intuition only)
55
Tutorial on DDS Douglas C. Schmidt
DLRL Objects
• DLRL objects are (native) language objects with:
– data members and methods
• Only the data members are relevant to data distribution; they can
be:
– attributes, i.e., values
– relations, i.e., reference other objects
– plain local data members (i.e., not known or involved in data
distribution) are also supported
• DLRL classes can be organised by inheritance
• DLRL objects maps to one or more DCPS Topics
56
Tutorial on DDS Douglas C. Schmidt
x : real * 0..1
y : real
comments [*] : string
w : integer
Track3D
z : real
57
Tutorial on DDS Douglas C. Schmidt
x : real * 0..1
y : real
comments [*] : string TRACK_TOPIC
w : integer
Class Oid x y radar
Track 1 100 200 11
Track3D 2 102 201 11
COMMENTS_TOPIC
Track3D
Class Oid index comments
z : real Track 1 0 a comment
Track 1 1 another comment
58 11 1 Track3D 2
Tutorial on DDS Douglas C. Schmidt
Evaluating DDS
Pros
• Low overhead & efficient use of transport bandwidth
– e.g., less features/overhead than CORBA in the main request path
• Dynamically scalable & highly flexible
– e.g., can receive notification about all sorts of meta-events, such as new
topics, publishers, subscribers, etc.
• Supports one-to-one, one-to-many, many-to-one, & many-to-many
communication
• Large number of configuration parameters & QoS policies that give developers
extensive control of message transmission & reception
Cons
• DDS is not well suited to request-reply services, file transfer, & transaction
processing
• The data-distribution paradigm is not optimized for sending a request & waiting
for a reply
• Implementations don’t yet cover the entire spec
• Lack of interoperability between different vendor’s implementations
59
Tutorial on DDS Douglas C. Schmidt