SlideShare a Scribd company logo
Gerardo Pardo-Castellote, Ph.D.
CTO, Real-Time Innovations, Inc.
DDS-XRCE Specification Overview
DDS for Extremely Resource Contained Networks
New OMG Specification
• The DDS-XRCE specification was adopted March 2018
• Documents are available from the OMG at:
https://www.omg.org/spec/DDS-XRCE/
• It is considered a Beta specification to be finalized by March 2019
©2017 Real-Time Innovations, Inc.
Outline
• Motivation
• Big Picture
• Message Structure
• Interaction Model
• Security
• Deployments
• Transport Model
• Conformance Profiles
• Conclusion
©2017 Real-Time Innovations, Inc.
Real-Time Innovations, Inc.
Motivation
DDS is Being Extended to the very Edge
• Users want to leverage the benefits of the DDS Data-Bus to
applications at the edge of the network, including Sensor Networks
• These systems are constrained in many dimensions: CPU, memory,
power, connectivity, transport payload & bandwidth
• The constraints make it not possible make the edge nodes direct
peer-to-peer participants on the DDS Domain and run DDS-RTPS
• DDS-XRCE solves this problem by defining a new Client-to-Agent
allowing the use of an Agent to communicate with a DDS Domain
Overview of the DDS-XRCE specification
Real-Time Innovations, Inc.
Big Picture
Common approach: Agent-Based deployment model
XRCE
Agent
Global Data SpaceDDS/ RTPS
Client
Client
Client
DDS-XRCE
XRCE
Agent
Client
Client
Client
DDS App
DDS App
DDS App
DDS App
DDS App
Agent-Based deployment model
XRCE
AgentClient
XRCE Protocol
Global Data Space
DDS/ RTPS
Existing DDS
Interoperability Wire
Protocol
New protocol defined by
the DDS-XRCE
specification
Resource Constrained
Network
~ 40Kbps, 100Byte MTU
Resource Constrained
Device: ~ 100 KB RAM
Battery Powered
Sleep Cycles
Formal specification of the Agent and Protocol
XRCE
AgentClient
XRCE Protocol
Global Data Space
DDS/ RTPS
XRCE Protocol DDS/RTPS
Protocol
Formal specification of the Agent and Protocol
Client
XRCE Protocol
Global Data Space
DDS/ RTPS
HEADER MSG1 MSG2
XRCE Object Model
Message Structure
+
Interaction Model
+
XRCE Agent Object
Model
class DDS-Mapping
DDSXRCE::
DomainParticipant
DDSXRCE::Publisher
DDSXRCE::Subscriber
DDSXRCE::
DataWriter
DDSXRCE::DataReader
DDSXRCE::Topic
DDS::DomainParticipantFactory
DDS::DomainParticipant
DDS::Publisher
DDS::Subscriber
DDS::TopicDescription
DDS::Topic
DDS::ContentFilteredTopic
DDS::DataReader
DDS::DataWriter
«value»
DDSXRCE::Qos
«value»
DDSXRCE::
QosProfile
Qos
+ DataReaderQos
+ DataWriterQos
+ DomainParticipantQos
+ PublisherQos
+ SubscriberQos
+ TopicQos
(from DDS)
DDSXRCE::Application
«use»
«use»
«use»
«use»
«use»
«use»
0..*
«use»
«use»
«use»
«use»
«use»
©2017 Real-Time Innovations, Inc.
classApplication
DDSXRCE::Application
+ create_participant(): ReturnStatus
+ update_participant(): ReturnStatus
+ delete_participant(): ReturnStatus
+ create_waitset(): ReturnStatus
+ update_waitset(): ReturnStatus
+ delete_waitset(): ReturnStatus
DDSXRCE::DomainParticipant
DDS::DomainParticipant
DDS::
DomainParticipantFactory
DDSXRCE::AccessController
+ check_permissions(): ReturnStatus
«value»
DDSXRCE::Type
«value»
DDSXRCE::
QosProfile
DDSXRCE::QosLibrary «use»
«use»
«use»
«use»
«use»
0..*
«use»
©2017 Real-Time Innovations, Inc.
classParticipant
DDSXRCE::Application
DDSXRCE::DomainParticipant
+ register_type(): ReturnStatus
+ unregister_type(): ReturnStatus
+ create_topic(): ReturnStatus
+ update_topic(): ReturnStatus
+ delete_topic(): ReturnStatus
+ create_publisher(): ReturnStatus
+ update_publisher(): ReturnStatus
+ delete_publisher(): ReturnStatus
+ create_subscriber(): ReturnStatus
+ update_subscriber(): ReturnStatus
+ delete_subscriber(): ReturnStatus
+ get_topics(): ReturnStatus
+ get_publishers(): ReturnStatus
+ get_subscribers(): ReturnStatus
DDS::DomainParticipant
DDS::
DomainParticipantFactory
DDSXRCE::AccessController
+ check_permissions(): ReturnStatus
DDSXRCE::Topic DDSXRCE::
Publisher
DDSXRCE::
Subscriber
«value»
DDSXRCE::Type
DDSXRCE::
RegisteredType
«interface»
DDSXRCE::Entity
+ name: string
0..*
«use»
«use»
«use»
«use»
registeredTypeName
«use»
typeName
«use»
«use»
©2017 Real-Time Innovations, Inc.
class DataWriter
DDSXRCE::DataWriter
+ create_instance(): ReturnStatus
+ update_instance(): ReturnStatus
+ delete_instance(): ReturnStatus
+ write(): ReturnStatus
DDS::DataWriter
DDSXRCE::
Publisher
DDSXRCE::Topic
DDS::Publisher
TopicDescription
DDS::Topic
«interface»
DDSXRCE::Entity
+ name: string
«use»
«use»
«use»
©2017 Real-Time Innovations, Inc.
classDataReader
DDSXRCE::
Subscriber
DDSXRCE::DataReader
+ get(): ReturnStatus
DDSXRCE::Topic
- registeredTypeName: string
- topicName: string
DDS::
TopicDescription
DDS::Topic
DDS::DataReader
DDS::Subscriber
«interface»
DDSXRCE::Entity
+ name: string
«use»
«use»
«use»
«use»
©2017 Real-Time Innovations, Inc.
classAccessController
DDSXRCE::AccessController
+ check_permissions(): ReturnStatus
«singleton»
DDSXRCE::Root
DDSXRCE::Application
DDSXRCE::
Publisher
DDSXRCE::
Subscriber
DDSXRCE::
DomainParticipant
DDSXRCE::ProxyClient
- clientAPIKey: string
0..*
«use»
0..*
0..*
1
«use»
«use»
«use»
Resource Names, Representation, and ID
• Each resource has:
– A name (addresses it within the Agent) and Context
• Example the type “ShapeType”
– A representation. Describes the resource
• Declarative way to describe the Agent resource
• Not expected to go on the wire in most cases
– An ID. Provides (integer) shortcurt for Client to reference XRCE object/resource
• Multiple representations supported: NAME, XML, BINARY
©2017 Real-Time Innovations, Inc.
Qos Representation
• Typical: pre-defined profiles in Agent
– Name-Representation -> QosPofile name
• Allow exchanging Qos between client and Agent:
– XML Representation. Uses XML (or future JSON format)
• Can configure complete set of DDS Qos policies
• Re-uses DDS-XTYPES
– Binary Representation
• Allow sending a subset of the Qos using a BINARY representation
• Reuses XCDR
• Example:
<qos_profile name="MyProf" base_name="ExistingProfile " >
<datawriter_qos>
<history>
<depth>10</depth>
</history>
</datawriter_qos>
</qos_profile>
©2017 Real-Time Innovations, Inc.
Type Representation
• Typical: types pre-defined profiles in Agent
• Name-Representation -> QosPofile name
• Allow exchanging Types between client and Agent:
– XML Representation. Uses XML (or future JSON format)
• Can configure complete set of DDS Types policies
• Re-uses DDS-XTYPES
– Binary Representation (possible extension)
• Allow exchange a any type information using a BINARY representation
• Reuses XCDR
• Example type description using XML representation:
<struct name="ShapeStruct">
<member name="color" type="string"/>
<member name="x" type="int32"/>
<member name="y" type="int32"/>
<member name="shapesize" type="int32"/>
</struct>
©2017 Real-Time Innovations, Inc.
Real-Time Innovations, Inc.
Message Structure
Message Header + Submessages
©2017 Real-Time Innovations, Inc.
XRCE Header Submessage Submessage Submessage
0 8 16 24 31
+---------------+---------------+---------------+---------------+
| sessionId | streamId | sequenceNr |
+---------------+-------+-------+---------------+---------------+
| clientKey (optional is sessionId > 128) |
+---------------+---------------+---------------+---------------+
0 4 8 16 24 31
+---------------+---------------+---------------+---------------+
| submessageId | flags | submessageLength |
+---------------+---------------+---------------+---------------+
~ <payload – depends on smId & resourceType> ~
+---------------+---------------+---------------+---------------+
XRCE Header
Submessage
13 kind of Sub Messages
©2017 Real-Time Innovations, Inc.
classSubmessages
DDSXRCE::Submessage
DDSXRCE::
Submessage::
CREATE
DDSXRCE::
Submessage::
GET_INFO
DDSXRCE::
Submessage::
DELETE
DDSXRCE::
Submessage::INFO
DDSXRCE::
Submessage::
STATUS
DDSXRCE::
Submessage::
ACKNACK
DDSXRCE::
Submessage::
HEARTBEAT
DDSXRCE::Submessage::
SubmessageHeader
- submessageId: byte
- flags: byte
- submessageLength: short
DDSXRCE::
Submessage::
DATA
DDSXRCE::
Submessage::
FRAGMENT
DDSXRCE::
Submessage::
READ_DATA
DDSXRCE::
Submessage::
WRITE_DATA
DDSXRCE::
Submessage::
RESET
DDSXRCE::
Submessage::
CREATE_CLIENT
1
Submessage kinds
©2017 Real-Time Innovations, Inc.
SubmessageId Value Note
CREATE 1 Client to Agent. Specifies resource Name or Representation
GET_INFO 2 Client to Agent.
DELETE 3 Client to Agent.
STATUS 4 Response to CREATE, UPDATE or DELETE.
INFO 5 Response to a GET_INFO. Contains information about an Xrce: Object.
WRITE_DATA 6 Client to Agent. Used to write data using a Xrce::DataWriter.
READ_DATA 7 Client to Agent. Used to read data using a Xrce::DataReader.
DATA 8 Agent to Client in response to a READ_DATA
ACKNACK 9 Bi-directional.
HEARTBEAT 10 Bi-directional.
RESET 11 Bi-directional
FRAGMENT 12 Bi-directional
Example: DATA Message
©2017 Real-Time Innovations, Inc.
0 8 16 24 31
+---------------+--------+-------+----------------+----------------+
| session_id | stream_id | sequenceNr | 4
+-------+-------+----------------+----------------+----------------+
| DATA | flags | submessageLength | 8
+---------------+----------------+----------------+----------------+
| request_id | object_id | 12
+---------------+----------------+----------------+----------------+
+ XCDR_Serialization(foo) + 16
+---------------+--------+-------+----------------+----------------+
Payload format
Depends on flags
Serialization uses DDS-
XTYPES format
Example: Creating a Client
©2017 Real-Time Innovations, Inc.
0 8 16 24 31
+---------------+---------------+---------------+---------------+
| 0x80 | 0x00 | 0x00 | 4
+-------+-------+---------------+---------------+---------------+
| CREATE_CLIENT | flags | submessageLength | 8
+-------+-------+---------------+---------------+---------------+
| request_id | object_id | 12
+-------+-------+---------------+---------------+---------------+
| xrce_cookie | 16
+-------+-------+-------+-------+-------+-------+-------+-------+
| xrce_version | xrce_vendor_id | 20
+-------+-------+---------------+---------------+---------------+
| client_timestamp.seconds | 24
+ +
| client_timestamp.nanoseconds | 26
+-------+-------+---------------+---------------+---------------+
| client_key | 30
+-------+-------+---------------+---------------+---------------+
| session_id |
+-------+-------+
Built-in security
mechanism using
ClientKey
Example: DATA as a sequence
©2017 Real-Time Innovations, Inc.
0 8 16 24 31
+---------------+----------------+----------------+----------------+
| session_id | stream_id | sequenceNr | 4
+-------+-------+----------------+----------------+----------------+
| READ_DATA | flags | submessageLength | 8
+---------------+----------------+----------------+----------------+
| request_id | object_id | 12
+---------------+----------------+----------------+----------------+
| is_present=0 | FORMAT_DATA_SEQ| max_samples | 16
+---------------+----------------+----------------+----------------+
| max_elapsed_time | 20
+---------------+----------------+----------------+----------------+
| max_rate | 24
+---------------+----------------+----------------+----------------+
Writer Reliability
©2017 Real-Time Innovations, Inc.
Initial
AllMessagesAcknowledged MessagesNotFullyAcked
write
/HighestSentSequenceNumber++
receive(ACKNACK)
/save
HigestAcknowledgedSeqNumber
repair SequenceNumber in NACK
[HeartBeatPeriod]
/Send(HeartBeat, HighestSentSequenceNumber)
write
/HighestSentSequenceNumber++
[HiguestReceivedSeqNumber ==HiguestSentSequenceNumber]
Reader Reliability
©2017 Real-Time Innovations, Inc.
Initial
ReceivedAllMessages
MissingMessageFromSender
Choice
/ HiguestReceivedSequenceNumber :=0
[HiguestAnnouncedSequenceNumber <=HiguestReceivedSequenceNumber]
receive(HeartBeat, HigestAnnouncedSequenceNumber)
[HiguestAnnouncedSequenceNumber >HiguestReceivedSequenceNumber]
receive(HeartBeat, HigestAnnouncedSequenceNumber)
[XRCEClient && NackPeriod]
/Send(ACKNACK)
Real-Time Innovations, Inc.
Interaction Model
©2017 Real-Time Innovations, Inc.
sd Client Agent
XRCE AgentXRCE Client
RESOURCE_STATUS(DataWriter)
RESOURCE_STATUS(Session)
ASSERT_RESOURCE(Session)
WRITE_DATA(DataWriter)
WRITE_DATA(DataWriter)
ASSERT_RESOURCE(DataWriter)
DELETE_RESOURCE(DataWriter, Session)
WRITE_DATA(DataWriter)
ASSERT_RESOURCE identifies (preconfigured)
resource by means its Name and retrieves
resourceId
Note: Using CREATE instead of ASSERT_RESOURCE
can create the resource from its representation
©2017 Real-Time Innovations, Inc.
sd Minimal Publisher
XRCE Client XRCE Agent
DELETE_RESOURCE()
WRITE_DATA()
ASSERT_RESOURCE(Session)
WRITE_DATA()
RESOURCE_STATUS()
WRITE_DATA()
The resourceId for specific objects (e.g. a
DataWriter) can also be pre-configured.
This saves having to ASSERT it.
©2017 Real-Time Innovations, Inc.
sd Minimal Subscriber
XRCE Client XRCE Agent
DATA()
DATA()
ASSERT_RESOURCE(Session)
DELETE_RESOURCE()
DATA()
CONFIG_READ()
Real-Time Innovations, Inc.
Security
Security approach
• Assumes transport-level security is in place
• Message Header includes (4-Byte) secret ClientKey
• Agent uses ClientKey to determine client permissions and Identity
– Leverages DDS-Security identity and permissions documents
– Proxy DDS DomainParticipant are exclusive to a single Client
©2017 Real-Time Innovations, Inc.
Real-Time Innovations, Inc.
XRCE Deployments
Six deployment scenarios
• XRCE Client to DDS communication
• XRCE Client to Client via DDS
• Client-to-Client communication brokered by an Agent
• Federated deployment
• Direct Peer-to-Peer communication between clients
• Combined deployment
XRCE Client to DDS communication
©2017 Real-Time Innovations, Inc.
Global Data Space
XRCE
Agent
DDS-RTPS
Protocol
XRCE
Client
DDS
DomainParticipant
DDS-RTPS
XRCE Protocol
XRCE Client to Client via DDS
©2017 Real-Time Innovations, Inc.
Global Data Space
XRCE
Agent
XRCE
Client
XRCE
Agent
XRCE
Client
XRCE Protocol
XRCE Protocol
DDS-RTPS
Protocol
DDS-RTPS
Protocol
Client-to-Client communication brokered by an Agent
©2017 Real-Time Innovations, Inc.
XRCE Protocol
Global Data Space
XRCE
Agent
XRCE
Client
XRCE
Client
DDS-RTPS
Protocol
Federated deployment
©2017 Real-Time Innovations, Inc.
Global Data Space
XRCE
Agent
XRCE
Client
XRCE
Agent
XRCE
Client
DDS-RTPS
Protocol
XRCE
Client
XRCE
Protocol
XRCE
Agent
Direct Peer-to-Peer communication between clients
• Not an RFP requirement
• Protocols supports it without any
additions
• Applications “opt-in” by instantiating:
– Embedded XRCE Agent
– XRCE Client per matched peer
• Maybe implemented without extra
objects. Just the state needs to be
kept.
©2017 Real-Time Innovations, Inc.
XRCE
Agent
XRCE
Client
XRCE
Client
XRCE
Agent
XRCE
Client
XRCE
Client
XRCE Protocol
XRCE
Agent
XRCE
Client
XRCE
Client
Combined deployment
©2017 Real-Time Innovations, Inc.
Global Data Space
XRCE
Agent
XRCE
Client
DDS-RTPS
Protocol
XRCE
Client
XRCE
Protocol
XRCE
Agent
DDS
DomainParticipant
DDS
DomainParticipant
XRCE
Agent
XRCE
Client
XRCE
Client
XRCE
Agent
XRCE
Client
XRCE
Client
Real-Time Innovations, Inc.
Transport Model
Transport Mappings
• Specifies common requirements for XRCE Transports
• Specifies mapping to UDP and TCP
• Pattern for additional Transport mappings. Define:
– Transport Locators
– Connection Establishment
– Message Envelopes
– Agent Discovery
©2017 Real-Time Innovations, Inc.
Transport requirements
• Packet-oriented or connection oriented
• It does not need to provide reliability
– Messages may be dropped
• It does not need to provide ordering
– Messages may arrive out of order
• It does not need to provide notification of dropped messages
• Must support transport-level security (e.g. TLS or DTLS)
©2017 Real-Time Innovations, Inc.
Reliability
• Reliability per stream, multiple (256) streams
– Builtin streams 0-5 are present on every session
– Even-numbered streamIds are best-efforts.
– Reliable streams use HB/ ACKNACK protocol
• Similar to DDS/RTPS
• Multiple Writers can share same stream as configured by client
• Multiple Readers can also share the same stream
©2017 Real-Time Innovations, Inc.
Real-Time Innovations, Inc.
Conformance profiles
Conformance profiles
Profile Description
Read Access Client can read any DDS
Write Access Client can write any DDS
Configure Entities Client can configure/define DDS Entities dynamically
Agent can have Qos configured/defined remotely
Configure Qos Client can configure/define DDS Qos dynamically
Agent can have Qos configured/defined remotely
Configure Types Client can define DDS Type dynamically
Agent can have Qos configured/defined remotely
Discovery Client can discover Topics and Types available on DDS GDS
File-based Config Agent can be configured via XML files
UDP Transport Implements XRCE on UDP
Real-Time Innovations, Inc.
Conclusion
DDS-XRCE Conclusions
• New DDS-XRCE specification adopted by OMG in March 2018
– Considered Beta until March 2019
– https://www.omg.org/spec/DDS-XRCE/
• DDS-XRCE extends DDS to resource-constrained environments
– Memory constraints
– CPU constraints (e.g. Micro-controllers)
– Power Constraints (battery power and sleep cycles)
– Transport constraints (ZigBee, BLE, …)
• Uses a Client/Agent architecture
– Devices connect to DDS Domain via an Agent
• DDS-XRCE SDK allows full access to DDS Topic data from the resource-
constrained device using the Agent as relay
©2017 Real-Time Innovations, Inc.

