The Object Management Group (OMG) Data Distribution Service (DDS) standard is what is called an "open standard." This means that the standard is publicly available and provides a normative reference to help guarantee consistency, portability and interoperability. An open standard is not the same thing as software that is "open source." Open source software is computer software made available with its source code. Open source software may be shared and modified and distributed, usually under an open source license. The DDS Standard is an open standard and has open source implementations available. For example, OpenDDS is an open source implementation of DDS managed by OCI (Object Computing Inc.). There are many commercial distributions that are available as well, the most popular being RTI's Connext® DDS.
So, what should you consider when deciding between an open source DDS solution versus a commercial solution?
When deciding between open source DDS and a commercial DDS, it's important to determine the DDS features that you need and compare them to the features available with the DDS release you want to use. If you aren't certain of what you will need, a complete implementation is more likely to meet your needs in the long run. For example, RTI Connext DDS supports the complete DDS API.
Here are some of the standard OMG DDS capabilities that RTI Connext DDS supports which are not commonly found in open source distributions:
- Language support - Connext DDS supports traditional C++, C++03, C++11, Java, Ada, C# and .Net. As an example, OpenDDS only supports traditional C++.
- Presentation Quality of Service (QoS) - the ability to control the order in which samples arrive at the subscriber.
- Writer side content filtering - uses less bandwidth and fewer CPU cycles on the receiver side.
- Data types definition - defines data types in a more flexible way with the ability to evolve over time without giving up portability, interoperability or the expressiveness of the DDS type system. This is known as extensible types.
- Request/reply functionality - part of the OMG standard and provides users with an additional messaging paradigm to fit their use case.
- XML Application Language specification support - provides users with QoS configuration through XML files.
- Coherent data across multiple Topics - this is implemented with coherent sets with presentation access scope.
Here are some of the enhanced (non-standard) capabilities that RTI Connext DDS supports which are not commonly found in open source distributions, including the ability to:
- Guarantee delivery features including "application-level" acknowledgments, virtual GUIDs (to support redundant routing services), durable subscriptions, durable writer history and collaborative datawriters.
- Combine smaller packets into a larger packet for greater throughput (batching).
- Query historical data from your Topics (Topic Query).
- Dynamically add, remove and change IP connections (IP Mobility).
Application Components and Services
When considering which solution is best for you, it's important to determine what support outside the DDS core you need that the DDS version you are using does not have. Do you need to interface with web pages? Do you want to integrate with a relational database? Some of the key services that are not available with open source DDS include:
- Routing Service - forward and transform data between networks.
- Record and Replay Service – record data at high speeds. Replay to a live or simulated system.
- Database Integration Service – store DDS data into relational databases. Monitor database changes from anywhere using DDS.
- Web Integration Service – develop web-based and browser-based applications. Read and write DDS data using only HTTP commands.
- Persistence Service – store data permanently and make it available to applications whenever they join the system.
- System Designer – graphically design and configure Connext DDS systems.
- Prototyper – prototype, exercise and test a DDS system.
- Cloud Discovery Service – deploy DDS in the cloud.
You will also want to determine what development tools are available for the DDS implementation you are considering. Quite often DDS is used in large inter-connected systems that can be quite complex. Having the right tools available to debug these systems is crucial. Connext DDS has a complete set of tools that have been designed to meet the needs of our customers, including:
- Admin Console – view running DDS applications and visualize the data. See the participants, topics, writers, and readers including QOS settings and data-types. Connection problems are automatically identified.
- Monitor – get detailed information on DDS entities, traffic and internal state.
- rtiddsspy – command line utility to view what is being published and what is being subscribed.
- Excel Spreadsheet Add-in – Read and write DDS from Microsoft Excel.
- Heap Analysis Tool – Take snapshots of DDS heap usage and quickly identify any memory leaks.
Open Source DDS distributions do not directly include any security support. That is they do not support the DDS Security standard and also do not have any TLS or DTLS transports readily available. RTI Connext DDS does support the DDS Security standard and has had releases available since the Connext DDS Secure beta was first released in 2015. Connext DDS also has a Secure WAN transport that includes TLS and DTLS support. You can read more about RTI Connext DDS Secure here: https://www.rti.com/products/secure
Does your application need some form of certification? It is time consuming and expensive to certify software, and the more code that is involved, the harder it is to do. Currently the only certified version of DDS is RTI Connext DDS Cert. Connext DDS Cert supports a subset of the DDS standard API and has been certified to DO178C level A certification. You can read more about Connext DDS Cert here: https://www.rti.com/products/dds/cert
Probably the most important factor when determining if open source DDS is a good fit is the robustness of the implementation. The best way for software to prove itself is in actual customer applications. How many real deployed systems are using the DDS implementation you are considering? When an implementation has been successfully fielded over and over and over again, you know that it can do the job. Connext DDS has been field-tested, proven and used by more than 1000 different projects in over 1 million devices today. Some of these complex, mission-critical applications that leverage Connext DDS today include:
- Grand Coulee Dam – 24x7 operation, 300K data values
- NASA KSC Launch Control – 300K points, at 400k msgs/sec
- Raytheon Zumwalt destroyer – 1500 DDS applications, 10m publishable pairs
- Shanghai PVG airport ground control - used across Southeast China Regional Airports since 2015
Connext DDS has proven itself over and over again in real-life applications.
Secondly, RTI really tests the heck out of DDS. This includes extensive automated testing, rigorous training and reviews, and extensive issue tracking and management. In addition, the RTI IIoT Testing Lab is the industry’s largest, most complete lab facility, featuring:
- 240-core scale test; runs 1000s of concurrent programs, 10k endpoints
- 32 fast Xeon CPU array
- 128-board Micro test array
- Almost 100 different types of computers
A very important question to ask yourself is, what is the quality of the DDS release that you are entrusting your products to?
What is the target architecture, operating system and compiler you are going to use? Does the DDS implementation you are considering even support the language you want to use? Also, how often and quickly do new architectures and OS versions get supported? It’s important to ensure the platform you want to use is supported. If it is not supported, what services are available to create that platform and support it?
Connext DDS supports the largest number of platforms in the industry. Note that if support for a certain platform is not available, open source DDS can be rebuilt to provide the support needed. Open source DDS comes with source and instructions on how to rebuild the source. Connext DDS also allows customers to build their own libraries but this is primarily used for testing purposes. Whenever you are building your own DDS libraries, note that it is not always straightforward and you have to consider what testing has already been done.
Some open source DDS implementations are available as a free download. So, in the short run they cost less than a commercial DDS. However, over time the cost of using open source DDS can increase. While open source DDS is supported by an open source community and does not have any license fees or support fees, you must rely on community support or pay another company for support. As a result, it can very well be that open source DDS will cost more in the long run due to missing features, the extra developers that are needed, increased development time and additional support costs. How important is time to market to you? How important is fast, reliable support? Weigh the cost of a commercial DDS license versus the loaded cost of an engineer per year. Is it worth it to save the money up front?
Time to Market
How quickly are you going to get your product to market with each of the DDS alternatives? If the DDS implementation you want to use is less complete – does not have the tools, support or services you need, or just does not work as expected – how is that going to affect your time to market? How important is getting your product out on time?
Generally speaking, commercial DDS implementations are more full-featured and more robust than open source versions. This is because they have a larger number of engineers dedicated full-time to development and testing. For instance, Connext DDS Professional has over 50 engineers working full time on development. This does not include the 25 full-time support engineers, or the services or training engineers.
It is critical to understand what support is available to you in case you run into problems. Open source DDS does have support available through online user groups as well as through third parties for a fee. However, you’ll want to determine if the support engineers are dedicated to just this implementation or if they support several different products (i.e., are they focused on the product that you are using?). Also, do they have an escalation policy if you run into critical problems?
RTI understands that connectivity software is a mission-critical part of your application and treats customer support with the seriousness that it deserves. Our support engineers are exceptionally qualified: they are experts at designing, debugging and implementing distributed real-time and embedded systems. With support centers in the US and Europe, DDS support engineers can be reached almost 24/7. In addition, DDS support engineers are co-located with, and have direct access to, development engineering resources. It is imperative to have the development engineers help out when a critical issue has stopped your project’s progress.
Also, RTI has examples available online for most of the Connext DDS features. Plus, everything is Google-searchable so getting help is as easy as doing a web search. This includes user group articles, instructional videos, example code, online training and documentation.
It is important that you completely understand your requirements, and what features and services you need before selecting which DDS implementation to use. The following are some of the key questions to help define your requirements:
- Is the language that you want to use supported?
- Is integration with scripting languages required?
- Do you need integration with the cloud? Or with a relational database?
- Will you need security in the future? Or certification?
- Is the release robust? Does it go through rigorous testing? Has it been successfully used numerous times in fielded applications?
If you have a complex product with time-to-market concerns that needs to be rock solid, well supported, and with the features you need now and in the future, then RTI Connext DDS is the right choice.