Comments (5)
Hi @Desdroid
First of all, eProsima/Fast-DDS#2394, which is a PR in Fast DDS repository, already solves the error you mention. In any case, that is just an error log that should be an info log so you should be able to communicate without any problems without having to set the listening address on the TCP client side.
Another error I see is in the server .yml
configuration file. Could you remove all the comments from this file as I get an error that it is malformed.
If the error persists could you describe the network infrastructure you have, if you use any kind of containerization technology, if the server access ports are open, etc.
from dds-router.
Hi @rsanchez15,
Thanks for your quick reply and the information on the Fast-DDS issue. I understand that the error should not be related to my problem and is safe to ignore. The .yml
formatting is likely just due to copy and paste, I have no .yml
errors.
My setup is simple: A Azure VM with ROS installed natively and DDS Router acting as the Server. A client on my local machine in wsl2 with ROS and DDS-Router installed natively. The port forwarding is set up server side and is working (I confirmed it with nmap
).
I'm just trying to get the basic ROS talker - listener demo running with talker on the client and listener on the server. I updated both server and client to latest main of this repo.
My config (now uses a different ROS domain for the listener):
Client:
allowlist:
- name: HelloWorldTopic
type: HelloWorld
- name: rt/chatter
type: "std_msgs::msg::dds_::String_"
WANClientParticipant:
type: wan
id: 2
connection-addresses:
- id: 1
addresses:
- ip: "13.81.171.86"
port: 11666
transport: tcp
SimpleParticipant:
type: local
domain: 0
Server:
allowlist:
- name: "HelloWorldTopic"
type: "HelloWorld"
- name: "rt/chatter"
type: "std_msgs::msg::dds_::String_"
WANServerParticipant:
type: "wan"
id: 1
listening-addresses:
- ip: "13.81.171.86"
port: 11666
transport: "tcp"
SimpleParticipant:
type: local
domain: 1
I experimented a bit more and see some strange non-deterministic behavior:
With the config above I succeeded to get the talker - listener example running. However when i kill both - talker and DDS-Router - on the client and restart them the communication occasionally won't work anymore. In this situation the DDS-Router server flooded its log with the following warning:
2022-01-19 10:37:02.918 [RTCP Warning] SEND [RTPS] Failed: Not connect: 23912 @ IP: <eth0-ip-of-wsl> -> Function send
Do you have any idea where this behavior may originate from?
from dds-router.
Hi @Desdroid
We have already identified the bug you mentioned and we are working on it by implementing the bugfixes in the Fast DDS repository. As soon as we have the solution I will inform you of the branch of this repository where the bugfix is located so you can test it since the process of review and merge in the main branch is rather slow due to all the tests that are performed.
Moreover, although we can reproduce the warning you mention, the communication is reestablished between both DDS Routers. So I need you to answer me two more questions:
- Does the re-connection issue you report occur whenever you drop the DDS Router and talker running on your LAN or only on sporadic occasions?
- How do you stop these processes? From your comment it seems that you kill the processes. Could you tell us if you kill the processes as you say or instead you terminate them with a
Ctrl+C
signal, so that both are closed in an orderly fashion?
from dds-router.
Hi @rsanchez15,
Does the re-connection issue you report occur whenever you drop the DDS Router and talker running on your LAN or only on sporadic occasions?
It does only happen sporadically. If it happens it often takes multiple restarts to work again though.
How do you stop these processes? From your comment it seems that you kill the processes. Could you tell us if you kill the processes as you say or instead you terminate them with a Ctrl+C signal, so that both are closed in an orderly fashion?
Indeed this seems to have been the problem.
I stop the processes with the kill
command, which by default sends SIGTERM
. Using Ctrl-C or SIGINT
lets the process terminate gracefully with the log Finishing DDS router execution correctly
which did not appear with SIGTERM
.
I could not replicate the bug i mentioned with Ctrl-C / SIGINT
.
Therefore you can close this issue, thanks a lot for your help. May I know why you don't shutdown gracefully on SIGTERM
?
from dds-router.
Hi @Desdroid,
As you said, I'm closing this issue as your issue is solved.
Also, we take into account your suggestion to shutdown gracefully on SIGTERM
and we'll try to implement it in the following days.
from dds-router.
Related Issues (20)
- DDS-Router for Windows 10 build failed HOT 1
- Latest Documentation
- Question: Does DDS-Router support data deduplication HOT 1
- TLS config for both server and client does not work HOT 2
- Configuration example: WAN with dynamic ipaddresses and dyndns (optional SSL/TLS) HOT 4
- colcon build failed HOT 1
- Messages not routing with Foxy HOT 3
- docs: `addresses` key doesn't seem valid in `connection-addresses` HOT 2
- About 'wan communication over TCP' in readdocs HOT 1
- DDS Router Docker image not compatible with arm64 systems
- About WAN configuration and example HOT 2
- run example error HOT 4
- Deadline is set to 0, it may cause DataReaderImpl::deadline_timer_ timeout immediately HOT 2
- Reporting a vulnerability HOT 1
- Repeater using TCP with same domain ids HOT 1
- router stops after some time HOT 7
- Adding ROS 2 introspection as SUPER_CLIENT HOT 1
- DDS Router invalid when the network is bad(or disconnected) HOT 6
- Not configuration file given, using default file DDS_ROUTER_CONFIGURATION.yaml HOT 5
- DDS Router not forwarding ros2 messages before the first echo. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dds-router.