Efficient hopping

Somewhat of a technical question from my HAM brain but a significant potential problem with hopping, perhaps?

Does the mesh have the “intelligence” to ‘choose’ efficient hops? Due to the (current) limitation of “4 hops” my theoretical concern comes from a practical and likely use of this device for myself, an outdoor music festival. If I (User A) am trying to talk to friend (User G) and we are out of direct LOS reach we would obviously need to relay. What if (in theory) there were 5 other mesh users (User’s B, C, D, E, And F) who were all very close to me (User A) but not close at all to User G. I could potentially “waste” my “4 hops” talking to User’s B, C, and D when I could have reached my target (User G) by simply bouncing once from A to F to G…

It almost sounds like “too many” mesh units close by could actually LIMIT distance? If I am wrong how does the device protocol take this into account?

I think the key to this one is understanding that mesh networks don’t “route” by choosing a fixed path. In a nutshell, the signal goes out and is picked up by the mesh units within range. This is repeated up to the number of hops possible, as well as skipping over the intermediate hops to the extent possible within range. If there’s any possible way in the multiple paths between the different users to make the connection before the max number of hops is reached, then it happens. If not, then you were probably beyond the reach of the requisite number of hops anyway.

Well thats not logical and how repeating works. If you have 5 repeaters all within a close distance and a a few miles to your intended “target” it could/would/should “waste” hops as it finds the closest transmitters. Whereas if it only use ONE of the local transmitters and then connected to an intermediate distance transmitter it would only need one hop. The theoretical mesh you are imagining would only work if “infinite” hops was possible. The transmittion still has to move from transmitter to transmitter. Each one would be a “hop”, no? I still stand behind a large local mesh network would actually degrade distance potential so long as hops are fixed.

If you are in range of all but your intended recipient, then all the other Mesh units would receive the same message directly from your unit. Whichever one makes contact with your IR will be the one that completes the route.

The way the protocol works is that it pages the IR first. If it’s not in range, it then asks all units in range if they can reach the IR. I imagine the same happens for additional hop.

That’s because it’s not the same as a repeater. It’s probably more accurate to think of meshing as more like an echo. It bounces around in the mesh and either dies out or reaches the recipient – if they’re within range of x=n echoes.

I assumed that each time a node transmits a message, there is a packet header that increments by 1. So each node’s repeat only reflects how many were in front of it. It does seem ripe for multipath confusion, but that is where someone with coding kills above mine come in.

The goTenna Mesh will intelligently transmit the message to your intended recipient. The hops are not ‘wasted’.

1 Like

I knew I saw a write-up somewhere about the mesh and how it works. Just had to find it again.


Yep, great short explanation, as well as a concise answer to the OP’s question:

“These networks become more robust as more people join because more nodes equals more paths by which a transmission can go from sender to recipient.”

I didn’t give the mesh enough credit, painting it as more a passive feature, rather than it being an active property of the mesh to seek out the most efficient routing.


I guess the comprehension of this topic is above the ability for most to think logically…

“These networks become more robust as more people join because more nodes equals more paths by which a transmission can go from sender to recipient.”

Again, that ONLY holds true if you have an INFINITE amount of hops and therefore does NOT answer my original question and in fact only makes my case stronger. Every time your message goes from device to device (a hop/relay/whatever you want to call it) it HAS to be accounted for…

I read thst entire explenation on that link and it explains nothing regarding my question. If your message HOPS around a local mesh with a ton of nodes it is very possible to out hop your 4 hops and NOT make it out of the mesh to your IR of your IR is too distant away.

I’ll keep waiting for an intelligent explanation that takes into account each transmission from device to device and how and when a “hop” is accounted for… So far all of you are just regurgitating general info about a network but have no conceptualization how it actually functions.

1 Like

Picture it like this. There are four Mesh units in range of you. Your recipient is only in range of one of those four and out of range of you. You send a message:

  1. Your Mesh unit tries to directly contact the IR.
  2. Not able to connect, it re-broadcasts the message, asking all nearby units if they can reach the IR.
  3. Three Mesh units can’t make contact, but during the built-in delay, the 4th Mesh unit makes contact, delivers the message, and transmits back the verification.
  4. You receive the confirmation, indicating that the message went through one relay.
  5. The other Mesh units hear the confirmation message go back, and stop trying to forward the message.

It’s like this, you shout across the room for someone, but they are out in the hallway and didn’t hear you. Everyone in the room heard you and starts looking around for the person you’re trying to reach. One guy by the door sees them out in the hallway and yells for them. Everyone hears this and stops seeking.

@Rahul_Subramany, many of us know how Aspen Grove works on the originating device, but an explanation of what actually goes on for intermediate devices would be great.

