-
Notifications
You must be signed in to change notification settings - Fork 1
Message Forwarding
Alle Nachrichten, die über das Protokoll gesendet werden, müssen im ASCII Format kodiert sein.
Vorraussetzung für diese Vorgehensweise ist ein zusätzliches Feld im Header ("Zwischenknoten"), da prinzipiell alle Module in Empfangsreichweite alle Nachrichten empfangen (AT+DEST=FFFF
).
Knoten1 möchte eine Nachricht an Knoten6 senden. Die aktuelle Routingtabelle von Knoten1 (unvollständig) könnte wie folgt aussehen:
Addr | Hop | Costs |
---|---|---|
K3 | K3 | 1 |
K2 | K2 | 1 |
K5 | K2 | 2 |
K6 | K2 | 3 |
Ablauf:
Knoten1 sendet seine Nachricht an Knoten2 mit folgendem Header:
source | flag | ttl | destination | nextNode | Payload |
---|---|---|---|---|---|
K1 | 1 | 5 | K6 | K2 | Hello World! |
Diese Nachricht wird prinzipiell von allen Knoten in Empfangsreichweite empfangen. Jedoch wird die Nachricht nur von Knoten2 weiterverarbeitet, da dieser im nextDestination
Feld steht.
Nun schaut Knoten2 in seine Routingtabelle, um zu schauen wie er dieses Paket zum Zielknoten senden kann, und könnte diesen Eintrag vorfinden:
Addr | Hop | Costs |
---|---|---|
K6 | K5 | 2 |
Also generiert er eine Nachricht mit einem passenden Header und sendet sie an Knoten5:
source | flag | ttl | destination | nextNode | Payload |
---|---|---|---|---|---|
K1 | 1 | 4 | K6 | K5 | Hello World! |
Diese Nachricht wird wieder prinzipiell von allen Knoten empfangen, jedoch nur von Knoten5 weiterverarbeitet (nextDestination) und von den restlichen Knoten verworfen. Nun schaut Knoten5 in seine Routingtabelle und könnte dieses Eintrag vorfinden:
Addr | Hop | Costs |
---|---|---|
K6 | K6 | 1 |
Nun sendet Knoten5 die folgende Nachricht an Knoten6:
source | flag | ttl | destination | nextNode | Payload |
---|---|---|---|---|---|
K1 | 1 | 3 | K6 | K6 | Hello World! |
Die Nachricht wird nun von Knoten6 Empfangen. Dieser sieht nun, dass destination == nextDestination
Also kann er diese direkt auswerten. Beim user vom Knoten6 könnte nun dies auf dem Bildschirm erscheinen:
"Sie haben eine Nachricht von Knoten 1 empfangen: Hello World!"
- Empfangsthread kann weiterarbeiten: während der Änderung der Konfiguration können keine Nachrichten empfangen werden
- höhere Performance
- es muss nicht erneut in den Empfangsmodus gewechselt werden?