Adresowanie IPv6

Wyświetl źródło na GitHubie

Przyjrzyjmy się, jak Thread identyfikuje każde urządzenie w sieci i jakich typów adresów używa do komunikacji.

jeden interfejs Thread.

Zakresy

Zakresy OT

W sieci Thread są 3 zakresy adresowania typu unicast:

  • Link-Local – wszystkie interfejsy osiągalne za pomocą jednej transmisji radiowej
  • Mesh-Local – wszystkie interfejsy dostępne w tej samej sieci Thread
  • Globalny – wszystkie interfejsy dostępne spoza sieci Thread

Pierwsze 2 zakresy odpowiadają prefiksom wyznaczonym przez sieć Thread. Adresy Link-Local mają prefiks fe80::/16, a Mesh-Local – fd00::/8.

Unicast

Istnieje wiele adresów IPv6 typu unicast, które identyfikują pojedyncze urządzenie Thread. Każda z nich ma inną funkcję w zależności od zakresu i przypadku użycia.

Zanim przejdziemy do szczegółów poszczególnych typów, dowiedzmy się więcej o jednym z nich, zwanym lokalizatorem routingu (RLOC). RLOC identyfikuje interfejs Thread na podstawie jego lokalizacji w topologii sieci.

Jak generowany jest lokalizator routingu

Wszystkim urządzeniom przypisywane są identyfikatory Router ID i Child ID. Każdy węzeł nadrzędny przechowuje tabelę wszystkich węzłów podrzędnych, których kombinacja jednoznacznie identyfikuje urządzenie w topologii. Na przykład spójrz na wyróżnione węzły w tej topologii, gdzie numer w wzmacniaczu sieci mesh (pięciokąt) to identyfikator routera, a numer w urządzeniu końcowym (okrąg) to identyfikator urządzenia podrzędnego:

Topologia OT RLOC

Każdy identyfikator routera dziecka odpowiada jego rodzicowi (wzmacniaczowi sieci Mesh). Ponieważ wzmacniacz Mesh nie jest urządzeniem podrzędnym, jego identyfikator urządzenia podrzędnego jest zawsze równy 0. Te wartości są unikalne dla każdego urządzenia w sieci Thread i służą do tworzenia RLOC16, który reprezentuje ostatnie 16 bitów RLOC.

Na przykład tak oblicza się RLOC16 dla węzła w lewym górnym rogu (Router ID = 1 i Child ID = 1):

OT RLOC16

RLOC16 jest częścią identyfikatora interfejsu (IID), który odpowiada ostatnim 64 bitom adresu IPv6. Niektóre identyfikatory interfejsu mogą służyć do identyfikowania niektórych typów interfejsów Thread. Na przykład identyfikator IID dla RLOC ma zawsze taką postać:

0000:00ff:fe00:RLOC16

Identyfikator IID w połączeniu z lokalnym prefiksem sieci mesh tworzy RLOC. Na przykład przy użyciu prefiksu sieci lokalnej fde5:8dba:82e1:1::/64 adres RLOC węzła, w którym RLOC16 = 0x401, to:

OT RLOC

Tej samej logiki można użyć do określenia RLOC wszystkich wyróżnionych węzłów w przykładowej topologii powyżej:

Topologia OT z adresem

RLOC jest jednak oparty na lokalizacji węzła w topologii, dlatego może się zmieniać wraz ze zmianami topologii.

Na przykład węzeł 0x400 może zostać usunięty z sieci Thread. Węzły 0x4010x402 nawiązują nowe połączenia z różnymi wzmacniaczami sieci mesh, w wyniku czego każdy z nich otrzymuje nowy adres RLOC16 i RLOC:

Topologia OT po zmianie

Typy adresów unicast

RLOC to tylko jeden z wielu adresów IPv6 typu unicast, które może mieć urządzenie Thread. Inną kategorią adresów są identyfikatory punktów końcowych (EID), które identyfikują unikalny interfejs Thread w ramach partycji sieci Thread. Identyfikatory EID są niezależne od topologii sieci Thread.

Poniżej znajdziesz szczegółowe informacje o najpopularniejszych typach transmisji typu unicast.

