Skip to content

CycloneDDS Unnecessarily Sends Packets Through Network #489

@amalnanavati

Description

@amalnanavati

Bug report

Overview: While monitoring the LAN in/out throughput on my router, I launch a publisher on my local machine, followed by one subscriber (ros2 topic echo ...), followed by a second subscriber (ros2 topic echo ...). As soon as I launch the second subscriber, my router registers packets going through the LAN corresponding to the throughput of the topic, even though all publishers and subscribers are running on the local machine.

Required Info:

  • Operating System:
    • Ubuntu 22.04.4 (jammy) LTS
  • Installation type:
    • binary
  • Version or commit hash:
    • 1.3.4-1jammy.20240217.062033
  • DDS implementation:
    • CycloneDDS
  • Client library (if applicable):
    • N/A

Steps to reproduce issue

Reproducing this issue requires a way to monitor router LAN throughput; I use NetCloud OS for the Cradlepoint IBR900-600M router. Additionally, this issue is most pronounced when the topic has high throughput; thus, for the publisher I use the DummyRealSense node from this package, and its raw aligned color to depth image.

While monitoring LAN in/out throughout of your router, do:

  1. ros2 daemon stop
  2. In every terminal: export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp
  3. In one terminal, run the publisher: ros2 launch feeding_web_app_ros2_test feeding_web_app_dummy_nodes_launch.xml run_web_bridge:=false run_food_detection:=false run_face_detection:=false run_food_on_fork_detection:=false run_motion:=false
  4. After a few seconds, run the first subscriber: ros2 topic echo /camera/aligned_depth_to_color/image_raw | grep sec
  5. After a few seconds, run the second subscriber: ros2 topic echo /camera/aligned_depth_to_color/image_raw | grep sec
  6. After a few seconds, terminate the second subscriber.
  7. After a few seconds, terminate the first subscriber.
  8. After a few seconds, terminate the publisher.
  9. After a few seconds, turn off the ROS2 daemon: ros2 daemon stop
  10. In every terminal: export RMW_IMPLEMENTATION=rmw_fastrtps_cpp
  11. Repeat steps 3-8

Expected behavior

LAN in/out throughput should be near 0 Mbps the entire time.

Actual behavior

While using CycloneDDS, after we launch the second subscriber, the LAN throughput jumps up to the throughput of the topic (~70 Mbps). Terminating the second subscriber brings it back down. This issue does not happen with FastRTPS. See the below screenshot for LAN throughput with annotated timestamps corresponding to the above steps.

Screenshot 2024-04-19 at 9 45 33 AM

Additional information

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