Hop Budget and Routing
How hop limits, routing protocols, and multi-hop link budgets determine end-to-end message delivery.
Understanding Hop Count and Hop Limits
What Is a Hop?
A hop is a single radio transmission between two adjacent nodes. When a message originates at Node A and is received by Node B, that is one hop. If Node B re-transmits the message and Node C receives it, that is a second hop. Each re-transmission consumes airtime and contributes to channel congestion.
In a well-designed mesh, most messages should arrive in 1 - 3 hops. A message requiring 6 - 7 hops to reach its destination is a symptom of poor repeater placement (insufficient elevated infrastructure) or an oversized network diameter.
Hop Limits in Meshtastic
Meshtastic uses a hop limit field in the packet header to prevent infinite re-transmission loops. The default is 3 hops; the maximum configurable value is 7 hops.
Each time a node re-transmits a packet, it decrements the hop limit by 1. When the hop limit reaches 0, the packet is not forwarded further. This is analogous to the TTL (Time To Live) field in IP networking.
Hop limit | Maximum relay chain
-----------+-----------------------------------
1 | Source → 1 relay → Destination
2 | Source → 2 relays → Destination
3 | Source → 3 relays → Destination (default)
5 | Source → 5 relays → Destination
7 | Source → 7 relays → Destination (maximum)
Note: the hop limit counts the number of re-transmissions (relays), not the total number of nodes in the chain. A packet with hop limit 3 can traverse a chain of 4 nodes total (source + 3 relays) or equivalently pass through 3 intermediate nodes before reaching the destination.
Why Unlimited Hops Would Cause Broadcast Storms
Meshtastic uses flood routing: every relay node re-broadcasts every packet it receives. Without a hop limit, a packet could circulate indefinitely, with every node in the network repeatedly forwarding it. This creates a broadcast storm - a positive feedback loop where each re-broadcast triggers more re-broadcasts, rapidly consuming all available channel time and rendering the network unusable.
The hop limit is the primary mechanism preventing broadcast storms. Meshtastic also uses packet deduplication (comparing packet IDs to avoid re-forwarding a packet already seen), but the hop limit is the hard stop that bounds maximum path length.
Calculating Maximum Network Diameter from Hop Limit
With a hop limit of h, the maximum number of nodes in a relay chain is h + 1 (source node plus h relays). This means the maximum network "diameter" (the longest path between any two nodes) is h hops.
If each hop covers an average of 5 km in a suburban environment:
| Hop Limit | Max Path Length (5 km/hop) | Max Path Length (15 km/hop, rural) |
|---|---|---|
| 1 | 5 km | 15 km |
| 3 (default) | 15 km | 45 km |
| 5 | 25 km | 75 km |
| 7 (max) | 35 km | 105 km |
For a well-designed urban network with elevated repeaters, a hop limit of 3 should be sufficient. If your network spans a wide rural area with widely spaced repeaters, you may need hop limit 4 or 5. Increasing beyond 5 is rarely justified and noticeably increases channel congestion.
Meshtastic Flood Routing vs. MeshCore Path-Based Routing
Meshtastic: Flood Routing
In Meshtastic, every node with routing enabled (router role) re-broadcasts every packet it receives with a non-zero hop limit. The packet is sent once by each relay, regardless of whether a better path exists. This is simple and robust but inefficient: a 3-hop path in a dense network might result in dozens of redundant re-broadcasts from nodes along parallel paths.
Hop count behaviour: the hop limit is decremented at each relay. A packet leaving the source with hop limit 3 arrives at the destination (if 3 hops away) with hop limit 0. Packets consumed mid-network by deduplication still consumed their transmission slot on the channel.
MeshCore: Path-Based Routing
MeshCore maintains a routing table at each repeater node. When a message needs to be forwarded, the repeater consults its table and forwards to the specific next-hop node on the best-known path to the destination. This is closer to traditional layer-3 IP routing.
Hop count behaviour in MeshCore: the hop count field records how many hops have been traversed (an incrementing counter) rather than a decrementing TTL. This provides useful diagnostic information (you can see how many relays a received message used) but means the network relies on routing table correctness rather than TTL expiry to prevent loops. MeshCore uses sequence numbers and path validation to prevent routing loops.
For network planners: in a Meshtastic network, channel load scales directly with hop limit and network density - every node hears and potentially re-transmits every packet. In MeshCore, channel load is more predictable because only the nodes on the actual path forward a given packet.
When to Increase Hop Limit - and the Tradeoffs
Consider increasing the hop limit above the default of 3 when:
- Your network covers a geographically large area (50+ km diameter) with widely spaced repeaters where 3 hops cannot span the network
- A specific critical path (e.g., a remote outpost to the network core) is consistently failing to deliver messages
- Path analysis shows that known routes require 4 - 5 hops due to terrain
Do not increase hop limit as a first response to poor coverage. Poor coverage is a placement problem, not a hop limit problem. Adding hops to compensate for missing repeaters increases channel congestion for all users without solving the root cause.
The tradeoffs of increasing hop limit:
| Hop Limit | Network Reach | Channel Congestion | Typical Use Case |
|---|---|---|---|
| 1 | Very limited | Minimal | Dense urban, single repeater covers all clients |
| 3 (default) | Moderate | Low - moderate | Well-planned city mesh with elevated anchor repeaters |
| 5 | Large | Moderate - high | Regional mesh spanning multiple cities or large rural area |
| 7 (max) | Very large | High | Sparse wilderness mesh; use only when topology analysis confirms need |
Designing for Multi-Hop Reliability
Link Budget Through Multiple Hops
In a multi-hop chain, each individual link (hop) must have a positive link margin. Unlike a wired network where signal is regenerated cleanly at each switch, a LoRa repeater decodes the incoming RF signal and re-transmits at full power. The quality of the received signal at the repeater does not degrade the re-transmitted signal - each hop is an independent link.
However, the weakest link in the chain determines end-to-end reliability. If three hops each have reliabilities of 99%, 95%, and 90%, the end-to-end delivery probability is:
P(delivery) = 0.99 × 0.95 × 0.90 = 0.846 = 84.6%
This is the key insight of multi-hop network design: each marginal link has an outsized negative effect on overall reliability because the probabilities multiply. A single 85% link in a three-hop chain degrades end-to-end delivery to ~70 - 75% even if the other two links are near-perfect.
Planning Hop Paths for Your Network
Before finalising repeater placement, map the expected relay chains for your most critical communication paths. The process:
- Draw the relay chain. On your coverage map, trace the sequence of repeaters a message from a specific source node would traverse to reach the destination. In Meshtastic (flood routing), there may be multiple parallel paths; identify the primary path (shortest hop count with best margins) and the fallback path.
-
Estimate link margin at each hop. For each hop in the chain:
- Calculate FSPL (Free Space Path Loss): FSPL(dB) = 20-log₁₀(d) + 20-log₁₀(f) + 92.4 (d in km, f in GHz)
- Add terrain/vegetation loss (see Coverage Radius Estimation page for obstruction factors)
- Subtract antenna gains (transmitter + receiver)
- Link Margin = TX Power + TX Antenna Gain − Path Loss − RX Antenna Loss − RX Sensitivity
- Identify where margin is thin. Any hop with less than 10 dB of margin is at risk. Flag it. Options: move the repeater to a better site, add a fill node on that hop, increase antenna gain on that link, or accept reduced reliability on that segment.
- Document the analysis. Record the estimated margin at each hop. Update after each wardriving survey that provides measured RSSI/SNR data on that link.
Worked Example: Three-Hop Path Analysis
Scenario: A remote ranch (Client A) communicates with the county EOC (Destination) via three repeaters (R1, R2, R3). Meshtastic on 915 MHz, SF10/BW125. TX power: 30 dBm (1 W). Antenna gain: 3 dBi omnidirectional on all nodes. Receiver sensitivity (SF10/BW125): −132 dBm.
Hop 1: Client A → Repeater R1 (hilltop, 4.2 km, rural open)
FSPL = 20-log₁₀(4.2) + 20-log₁₀(0.915) + 92.4
= 12.46 + (−0.77) + 92.4
= 104.1 dB
Terrain loss (rural open): 0 dB additional (clear LOS)
Link Margin = 30 (TX) + 3 (TX ant) − 104.1 (FSPL) + 3 (RX ant) − (−132) (sensitivity)
= 30 + 3 − 104.1 + 3 + 132
= 63.9 dB
Result: 63.9 dB margin - excellent. This link is rock-solid.
Hop 2: Repeater R1 → Repeater R2 (rooftop, 9.8 km, suburban)
FSPL = 20-log₁₀(9.8) + 20-log₁₀(0.915) + 92.4
= 19.82 + (−0.77) + 92.4
= 111.5 dB
Suburban obstruction add: +12 dB (0.55 factor = approx. +5 to +15 dB additional loss)
Link Margin = 30 + 3 − (111.5 + 12) + 3 + 132
= 30 + 3 − 123.5 + 3 + 132
= 44.5 dB
Result: 44.5 dB margin - good, well above the 10 dB minimum.
Hop 3: Repeater R2 → Destination EOC (18.5 km, suburban, EOC is in a building)
FSPL = 20-log₁₀(18.5) + 20-log₁₀(0.915) + 92.4
= 25.34 + (−0.77) + 92.4
= 117.0 dB
Suburban obstruction add: +12 dB
Building penetration loss (EOC indoor): +10 dB
Link Margin = 30 + 3 − (117.0 + 12 + 10) + 3 + 132
= 30 + 3 − 139.0 + 3 + 132
= 29.0 dB
Result: 29.0 dB margin - acceptable (above 10 dB), but the EOC indoor penalty is significant. If the EOC uses a rooftop-mounted external antenna instead of an indoor unit, the 10 dB building penalty disappears and margin rises to 39 dB. Strongly recommend external antenna at the EOC.
Chain Summary
| Hop | Distance | Margin (dB) | Status |
|---|---|---|---|
| Client A → R1 | 4.2 km | 63.9 | Excellent |
| R1 → R2 | 9.8 km | 44.5 | Good |
| R2 → EOC | 18.5 km | 29.0 | Marginal (address indoor loss) |
End-to-end reliability of this chain is constrained by the R2 → EOC hop. Installing an external rooftop antenna at the EOC is the highest-priority action.
SNR and RSSI Thresholds for Reliable Forwarding
Theoretical link margins are estimates. In a live network, use measured RSSI and SNR to assess actual link quality. The following thresholds are practical minimums for reliable message forwarding:
| Metric | Minimum (marginal) | Target (reliable) | Good | Excellent |
|---|---|---|---|---|
| RSSI | −130 dBm | −120 dBm | −110 dBm | > −100 dBm |
| SNR | −15 dB | −10 dB | −5 dB | > 0 dB |
Notes on these thresholds:
- RSSI −130 dBm / SNR −15 dB: Packets may be decoded but success rate is low (50 - 70%). Use only as an emergency fallback. Do not plan routes through links at this level.
- RSSI −120 dBm / SNR −10 dB: Practical minimum for planned routes. Expect 85 - 95% packet delivery under normal conditions. Link will degrade in rain, vegetation growth, or when nearby interference increases the noise floor.
- RSSI −110 dBm / SNR −5 dB: Reliable for infrastructure links. Acceptable for primary repeater-to-repeater connections. Will maintain >98% delivery in most conditions.
- RSSI > −100 dBm / SNR > 0 dB: Strong link. Typical of well-placed nearby repeaters. These links rarely fail under normal operating conditions.
When reviewing live network telemetry, links consistently below −120 dBm RSSI or −10 dB SNR are candidates for remediation. Check the repeater placement, antenna alignment, and cable connections. If the physical setup is already optimal, a fill node on that path may be necessary.
The Weakest-Link Rule in Practice
When troubleshooting poor end-to-end delivery on a multi-hop path:
- Collect RSSI and SNR readings at each hop using the Meshtastic traceroute command or MeshCore path diagnostics.
- Identify the hop with the lowest RSSI or SNR - this is your weakest link.
- Improving the weakest link will improve end-to-end delivery more than any other intervention. Do not chase marginal improvements on already-good hops.
- After fixing the weakest link, re-test the full chain. A new weakest link may emerge.
- Repeat until all hops meet the >10 dB margin / > −120 dBm RSSI / > −10 dB SNR targets.