That’s the best analogy yet here, MrTSolar, but that could be part of the problem if ertony is one of those people who don’t take to the use of analogy in helping explain what they feel should be better explained through clear-cut logic. More on that here: In Defense Of Metaphors In Science Writing

The existing repeater model of radio networking is compelling at the same time it tends to obscure the potential of mesh networks. If I may, another analogy helps explain it. You live on the Gulf Coast and are worried about the potential for your house being destroyed. Yes, there are hurricanes, powerful and impressive storms that get people’s attention when they happen, but are relatively rare and won’t repeatedly come ashore every year in the same place.

Then there are termites. Ever hear of a termite warning being issued? Well, no, they’re pretty insignificant, tiny, and easy to ignore. But they’re still out there, munching away, and can destroy your home if you ignore them. If your neighbor had them, you very well might, too, and they’ll still be munching away nearby even if defeated on your property. While the total cost of damages is lower than that from hurricanes, 600,000 homes are affected by termite damage every year, it’s usually not covered by insurance, and no one is expecting any government aid to deal with termites if they find them on their property.

Which do people seem to worry about more? Probably hurricanes based on media coverage.

Which are actually more likely to cause a typical homeowner grief? Probably termites.

Is this a good analogy for explaining the different topology between centralized radio networks and mesh networks? Depends, the further I went with it, the complexity tended to distract from the point being made. But should we worry more about termites? Probably. But you have to think differently about dealing with them, or even recognizing their significance, from hurricanes in order to understand their threat, just as you have to think differently about the way mesh networks work from how repeaters do in order to understand how they work.

ertony did use a bit of language that suggested he might be trying for an analogy, so I may have mistaken his approach here. Perhaps if he offered an explanation of what he means or intends by using the term “efficiency”? I can understand it if he means a repeater directly addressing a single radio is efficient because only two radios are involved. No one else need answer a call that isn’t directed to them. It’s quiet other than that on the channels involved.

Here MrTSolar’s analogy comes back into play. Yes, there’s at least a loud murmur that everyone who makes it out then repeats. The room is not quiet otherwise, so maybe that’s the “inefficiency” that’s being perceived of mesh? And all this murmuring would be a nuisance on a repeater-based system. But it’s not on a repeater network, it’s part of a system that works very differently, in fact depends on the sort of chatter that would be considered a nuisance on a conventional radio system because it doesn’t directly connect the sender to the receiver.

Yet the message gets through, perceptions of inefficiency or not. What matters is that it works well as a communications device. And if you look at other aspects, like number of users who could make simultaneous use of it versus that on a repeater-base system, power inputs, etc, I suspect there are many aspects of mesh that could arguably be considered more efficient.

Anyway, that’s what I started thinking of when I focused more on ertony’s concerns about efficiency. Perhaps if he went into a little more depth about what he sees as efficient or inefficient if will help move the discussion along?

1 Like

Why can’t anyone answer a simple question? You’re all explaining “mesh”. I understand what a mesh network is, obviously. Let me ask again, simply:

“What (in the programming code) ‘constitutes’ a hop”?

I have NOT presented analogies… This is a clear cut question. When does the “hop counter” in the device say “+1”?

Is it every time your message hits a new unit? (in the mesh or not) or is it when your message leaves your local “mesh”?

