MeshCore: routage et relais
Comment des messages MeshCore trouvent une route via des relais. Vue pratique: limites, deduplication, et sobriete radio (France: reseau en structuration).
Comment un message trouve son chemin ?
Dans un mesh, il n y a pas toujours un routeur central. Les noeuds cooperent pour relayer des messages. L objectif est d atteindre la destination sans saturer la radio.
MeshCore met l accent sur un routage plus cible (path discovery) et sur une utilisation sobre de l airtime. Les details evoluent selon versions et firmwares.
En France, le reseau est en structuration. Beaucoup de "problemes de routage" sont juste un manque de noeuds/relais. Commencez par valider en direct (2 noeuds) puis ajoutez un repeater si besoin.
Mecanismes de base
Quatre idees utiles a comprendre (selon implementation):
Relais controle
Un message peut etre relaye par des noeuds intermediaires. Le relai peut etre controle (pas une diffusion infinie).
Deduplication
Les noeuds gardent une memoire courte des messages vus (IDs) pour ne pas relayer en boucle.
Limite de hops
Une limite de relais (hop limit) evite que des messages traversent tout le reseau inutilement.
Qualite radio
Les decisions de relai peuvent tenir compte de la qualite (RSSI/SNR, pertes) pour privilegier des liens plus fiables.
Diffusion vs routage cible
Certains meshes utilisent une diffusion large (flooding). MeshCore cherche plutot a rester sobre avec des routes utiles. Dans la pratique, on observe souvent un mix selon modes et versions.
Etape 1: emission
Le noeud emet un message vers son voisinage (direct).
Etape 2: voisins
Des noeuds en portee directe recoivent. Ils decident si un relai est utile.
Etape 3: propagation limitee
Si relai, la propagation est limitee par des regles (hop limit, deduplication, delai random).
Etape 4: destination
La destination recoit. Un ack peut exister selon mode et client.
Optimisations typiques
Pour garder un reseau stable, on retrouve souvent:
- • Deduplication: ne pas relayer un message deja vu
- • ACKs: confirmer une reception (selon modes)
- • Delai aleatoire: eviter des collisions quand plusieurs relais agissent
- • Priorites: ne pas relayer des liens trop faibles ou trop bruyants
Limite de hops
Valeur par defaut
Une limite faible (ex: 2-4) est souvent suffisante pour un noyau local.
Augmenter
Plus de hops = plus de portee potentielle, mais plus d airtime et de latence. A faire seulement si necessaire.
Portee par hop
La portee depend du terrain/antenne. Un hop en ville peut etre 300m a 2km; en degage, plus.
Principe
Un paquet embarque une limite. A chaque relai, le compteur augmente, puis le message n est plus relaye quand la limite est atteinte:
Emission: hop_count = 0 Relai 1: hop_count = 1 Relai 2: hop_count = 2 Relai 3: hop_count = 3 -> stop
Cela protege l airtime et evite les boucles longues.
Pourquoi c est utile
Auto-organisation
Peu de config pour un noyau local: on teste, on observe, on ajuste.
Economie energie
Moins de relais inutiles = moins de conso, surtout sur batterie.
Robuste
Si une route tombe, une autre peut emergir si la topologie le permet.
Portee progressive
Ajouter un repeater bien place peut etendre beaucoup plus que "monter la puissance".
Debuggable
Avec des logs/telemetries, on peut comprendre ou ca coince (antenne, preset, manque de relais).
Pas de point unique
Pas besoin d une infrastructure centrale pour le local.
Exemples de configuration (indicatifs)
Selon version, certains parametres se reglent via CLI/API. Exemples indicatifs (a verifier dans la doc officielle):
CLI: regler hop limit
Augmenter hop limit pour une zone plus large (attention airtime):
meshcore --set router.hop_limit 5 meshcore --set router.rebroadcast_mode ALL_SKIP_DECODING
Python: regler des parametres
Automatiser une config via script (pseudo-exemple):
import meshcore
interface = meshcore.SerialInterface()
node = interface.getNode("^local")
node.router.hop_limit = 4
node.writeConfig()
Avance: seuil RSSI
Eviter de relayer sur des liens trop faibles (selon options):
meshcore --set router.rebroadcast_min_rssi -110 # -120 dBm = tres faible # -100 dBm = moyen # -80 dBm = fort
FAQ routage
Pourquoi pas un routage "table" classique ?
Sur LoRa, on cherche la sobriete et la robustesse. Les tables complexes peuvent couter cher en messages et en energie. Les details dependent du protocole MeshCore.
Et si deux relais emettent en meme temps ?
Les collisions existent. Les delais aleatoires et les retries peuvent aider. Le mieux reste de reduire la charge et d avoir de bons liens.
Peut-on regler hop limit par type de message ?
Selon firmware, oui. C est utile: telemetrie et GPS peuvent rester plus locaux que du texte.
Comment eviter les boucles ?
Deduplication + hop limit evitent les boucles longues. Ensuite, la topologie et la sobriete font le reste.
Quelle latence attendre ?
Tres variable: SF, taille message, collisions, hops. Dans un noyau local bien regle, quelques secondes est courant.
Puis-je desactiver le relai sur une node ?
Souvent oui (selon modes). Sur mobile, ca peut economiser batterie. Gardez des relais fixes pour la couverture.
Tester localement, rester sobre
Le routage marche mieux quand le reseau est sobre et quand les relais sont bien places. En France, le reseau est en structuration: commencez avec 2-5 noeuds, mesurez, puis etendez.