DEV Community

NextTechWorld
NextTechWorld

Posted on

Meshtastic vs MeshCore: Flooding and Routing Explained

Meshtastic vs MeshCore: Flooding and Routing Explained

The most interesting difference between Meshtastic and MeshCore is not the radio chip, the antenna, the phone app, or even the familiar promise of sending text messages when the mobile network disappears. The real difference is what happens after a LoRa packet leaves the transmitter and has to survive the messy geography of hills, buildings, vehicles, trees, body absorption, weak batteries, hidden nodes, congested channels, and hundreds of other radios that cannot all talk at once. On the surface, both projects appear to solve the same problem: take inexpensive LoRa hardware and turn it into a community-scale, off-grid communication network. Under the surface, they make different bets about how a mesh should move information. Meshtastic leans on managed flooding, a deliberately simple and resilient broadcast-oriented strategy that lets nearby nodes repeat packets without maintaining a full routing table. MeshCore, by contrast, uses flooding more selectively, primarily as a way to discover a path, then tries to reuse that discovered path through direct routing so later traffic does not have to splash across the whole mesh every time.


That distinction sounds academic until a network grows beyond a handful of friends on a hiking trail. In a three-node network, flooding can feel almost magical: one radio transmits, another repeats, and a third receives a message that would have been out of range from the original sender. In a dense urban group with dozens of always-on nodes, the same behavior can become more complicated. Every rebroadcast consumes airtime, and airtime is the scarce resource in LoRa. The channel is shared, the bit rate is low, and radios are often operating under regional duty-cycle or dwell-time restrictions. A protocol that is wonderfully robust at small scale can begin to spend a surprising amount of its energy repeating packets that many receivers have already heard. Conversely, a protocol that tries to be more selective has to solve a harder problem: it must know, or learn, which path is worth using, and it must recover gracefully when the real world invalidates that path.


Meshtastic and MeshCore therefore represent two different philosophies of low-power mesh networking. Meshtastic behaves like a neighborhood bulletin system carried over LoRa: broadcast first, suppress duplicates where possible, limit the number of hops, and accept that some redundancy is the price of simplicity. MeshCore behaves more like a compact packet-radio routing system: use flooding when necessary, but try to remember the route and avoid repeatedly waking the whole network for the same conversation. Neither approach is universally superior. Each one is shaped by the physics of LoRa, the regulatory limits of unlicensed spectrum, the constraints of small embedded devices, and the social reality of hobbyist networks where users may move, disappear, misconfigure hardware, or install firmware versions at different speeds.


Why LoRa Mesh Routing Is Harder Than It Looks


LoRa is often described in casual terms as “long range, low power,” which is true but incomplete. The reason it can work over kilometers with tiny transmitters is that it trades throughput for sensitivity. LoRa’s chirp spread spectrum modulation allows receivers to decode very weak signals, sometimes far below the noise floor, but it does so by stretching symbols over time. Higher spreading factors increase link budget and range, yet they also increase airtime. A short message that feels instantaneous on Wi-Fi or LTE can occupy the LoRa channel for a long time, especially when sent at conservative settings intended for maximum range. In a mesh network, that airtime cost is multiplied every time a relay retransmits the packet.


This makes LoRa mesh fundamentally different from mesh networking over Wi-Fi, Ethernet, fiber, or cellular infrastructure. In higher-throughput networks, routing protocols can exchange frequent control messages, maintain detailed neighbor tables, test alternate paths, and recover from topology changes with relative freedom. In a LoRa mesh, every control packet competes with user messages. A beautifully precise routing protocol can become self-defeating if the overhead required to maintain routes consumes the same scarce channel it is trying to optimize. The best routing design is not necessarily the one that knows the most; it is the one that knows enough while spending very little airtime to learn and maintain that knowledge.


