Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature request] Multicast UDP #8

Open
AlexisTM opened this issue Jun 13, 2018 · 4 comments
Open

[Feature request] Multicast UDP #8

AlexisTM opened this issue Jun 13, 2018 · 4 comments

Comments

@AlexisTM
Copy link

In many multi-robot applications, we need few up-downlink for data to the central system and some from the central-system to all the robots which is inconvenient if we are not using Multicast/Broadcast.

@xqms
Copy link
Member

xqms commented Jun 13, 2018

I haven't used this feature in a long time, but you should be able to use broadcast UDP by specifying a broadcast address as the destination.

The problem with multicast/broadcast over WiFi is that most WiFi routers turn off all low-level retransmission mechanisms for multicast packets (since they would need to keep track of multiple receivers). In our experiments, this increased the packet drop rate so much that it simply was not worth it.

TLDR: We won't work on this, but PRs are welcome.

@AlexisTM
Copy link
Author

Did you try IPv6 multicast during your tests? The internet is very enthusiastic about IPv6 for multicast but I only experimented IPv4.

As ROS2 is using DDS, it seems to be capable of UDP multicast. What do you think of the following architecture?
ROS1 using a local master on every machine.
ROS bridge (1 to 2 and 2 to 1) on every machine handling the communication.

@xqms
Copy link
Member

xqms commented Jun 16, 2018

Did you try IPv6 multicast during your tests? The internet is very enthusiastic about IPv6 for multicast but I only experimented IPv4.

No, we did not test IPv6 multicast. I expect the same problems as with IPv4 multicast.

As ROS2 is using DDS, it seems to be capable of UDP multicast. What do you think of the following architecture?
ROS1 using a local master on every machine.
ROS bridge (1 to 2 and 2 to 1) on every machine handling the communication.

It depends on the task you are trying to solve. nimbro_network is designed for high-latency, high-loss networks. DDS will not work well in this context, since it does not have forward error correction (to my knowledge). If your network has low latency, you can certainly try it.

@AlexisTM
Copy link
Author

AlexisTM commented Jun 16, 2018

Thanks @xqms for the fast answer!

We are working on both use-cases: mobile network (using Zerotier as a VPN) and single WiFi access points. It is good to know that it might not work to use DDS with a mobile network due to the high latency.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants