Protocol technologie

MeshCore protocol uitgelegd

Technische deep-dive in het MeshCore protocol: hoe berichten worden verstuurd, gerouteerd en ontvangen in een decentraal mesh-netwerk

Wat is het MeshCore protocol?

Het MeshCore protocol is de technische laag die ervoor zorgt dat apparaten in een mesh-netwerk met elkaar kunnen communiceren. Het definieert hoe berichten worden geformatteerd, verstuurd, gerouteerd en ontvangen – zonder centrale server of internet.

In tegenstelling tot traditionele netwerk protocollen zoals TCP/IP (dat internet gebruikt) of GSM (dat mobiele zendmasten nodig heeft), werkt het MeshCore protocol volledig peer-to-peer. Elk apparaat is gelijkwaardig en berichten vinden hun weg via meerdere tussenliggende nodes.

Het protocol is gebouwd bovenop LoRa (Long Range) radio technologie en maakt gebruik van de 868 MHz frequentieband in Europa. Deze pagina legt uit hoe het protocol technisch werkt.

MeshCore protocol lagen

Het MeshCore protocol bestaat uit 4 lagen, vergelijkbaar met het OSI model:

1. Physical layer (LoRa PHY)

De fysieke laag gebruikt LoRa radio modulatie om data draadloos te versturen. Deze laag bepaalt frequentie, bandwidth, spreading factor en transmissie power.

Frequency: 868 MHz | Bandwidth: 125-500 kHz | SF: 7-12

2. Link layer (LoRa MAC)

De link laag zorgt voor access control, collision detection en acknowledgements tussen direct verbonden nodes.

CSMA/CA protocol | ACK/NACK mechanisme | Retry logic

3. Network layer (Mesh routing)

De netwerk laag implementeert mesh routing: het bepaalt welke route een bericht neemt om van zender naar ontvanger te komen via tussenliggende nodes.

Flood routing | Hop limit (max 3-7 hops) | Duplicate detection

4. Application layer (Messages)

De applicatie laag bevat de daadwerkelijke payload: tekstberichten, positie, telemetrie, etc. Deze laag kan versleuteld zijn met AES-256.

Message types: TEXT, POSITION, TELEMETRY, ACK | Encryption: AES-256

MeshCore packet structuur

Elk bericht in het MeshCore netwerk wordt verstuurd als een packet met een specifieke structuur:

[HEADER] [PAYLOAD] [CHECKSUM]

HEADER (8 bytes):
- Packet ID (4 bytes)
- Source Address (2 bytes)
- Destination Address (2 bytes)
- Hop Count (1 byte)
- Flags (1 byte)

PAYLOAD (max 237 bytes):
- Message Type (1 byte)
- Encrypted Data (max 236 bytes)

CHECKSUM (2 bytes):
- CRC16 voor data integriteit

Het Packet ID is uniek en voorkomt dat berichten meerdere keren worden verwerkt. De Hop Count telt hoe vaak een bericht is doorgestuurd – dit voorkomt oneindige loops. De Flags geven aan of het bericht versleuteld is, of een ACK verwacht wordt, etc.

MeshCore message types

TEXT_MESSAGE (0x01)

Tekstbericht tussen gebruikers. Kan privé (encrypted) of public zijn.

Type: 0x01 | Payload: "Hallo, alles goed?"

POSITION (0x02)

GPS coördinaten van een node. Wordt automatisch broadcast op ingestelde interval.

Type: 0x02 | Lat: 52.0705, Lon: 4.3007, Alt: 5m

TELEMETRY (0x03)

Sensor data zoals batterijpercentage, temperatuur, voltage.

Type: 0x03 | Battery: 87%, Temp: 22°C, Voltage: 3.8V

NODEINFO (0x04)

Informatie over de node zelf: naam, hardware model, firmware versie.

Type: 0x04 | Name: "Node-ABC", Model: "Heltec V3"

ROUTING (0x05)

Routing berichten voor netwerk discovery en route updates.

Type: 0x05 | Neighbor nodes: 3, Route table updates

ACK (0x06)

Acknowledgement: bevestiging dat een bericht is ontvangen.