Because like i’ve said at least 3 times, unless you have UNLIMITED “hops”, you will EXHAUST them in a congested local network (if in fact the “counter” does a ‘+1’ every time your message hits a new device! (whether its 1 foot from your or half a mile away).

  1. I’ve read the website

  2. I understand networking

  3. I understand the “mesh” concept

Please present me with actual facts and not regurgitation of a sales pitch. There’s a ‘reason’ unlimited hopping is an issue… and THIS is why.

…standing by.


The counter increases when a device successfully passes the message onto another device. If two radios receive the message from the same Mesh unit, they aren’t going to endlessly bounce the message back and forth between each other under normal conditions.

Example, I sent a message one night from inside a shopping mall to someone waiting in a car outside. There were two units in the car, one hanging from the visor, the other in a pocket near the floor. Most messages, despite being heard by both radios, went directly to the recipient, even when the initial blast wasn’t heard by the IR. One time, the IR didn’t hear the initial or the second transmission, so the Mesh unit hanging from the visor relayed the message 5 feet to the unit blocked by the metal door. The following message I sent went straight to the IR.

I think the only one who brought up unlimited meshing is you. I’m still not quite sure what this has to do with efficiency. Or hop limits that are, ahem, far closer to the other end of the scale than infinity.

It’s unlikely that anyone would need to set the hop increment to +infinity to communicate even in a global scale mesh system. Running a three-stationary node network on firmware limited to two intermediate hops has made me quite aware of the limits of the current version of Aspen Grove. On the other hand, the forthcoming upgrade to four intermediate hops (plus sender and receiver, for a total of six hops max) will make urban-wide communication possible in many smaller cities like the Champaign-Urbana metroplex, assuming some well-placed intermediate nodes.

Larger networks might demand more hops, but I just don’t see the need for +inifinity hops. Maybe you can explain what you see as the theoretical use case this is meant to address? No one is making a sales pitch for such a system as far as I can tell. And I’m not sure how relevant it would even be to systems whose hop limits are closer to N+1 than to +infinity. Perhaps you’re not either so you’re hoping for a better understanding of mesh in order to extend your argument to numbers that are < +infinity?

And how (or can?) do you even program infinity? I’ll have to ask my (EE and software engineer) wife about that. In an earlier conversation, she noted the irony of this question being posed over the internet, which just happens to work a lot like a mesh network, yet no one is questioning the way the internet works as inefficient or suggesting the premise behind its operation might be logically flawed. Apples and oranges, I suppose. Personally, I suspect that when the hop count grows very large, interesting things may happen (but grounded more in calculation speed limits of the hardware than in software hop limits), but Aspen Grove’s existing hop count is a long way from being the sort of drop dead problem it’s implied it is here…

To use another analogy, it asks a question that’s a lot like “What are we going to do when the Sun decides to become a supernova?” Guess we’ll deal with that when we get there, but I’ve got other things to worry about now. :smiley:

1 Like


I think I understand what ertony is asking.

Black Star: transmitting Gotenna
Black circle: range of transmitting gotenna
Green Star: desired recipient Gotenna
Green circle: range of recipient Gotenna
Red Stars: relays or other paired Gotennas

He is asking if the “network” is intelligent enough to “choose” the yellow route, thus only consuming 2 hops to transmit the desired message. Do the other relay nodes play a part in sending the message or do they remain quiet since there is a shorter route to the desired recipient. Is the network aware of how many hops it is away from each other node or does the message bleed through the network and branch-off/propagate through each node until all the hopes are “consumed”.

Bleeding the message through the rest of the network would still guarantee that a copy of the message would reach the farthest as each node would treat even the same message received from different nodes as a separate message. For example, would relay number 5 re-transmit a copy of the message to the recipient? It would receive a copy from relay 2 having only used up 2 hops but would also receive a copy of the message from relay 4 having used up 4 hops.

That’s my take on the question anyway.


There is an initial discovery protocol they go through (see my previous link) which sounds like a test of the network to see which path is available to the IR, if any. Thus the initial discovery protocol is probably the determinant as to which path to use and without more information we don’t know what criteria it decides is best path (e.g. speed, number of hops, signal strength, etc).

It also states it saves the path discovered until compromised (mobile meshes moved) at which point it would need to re-initiate the initial discovery protocol again to see if it has a path to the IR.

There is a bunch of info on MANET. And none of this is new ground as the military has been doing MANET for a while at a much larger scale than goTenna.

1 Like

We have a lot of “smarts” built into our protocol. I’ve asked our Chief Scientist to give you a high-level view of that. We have both adopted best-practices in protocols (MANETs and otherwise) and invented some key stuff as well for our unique use-case (short-burst data over great distances assuming zero connectivity/back-haul in most cases).

1 Like

Hello all, I am the chief scientist Daniela mentioned.

First of, there are many different protocols for routing a message from a source to a destination. Some of them use an initial discovery, some of them collect the topology, and so on. The protocol in the the devices you have is neither – it is a protocol sometimes referred to as “flooding” which, in simplest terms, executes the following logic at each node when it receives a message:

Source node: Set the max hops (called the Time to Live (TTL)) to 3 and transmit
Relay node: If I am the destination, deliver the packet to the app and stop; else, decrement the TTL by 1, and retransmit unless I have already retransmitted this message or the TTL is 0

(the “unless already transmitted” part is to prevent unnecessary looping of messages).

It follows that as long as the destination is within 3 hops of the source, the message will make it (in the absence of channel or other errors). The destination may get multiple copies of the message via the different paths of length 3 or less between the source and the destination, which doesn’t matter.

Thus, in the picture posted by @Briann (thanks for this!) the message will reach the green star. It will reach it through two paths – the yellow and dark blue one. It will not reach it through the light blue path (will stop at red node marked “4”).

It does not matter how many nodes are around the source node. Such nodes may contribute to some unnecessary relaying, but will NOT “exhaust” or “take away” hops in any sense – they will participate in additional copies circulating, but the copies of the message on the yellow and dark blue paths will not be affected by these and still make it to the destination.

All this said, we are moving to a far more efficient protocol for routing in the coming months which will not be based on such “flooding”, but will retain the robustness of flooding. We expect to relax the hop count limitation.

Hope this helps.