Skip to content

Message Forwarding

Marvin Rausch edited this page Apr 15, 2021 · 1 revision

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!"

Vorteile: keine Aenderung der Modulkonfiguration notwendig

  • 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?
Clone this wiki locally