![]() |
dds-router repositorymiddleware router dds omg ros2 rtps fastdds ddsrouter_core ddsrouter_test ddsrouter_yaml ddsrouter_docs ddsrouter_tool ddsrouter_yaml_validator |
Repository Summary
Description | The DDS Router is an application developed by eProsima that allows, using Fast DDS, to communicate by DDS protocol different networks. Looking for commercial support? Contact info@eprosima.com |
Checkout URI | https://github.com/eprosima/dds-router.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2022-12-20 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | middleware router dds omg ros2 rtps fastdds |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
ddsrouter_core | 1.1.0 |
ddsrouter_test | 1.1.0 |
ddsrouter_yaml | 1.1.0 |
ddsrouter_docs | 0.0.0 |
ddsrouter_tool | 1.1.0 |
ddsrouter_yaml_validator | 1.1.0 |
README
eProsima DDS Router
eProsima DDS Router is an end-user software application that enables the connection of distributed DDS networks. That is, DDS entities such as publishers and subscribers deployed in one geographic location and using a dedicated local network will be able to communicate with other DDS entities deployed in different geographic areas on their own dedicated local networks as if they were all on the same network through the use of eProsima DDS Router. This is achieved by deploying a DDS Router on an edge device of each local network so that the DDS Router routes DDS traffic from one network to the other through WAN communication.
Furthermore, DDS Router is a software designed for various forms of distributed networks, such as mesh networks in which nodes are deployed in different private local networks that are auto-discovered without any centralized network node, or cloud-based networks where there is a data processing cloud and multiple geographically distributed edge devices.
Following are some of the key features of eProsima DDS Router:
- WAN communication over TCP: it supports WAN over TCP communication to establish DDS communications over the Internet.
- Distributed nature: the user may deploy intermediate DDS Router nodes to discover new entities that enter and leave the network dynamically.
- Efficient data routing: DDS Router avoids data introspection achieving a zero-copy system in data forwarding.
- Easy deployment: it is based on an easily configurable modular system for users with no knowledge of computer networks.
- Topic allowlisting: it is possible to configure a DDS Router to forward just the user data belonging to a topic specified by the user.
- Dynamic topic discovery: the user does not need to fully specify over which topics to communicate (i.e. provide concrete topic names and types). The discovery of topics matching the allowlisting rules automatically triggers the creation of all entities required for communication.
Documentation
You can access the documentation online, which is hosted on Read the Docs.
Installation Guide
The instructions for installing the DDS Router application from sources and its required dependencies on a Linux environment are provided below. These installation instructions are a summarized version of the complete installation guide available online. Instructions for installing DDS Router on a Windows platform can be found here.
Requirements
eProsima DDS Router requires the following tools to be installed in the system:
- CMake, g++, pip, wget and git
- Colcon [optional, not required for CMake-only installation]
- Gtest [for test only]
- PyYAML [for YAML Validator only]
- jsonschema [for YAML Validator only]
CMake, g++, pip, wget and git
These packages provide the tools required to install DDS Router and its dependencies from command line. Install CMake, g++, pip, wget and git using the package manager of the appropriate Linux distribution. For example, on Ubuntu use the command:
sudo apt install cmake g++ pip wget git
Colcon
colcon is a command line tool based on CMake aimed at building sets of software packages. Install the ROS 2 development tools (colcon and vcstool) by executing the following command:
pip3 install -U colcon-common-extensions vcstool
If this fails due to an Environment Error, add the --user
flag to the pip3
installation command.
Gtest
Gtest is a unit testing library for C++. By default, DDS Router does not compile tests. It is possible to activate them with the opportune CMake options when calling colcon or CMake. For a detailed description of the Gtest installation process, please refer to the Gtest Installation Guide.
File truncated at 100 lines see the full file
CONTRIBUTING
Contribution Guidelines
The following documents constitutes a set of guidelines to which contributors must adhere.
Contributions Licensing
Any contribution that you make to this repository will be under the Apache 2 License, as dictated by that license:
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
Developer Certificate of Origin
Contributors must sign-off each commit by adding a Signed-off-by: ...
line to commit messages to certify that they have the right to submit
the code they are contributing to the project according to the
Developer Certificate of Origin (DCO).
Code Coverage
All contributions to the project should increase the line code coverage whenever possible. Because of this, contributors are asked to locally run a coverage assessment that ensures that code coverage has increased when compared to the latest execution of the nightly coverage CI job.
Issues and Support
eProsima DDS Router developers welcome all contributions, and we will be grateful if you follow the guidelines below while contributing to this project.
Also, this project classifies user issues in the following categories. Please, help us giving you a better support by opening your issue in the corresponding category.
Issues
DDS Router issues are understood as bug reports and may be opened by anyone here. Consequently, this section handles malfunctions in the current documented behavior of the library or non-compliances to the DDS specification. If you are unsure on whether your experienced behavior falls into this category, please open a ticket in the Support discussion forum and, if it is a malfunction, an issue will be opened on your behalf with the provided report.
It is really appreciated if all related information is provided so the issue may be reproduced.
Otherwise, more information could be required in order to reproduce and solve the issue.
If this is the case, the issue will be labeled with need more info
.
Please, be advised that in case that no response is received within a month, the issue would be closed due to inactivity.
The issue may be reopened if the required information is provided.
Feature request
Feature requests and improvements suggestions should be opened in the Ideas discussion forum. Please, remember to select the corresponding category while opening the discussion. It is also encouraged to contact directly with eProsima support team for a feature evaluation.
Q&A
Questions about eProsima DDS Router behavior and features should be opened in the Q&A (Questions & Answers) discussion forum. Please, remember to select the correct category while opening the discussion. It is strongly advised to first consult eProsima DDS Router documentation and previous Q&A in the forum.
Support
Most user issues would fall in this category. eProsima DDS Router provides a lot of features and tuning the library for optimal behavior for each use case is not an easy task. These issues should be opened in the Support discussion forum. Please, remember to select the corresponding category while opening the discussion. Please, take into account that eProsima DDS Router provides official support for the Tier 1 platforms, architectures and compilers defined here. Any other support should be opened in the next section: Unofficial support
Unofficial support
Any issue related with a non-officially supported platform, architecture and/or compiler should be opened in the Unofficial support discussion forum. Please, remember to select the corresponding category while opening the discussion. If official support is wanted for any platform, architecture and/or compiler, please contact directly with eProsima support team for an evaluation.