Πώς ταξιδεύει ένα μήνυμα
Όλοι οι κόμβοι ακούν και εκπέμπουν στην ίδια συχνότητα. Δεν υπάρχει κεντρικός σταθμός: τα μηνύματα φτάνουν μακριά επειδή οι κόμβοι τα επαναλαμβάνουν.
Managed flooding και hops
Όταν ένας κόμβος ακούει ένα μήνυμα για πρώτη φορά, περιμένει λίγο πριν το επαναλάβει. Οι κόμβοι που ακούν τον αποστολέα πιο αδύναμα, συνήθως επειδή είναι πιο μακριά, περιμένουν λιγότερο. Έτσι το μήνυμα προχωρά όσο γίνεται πιο μακριά με κάθε εκπομπή. Αν ένας κόμβος ακούσει άλλον να το επαναλαμβάνει όσο περιμένει, δεν εκπέμπει. Αυτή η τεχνική λέγεται managed flooding.
Κάθε επανάληψη είναι ένα hop. Το hop limit ορίζει πόσες φορές μπορεί να επαναληφθεί ένα μήνυμα: η προεπιλογή του firmware είναι 3, η γεννήτρια προφίλ ξεκινά από 4 και το μέγιστο είναι 7. Δες πότε αξίζει να το αλλάξεις.
Ο A θα στείλει μήνυμα στο κανάλι με hop limit 3.
- Δεν το έχει λάβει
- Περιμένει
- Εκπέμπει
- Έλαβε
- Σιώπησε
Οι ρόλοι ROUTER και ROUTER_LATE επαναλαμβάνουν το μήνυμα ακόμη κι αν το έχουν ακούσει από άλλον. Γι' αυτό είναι ρόλοι υποδομής και θέλουν συνεννόηση με την κοινότητα.
Κανάλια και direct messages
Ένα μήνυμα σε κανάλι το λαμβάνουν όλοι όσοι έχουν το ίδιο κανάλι και κλειδί. Ένα direct message απευθύνεται σε έναν κόμβο και μπορεί να το διαβάσει μόνο αυτός. Για να στείλεις direct message, ο κόμβος σου χρειάζεται το δημόσιο κλειδί του παραλήπτη. Το μαθαίνει όταν ακούσει τις πληροφορίες κόμβου (NodeInfo) που εκπέμπει ο παραλήπτης.
Το πρώτο direct message προς κάποιον ταξιδεύει με managed flooding. Από τις απαντήσεις, οι κόμβοι μαθαίνουν ποιος γείτονας οδηγεί προς τον παραλήπτη, και στα επόμενα μηνύματα επαναλαμβάνει μόνο αυτός. Αν αυτή η διαδρομή σταματήσει να λειτουργεί, ο κόμβος γυρίζει ξανά σε managed flooding.
Επιβεβαιώσεις
Σε μήνυμα καναλιού, οι παραλήπτες δεν απαντούν ένας ένας. Ο κόμβος σου θεωρεί ότι το μήνυμα προχώρησε όταν ακούσει άλλον κόμβο να το επαναλαμβάνει. Αυτό δεν σημαίνει ότι το έλαβαν όλοι. Αν δεν ακούσει κανέναν, το ξαναστέλνει λίγες φορές.
Σε direct message, ο παραλήπτης στέλνει πίσω επιβεβαίωση (ACK). Αν δεν έρθει, ο κόμβος σου ξαναστέλνει το μήνυμα λίγες φορές πριν το δείξει ως αποτυχημένο.
Μία συχνότητα για όλους
Πριν εκπέμψει, ένας κόμβος ελέγχει αν η συχνότητα είναι ελεύθερη και, αν δεν είναι, περιμένει. Δύο κόμβοι που δεν ακούν ο ένας τον άλλον μπορεί όμως να εκπέμψουν ταυτόχρονα, και τότε ένας τρίτος ανάμεσά τους συχνά δεν λαμβάνει κανένα από τα δύο μηνύματα.
- Εκπομπή
- Αναμονή
- Σύγκρουση
- Λήψη
Πάτησε «Παίξε» για να δεις τι συμβαίνει στη συχνότητα.
Κάθε κόμβος μπορεί να εκπέμπει έως 6 λεπτά την ώρα (10%).
Τα 6 λεπτά είναι το όριο για κάθε κόμβο. Η συχνότητα όμως είναι κοινή: κάθε εκπομπή του κόμβου σου την καταλαμβάνει για όλους.
Γι' αυτό περισσότεροι κόμβοι που επαναλαμβάνουν δεν σημαίνουν πάντα καλύτερη κάλυψη: κάθε εκπομπή καταλαμβάνει τη συχνότητα για όλους. Οι καλές πρακτικές για το airtime εξηγούν πώς να μην την επιβαρύνεις.
Γιατί δεν έφτασε το μήνυμά μου;
- Έχετε το ίδιο προφίλ ρυθμίσεων και κανάλι; Κάνε τον έλεγχο εφαρμογής.
- Σε direct message, ο παραλήπτης εμφανίζεται στη λίστα κόμβων της εφαρμογής σου; Αν όχι, ο κόμβος σου δεν έχει ακόμη το κλειδί του.
- Είναι πιο μακριά από όσα hops επιτρέπει το hop limit;
- Είναι φορτωμένη η συχνότητα; Περίμενε πριν ξαναστείλεις.
- Το είδες στο monitoring; Αυτό δεν αποδεικνύει παράδοση. Δες τι αποδεικνύει μια καταχώριση.
Αν το πρόβλημα μένει, δες τι να ελέγξεις και πώς να ζητήσεις βοήθεια.