Zum Hauptinhalt springen

10. Beispiele

10.1. Nachrichtenbeispiele

   SCHRITT

6LN 6LR

| |

1. | ---------- Router Solicitation --------> |

| [SLLAO] |

| |

2. | <-------- Router Advertisement --------- |

| [PIO + 6CO + ABRO + SLLAO] |


Abbildung 2: Grundlegender Router Solicitation/Router Advertisement Austausch
zwischen einem Knoten und einem 6LR oder 6LBR


6LN 6LR

| |

1. | ------- NS mit Adressregistrierung ------> |

| [ARO + SLLAO] |

| |

2. | <----- NA mit Adressregistrierung -------- |

| [ARO mit Status] |


Abbildung 3: Neighbor Discovery Adressregistrierung
      6LN                           6LR                          6LBR

| | |

1. | --- NS mit Adressregistrierung -> | |

| [ARO + SLLAO] | |

| | |

2. | | ----------- DAR ----------> |

| | |

3. | | <---------- DAC ----------- |

| | |

4. | <-- NA mit Adressregistrierung -- | |

| [ARO mit Status] |


Abbildung 4: Neighbor Discovery Adressregistrierung mit Multihop DAD

10.2. Host-Bootstrapping-Beispiel

Das folgende Beispiel beschreibt die Adress-Bootstrapping-Szenarien unter Verwendung der in diesem Dokument spezifizierten verbesserten ND-Mechanismen. Es wird angenommen, dass der 6LN zuerst eine Folge von Operationen durchführt, um sicheren Zugang auf der Sicherungsschicht der LoWPAN zu erhalten und einen Schlüssel für die Sicherungsschichtsicherheit zu erhalten. Die Methoden zur Herstellung der Sicherungsschichtsicherheit liegen außerhalb des Anwendungsbereichs dieses Dokuments. In diesem Beispiel bildet ein IEEE 802.15.4 6LN eine 16-Bit kurze IPv6-Adresse, ohne DHCPv6 zu verwenden (d.h., das M-Flag ist in den RAs nicht gesetzt).

  1. Nach Erhalt der Sicherungsschichtsicherheit weist sich ein 6LN eine verbindungslokale IPv6-Adresse zu. Eine verbindungslokale IPv6-Adresse wird basierend auf der EUI-64-Sicherungsschichtadresse des 6LN konfiguriert, die gemäß [RFC4944] gebildet wird.

  2. Als nächstes bestimmt der 6LN einen oder mehrere Standardrouter im Netzwerk, indem er eine RS an die All-Routers-Multicast-Adresse sendet, wobei die SLLAO auf seine EUI-64-Verbindungslokaladresse gesetzt ist. Wenn der 6LN die Sicherungsschichtadresse eines Routers durch seine Sicherungsschichtoperationen erhalten konnte, kann der 6LN eine verbindungslokale Ziel-IPv6-Adresse für den Router bilden und ihm eine Unicast-RS senden.

    Der 6LR antwortet mit einer Unicast-RA an die IP-Quelladresse unter Verwendung der SLLAO aus der RS (er kann eine vorläufige NCE erstellt haben). Siehe Abbildung 2.

  3. Um mehr als einen IP-Hop entfernt zu kommunizieren, konfiguriert der 6LN eine globale IPv6-Adresse. Um Overhead zu sparen, möchte dieser 6LN seine IPv6-Adresse basierend auf einer 16-Bit-Kurzadresse gemäß [RFC4944] konfigurieren. Da das Netzwerk unverwaltet ist (M-Flag in der RA nicht gesetzt), wählt der 6LN zufällig eine 16-Bit-Sicherungsschichtadresse und bildet daraus eine vorläufige IPv6-Adresse.

  4. Als nächstes registriert der 6LN diese Adresse bei einem oder mehreren seiner Standardrouter, indem er eine Unicast-NS-Nachricht mit einer ARO sendet, die seine zu registrierende vorläufige globale IPv6-Adresse, die Registrierungslebensdauer und seine EUI-64 enthält. Eine SLLAO ist ebenfalls mit der Sicherungsschichtadresse enthalten, die der zu registrierenden Adresse entspricht. Wenn eine erfolgreiche (Status 0) NA-Nachricht empfangen wird, kann die Adresse verwendet werden, und der 6LN nimmt an, dass sie erfolgreich auf Duplikate überprüft wurde. Wenn eine NA-Nachricht mit doppelter Adresse (Status 1) empfangen wird, entfernt der 6LN die temporäre IPv6-Adresse und die 16-Bit-Sicherungsschichtadresse und kehrt zu Schritt 3 zurück. Wenn eine Neighbor Cache Full (Status 2) Nachricht empfangen wird, versucht der 6LN, sich bei einem anderen Standardrouter zu registrieren, oder, falls keiner vorhanden ist, kehrt zu Schritt 2 zurück. Siehe Abbildung 3. Beachten Sie, dass eine NA-Nachricht, die einen Fehler zurückgibt, an die verbindungslokale EUI-64-basierte IPv6-Adresse des 6LN anstelle der 16-Bit-(Duplikat-)Adresse zurückgesendet würde.

  5. Der 6LN führt nun eine Wartung durch, indem er eine neue NS-Adressregistrierung sendet, bevor die Lebensdauer abläuft.

