Comments (9)
I see, makes sense.
So there's already a ticket on the 3.0 board to also add the route back to the traceroute, and the SNR per link. I first wanted it to do for 3.0 only, because it would give wrong information if not all nodes update. However, since we now can derive the actual hops it took, we could at least show the number of unknown hops on the way back. In this way we can gradually introduce it (and maybe don't show it yet in the phone clients). Downside is that it increases the packet size, but currently a traceroute is pretty small and I think SNR can be encoded with 1 byte. What do you think?
from firmware.
It also occurs to me that my original request might be better served by each node along the way calculating missing hops, since it would allow more information about where exactly the missing hops are.
I might try to draw up a diagram with the various pieces of information being proposed in different places to clarify what exactly we're all talking about 😅
from firmware.
I'm not entirely sure why it needs to be added to the RouteDiscovery
if you can already deduce it from the information in the MeshPacket (hopStart
- hopLimit
)?
from firmware.
Not back at node A -- this is proposing sending back the data derived from hopStart
/ hopLimit
of the outbound traceroute, not of the reply. The traceroute from A to E may have one missing link, but the packet getting back from E to A after the traceroute has completed could go a totally different way (and often will, from what I've seen), so the hopStart
and hopLimit
of the packet when it gets back to A aren't meaningful in interpreting the path
from firmware.
That seems neat too, though I wasn't even thinking of reverse traceroutes -- just detecting missing hops on the current single-direction ones (the reverse direction being mentioned in my prior response because, since it can take a different route, it can't be used for calculating missing hops in the original traceroute)
from firmware.
First, how traces currently work:
A does not know (and can't know, with the information it has on the response) about the missing hop (C) between B & D
Here, node E detects the missing hop and adds it to the RouteDiscovery, so A knows that there was a missing hop somewhere on the traceroute.
An even better version, maybe:
Here, node D (the first node after the missing hop) detects the missing hop and notes it somewhere associated with itself in the RouteDiscovery. Node E doesn't need to add anything, because all hops are accounted for, and node A knows that there is a missing hop and that it's somewhere before node D (with all updated firmware, immediately before D).
If the SNR per link is added, these missing hops would presumably be added in a similar place in this last option, since they're per-hop information. Another thing that could be added per-hop is whether a given hop was via MQTT or not, so traceroutes could identify MQTT gateway nodes.
from firmware.
Hopefully those diagrams are helpful at all, they're pretty slapped-together obviously. The core observation is that nodes on the outbound path are able to detect if the trace went by way of any nodes that couldn't add themselves to the list, but the originating node can't know that after the traceroute returns unless the outbound nodes or traceroute destination add it to the payload in some way, particularly since the response might go via a different path. SNR and MQTT are similarly things that can't be determined by the originating node unless they're added by the outbound-path nodes.
Bidirectional traceroutes would be another addition to this, so that nodes F and G are also eventually included in the list, but that's likely a bigger change.
from firmware.
The other complication is whether to add a "total hops" indicator or just a "missing hops" one.
If it's "total hops", then the field would always be present with updated firmware, which would make it easy to tell if nodes D or E are adding information or not, in the proposed changes. But it'd increase packet size. Having only a "missing hops" field would mean that each missing hop would only need to be accounted for once (by D or E, in the example), but if a node doesn't have updated firmware and doesn't add the indication, it would appear that there were no missing hops, even if there actually were any.
My feeling is that adding only missing-hops information is better since nodes tend to eventually update and folks are used to (or at least somewhat used to) the current behavior where those hops are totally absent already anyway.
from firmware.
Adding SNR for each hop would greatly increase the ability to troubleshoot unstable connections.
from firmware.
Related Issues (20)
- [Bug]: M5 Stack firmware not working with ESP32-S3 version of the M5 Stack
- Request for new definition to support Ebyte E22 modules[Board]: HOT 1
- [Bug]: Triple-click behaviour for GPS doesn't work as expected HOT 3
- [Feature Request]: Option to limit traffic based on original hop settings HOT 7
- [Bug]: rak4631 shutting down from keypress that never happened HOT 4
- [Feature Request]: Setting to configure a periodic reboot HOT 6
- [Feature Request]: Report altitude from pressure HOT 5
- [Feature Request]: Use DOP from GPS devices to determine if we have a good enough position to save airtime HOT 1
- [Bug]: No way to change recipient when typing message on T-Deck HOT 1
- [Board]: Flipper zero (with Lora module) HOT 2
- [Bug]: PicoW GPS Firmware HOT 1
- [Feature Request]: Add a module for "Device intrusion" HOT 1
- [Bug]: Pico W "integer too large" then crash HOT 3
- [Bug]: Factory reset not actually resetting node. HOT 4
- [Feature Request]: Always show battery percentage on a current frame when on battery
- [Feature Request]: gpsd client support HOT 14
- [Bug]: ESP32-S3 Boards with Native USB Not Booting without USB Host Serial HOT 7
- Nano G2 Ultra doesn't shows direct message HOT 2
- [Feature Request]: Root topic by channel or similar solution … HOT 5
- [Bug]: When trrying to compile rak11310 it errors out. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from firmware.