Wat zijn duplicates?
Artikel voor het laatst bijgewerkt op .
Kort antwoord:
Binnen MeshCore zijn duplicates berichten die al eerder zijn gezien. Om te voorkomen dat een bericht meermaals door dezelfde repeaters zal worden herhaald, heeft MeshCore ingebouwde detectie van deze berichten.
Een duplicate binnen MeshCore is een bericht dat eerder is gezien. Dat kan zijn door de companion zelf, maar veelal repeaters die de primaire taak hebben om berichten door te sturen. Als deze geen duplicates zou kunnen detecteren, dan zal er onnodig veel herhaald worden.
Voorbeeld:
Het pad: A – B – C – D.
A wil een bericht sturen naar D, net als A een companion. B en C zijn twee repeaters en tussen A en D zitten dus twee hops. A verstuurt het bericht en B zal als eerste het bericht zien. Deze verspreid het, waardoor A het bericht ook ziet, evenals repeater C. A gaat het natuurlijk negeren, want het is zijn eigen bericht. C pakt het aan en verspreid de boodschap verder. Nu zullen B en D hem zien. B heeft het bericht al eerder gezien, dus gaat hem negeren. Voor D is het bericht nieuw en aangezien het de begunstigde ontvanger is, verwerkt deze het bericht.
Werking
Als een bericht binnen komt, dan zal het apparaat deze gaan verwerken. Een stap in dit verwerkproces een hash van het bericht gebruiken om dit te vergelijken met een hash-tabel. Komt de hash al voor in de tabel, dan weet hij dat het bericht dubbel is. Een dubbel bericht zal worden genegeerd. Wel zal er een tellertje met 1 worden opgehoogd, als onderdeel van statistieken om te tonen hoeveel duplicates er zijn gezien.
Duplicates bekijken
Log in op een repeater door middel van de app. Druk op Request Status en bekijk het kopje Duplicate Packets Seen.
Duplicate Packets Seen
Flood: 18725, Direct: 53
Voor de programmeur
In de code van MeshCore is deze functionaliteit te vinden onder SimpleMeshTables.
Maximaal aantal hashes om te bewaren is opgegeven in MAX_PACKET_HASHES (momenteel 128).