Wenn Multihop DAD und Multihop-Präfix- und Kontextverteilung verwendet werden, ist der Effekt, dass 6LRs und Hosts dem obigen Bootstrapping-Prozess folgen, eine "Wellenfront" von 6LRs und Hosts, die konfiguriert werden und sich von den 6LBRs nach außen ausbreiten: Zuerst würden die Hosts und 6LRs, die einen 6LBR direkt erreichen können, eine oder mehrere RAs empfangen und dann ihre IPv6-Adressen konfigurieren und registrieren. Sobald dies geschehen ist, würden sie das Routing-Protokoll aktivieren und mit dem Aussenden von RAs beginnen. Das würde dazu führen, dass ein neuer Satz von 6LRs und Hosts Antworten auf ihre RSs empfängt, ihre Adressen bildet und registriert usw. Das wiederholt sich, bis alle 6LRs und Hosts konfiguriert wurden.

10.2.1. Host-Bootstrapping-Nachrichten

Dieser Abschnitt enthält spezifische Nachrichtenbeispiele im Zusammenhang mit dem oben beschriebenen Bootstrapping-Prozess. Bei der Erörterung von Nachrichten wird die folgende Notation verwendet:

  • LL64: Verbindungslokale Adresse basierend auf der EUI-64, die auch die lange 802.15.4-Adresse ist.
  • GP16: Globale Adresse basierend auf der kurzen 802.15.4-Adresse. Diese Adresse ist möglicherweise nicht eindeutig.
  • GP64: Globale Adressen, die von der EUI-64-Adresse abgeleitet sind, wie in [RFC4944] spezifiziert.
  • MAC64: EUI-64-Adresse, die als Sicherungsschichtadresse verwendet wird.
  • MAC16: IEEE 802.15.4 16-Bit-Kurzadresse.

Beachten Sie, dass einige Implementierungen Adressen im LL64- und GP16-Stil anstelle von LL64 und GP64 verwenden können. Im Folgenden zeigen wir einen beispielhaften Nachrichtenfluss, wie ein Knoten LL64 verwendet, um eine GP16-Adresse für die Multihop-DAD-Überprüfung zu registrieren.

    6LN-----RS-------->6LR
Src= LL64 (6LN)
Dst= all-router-link-scope-multicast
SLLAO= MAC64 (6LN)

6LR------RA--------->6LN
Src= LL64 (6LR)
Dst= LL64 (6LN)

Hinweis: Quelladresse der RA muss eine verbindungslokale
Adresse sein (Abschnitt 4.2 von RFC 4861).

6LN-------NS Reg------>6LR
Src= GP16 (6LN)
Dst= LL64 (6LR)
ARO
SLLAO= MAC16 (6LN)

6LR---------DAR----->6LBR
Src= GP64 oder GP16 (6LR)
Dst= GP64 oder GP16 (6LBR)
Registrierte Adresse= GP16 (6LN) und EUI-64 (6LN)

6LBR-------DAC--------->6LR
Src= GP64 oder GP16 (6LBR)
Dst= GP64 oder GP16 (6LR)
Kopie der Informationen aus DAR

Wenn Status ein Erfolg ist:

6LR ---------NA-Reg------->6LN
Src= LL64 (6LR)
Dst= GP16 (6LN)
ARO mit Status = 0

Wenn Status kein Erfolg ist:

6LR ---------NA-Reg-------->6LN
Src= LL64 (6LR)
Dst= LL64 (6LN) --> Abgeleitet von der EUI-64 des ARO
ARO mit Status > 0


Abbildung 5: Detaillierte Nachrichtenadressbeispiele

10.3. Router-Interaktionsbeispiel

In der Route-Over-Topologie, wenn ein Routing-Protokoll über 6LRs ausgeführt wird, werden das Bootstrapping und das Neighbor-Cache-Management etwas anders gehandhabt. Die Beschreibung in diesem Absatz bietet nur eine Richtlinie für eine Implementierung.

Bei der Initialisierung eines 6LR kann er wählen, als Host mit Hilfe eines übergeordneten 6LR zu bootstrappen, wenn das substituierbare Multihop-DAD mit dem 6LBR durchgeführt wird. Das Neighbor-Cache-Management eines Routers und die Adressauflösung zwischen den benachbarten Routern werden in den Abschnitten 6.5.3 bzw. 6.5.5 beschrieben. In diesem Beispiel gehen wir davon aus, dass die benachbarte 6LoWPAN-Verbindung sicher ist.

10.3.1. Bootstrapping eines Routers

In diesem Szenario ist der Bootstrapping-6LR, 'R1', mehrere Hops vom 6LBR entfernt und von anderen 6LR-Nachbarn umgeben. Anfangs verhält sich R1 wie ein Host. Er sendet eine Multicast-RS und empfängt eine RA von einem oder mehreren benachbarten 6LRs. R1 wählt einen 6LR als seinen temporären Standardrouter und führt die Adressauflösung über diesen Standardrouter durch. Beachten Sie, dass, wenn Multihop-DAD nicht erforderlich ist (z. B. in einem verwalteten Netzwerk oder bei Verwendung von EUI-64-basierten Adressen), er keinen temporären Standardrouter auswählen muss; er möchte jedoch möglicherweise trotzdem die anfängliche RS-Nachricht senden, wenn er seine Adresse mit dem vom 6LBR verbreiteten globalen Präfix automatisch konfigurieren möchte.

Basierend auf den in den RAs empfangenen Informationen aktualisiert R1 seinen Cache mit Einträgen für alle benachbarten 6LRs. Nach Abschluss der Adressregistrierung löscht der Bootstrapping-Router den temporären Eintrag des Standardrouters, und das Routing-Protokoll wird gestartet.

Beachten Sie auch, dass R1 seine Multihop-DAD-Registrierung direkt beim 6LBR aktualisieren kann (unter Verwendung des Next-Hop-Nachbar-6LR, der durch das Routing-Protokoll zum Erreichen des 6LBR bestimmt wurde).

10.3.2. Aktualisierung des Neighbor Cache

In diesem Beispiel gibt es drei 6LRs: R1, R2 und R3. Anfangs, wenn R2 bootet, sieht er nur R1, und dementsprechend erstellt R2 eine NCE für R1. Nehmen wir nun an, dass R2 ein gültiges Routing-Update von Router R3 empfängt. R2 hat keine NCE für R3. Wenn die Implementierung von R2 das Erkennen von Sicherungsschichtadressen aus den Routing-Informationspaketen unterstützt, aktualisiert er seinen Neighbor Cache direkt mit diesen Sicherungsschichtinformationen. Wenn dies nicht möglich ist, sollte R2 eine Multicast-NS mit der Quelle durchführen, die mit seiner verbindungslokalen oder globalen Adresse festgelegt ist, abhängig vom Umfang der im Routing-Update-Paket empfangenen Quell-IP-Adresse. Die Zieladresse der NS-Nachricht ist die Quell-IPv6-Adresse des empfangenen Routing-Update-Pakets. Das Format der NS-Nachricht ist wie in Abschnitt 4.3 von [RFC4861] beschrieben.

Allgemeiner ausgedrückt ist jeder 6LR, der ein gültiges Routen-Update von einem benachbarten Router empfängt, für den er keine NCE hat, verpflichtet, seinen Neighbor Cache wie oben beschrieben zu aktualisieren.

Die über ND gelernten Router-(6LR und 6LBR)-IP-Adressen werden nicht an das Routing-Protokoll weiterverteilt.