update: Eclipse Cyclone DDS has been refactored to build easily with ROS 2 using colcon. Drop it in and build it, try it and give feedback. We really like GitHub issues😁 rmw_cyclonedds is being contributed in ROS 2 Eloquent.
tip: if your wifi has problems with multicast, then configuring DDS to use multicast only for discovery (SPDP - Simple Endpoint Discovery Protocol) can fix that
<AllowMulticast>spdp</AllowMulticast>
cyclonedds autodetects wifi and self-configures for SPDP
excerpted from another thread, @eboasson says: Eclipse Cyclone DDS today gives you a pretty decent small message latency over loopback on 8 year old 3.5GHz Xeon E3-1270 running Ubuntu 16 … you see it comes out rather well for the small ones, even though it uses the loopback interface, and fares not so badly against the latencies mentioned earlier using a shared memory transport for the large ones.
size latency [0]
(bytes!) (microseconds)
-------------------------
4 [1] 10
16 11
128 11
1024 13
4096 16 [2]
16384 28
32768 44
60000 67
100000 103
200000 202
500000 473
1000000 1088
[0] median latency as measured by doing round-trips as fast as possible and halving the measured round-trip time, using reliable communications …
[1] keyless topic of one int32_t, the others have an int32_t key field
(always set to 0) and an octet sequence;
[2] this is with a fragmenting threshold set large enough to not fragment the ones that fit in a single UDP datagram; with the default setting the numbers are worse.