More Related Content

PDF
The DDS Security Standard
PDF
Open Match Deep Dive
PPTX
OpenID Connect: An Overview
PDF
Authenticated Encryption Gcm Ccm
PDF
Concourse webhook
PDF
Palo alto networks NAT flow logic
PDF
Spring Boot + Netflix Eureka
PPTX
Secure your app with keycloak
The DDS Security Standard
Open Match Deep Dive
OpenID Connect: An Overview
Authenticated Encryption Gcm Ccm
Concourse webhook
Palo alto networks NAT flow logic
Spring Boot + Netflix Eureka
Secure your app with keycloak

What's hot (20)

PPTX
FIWARE - スマートサービスを支えるオープンソース
ODP
OAuth2 - Introduction
PDF
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
PPTX
SSL/TLS
PDF
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
PDF
Time based CAPTCHA protected SQL injection through SOAP-webservice
PDF
OpenID Connect入門
PPTX
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
PPTX
Ssl for e commerce
PDF
Frans Rosén Keynote at BSides Ahmedabad
PDF
HTTP Request Smuggling via higher HTTP versions
PDF
今更聞けないOAuth2.0
PDF
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
PDF
ATT&CKcon Intro
PDF
ID & IT 2013 - OpenID Connect Hands-on
PDF
Rego Deep Dive
PDF
AWS Black Belt Online Seminar AWS Direct Connect
PDF
認証の課題とID連携の実装 〜ハンズオン〜
PDF
Company and Market Overview
FIWARE - スマートサービスを支えるオープンソース
OAuth2 - Introduction
SAML / OpenID Connect / OAuth / SCIM 技術解説 - ID&IT 2014 #idit2014
SSL/TLS
池澤あやかと学ぼう!: はじめてのOAuthとOpenID Connect - JICS 2014
Time based CAPTCHA protected SQL injection through SOAP-webservice
OpenID Connect入門
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 3.4.0対応)
Ssl for e commerce
Frans Rosén Keynote at BSides Ahmedabad
HTTP Request Smuggling via higher HTTP versions
今更聞けないOAuth2.0
[JAWS DAYS 2019] Amazon DocumentDB(with MongoDB Compatibility)入門
ATT&CKcon Intro
ID & IT 2013 - OpenID Connect Hands-on
Rego Deep Dive
AWS Black Belt Online Seminar AWS Direct Connect
認証の課題とID連携の実装 〜ハンズオン〜
Company and Market Overview
Ad

