MAVLink routing determines which messages a node forwards versus consumes. A routing node (GCS, radio bridge, companion computer) should forward a message if the target_system matches a known system on another link, or if target_system is 0 (broadcast).
Messages without a target (e.g. HEARTBEAT, telemetry streams) are always forwarded to all links. Messages with a specific target_system and target_component are forwarded only to the link where that (sysid, compid) has been seen.
Avoiding loops
A router must never re-emit a message on the same link it arrived from. It should also track (sysid, compid, msgid, sequence) tuples to de-duplicate messages that arrive via redundant paths.
For redundant links (e.g. Wi-Fi + telemetry radio), the receiver should accept the first copy and discard duplicates using the sequence number. The sender is not responsible for link selection — it transmits on all available interfaces.