Documentation
Multicast not getting through: diagnosis
VIGIL-MESH replicates IP multicast across the network as if on a single wire: mDNS, SSDP, WS-Discovery and DDS discovery can reach distant members. When it does not work, the cause is almost always one of four: a subscription that is not detected, an overly chatty discovery throttled by storm control, a misplaced TTL, or a tcp-only profile that changes the fan-out picture. This page reviews each hypothesis, in the order in which to check them.
Check the subscriptions
The first thing to check is the subscription. VIGIL-MESH only replicates a broadcast to the members actually subscribed to the group concerned: the agent acts as the local IGMPv3 (IPv4) and MLDv2 (IPv6) querier on each machine's interface, and detects the subscriptions the IP stack announces. If the subscription is not seen, nothing is replicated.
- Confirm that the application on the receiving side has actually joined the multicast group: it is what triggers the IGMP/MLD announcement the agent listens for.
- A receiver that does not subscribe will receive nothing: replication is targeted, not broadcast to the whole network.
- Check the address family: an IPv6 subscription falls under MLDv2, an IPv4 subscription under IGMPv3. An application configured on the wrong family will not be reached.
- After (re)starting a receiving application, allow time for the subscription to be announced then propagated before concluding failure.
Storm control: a throttled discovery
Second hypothesis, often the real culprit when “part” of the discovery gets through and the rest does not: storm control. To prevent a poorly bounded broadcast from getting out of hand, VIGIL applies a per-sender token bucket of 200 packets/s and 512 kbit/s, enforced at emission as well as at fan-out. An overly chatty discovery can therefore be throttled at its source.
- Symptom: a large discovery (many announcements in bursts) seems incomplete or intermittent even though the subscriptions are correct.
- Cause: the sender exceeds 200 pps or 512 kbit/s and sees its broadcast traffic throttled beyond the threshold.
- Lead: reduce the discovery volume rather than counting on unlimited broadcast — restrict discovery domains, space out announcements, limit the number of participants announcing themselves simultaneously.
- The behaviour of the two-stage storm control and its thresholds are detailed in /en/docs/multicast-avance.
TTL and link-local
Many link-local protocols protect themselves by requiring a TTL of 255 on receipt: if the packet has been routed — and therefore decremented — they reject it. VIGIL carries the link-local TTL end to end without decrement, so a packet sent with TTL 255 arrives with TTL 255. Emission, however, depends on the application.
- Check that the sender emits with the TTL the protocol expects (255 for strict mDNS stacks). A TTL set too low on the application side will be rejected on receipt, whatever the transport.
- Do not look for a decrement on the VIGIL side: the link-local TTL is not decremented, so that is not where a TTL of 255 degrades.
- If a receiver rejects a packet that was in fact received, suspect an application-side TTL requirement before suspecting the network.
tcp-only profile: fan-out goes over TCP
If a network blocks UDP, the nodes concerned fall back to the tcp-only profile and transit through the vigie. Multicast keeps being replicated, but the fan-out then rides TCP via the relay rather than a direct path. It remains functional; it is simply a different path, to keep in mind during diagnosis.
- A receiver in tcp-only still receives the broadcasts it is subscribed to: the profile does not cut off multicast.
- Fan-out via the vigie adds a detour; combined with a chatty discovery, it can make storm control more visible.
- If you suspect UDP is the cause, first confirm basic connectivity: see /en/docs/depannage-nat.
DDS and ROS 2
DDS middlewares — on which ROS 2 relies — use IP multicast for participant discovery. Since VIGIL replicates this multicast, discovery can work across the mesh without an application gateway. But DDS discovery is notoriously talkative: many participants announcing themselves produce sustained traffic, liable to approach the per-sender ceiling of 200 pps and be throttled.
- If ROS 2 discovery is incomplete, watch storm control first: it is the most likely suspect in a real deployment.
- Restricting DDS discovery domains reduces the announcement volume and avoids approaching the ceilings.
- The objectives, the compatibility reasoning and what remains to be demonstrated on the ROS 2 side are detailed in /en/docs/cas-ros2.