Similar to Overview of the DDS-XRCE specification (20)

PPTX
Distributed Systems: How to connect your real-time applications
PDF
DDS-XRCE - Revised Submission Presentation (September 2017)
PDF
Reactive Stream Processing Using DDS and Rx
PDF
DDS-XRCE (Extremely Resource Constrained Environments)
PPTX
7 DDS Innovations to Improve your Next Distributed System
PDF
The Data Distribution Service
PDF
Connected Mobile and Web Applications with Vortex
PDF
Connected Mobile and Web Applications with PrismTech Vortex Data Sharing Plat...
PPTX
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
PPTX
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
PDF
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
PDF
Micro XRCE-DDS: Bringing DDS into microcontrollers
PDF
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
PDF
IoT Protocols Integration with Vortex Gateway
PPTX
Webinar - Bringing connected graph data to Cassandra with DSE Graph
PDF
Reactive Data Centric Architectures with DDS
PPTX
Eagle6 mongo dc revised
PPTX
Eagle6 Enterprise Situational Awareness
PDF
The Heterogeneous Data lake
PDF
ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News!
Distributed Systems: How to connect your real-time applications
DDS-XRCE - Revised Submission Presentation (September 2017)
Reactive Stream Processing Using DDS and Rx
DDS-XRCE (Extremely Resource Constrained Environments)
7 DDS Innovations to Improve your Next Distributed System
The Data Distribution Service
Connected Mobile and Web Applications with Vortex
Connected Mobile and Web Applications with PrismTech Vortex Data Sharing Plat...
DDS Advanced Tutorial - OMG June 2013 Berlin Meeting
MBSE meets Industrial IoT: Introducing the New MagicDraw Plug-in for RTI Co...
Introducing the New MagicDraw Plug-In for RTI Connext DDS: Industrial IoT Mee...
Micro XRCE-DDS: Bringing DDS into microcontrollers
WebRTC Webinar & Q&A - Sumilcast Standards & Implementation
IoT Protocols Integration with Vortex Gateway
Webinar - Bringing connected graph data to Cassandra with DSE Graph
Reactive Data Centric Architectures with DDS
Eagle6 mongo dc revised
Eagle6 Enterprise Situational Awareness
The Heterogeneous Data lake
ER/Studio and DB PowerStudio Launch Webinar: Big Data, Big Models, Big News!
Ad