There is also the hidden-node problem. Two radios may both be in range of a repeater but out of range of each other. Each one thinks the channel is clear, transmits, and collides at the repeater. LoRa is not immune to collision, even though capture effects sometimes allow a stronger or better-timed signal to be decoded. In a dense mesh, radios may not hear all competing transmitters, and carrier-sense behavior cannot fully solve coordination over long distances. This is one reason flooding can degrade: the more nodes rebroadcast the same packet, the higher the chance that some of those transmissions overlap, especially if timing randomization is not enough to separate them.


The phrase “mesh network” can mislead people into imagining a neat graph diagram where packets travel along clean lines from node to node. Real LoRa meshes are more like weather systems. A path that exists in the morning may fade in the evening as temperature, humidity, foliage moisture, building occupancy, battery voltage, human movement, and antenna orientation change. A handheld node inside a backpack behaves differently from the same board mounted outdoors with a tuned antenna. A hilltop repeater can dominate a region, but that dominance can also make the network fragile if too much traffic depends on it. Routing in this environment is less about finding a mathematically perfect path and more about making practical compromises under uncertainty.


Meshtastic became popular partly because managed flooding fits this uncertainty well. It does not require the sender to know the network. It does not need a route to be precomputed. If a packet is heard by enough useful relays, it moves outward through the mesh until the hop limit expires or the destination receives it. That is an elegant model for casual, decentralized communication. MeshCore emerged from the observation that once a destination has been found, repeatedly rediscovering it through network-wide flooding can be wasteful. If the same two users keep exchanging direct messages across the same chain of repeaters, why should every later message be treated as if the network knows nothing?


Meshtastic and the Logic of Managed Flooding


Meshtastic’s routing model is best understood as controlled rumor propagation. A node transmits a packet. Nodes that hear it may decide to retransmit it, usually after a randomized delay and subject to rules intended to reduce useless repetition. Each packet carries information that prevents infinite rebroadcasting, including a hop limit that decreases as the message travels. Nodes remember recently seen packets, so a packet that returns from another direction is recognized as a duplicate rather than treated as new. This is not naive flooding in the purest academic sense, where every node blindly repeats every new packet immediately. It is better described as managed flooding: broadcast propagation shaped by suppression, timing, hop limits, and routing metadata.


The attraction of this model is obvious once you imagine a group of hikers spread across a valley. Nobody has planned the topology. Phones connect to nearby radio boards over Bluetooth. Some people are moving, some are behind ridges, and one person may have left a solar-powered node on a summit. When a message is sent, flooding does not ask whether the sender knows the route to the receiver. It simply pushes the packet into the RF environment and allows the mesh to amplify its reach. If the message is a group message, this is especially natural, because the sender may want many nodes to hear it anyway. Broadcast traffic and flooding are conceptually aligned.


The cost appears when the message is not truly for everyone. A direct message in a large Meshtastic network can still generate many rebroadcasts because relays do not necessarily know which nodes are on the useful path to the destination. The network expands the packet outward, and the destination receives it if the expanding wave reaches it before collisions, interference, duty-cycle constraints, or hop limits stop it. Even with suppression, the transmission count can grow quickly. In sparse networks, that redundancy improves reliability. In dense networks, it can become congestion. The same redundancy that gives flooding its ruggedness also spends airtime on nodes that are not helping the actual sender-receiver pair.


Managed flooding also has a social consequence: everyone’s node participates in the health and burden of the network. A well-placed router node can dramatically extend range for many users, but it also hears and retransmits traffic from many directions. A city with many high-elevation Meshtastic nodes can develop impressive coverage, yet the busiest channels may become noisy and congested. Users sometimes respond by changing modem presets, channel names, hop limits, router roles, or antenna placement, but these are operational mitigations rather than a fundamentally different routing model. Meshtastic’s strength remains its low barrier to participation: install firmware, choose regional settings, join a channel, and the mesh can begin working without a central planner.


