Real-Time DDS Examination & Evaluation Project (RT-DEEP) C++ Framework
Introduction
RT-DEEP (Real-Time DDS Examination & Evaluation Project) is
an evaluation project conducted by DOC group at Vanderbilt University. This
note contains suggestions on how to proceed with the evolution of the RT-DEEP
test-suite. Our goal is to end up with a test-suite that allows for benchmarking
of any kind of use-case that can be expected for DDS systems.
Conceptual overview
The RT-DEEP
test-suite needs to be extended such that it offers a flexible mechanism that
can fulfil many different kinds of scenarios. To achieve this, five different
kinds of RT-DEEP actors can be
identified.
- Source
- Consists of a publisher for a
given partition-expression.
- Publisher contains a writer.
- Writer periodically publishes
a number of messages.
- Active component: periodically
initiates write actions
- Parameters: OS Scheduling-class/Priority,
Topic name, type name, frequency, burst-size, partition and QoS.
- Sink
- Consists of a subscriber for a
given partition-expression.
- Subscriber contains a reader.
- Waits/listens for data on the
reader and takes/reads it.
- Passive component: reacts on
incoming data
- Parameters: OS Scheduling-class/Priority,
Topic name, type name, partition and QoS.
- Reflector
- Links a sink to a source.
- Reads data from the source and
forwards it to the sink.
- Passive component: reacts on
incoming data
- Parameters: OS Scheduling-class/Priority,
Topic name, type name, read partition, write partition and QoS.
- Laptimer
- Combines a source and a sink
to function as endpoint for a set of Reflectors.
- Initiates a write action on
the writer.
- Waits/listens to the reader
until data has been received from all Reflectors.
- Active component: has to send
sample for initiating the roundt-rip.
- Measures the “round-trip
time”.
- Parameters: OS Scheduling-class/Priority,
Topic name, type name, write partition, read partition and QoS
- SyncSink
- This is a specialized Sink
that can be used for measuring latencies. This Actor requires the node it
is running on to be time-aligned with the node the Source is running on.
Note that this is always the case if Sink and Source are both on the same
computing node.
Actors can
be combined to run on different nodes, using different partitions. Using
Reflectors that read from one and write into another partition, a token ring
construction can be built. Using partition expressions that contains several
partitions, many-to-many topologies can be built.
The model
of how actors are mapped onto processes does not have to be fixed. For now, we
assume that one actor will be mapped onto one process.
The
framework should support a limited set of IDL defined types. Examples are
simple types, complex types, (multiple) keyed, no keyed, variable sized. Every
type should have a common header containing at least enough space for a time-stamp.
For every type, an unlimited number of Topics can be defined. Every actor
should be acting on one Topic only. This allows us to write generic
applications. Exception to this rule is the reflector, which might react on a
configurable number of topics.
Scenarios
Once the
general framework has been built, all kinds of different scenarios can be
created. A scenario might consist of a text file that contains information on
which actors should be started on which nodes, and which parameters to feed
them. The scripting framework currently
present is almost ready to do that. However, the scripts are difficult to understand.
It would be easier to have a single, human readable (XML) file that contains
all information about a single scenario.
The
scripting framework itself will contain vendor specific deployment parameters.
Again, these would have to be isolated for maximal maintainability and
understandability. Inserting a new vendor to the scripting framework should not
be too difficult.
Obtaining framework source codes
The C++ DEEP framework are written by Reinier Torenbeek from PrismTech.
We have been closely working with Reinier to add vendor specific codes
and improve the current framework. The current version of framework
codes are maintained by ming.xiong@vanderbilt.edu and can be obtained
from here
Recent Build Results
RTI with build_RTI
OpenSplice with build_OpenSplice
MPC build results
DOC group
welcomes you to help us improve our test codes. If you have
questions and comments, please send them to ming.xiong@vanderbilt.edu
Back to DDS
Web Page .