More from Gerardo Pardo-Castellote (20)

PDF
DDS-Security 1.2 - What's New? Stronger security for long-running systems
PDF
DDS, the US Navy, and the Need for Distributed Software
PDF
Introduction to DDS: Context, Information Model, Security, and Applications.
PDF
DDS-TSN OMG Request for Proposals (RFP)
PDF
A Converged Approach to Standards for Industrial Automation
PDF
DDS-Security Interoperability Demo - March 2018
PDF
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
PDF
Deep Dive into the OPC UA / DDS Gateway Specification
PDF
OPC UA/DDS Gateway version 1.0 Beta
PDF
DDS for eXtremely Resource Constrained Environments 1.0 Beta
PDF
DDS-Security Interoperability Demo - December 2017
PDF
DDS-Security Interoperability Demo - September 2017
PDF
Extensible Types for DDS (DDS-XTYPES) version 1.2
PDF
DDS-Security version 1.1
PDF
Interface Definition Language (IDL) version 4.2
PDF
DDS Security Specification version 1.0
PDF
DDS for eXtremely Resource Constrained Environments
PDF
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)
PDF
Industrial IOT Data Connectivity Standard
PDF
Using DDS to Secure the Industrial Internet of Things (IIoT)
DDS-Security 1.2 - What's New? Stronger security for long-running systems
DDS, the US Navy, and the Need for Distributed Software
Introduction to DDS: Context, Information Model, Security, and Applications.
DDS-TSN OMG Request for Proposals (RFP)
A Converged Approach to Standards for Industrial Automation
DDS-Security Interoperability Demo - March 2018
Applying MBSE to the Industrial IoT: Using SysML with Connext DDS and Simulink
Deep Dive into the OPC UA / DDS Gateway Specification
OPC UA/DDS Gateway version 1.0 Beta
DDS for eXtremely Resource Constrained Environments 1.0 Beta
DDS-Security Interoperability Demo - December 2017
DDS-Security Interoperability Demo - September 2017
Extensible Types for DDS (DDS-XTYPES) version 1.2
DDS-Security version 1.1
Interface Definition Language (IDL) version 4.2
DDS Security Specification version 1.0
DDS for eXtremely Resource Constrained Environments
DDS - The Proven Data Connectivity Standard for the Industrial IoT (IIoT)
Industrial IOT Data Connectivity Standard
Using DDS to Secure the Industrial Internet of Things (IIoT)