Identyfikator EID, który identyfikuje interfejs Thread osiągalny za pomocą pojedynczej transmisji radiowej.
Przykładfe80::54db:881c:3845:57f4
IIDNa podstawie rozszerzonego adresu 802.15.4
ZakresPołączenie lokalne
Szczegóły
  • Służy do wykrywania sąsiadów, konfigurowania połączeń i wymiany informacji o routingu.
  • Adres nie jest rutowalny
  • Zawsze ma prefiks fe80::/16.

Lokalny identyfikator EID sieci mesh (ML-EID)

Identyfikator EID, który identyfikuje interfejs Thread niezależnie od topologii sieci. Służy do uzyskiwania dostępu do interfejsu Thread w ramach tej samej partycji Thread. Inna nazwa to unikalny adres lokalny (ULA).
Przykładfde5:8dba:82e1:1:416:993c:8399:35ab
IIDLosowy, wybrany po zakończeniu uruchamiania
ZakresMesh-Local
Szczegóły
  • Nie zmienia się wraz ze zmianami topologii
  • Powinny być używane przez aplikacje
  • Zawsze ma prefiks fd00::/8

Lokalizator routingu (RLOC)

Określa interfejs Thread na podstawie jego lokalizacji w topologii sieci.
Przykładfde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
ZakresMesh-Local
Szczegóły
  • Generowany po podłączeniu urządzenia do sieci
  • Do dostarczania datagramów IPv6 w sieci Thread
  • Zmiany w miarę zmian topologii
  • Zwykle nie są używane przez aplikacje

Lokalizator Anycast (ALOC)

Identyfikuje interfejs Thread za pomocą wyszukiwania RLOC, gdy RLOC miejsca docelowego jest nieznany.
Przykładfde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
ZakresMesh-Local
Szczegóły

Adres globalny typu unicast (GUA)

Identyfikator EID, który identyfikuje interfejs Thread w skali globalnej, poza siecią Thread.
Przykład2000::54db:881c:3845:57f4
IID
  • SLAAC – losowo przypisany przez samo urządzenie.
  • DHCP – przypisany przez serwer DHCPv6
  • Ręczne – przypisane przez warstwę aplikacji
ZakresGlobalny
Szczegóły
  • publiczny adres IPv6,
  • Zawsze ma prefiks 2000::/3.

Multicast

Multicast służy do przekazywania informacji na wiele urządzeń jednocześnie. W sieci Thread określone adresy są zarezerwowane do transmisji grupowej z różnymi grupami urządzeń w zależności od zakresu.

Adres IPv6 Zakres Dostarczono do:
ff02::1 Połączenie lokalne Wszystkie FTD i MED
ff02::2 Połączenie lokalne Wszystkie FTD
ff03::1 Mesh-Local Wszystkie FTD i MED
ff03::2 Mesh-Local Wszystkie FTD

Możesz zauważyć, że w powyższej tabeli multiemisji nie ma urządzeń końcowych w trybie uśpienia (SED). Zamiast tego protokół Thread definiuje adres IPv6 typu multicast oparty na prefiksie o zakresie lokalnym i zakresie sieci, który jest używany w przypadku wszystkich węzłów Thread, w tym urządzeń SED. Te adresy multiemisji różnią się w zależności od sieci Thread, ponieważ jest ona oparta na prefiksie lokalnym sieci kratowej unicast (więcej informacji o adresach multiemisji IPv6 opartych na prefiksie unicast znajdziesz w RFC 3306).

W przypadku urządzeń Thread obsługiwane są też dowolne zakresy wykraczające poza te, które są już wymienione.

Anycast

Anycast służy do kierowania ruchu do interfejsu Thread, gdy RLOC miejsca docelowego jest nieznany. Lokalizator Anycast (ALOC) identyfikuje lokalizację wielu interfejsów w ramach partycji Thread. Ostatnie 16 bitów ALOC, zwane ALOC16, ma format 0xfcXX, który reprezentuje typ ALOC.

Na przykład ALOC16 między 0xfc010xfc0f jest zarezerwowany dla agentów DHCPv6. Jeśli konkretny adres RLOC agenta DHCPv6 jest nieznany (np. z powodu zmiany topologii sieci), można wysłać wiadomość do adresu ALOC agenta DHCPv6, aby uzyskać adres RLOC.