The design also suits the culture of Meshtastic. It is widely used for hiking, events, neighborhood experiments, emergency preparedness, ham-adjacent tinkering, and casual off-grid messaging. Many deployments are temporary or semi-organized rather than engineered like utility infrastructure. Flooding tolerates that informality. A node can appear, disappear, reboot, or move without requiring the network to update a shared routing database. The network does not need to converge in the same way a traditional routed network does. It simply uses what it hears at the moment a packet is transmitted.


However, the word “simple” should not be mistaken for “unsophisticated.” Meshtastic’s practical behavior depends on many interacting details: how rebroadcast delays are chosen, how duplicate packets are identified, how hop limits are configured, how acknowledgements behave, how direct messages differ from channel messages, and how device roles affect forwarding decisions. A low-power client carried in a pocket should not necessarily behave like a solar router on a mountaintop. A protocol intended for battery-powered embedded boards must consider sleep states, receive windows, transmit power, and the energy cost of keeping the radio awake. In LoRa, the routing algorithm is never only a graph problem; it is also a power-management problem and a channel-access problem.


The most important limitation of Meshtastic flooding is scalability under load. A mesh with ten quiet nodes can perform beautifully. A mesh with hundreds of nodes, frequent telemetry, aggressive position updates, high hop limits, and several router nodes can become self-congesting. Position packets, node information, telemetry, and text messages all compete for airtime. Even when individual packets are small, the network can accumulate background chatter. Because LoRa has low throughput, the difference between a pleasant user experience and an unreliable one may be only a few configuration choices away. This is why experienced operators often emphasize restraint: fewer automatic updates, sensible hop limits, careful router placement, and realistic expectations about message latency.


There is a deeper engineering point here. Flooding is not bad; flooding is expensive. In networks where the channel is cheap, expense is tolerable. In LoRa, the channel is precious. Meshtastic manages that expense by limiting and suppressing flood propagation, but it still accepts broad retransmission as part of its core behavior. The result is a mesh that is robust, decentralized, and approachable, but one that must be treated gently as density and traffic rise.


MeshCore and the Case for Remembered Paths


MeshCore begins from a different instinct. It recognizes that flooding is valuable for discovery but inefficient as a permanent habit. When a sender does not know how to reach a destination, flooding is a reasonable first move. The packet spreads through the network, and if it reaches the intended receiver, the route taken can be transformed into useful path information. Later messages can then be sent along a direct route rather than flooded broadly. In this model, flooding is not abolished; it is demoted from default transport to path-finding mechanism.


The technical idea resembles source routing more than conventional IP routing. Instead of every intermediate node independently consulting a large routing table to decide the next hop, the packet can carry path information that tells repeaters how it should move. MeshCore uses compact path identifiers, often described as path hashes, to keep routing metadata small enough for LoRa. That compactness matters because every byte increases airtime. A route representation that is elegant on Ethernet may be too heavy for low-bit-rate packet radio. MeshCore’s design therefore tries to encode enough path identity to guide packets without bloating them into inefficient control-heavy frames.


This is the central trade-off. Meshtastic spends airtime by letting many nodes participate in each delivery attempt. MeshCore spends complexity by trying to learn and reuse a path. Once a path exists, direct routing can reduce unnecessary retransmissions. A repeated conversation between two users can become much more efficient because only the nodes on the selected path need to forward the traffic. In a network with stable repeaters, that can be a decisive advantage. A hilltop repeater chain, a community emergency network, or a semi-permanent rural LoRa deployment can benefit from routing that remembers how destinations are reached.


But remembered paths can go stale. A node may move out of range, lose power, change antenna orientation, or be replaced. A repeater may work in dry weather but fail when rain changes the RF environment. A path that was excellent yesterday may be marginal today. MeshCore must therefore balance reuse with rediscovery. If direct routing fails, the system needs a way to fall back, discover a new path, or recover through another mechanism. This is where hybrid routing becomes important. A pure direct-routing system would be brittle in a constantly changing network. A pure flooding system wastes airtime after the destination is already known. MeshCore tries to sit between those extremes.