Recently uploaded (20)

PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
ai tools demonstartion for schools and inter college
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
System and Network Administration Chapter 2
PDF
medical staffing services at VALiNTRY
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Nekopoi APK 2025 free lastest update
PPTX
Online Work Permit System for Fast Permit Processing
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
Transform Your Business with a Software ERP System
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
AI in Product Development-omnex systems
PDF
System and Network Administraation Chapter 3
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
Understanding Forklifts - TECH EHS Solution
Odoo Companies in India – Driving Business Transformation.pdf
How to Migrate SBCGlobal Email to Yahoo Easily
ai tools demonstartion for schools and inter college
Which alternative to Crystal Reports is best for small or large businesses.pdf
System and Network Administration Chapter 2
medical staffing services at VALiNTRY
VVF-Customer-Presentation2025-Ver1.9.pptx
Navsoft: AI-Powered Business Solutions & Custom Software Development
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Nekopoi APK 2025 free lastest update
Online Work Permit System for Fast Permit Processing
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
Transform Your Business with a Software ERP System
CHAPTER 2 - PM Management and IT Context
Softaken Excel to vCard Converter Software.pdf
AI in Product Development-omnex systems
System and Network Administraation Chapter 3
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
Understanding Forklifts - TECH EHS Solution

Overview of the DDS-XRCE specification

  • 1. Gerardo Pardo-Castellote, Ph.D. CTO, Real-Time Innovations, Inc. DDS-XRCE Specification Overview DDS for Extremely Resource Contained Networks
  • 2. New OMG Specification • The DDS-XRCE specification was adopted March 2018 • Documents are available from the OMG at: https://www.omg.org/spec/DDS-XRCE/ • It is considered a Beta specification to be finalized by March 2019 ©2017 Real-Time Innovations, Inc.
  • 3. Outline • Motivation • Big Picture • Message Structure • Interaction Model • Security • Deployments • Transport Model • Conformance Profiles • Conclusion ©2017 Real-Time Innovations, Inc.
  • 5. DDS is Being Extended to the very Edge • Users want to leverage the benefits of the DDS Data-Bus to applications at the edge of the network, including Sensor Networks • These systems are constrained in many dimensions: CPU, memory, power, connectivity, transport payload & bandwidth • The constraints make it not possible make the edge nodes direct peer-to-peer participants on the DDS Domain and run DDS-RTPS • DDS-XRCE solves this problem by defining a new Client-to-Agent allowing the use of an Agent to communicate with a DDS Domain
  • 8. Common approach: Agent-Based deployment model XRCE Agent Global Data SpaceDDS/ RTPS Client Client Client DDS-XRCE XRCE Agent Client Client Client DDS App DDS App DDS App DDS App DDS App
  • 9. Agent-Based deployment model XRCE AgentClient XRCE Protocol Global Data Space DDS/ RTPS Existing DDS Interoperability Wire Protocol New protocol defined by the DDS-XRCE specification Resource Constrained Network ~ 40Kbps, 100Byte MTU Resource Constrained Device: ~ 100 KB RAM Battery Powered Sleep Cycles
  • 10. Formal specification of the Agent and Protocol XRCE AgentClient XRCE Protocol Global Data Space DDS/ RTPS XRCE Protocol DDS/RTPS Protocol
  • 11. Formal specification of the Agent and Protocol Client XRCE Protocol Global Data Space DDS/ RTPS HEADER MSG1 MSG2 XRCE Object Model Message Structure + Interaction Model +
  • 12. XRCE Agent Object Model class DDS-Mapping DDSXRCE:: DomainParticipant DDSXRCE::Publisher DDSXRCE::Subscriber DDSXRCE:: DataWriter DDSXRCE::DataReader DDSXRCE::Topic DDS::DomainParticipantFactory DDS::DomainParticipant DDS::Publisher DDS::Subscriber DDS::TopicDescription DDS::Topic DDS::ContentFilteredTopic DDS::DataReader DDS::DataWriter «value» DDSXRCE::Qos «value» DDSXRCE:: QosProfile Qos + DataReaderQos + DataWriterQos + DomainParticipantQos + PublisherQos + SubscriberQos + TopicQos (from DDS) DDSXRCE::Application «use» «use» «use» «use» «use» «use» 0..* «use» «use» «use» «use» «use»
  • 13. ©2017 Real-Time Innovations, Inc. classApplication DDSXRCE::Application + create_participant(): ReturnStatus + update_participant(): ReturnStatus + delete_participant(): ReturnStatus + create_waitset(): ReturnStatus + update_waitset(): ReturnStatus + delete_waitset(): ReturnStatus DDSXRCE::DomainParticipant DDS::DomainParticipant DDS:: DomainParticipantFactory DDSXRCE::AccessController + check_permissions(): ReturnStatus «value» DDSXRCE::Type «value» DDSXRCE:: QosProfile DDSXRCE::QosLibrary «use» «use» «use» «use» «use» 0..* «use»
  • 14. ©2017 Real-Time Innovations, Inc. classParticipant DDSXRCE::Application DDSXRCE::DomainParticipant + register_type(): ReturnStatus + unregister_type(): ReturnStatus + create_topic(): ReturnStatus + update_topic(): ReturnStatus + delete_topic(): ReturnStatus + create_publisher(): ReturnStatus + update_publisher(): ReturnStatus + delete_publisher(): ReturnStatus + create_subscriber(): ReturnStatus + update_subscriber(): ReturnStatus + delete_subscriber(): ReturnStatus + get_topics(): ReturnStatus + get_publishers(): ReturnStatus + get_subscribers(): ReturnStatus DDS::DomainParticipant DDS:: DomainParticipantFactory DDSXRCE::AccessController + check_permissions(): ReturnStatus DDSXRCE::Topic DDSXRCE:: Publisher DDSXRCE:: Subscriber «value» DDSXRCE::Type DDSXRCE:: RegisteredType «interface» DDSXRCE::Entity + name: string 0..* «use» «use» «use» «use» registeredTypeName «use» typeName «use» «use»
  • 15. ©2017 Real-Time Innovations, Inc. class DataWriter DDSXRCE::DataWriter + create_instance(): ReturnStatus + update_instance(): ReturnStatus + delete_instance(): ReturnStatus + write(): ReturnStatus DDS::DataWriter DDSXRCE:: Publisher DDSXRCE::Topic DDS::Publisher TopicDescription DDS::Topic «interface» DDSXRCE::Entity + name: string «use» «use» «use»
  • 16. ©2017 Real-Time Innovations, Inc. classDataReader DDSXRCE:: Subscriber DDSXRCE::DataReader + get(): ReturnStatus DDSXRCE::Topic - registeredTypeName: string - topicName: string DDS:: TopicDescription DDS::Topic DDS::DataReader DDS::Subscriber «interface» DDSXRCE::Entity + name: string «use» «use» «use» «use»
  • 17. ©2017 Real-Time Innovations, Inc. classAccessController DDSXRCE::AccessController + check_permissions(): ReturnStatus «singleton» DDSXRCE::Root DDSXRCE::Application DDSXRCE:: Publisher DDSXRCE:: Subscriber DDSXRCE:: DomainParticipant DDSXRCE::ProxyClient - clientAPIKey: string 0..* «use» 0..* 0..* 1 «use» «use» «use»
  • 18. Resource Names, Representation, and ID • Each resource has: – A name (addresses it within the Agent) and Context • Example the type “ShapeType” – A representation. Describes the resource • Declarative way to describe the Agent resource • Not expected to go on the wire in most cases – An ID. Provides (integer) shortcurt for Client to reference XRCE object/resource • Multiple representations supported: NAME, XML, BINARY ©2017 Real-Time Innovations, Inc.
  • 19. Qos Representation • Typical: pre-defined profiles in Agent – Name-Representation -> QosPofile name • Allow exchanging Qos between client and Agent: – XML Representation. Uses XML (or future JSON format) • Can configure complete set of DDS Qos policies • Re-uses DDS-XTYPES – Binary Representation • Allow sending a subset of the Qos using a BINARY representation • Reuses XCDR • Example: <qos_profile name="MyProf" base_name="ExistingProfile " > <datawriter_qos> <history> <depth>10</depth> </history> </datawriter_qos> </qos_profile> ©2017 Real-Time Innovations, Inc.
  • 20. Type Representation • Typical: types pre-defined profiles in Agent • Name-Representation -> QosPofile name • Allow exchanging Types between client and Agent: – XML Representation. Uses XML (or future JSON format) • Can configure complete set of DDS Types policies • Re-uses DDS-XTYPES – Binary Representation (possible extension) • Allow exchange a any type information using a BINARY representation • Reuses XCDR • Example type description using XML representation: <struct name="ShapeStruct"> <member name="color" type="string"/> <member name="x" type="int32"/> <member name="y" type="int32"/> <member name="shapesize" type="int32"/> </struct> ©2017 Real-Time Innovations, Inc.
  • 22. Message Header + Submessages ©2017 Real-Time Innovations, Inc. XRCE Header Submessage Submessage Submessage 0 8 16 24 31 +---------------+---------------+---------------+---------------+ | sessionId | streamId | sequenceNr | +---------------+-------+-------+---------------+---------------+ | clientKey (optional is sessionId > 128) | +---------------+---------------+---------------+---------------+ 0 4 8 16 24 31 +---------------+---------------+---------------+---------------+ | submessageId | flags | submessageLength | +---------------+---------------+---------------+---------------+ ~ <payload – depends on smId & resourceType> ~ +---------------+---------------+---------------+---------------+ XRCE Header Submessage
  • 23. 13 kind of Sub Messages ©2017 Real-Time Innovations, Inc. classSubmessages DDSXRCE::Submessage DDSXRCE:: Submessage:: CREATE DDSXRCE:: Submessage:: GET_INFO DDSXRCE:: Submessage:: DELETE DDSXRCE:: Submessage::INFO DDSXRCE:: Submessage:: STATUS DDSXRCE:: Submessage:: ACKNACK DDSXRCE:: Submessage:: HEARTBEAT DDSXRCE::Submessage:: SubmessageHeader - submessageId: byte - flags: byte - submessageLength: short DDSXRCE:: Submessage:: DATA DDSXRCE:: Submessage:: FRAGMENT DDSXRCE:: Submessage:: READ_DATA DDSXRCE:: Submessage:: WRITE_DATA DDSXRCE:: Submessage:: RESET DDSXRCE:: Submessage:: CREATE_CLIENT 1
  • 24. Submessage kinds ©2017 Real-Time Innovations, Inc. SubmessageId Value Note CREATE 1 Client to Agent. Specifies resource Name or Representation GET_INFO 2 Client to Agent. DELETE 3 Client to Agent. STATUS 4 Response to CREATE, UPDATE or DELETE. INFO 5 Response to a GET_INFO. Contains information about an Xrce: Object. WRITE_DATA 6 Client to Agent. Used to write data using a Xrce::DataWriter. READ_DATA 7 Client to Agent. Used to read data using a Xrce::DataReader. DATA 8 Agent to Client in response to a READ_DATA ACKNACK 9 Bi-directional. HEARTBEAT 10 Bi-directional. RESET 11 Bi-directional FRAGMENT 12 Bi-directional
  • 25. Example: DATA Message ©2017 Real-Time Innovations, Inc. 0 8 16 24 31 +---------------+--------+-------+----------------+----------------+ | session_id | stream_id | sequenceNr | 4 +-------+-------+----------------+----------------+----------------+ | DATA | flags | submessageLength | 8 +---------------+----------------+----------------+----------------+ | request_id | object_id | 12 +---------------+----------------+----------------+----------------+ + XCDR_Serialization(foo) + 16 +---------------+--------+-------+----------------+----------------+ Payload format Depends on flags Serialization uses DDS- XTYPES format
  • 26. Example: Creating a Client ©2017 Real-Time Innovations, Inc. 0 8 16 24 31 +---------------+---------------+---------------+---------------+ | 0x80 | 0x00 | 0x00 | 4 +-------+-------+---------------+---------------+---------------+ | CREATE_CLIENT | flags | submessageLength | 8 +-------+-------+---------------+---------------+---------------+ | request_id | object_id | 12 +-------+-------+---------------+---------------+---------------+ | xrce_cookie | 16 +-------+-------+-------+-------+-------+-------+-------+-------+ | xrce_version | xrce_vendor_id | 20 +-------+-------+---------------+---------------+---------------+ | client_timestamp.seconds | 24 + + | client_timestamp.nanoseconds | 26 +-------+-------+---------------+---------------+---------------+ | client_key | 30 +-------+-------+---------------+---------------+---------------+ | session_id | +-------+-------+ Built-in security mechanism using ClientKey
  • 27. Example: DATA as a sequence ©2017 Real-Time Innovations, Inc. 0 8 16 24 31 +---------------+----------------+----------------+----------------+ | session_id | stream_id | sequenceNr | 4 +-------+-------+----------------+----------------+----------------+ | READ_DATA | flags | submessageLength | 8 +---------------+----------------+----------------+----------------+ | request_id | object_id | 12 +---------------+----------------+----------------+----------------+ | is_present=0 | FORMAT_DATA_SEQ| max_samples | 16 +---------------+----------------+----------------+----------------+ | max_elapsed_time | 20 +---------------+----------------+----------------+----------------+ | max_rate | 24 +---------------+----------------+----------------+----------------+
  • 28. Writer Reliability ©2017 Real-Time Innovations, Inc. Initial AllMessagesAcknowledged MessagesNotFullyAcked write /HighestSentSequenceNumber++ receive(ACKNACK) /save HigestAcknowledgedSeqNumber repair SequenceNumber in NACK [HeartBeatPeriod] /Send(HeartBeat, HighestSentSequenceNumber) write /HighestSentSequenceNumber++ [HiguestReceivedSeqNumber ==HiguestSentSequenceNumber]
  • 29. Reader Reliability ©2017 Real-Time Innovations, Inc. Initial ReceivedAllMessages MissingMessageFromSender Choice / HiguestReceivedSequenceNumber :=0 [HiguestAnnouncedSequenceNumber <=HiguestReceivedSequenceNumber] receive(HeartBeat, HigestAnnouncedSequenceNumber) [HiguestAnnouncedSequenceNumber >HiguestReceivedSequenceNumber] receive(HeartBeat, HigestAnnouncedSequenceNumber) [XRCEClient && NackPeriod] /Send(ACKNACK)
  • 31. ©2017 Real-Time Innovations, Inc. sd Client Agent XRCE AgentXRCE Client RESOURCE_STATUS(DataWriter) RESOURCE_STATUS(Session) ASSERT_RESOURCE(Session) WRITE_DATA(DataWriter) WRITE_DATA(DataWriter) ASSERT_RESOURCE(DataWriter) DELETE_RESOURCE(DataWriter, Session) WRITE_DATA(DataWriter) ASSERT_RESOURCE identifies (preconfigured) resource by means its Name and retrieves resourceId Note: Using CREATE instead of ASSERT_RESOURCE can create the resource from its representation
  • 32. ©2017 Real-Time Innovations, Inc. sd Minimal Publisher XRCE Client XRCE Agent DELETE_RESOURCE() WRITE_DATA() ASSERT_RESOURCE(Session) WRITE_DATA() RESOURCE_STATUS() WRITE_DATA() The resourceId for specific objects (e.g. a DataWriter) can also be pre-configured. This saves having to ASSERT it.
  • 33. ©2017 Real-Time Innovations, Inc. sd Minimal Subscriber XRCE Client XRCE Agent DATA() DATA() ASSERT_RESOURCE(Session) DELETE_RESOURCE() DATA() CONFIG_READ()
  • 35. Security approach • Assumes transport-level security is in place • Message Header includes (4-Byte) secret ClientKey • Agent uses ClientKey to determine client permissions and Identity – Leverages DDS-Security identity and permissions documents – Proxy DDS DomainParticipant are exclusive to a single Client ©2017 Real-Time Innovations, Inc.
  • 37. Six deployment scenarios • XRCE Client to DDS communication • XRCE Client to Client via DDS • Client-to-Client communication brokered by an Agent • Federated deployment • Direct Peer-to-Peer communication between clients • Combined deployment
  • 38. XRCE Client to DDS communication ©2017 Real-Time Innovations, Inc. Global Data Space XRCE Agent DDS-RTPS Protocol XRCE Client DDS DomainParticipant DDS-RTPS XRCE Protocol
  • 39. XRCE Client to Client via DDS ©2017 Real-Time Innovations, Inc. Global Data Space XRCE Agent XRCE Client XRCE Agent XRCE Client XRCE Protocol XRCE Protocol DDS-RTPS Protocol DDS-RTPS Protocol
  • 40. Client-to-Client communication brokered by an Agent ©2017 Real-Time Innovations, Inc. XRCE Protocol Global Data Space XRCE Agent XRCE Client XRCE Client DDS-RTPS Protocol
  • 41. Federated deployment ©2017 Real-Time Innovations, Inc. Global Data Space XRCE Agent XRCE Client XRCE Agent XRCE Client DDS-RTPS Protocol XRCE Client XRCE Protocol XRCE Agent
  • 42. Direct Peer-to-Peer communication between clients • Not an RFP requirement • Protocols supports it without any additions • Applications “opt-in” by instantiating: – Embedded XRCE Agent – XRCE Client per matched peer • Maybe implemented without extra objects. Just the state needs to be kept. ©2017 Real-Time Innovations, Inc. XRCE Agent XRCE Client XRCE Client XRCE Agent XRCE Client XRCE Client XRCE Protocol XRCE Agent XRCE Client XRCE Client
  • 43. Combined deployment ©2017 Real-Time Innovations, Inc. Global Data Space XRCE Agent XRCE Client DDS-RTPS Protocol XRCE Client XRCE Protocol XRCE Agent DDS DomainParticipant DDS DomainParticipant XRCE Agent XRCE Client XRCE Client XRCE Agent XRCE Client XRCE Client
  • 45. Transport Mappings • Specifies common requirements for XRCE Transports • Specifies mapping to UDP and TCP • Pattern for additional Transport mappings. Define: – Transport Locators – Connection Establishment – Message Envelopes – Agent Discovery ©2017 Real-Time Innovations, Inc.
  • 46. Transport requirements • Packet-oriented or connection oriented • It does not need to provide reliability – Messages may be dropped • It does not need to provide ordering – Messages may arrive out of order • It does not need to provide notification of dropped messages • Must support transport-level security (e.g. TLS or DTLS) ©2017 Real-Time Innovations, Inc.
  • 47. Reliability • Reliability per stream, multiple (256) streams – Builtin streams 0-5 are present on every session – Even-numbered streamIds are best-efforts. – Reliable streams use HB/ ACKNACK protocol • Similar to DDS/RTPS • Multiple Writers can share same stream as configured by client • Multiple Readers can also share the same stream ©2017 Real-Time Innovations, Inc.
  • 49. Conformance profiles Profile Description Read Access Client can read any DDS Write Access Client can write any DDS Configure Entities Client can configure/define DDS Entities dynamically Agent can have Qos configured/defined remotely Configure Qos Client can configure/define DDS Qos dynamically Agent can have Qos configured/defined remotely Configure Types Client can define DDS Type dynamically Agent can have Qos configured/defined remotely Discovery Client can discover Topics and Types available on DDS GDS File-based Config Agent can be configured via XML files UDP Transport Implements XRCE on UDP
  • 51. DDS-XRCE Conclusions • New DDS-XRCE specification adopted by OMG in March 2018 – Considered Beta until March 2019 – https://www.omg.org/spec/DDS-XRCE/ • DDS-XRCE extends DDS to resource-constrained environments – Memory constraints – CPU constraints (e.g. Micro-controllers) – Power Constraints (battery power and sleep cycles) – Transport constraints (ZigBee, BLE, …) • Uses a Client/Agent architecture – Devices connect to DDS Domain via an Agent • DDS-XRCE SDK allows full access to DDS Topic data from the resource- constrained device using the Agent as relay ©2017 Real-Time Innovations, Inc.