MeshCore routing algoritmes
Ontdek hoe MeshCore berichten automatisch de beste route vinden door het mesh-netwerk. Technische uitleg over flooding, hop limiting en route discovery.
Hoe vindt een bericht zijn weg door het mesh-netwerk?
In een mesh-netwerk is er geen centrale router die bepaalt welke route een bericht moet nemen. In plaats daarvan gebruikt MeshCore intelligente routing algoritmes die ervoor zorgen dat berichten automatisch de efficiëntste route vinden naar hun bestemming.
Het MeshCore routing protocol is gebaseerd op flooding met optimalisaties. Dit betekent dat berichten in meerdere richtingen worden uitgezonden, maar met slimme mechanismen om netwerkcongestie te voorkomen en batterijtijd te sparen.
In deze technische handleiding leggen we uit hoe het MeshCore routing algoritme werkt, welke optimalisaties worden toegepast, en hoe je de routing kunt configureren voor jouw specifieke use case.
Basis routing protocol mechanismen
MeshCore gebruikt vier kernmechanismen voor routing:
Flood routing
Berichten worden uitgezonden naar alle nodes in bereik. Elke node die het bericht ontvangt stuurt het door tot de maximale hop count is bereikt.
Duplicate detection
Elk bericht heeft een unieke ID. Nodes onthouden recent geziene berichten en negeren duplicaten om eindeloze loops te voorkomen.
Hop count limiting
Elk bericht heeft een hop counter die begint bij 0 en verhoogt bij elke hop. Na het maximale aantal hops (standaard 3) wordt het bericht niet meer doorgestuurd.
Signal strength evaluation
Nodes evalueren de signaalsterkte (RSSI) van inkomende berichten. Zwakke signalen worden met lagere prioriteit doorgestuurd om netwerkefficiëntie te verbeteren.
Hoe flooding routing werkt
Het flooding algoritme is de kern van MeshCore routing. Zo werkt het stap voor stap:
Stap 1: Bericht wordt verzonden
Node A verstuurt een bericht. Het bericht krijgt een unieke ID en de hop counter wordt ingesteld op 0. Het bericht wordt uitgezonden naar alle nodes in radiobereik.
Stap 2: Eerste hop - buren ontvangen
Nodes B, C en D ontvangen het bericht. Ze checken: "Heb ik dit bericht al gezien?" Zo ja → negeren. Zo nee → opslaan in recent messages cache en doorsturen. Hop counter wordt verhoogd naar 1.
Stap 3: Tweede hop - verdere verspreiding
Nodes E, F, G ontvangen het bericht van B, C, D. Ze voeren dezelfde check uit. Sommige nodes ontvangen mogelijk duplicaten van verschillende buren - deze worden genegeerd. Hop counter wordt 2.
Stap 4: Bestemming bereikt of max hops
Als de doelnode het bericht ontvangt, stuurt deze een ACK terug (optioneel). Als de hop counter de maximum waarde bereikt (standaard 3), stoppen nodes met doorsturen.
Flooding optimalisaties
Om te voorkomen dat het netwerk overbelast raakt, gebruikt MeshCore deze optimalisaties:
- • <strong>Message deduplication:</strong> Berichten die al gezien zijn worden niet opnieuw doorgestuurd, zelfs als ze via een andere route binnenkomen.
- • <strong>Implicit ACK:</strong> Als een node hoort dat zijn buur het bericht heeft doorgestuurd, weet het dat de transmissie succesvol was.
- • <strong>Random delay:</strong> Nodes wachten een korte, willekeurige tijd voordat ze doorsturen om collision storms te voorkomen.
- • <strong>RSSI-based prioritization:</strong> Nodes met sterker signaal krijgen prioriteit bij doorsturen.
Hop limiting mechanisme
Standaard hops
Standaard maximum hops in MeshCore configuratie. Geschikt voor lokale netwerken binnen 3-5 km bereik.
Maximum hops
Maximaal configureerbare hops. Meer hops = groter bereik maar hogere latency en meer netwerkverkeer.
Bereik per hop
Gemiddeld bereik per hop in stedelijk gebied (1km) maal 3 hops = totaal bereik ongeveer 3 km.
Hoe hop counting werkt
Elk pakket bevat een hop_limit veld in de header. Elke node die het pakket doorstuurt verhoogt de hop counter met 1:
Bericht verzonden: hop_count = 0 Eerste relay: hop_count = 1 Tweede relay: hop_count = 2 Derde relay: hop_count = 3 → Max bereikt, stop doorsturen
Dit voorkomt dat berichten eindeloos blijven circuleren in het netwerk en bespaart kostbare batterijenergie en airtime.
Voordelen van MeshCore routing
Zelforganiserend
Geen configuratie nodig. Nodes vinden automatisch de beste routes zonder centrale controle.
Energie-efficiënt
Slimme optimalisaties zorgen dat alleen noodzakelijke nodes berichten doorsturen, wat batterij bespaart.
Robuust tegen uitval
Als één route uitvalt, vinden berichten automatisch een alternatieve weg door het netwerk.
Schaalbaar bereik
Door meer nodes toe te voegen vergroot het bereik exponentieel zonder extra configuratie.
Simpel protocol
Het flooding-based protocol is eenvoudig te implementeren en debuggen vergeleken met complexe routing tables.
Geen single point of failure
Geen centrale router betekent dat er geen enkel punt is dat het hele netwerk kan laten crashen.
Routing configuratie voorbeelden
Je kunt het routing gedrag aanpassen via de MeshCore CLI of Python API:
CLI: Hop limit instellen
Verhoog de hop limit voor groter bereik (let op: meer batterijverbruik en latency):
meshcore --set router.hop_limit 5 meshcore --set router.rebroadcast_mode ALL_SKIP_DECODING
Python API: Routing configuratie
Configureer routing via Python voor geautomatiseerde deployments:
import meshcore
interface = meshcore.SerialInterface()
node = interface.getNode("^local")
# Set routing parameters
node.router.hop_limit = 4
node.router.rebroadcast_mode = meshcore.Router.ALL_SKIP_DECODING
node.writeConfig()
Advanced: RSSI threshold
Stel een minimum RSSI in voor rebroadcasting om zwakke links te negeren:
meshcore --set router.rebroadcast_min_rssi -120 # -120 dBm = zeer zwak signaal # -100 dBm = gemiddeld signaal (aanbevolen) # -80 dBm = sterk signaal
Veelgestelde vragen over routing
Waarom gebruikt MeshCore flooding en geen table-based routing?
Flooding is veel simpeler en robuuster in mobiele netwerken waar nodes constant in- en uitschakelen. Table-based routing vereist route discovery en onderhoud van routing tables, wat complex en energie-intensief is voor LoRa devices.
Wat gebeurt er als twee nodes tegelijk een bericht doorsturen?
MeshCore gebruikt random backoff delays om collisions te minimaliseren. Als er toch een collision optreedt, zullen andere nodes in het netwerk het bericht wel succesvol doorsturen dankzij het flooding principe.
Kan ik verschillende hop limits instellen per message type?
Ja, in de routing configuratie kun je verschillende hop limits instellen voor position updates, text messages en telemetry. Dit optimaliseer je netwerkverkeer per message type.
Hoe voorkomt MeshCore route loops?
Door een combinatie van hop limiting en message deduplication. Elke node onthoudt recente message IDs en stuurt duplicaten niet door, zelfs als ze via een andere route binnenkomen.
Wat is de latency met 3 hops?
Elke hop duurt ongeveer 1-3 seconden afhankelijk van spreading factor en message size. Met 3 hops duurt end-to-end delivery ongeveer 3-10 seconden.
Kan ik routing uitschakelen voor mijn node?
Ja, je kunt routing uitschakelen door rebroadcast_mode op "NONE" te zetten. Je node ontvangt dan wel berichten maar stuurt ze niet door. Dit is handig voor mobiele devices om batterij te sparen.
Start met MeshCore routing development
Het MeshCore routing algoritme biedt een robuuste, energie-efficiënte manier om berichten te routeren zonder centrale infrastructuur. Perfect voor noodcommunicatie en off-grid netwerken.