Optimal Multi-Path Routing for LoRa Mesh Networks — replacing naive flooding with intelligent, self-healing communication.
by Clemens Simon · 2026
← Full Interactive DocumentationMeshtastic (v2.6/2.7) uses managed flooding with SNR-based suppression for broadcasts and next-hop routing for direct messages. These are clever optimizations over naive flooding — but both still scale as O(n) per message, requiring a hop limit (default 3–7) that caps network range.
This paper presents System 5, a routing protocol that achieves O(hops) cost for all message types. Simulated against Meshtastic's actual managed flooding with realistic hop limits (3, 5, 7) across 21 scenarios (20–1500 nodes, 6 routers each), System 5 delivers 92–100% fewer transmissions in small-to-medium networks while achieving equal or higher delivery rates.
The most significant finding: Meshtastic's hop limit doesn't just cap range — it prevents delivery. At 500 nodes, managed flooding with hop limit 7 delivers only 51% of messages. At 1000 nodes, only 6%. System 5 delivers 43–76% in the same scenarios. At 1000+ nodes, System 5 uses more total TX than managed flooding — but delivers 7x more messages, making the per-delivered-message cost still lower. The hop limit is not a safety net; it is the primary scaling barrier.
Meshtastic's routing (v2.6/2.7) is already substantially better than naive flooding:
Interval × (1 + (Nodes-40) × 0.075).The remaining limitation: Both managed flooding and next-hop still scale as O(n) per message. The hop limit (3–7) is necessary because each hop multiplies transmissions proportional to network size. But this creates a double penalty: not only does each message waste bandwidth — messages that need more hops than the limit simply never arrive. At 100 nodes with hop limit 3, delivery drops to 92%. At 500 nodes, to 14%. The hop limit doesn't just cap range — it makes large networks fundamentally unreliable.
Four routing strategies are simulated and compared on identical network topologies:
Every node rebroadcasts once. TX = n per message. Not used by Meshtastic — included only as a theoretical worst case for context.
SNR-based suppression + ROUTER priority. TX ≈ 0.5n per message. Still O(n) but ~50% cheaper than naive. Proven effective up to ~100 nodes. Hop limit required.
Learns one relay per destination. TX = hops after learning, but first message still floods. Only works for direct messages — broadcasts unchanged. Single cached relay, no load balancing, no multi-path.
Geo-clustering + multi-path + weighted load balancing + adaptive QoS + fallback. TX = hops for all message types. Score: 9.2/10 vs. 5.5 for managed flooding. Details in Section 4.
System 5 combines six proven concepts, each borrowed from a different domain:
Where Q = link quality (OGM reception rate), Load = queue pressure of bottleneck node, Batt = minimum battery along route. Traffic share: Share(r) = W(r) / Σ W(all routes).
The proportional distribution creates a negative feedback loop: overloaded paths lose weight → traffic shifts → path recovers → weight increases. The network self-balances without central control.
Each system was scored 0–10 across seven weighted criteria:
| Criterion (Weight) | Naive | Managed | Next-Hop | System 5 |
|---|---|---|---|---|
| TX Cost per Message (20%) | 1 | 4 | 5 | 10 |
| Delivery Reliability (20%) | 9 | 9 | 8 | 9 |
| Scalability (15%) | 1 | 3 | 4 | 9 |
| Fault Tolerance (15%) | 8 | 8 | 7 | 9 |
| Hop Limit Freedom (10%) | 1 | 2 | 3 | 10 |
| Energy Efficiency (10%) | 1 | 3 | 5 | 8 |
| Broadcast Support (10%) | 10 | 10 | 3 | 9 |
| WEIGHTED TOTAL | 4.3 | 5.5 | 5.1 | 9.2 |
System 5 handles every critical failure mode with graceful degradation:
Critically, NHS is computed locally per cluster, not globally. A node failure in Asia does not affect QoS in Munich. Each node evaluates its own neighborhood: its direct links, its cluster's border nodes, its route redundancy to local destinations, and whether it can reach an internet gateway. This means Cluster A can be GREEN while Cluster C is RED — each cluster manages its own traffic independently.
NHS drives adaptive QoS — eight priority classes from P0 (SOS, always passes) to P7 (firmware updates, only at NHS > 0.9). As local NHS drops, that cluster automatically throttles low-priority traffic. Self-healing loop: less traffic → fewer collisions → links recover → NHS rises.
| NHS Range | Level | Allowed Traffic | Max Rate |
|---|---|---|---|
| 0.9 – 1.0 | GREEN | Everything: text, files, firmware, bulk | 100% |
| 0.7 – 0.9 | YELLOW | Messages + telemetry, no bulk | 60% |
| 0.4 – 0.7 | ORANGE | Priority messages only | 30% |
| 0.2 – 0.4 | RED | Emergency + position only | 10% |
| 0.0 – 0.2 | CRITICAL | SOS beacon only | 3% |
Previous simulations used an unrealistic TTL of 30 hops — far above Meshtastic's actual default of 3–7. With realistic hop limits, managed flooding's delivery rate collapses in larger networks:
| Scenario | Nodes | 3-hop Del. | 5-hop Del. | 7-hop Del. | Sys5 Del. |
|---|---|---|---|---|---|
| Small Local (1km) | 20 | 100% | 100% | 100% | 100% |
| Medium City (5km) | 100 | 92% | 100% | 100% | 100% |
| Large Regional (20km) | 500 | 14% | 31% | 51% | 76% |
| Dense Urban (3km) | 200 | 100% | 100% | 100% | 100% |
| 1000 Nodes (40km) | 1000 | 2% | 6% | 6% | 43% |
| 1500 Nodes (50km) | 1500 | 2% | 4% | 5% | 42% |
| Rural Long Range | 50 | 77% | 91% | 88% | 100% |
| Maritime / Coastal | 30 | 69% | 82% | 84% | 100% |
| Disaster Relief | 80 | 62% | 87% | 84% | 78% |
| Mountain Valley | 60 | 2% | 2% | 2% | 2% |
The hop limit creates a delivery ceiling. At 1000+ nodes, managed flooding delivers fewer than 1 in 10 messages regardless of hop limit. System 5 delivers 7x more messages. Note: Mountain Valley (poor propagation, sparse nodes) is equally bad for both — directed routing cannot help when the physical network is too sparse.
| Scenario | Nodes | Managed 7h TX | Sys5 TX | TX Savings |
|---|---|---|---|---|
| Small Local (1km) | 20 | 16,459 | 115 | 99.3% |
| Medium City (5km) | 100 | 201,920 | 402 | 99.8% |
| Dense Urban (3km) | 200 | 1,490,555 | 105,320 | 92.9% |
| Festival (2km) | 150 | 912,953 | 107 | 100% |
| Hiking Trail (8km) | 40 | 28,894 | 215 | 99.3% |
| Duty Cycle | 100 | 404,779 | 918 | 99.8% |
| 30% Degraded Links | 100 | 208,164 | 11,866 | 94.3% |
| 20% Nodes Killed | 100 | 132,780 | 4,072 | 96.9% |
System 5 saves 92–100% of transmissions in small-to-medium networks compared to managed flooding — while delivering equal or higher message delivery rates. At 1000+ nodes, total TX is higher for System 5, but the TX per delivered message is still 3x lower (4,229 vs 13,065).
Key advantages over Meshtastic's current routing:
Algorithm comparison, mathematical analysis, interactive documentation with live simulations. Complete.
21 scenarios (20–1500 nodes), 6 routers (Naive/Managed at 3,5,7 hops/NextHop/System5), realistic EU868 LoRa model with realistic hop limits. Dynamic cluster scaling (16 for 500 nodes, 64 for 1000+). Reveals delivery rate collapse in managed flooding at scale. Confirms 92–100% TX savings for small-medium networks; honest about large-scale tradeoffs. Complete.
Fork Meshtastic firmware (C++, PlatformIO). Implement System 5 as an alternative routing module alongside the existing FloodingRouter. Test with 5–10 real LoRa devices in a local mesh.
Open source release on GitHub. Pull request to Meshtastic project. Community testing at scale. Documentation and conference presentations.
This is an open research project. Whether you're a firmware developer, network theorist, LoRa enthusiast, or just curious — every perspective makes the protocol better.
← Explore the Full Interactive Documentation