Type: 0x06 | ACK for Packet ID: 0x4F3A2B1C

Hoe werkt mesh routing?

Het mesh routing algoritme bepaalt hoe berichten hun weg vinden door het netwerk. MeshCore gebruikt een combinatie van flood routing en intelligent hop limiting:

Flood routing principe

Wanneer een node een bericht verstuurt, broadcast deze naar alle nodes in bereik. Elke ontvanger kijkt of het bericht voor hem bedoeld is. Zo niet, dan stuurt de node het bericht door naar zijn buren (met verhoogde hop count). Dit proces herhaalt zich totdat het bericht de bestemming bereikt of de maximale hop limit wordt bereikt.

Hop limiting

Elk bericht heeft een hop limit (meestal 3-7 hops). Bij elke doorstuur-actie wordt de hop count verhoogd. Als het maximum is bereikt, wordt het bericht niet meer doorgestuurd. Dit voorkomt dat berichten eeuwig door het netwerk blijven circuleren en voorkomt netwerk congestie.

Voordelen van het MeshCore protocol

🔄

Self-healing netwerk

Als een node uitvalt, vindt het protocol automatisch een alternatieve route.

📡

Decentraal

Geen centrale server of infrastructuur nodig. Het netwerk werkt peer-to-peer.

🔐

End-to-end encrypted

Privé berichten zijn versleuteld met AES-256. Alleen zender en ontvanger kunnen meelezen.

Energie-efficiënt

LoRa is extreem energie-zuinig. Apparaten gaan dagen tot weken mee op batterij.

📏

Lang bereik

LoRa technologie bereikt ~1km in bebouwde gebieden, 10+ km in open veld.

🌐

Schaalbaarheid

Het netwerk wordt sterker naarmate meer nodes meedoen.

Technische specificaties

Frequentie (EU) 868 MHz (ISM band, vergunningvrij)
Bandwidth 125 kHz, 250 kHz, 500 kHz (configureerbaar)
Spreading Factor SF7 - SF12 (hogere SF = meer bereik, lagere datarate)
Coding Rate 4/5, 4/6, 4/7, 4/8 (forward error correction)
Max Payload 237 bytes per packet (LoRa PHY limiet)
Encryptie AES-256 (optioneel, per kanaal configureerbaar)

Veelgestelde vragen over het protocol

Is het MeshCore protocol compatible met Meshtastic?

MeshCore is gebaseerd op dezelfde LoRa technologie en delen soortgelijke principes, maar gebruiken verschillende protocol implementaties. Ze zijn niet direct compatible, maar beide werken op 868 MHz in Europa.

Hoe snel is data transmissie in het netwerk?

Dit hangt af van de spreading factor. Met SF7 bereik je ~5-10 kbps, met SF12 (meer bereik) ~250 bps. Het is langzaam vergeleken met WiFi, maar geoptimaliseerd voor bereik en energie-efficiëntie.

Kan ik het protocol aanpassen voor mijn gebruik?

Ja, MeshCore is open source. Je kunt de source code bekijken en aanpassen. Let wel op dat wijzigingen ervoor kunnen zorgen dat je apparaten niet meer compatible zijn met het hoofdnetwerk.

Wat gebeurt er als twee berichten tegelijk worden verstuurd?

De link layer gebruikt CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance). Apparaten luisteren eerst of het kanaal vrij is. Bij een collision wordt een random backoff toegepast en wordt het bericht opnieuw verstuurd.

Hoeveel overhead heeft het protocol?

De header is 8 bytes, checksum 2 bytes = 10 bytes overhead. Bij een 237 byte packet is dit ~4% overhead, wat zeer efficiënt is.

Ondersteunt het protocol IPv6 of andere internet protocollen?

Nee, MeshCore is een proprietary protocol specifiek ontworpen voor LoRa mesh netwerken. Het is geen internetprotocol en heeft geen IP adressen. Nodes hebben unieke 16-bit mesh adressen.

Begin met MeshCore development

Nu je begrijpt hoe het MeshCore protocol technisch werkt, kun je ermee aan de slag. Ontwikkel eigen applicaties, draag bij aan de firmware, of experimenteer met protocol optimalisaties.