Skip to content

How to enable communication across multiple network interfaces? #545

@zhuheixin

Description

@zhuheixin

I have a multi-network setup involving two edge devices (A and B) and one laptop (C):
Device A and B are connected via a wired Ethernet network.

Device B has two network interfaces:
eth0: connected to A (wired LAN)
wlan0: connected to a Wi-Fi network
Laptop C connects to B through Wi-Fi.

Device A runs all sensor drivers and publishes ROS 2 topics (sensor data) over the wired interface.
Device B and C should be able to access those topics.

However, since the wired and wireless networks are on different subnets, ROS 2 (using CycloneDDS) cannot automatically discover or communicate across them.

Goal
Enable device C (connected via Wi-Fi) to receive ROS 2 topics that originate from device A, even though A and C are on different networks bridged by B.

Question
What is the correct or recommended way to configure CycloneDDS to support communication across multiple network interfaces (wired + wireless) in this kind of topology?
Should I configure CycloneDDS Peers to explicitly connect A ↔ B ↔ C?
Or is there a better way (e.g., bridging, routing, or DDS relay) to forward ROS 2 data between the two networks?

Environment
ROS 2 distribution: [Humble / foxy]
DDS implementation: CycloneDDS
OS: Ubuntu 20.04 / 22.04
Network: Mixed (Ethernet + Wi-Fi)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions