-
Notifications
You must be signed in to change notification settings - Fork 1
Route Reply
source | flag | ttl | hops | endNode | nextNode |
Format der Nachricht in Byte (x = 1 Byte)
xxxx | x | x | x | xxxx | xxxx |
Die Route Reply Nachricht geht als Broadcast an alle Knoten im Empfangsbereich.
- | ist das Trennzeichen das vor und nach jedem Feld eingefügt wird.
- Source enthält die Adresse des Anfragestellers der Rout im vierstelligen Format (zB. 0131)
- Flag enthält den Integer Wert 4
-
TTL enthält die noch verbleibenden hops bis die Nachricht verworfen wird im einelligen Format
- Startwert = 5
- jeder sendende Knoten subtrahiert 1
- bei 0 verarbeitet der Knoten das Paket, aber verwirft es danach. (Schliesst auch den Fall aus, dass die end_node das lang erwartete Paket ungesehen verwirft.)
-
hops Feld beinhaltet den Wert als signed integer die das Paket schon zurückgelegt hat im einstelligen Format
- Der ursprüngliche Absender trägt der Startwert = 0 ein.
- jeder empfangende Knoten addiert dem Wert beim Senden 1 hinzu.
- endNode beinhaltet die Adresse des Zielknotens der Route
- nextNode beinhaltet die Adresse des vorherigen Knotens von dem die RouteRequest Nachricht kam
Die Bezeichnungen für die Adressen sind nur Platzhalter für eine bessere Lesbarkeit. Kn1 entspricht also 0131.
Knoten6 hat ein Route Request von Knoten1 erhalten. Knoten6 soll nun Kontakt mit Knoten1 herstellen.
- Knoten6 schickt per Broadcast ein Route Reply
Knoten 6 weiß anhand seines Eintrags das Kn5 ein Nachbar ist also sieht die Nachricht die Kn6 als Broadcast sendet so aus:
LR,Kn1,{len},|Kn1|4|5|0|Kn6|Kn5|
source | flag | ttl | hops | endNode | nextNode |
---|---|---|---|---|---|
Kn6 | 4 | 5 | 0 | Kn1 | Kn5 |
Knoten 5 weiß jetzt das Knoten 6 ein Nachbar ist und trägt in seine Tabelle ein:
Zielknoten | Nachbar | Hops | |
---|---|---|---|
Kn1 | Kn2 | 2 | |
Kn6 | Kn6 | 1 | neu |
Knoten5 holt sich aus der Tabelle den Nachbarknoten (nextNode), passend zu dem Zielknoten (source)
- Knoten5 wartet eine zufällige Zeit zwischen 0 und 5 Sekunden und schickt dann per Broadcast ein weiteres Route Reply
LR,Kn1,{len},|Kn1|4|4|2|Kn6|Kn2|
source | flag | ttl | hops | endNode | nextNode |
---|---|---|---|---|---|
Kn6 | 4 | 4 | 2 | Kn1 | Kn2 |
Knoten2 erhält diese Nachricht und trägt die Verbindungsinformationen in die Routingtabelle ein:
Zielknoten | Nachbar | Hops | |
---|---|---|---|
Kn1 | Kn1 | 1 | |
Kn6 | Kn5 | 2 | neu |
- Knoten2 eine zufällige Zeit zwischen 0 und 5 Sekunden und schickt dann per Broadcast ein weiteres Route Reply
LR,Kn1,{len},|Kn1|4|3|3|Kn6|Kn1|
source | flag | ttl | hops | endNode | nextNode |
---|---|---|---|---|---|
Kn6 | 4 | 3 | 3 | Kn1 | Kn1 |
Nun erhält Knoten1 die Nachricht und trägt in die Routingtabelle ein:
Zielknoten | Nachbar | Hops |
---|---|---|
Kn6 | Kn2 | 3 |
Da endNode==1
weiß Knoten1, dass die Route Reply das Ziel erreicht hat und nicht mehr weitergeleitet werden muss.
Jetzt hat auch Knoten 1 die Bestätigung das Knoten 6 über Knoten 2 zum Preis von 3 Hops erreichbar ist (über Knoten 3 könnte der Knoten 6 ebenfalls mit 2 Hops erreicht werden.)
Für die alternative Route hätten wir einen zweiten Eintrag:
Zielknoten | Nachbar | Hops |
---|---|---|
Kn6 | Kn3 | 3 |