The direct-routing approach also changes the role of infrastructure. MeshCore networks often talk about companions, repeaters, and room servers, which hints at a more structured ecosystem than a purely peer-equal flood mesh. Repeaters are valuable not just because they rebroadcast, but because they form known transit points. Room servers can store messages and create a more persistent communication experience. This does not mean MeshCore requires cellular-style centralization, but it does mean its best performance may come from more intentional network design. If Meshtastic is comfortable as an opportunistic crowd mesh, MeshCore is more comfortable when a network has recognizable paths and useful relay infrastructure.


The path-based model has attractive scaling properties. If ten users are all sending direct messages through known paths, the network does not need to involve every nearby relay for every message. Airtime is concentrated along relevant routes. That can reduce congestion and improve the chance that important packets get through. It can also make latency more predictable, because packets do not have to wait for a large cloud of randomized flood retransmissions. In practice, the benefit depends on topology. A network with a small number of bottleneck repeaters can still saturate those repeaters. Routing efficiency cannot create bandwidth where the physical channel does not have it. It can only waste less of the bandwidth that exists.


MeshCore’s approach also carries implementation challenges. Path discovery, path storage, packet formats, acknowledgements, retry behavior, encryption, identity, and compatibility across firmware versions all become important. A flooding-first system can tolerate ignorance; a direct-routing system has to maintain useful knowledge. That knowledge has to be compact, secure enough for the threat model, and resilient against partial failure. In embedded radio networks, elegance often lives in the details: how long a path remains valid, how alternate paths are chosen, how collisions are handled, how much state is kept in RAM or flash, and how the user experience hides the inevitable moments when the network is relearning itself.


For users, MeshCore’s promise is straightforward: fewer unnecessary transmissions once the network knows where things are. For operators, the question is whether the network’s topology is stable enough to reward that intelligence. A festival, search-and-rescue exercise, farm, neighborhood emergency mesh, or regional repeater network may have enough fixed structure for path-based routing to shine. A loose group of walkers, cyclists, and temporary nodes may still benefit from flooding’s forgiving nature. The difference is not merely protocol taste; it is environmental fit.


Flooding, Direct Routing, and the Physics of Airtime


To understand why the Meshtastic versus MeshCore debate can become passionate, consider a simple five-hop delivery. In an ideal direct-routing system, a packet travels from sender to relay one, relay two, relay three, relay four, and finally the receiver. The number of transmissions is roughly proportional to the number of hops, plus any retransmissions caused by loss. In a flooding system, every node within the propagation area may become a potential relay. If the mesh is sparse and linear, flooding may not look much worse than direct routing because only a few nodes hear and repeat the packet. If the mesh is dense, the same five-hop reach can involve many more transmissions, because each ring of nodes around the sender may rebroadcast before the hop limit expires.


The mathematical shape matters. Direct routing tends to scale with path length. Flooding tends to scale with the number of participating nodes within the hop-limited flood area. That does not mean direct routing always wins. If a direct path fails repeatedly, the retries and rediscovery process can erase its advantage. If flooding reaches the destination on the first attempt because many redundant relays cover weak links, it may deliver a message that a brittle direct route would lose. But in a busy network, airtime efficiency is not optional. Every extra retransmission is an opportunity for collision and a delay imposed on other users.


LoRa’s airtime sensitivity amplifies this. Packet duration depends on spreading factor, bandwidth, coding rate, preamble length, payload size, and header mode. Users often choose long-range presets because range is the visible feature they care about. The hidden consequence is lower throughput and longer channel occupancy. A packet at a slow, robust setting may occupy the channel far longer than the same payload at a faster setting. When that packet is repeated several times by several nodes, the network can feel sluggish even though the hardware is functioning correctly.

Top comments (0)