Wątek definiuje te wartości ALOC16:

ALOC16 Typ
0xfc00 Lider
0xfc010xfc0f Agent DHCPv6
0xfc100xfc2f Usługa
0xfc300xfc37 Komisarz
0xfc400xfc4e Agent wykrywania sąsiadów
0xfc380xfc3f
0xfc4f0xfcff
Zarezerwowane

Podsumowanie

Czego się dowiesz:

  • Sieć Thread ma 3 zakresy: Link-Local, Mesh-Local i Global.
  • Urządzenie Thread ma wiele adresów IPv6 typu unicast.
    • RLOC reprezentuje lokalizację urządzenia w sieci Thread.
    • ML-EID jest unikalny dla urządzenia Thread w ramach partycji i powinien być używany przez aplikacje.
  • Thread używa multiemisji do przesyłania danych do grup węzłów
  • Wątek używa metody anycast, gdy RLOC miejsca docelowego jest nieznany

Więcej informacji o adresowaniu IPv6 w Thread znajdziesz w sekcjach 5.2 i 5.3 specyfikacji Thread.

Sprawdź swoją wiedzę

Które 3 zakresy są używane do adresowania typu unicast w sieci Thread?
Prywatny
Źle.
Interfejs lokalny
Źle.
Połączenie lokalne
To jest poprawna odpowiedź
Site-Local
Źle.
Mesh-Local
To jest poprawna odpowiedź
Globalny
To jest poprawna odpowiedź
Co to znaczy, że urządzenie ma identyfikator dziecka 0?
Urządzenie należy do dziecka.
Źle.
Urządzenie jest urządzeniem z możliwością rozszerzenia.
Prawie dobrze, ale nieprawidłowo.
Urządzenie to wzmacniacz sieci Mesh.
To jest poprawna odpowiedź Wzmacniacz Mesh ma zawsze identyfikator urządzenia podrzędnego 0.
Kamera, która jest węzłem w sieci Thread, otrzymuje nowy adres RLOC16 i RLOC. Które z tych wydarzeń mogło być przyczyną tego stanu rzeczy?
Ktoś zdalnie pobrał obrazy z kamery.
Źle. To zdarzenie nie będzie miało wpływu na sieć Thread.
Wzmacniacz Mesh został odłączony od sieci.
To jest poprawna odpowiedź Gdy wzmacniacz sieci Mesh odłączy się od sieci, zmieni się topologia sieci, co może spowodować, że urządzenie zostanie awansowane na wzmacniacz sieci Mesh i otrzyma nowy RLOC.
Kamera przeszła w tryb uśpienia, co spowodowało zmianę topologii sieci.
Źle. Przejście w tryb uśpienia nie musi powodować otrzymania przez urządzenie nowego adresu sieciowego.
Urządzenie w sieci Thread subskrybuje adres multicast ff03::2. Co to mówi nam o urządzeniu?
Jest to urządzenie końcowe o minimalnej funkcjonalności (MED).
Źle.
Jest to urządzenie końcowe (Full End Device, FED).
Źle. (Wskazówka: może to być FED, ale nie musi).
Jest to urządzenie Minimal Thread Device (MTD).
Źle.
Jest to urządzenie z pełną obsługą protokołu Thread (FTD).
To jest poprawna odpowiedź Tylko urządzenia Full Thread subskrybują adres multicast ff03::2. Dzieje się to w zakresie Mesh-Local.
Jakiego typu adresowania i routingu używa Thread do przekazywania danych do grup węzłów?
unicast
Źle.
anycast
Źle.
multicast
To jest poprawna odpowiedź
komunikat
Źle.
Jakiego typu adresowania i routingu używa urządzenie Thread, gdy nie zna adresu RLOC odbiorcy wiadomości?
unicast
Źle.
anycast
To jest poprawna odpowiedź Anycast umożliwia urządzeniu dotarcie do węzła, którego RLOC nie jest znany, poprzez adresowanie ALOC urządzenia.
multicast
Źle.
komunikat
Źle.