Adresowanie IPv6

Wyświetl źródło na GitHubie

Przyjrzyjmy się, jak Thread identyfikuje urządzenia w sieci i co typów adresów używanych do komunikowania się ze sobą.

Zakresy

Lunety OT

W sieci Thread na potrzeby adresowania zbiorczego dostępne są 3 zakresy:

  • Link-Local – wszystkie interfejsy dostępne za pośrednictwem pojedynczej transmisji radiowej
  • Mesh-Local – wszystkie interfejsy dostępne w tej samej sieci Thread
  • Globalnie – wszystkie interfejsy dostępne spoza sieci Thread

Pierwsze 2 zakresy odpowiadają prefiksom wyznaczonym przez sieć Thread. Połączenie lokalne ma prefiksy z prefiksami fe80::/16, a sieć typu mesh – lokalnie – prefiksy fd00::/8

Unicast

Istnieje wiele adresów e-mail IPv6, które identyfikują jedno urządzenie Thread. Każda z nich pełni inną funkcję w zależności od zakresu i przypadku użycia.

Zanim szczegółowo omówimy każdy z nich, poznajmy najczęściej spotykane RLOC (Routing Locator). RLOC identyfikuje interfejs Thread na podstawie lub lokalizację w topologii sieci.

Sposób generowania lokalizatora routingu

Wszystkie urządzenia mają przypisane identyfikatory routera i identyfikatory podrzędne. Każdy router ma tabeli ze wszystkimi elementami podrzędnymi, których kombinacja jednoznacznie identyfikuje w ramach topologii. Weźmy na przykład podświetlone węzły w zgodnie z topologią, gdzie numer w routerze (pentagon) to identyfikator routera, a numer w urządzeniu końcowym (kółko) to identyfikator dziecka:

Topologia RLOC

Identyfikator routera każdego elementu podrzędnego odpowiada jego urządzeniu nadrzędnym (routerze). Ponieważ router jest nie element podrzędny, identyfikator podrzędny routera ma zawsze wartość 0. Razem te wartości są są unikalne dla każdego urządzenia w sieci Thread i służą do utworzenia kodu RLOC16, który reprezentuje ostatnie 16 bitów algorytmu RLOC.

Tak na przykład oblicza się wartość RLOC16 dla lewego górnego rogu węzła (Router) Identyfikator = 1 i identyfikator podrzędny = 1):

OT RLOC16

RLOC16 jest częścią identyfikatora interfejsu (IID), który odpowiada ostatnich 64 bitów adresu IPv6. Niektóre identyfikatory IID mogą być wykorzystywane do identyfikacji pewnych typów interfejsów Thread. Na przykład identyfikator IID dla RLOC ma zawsze taką postać:

0000:00ff:fe00:RLOC16

IID w połączeniu z prefiksem sieciowym sieci typu mesh daje wynik RLOC. Przykład: używając prefiksu lokalnego sieci typu mesh fde5:8dba:82e1:1::/64, RLOC dla węzła, w którym RLOC16 = 0x401 to:

RLOC dogr.

Ta sama logika może służyć do określania wartości RLOC dla wszystkich podświetlonych węzłów w topologii przykładowej powyżej:

Topologia OT z adresem

Ponieważ jednak RLOC opiera się na lokalizacji węzła w topologii, wartość RLOC węzła może się zmieniać wraz ze zmianą topologii.

Być może na przykład węzeł 0x400 został usunięty z sieci Thread. Węzły 0x401 i 0x402 tworzą nowe połączenia z różnymi routerami, każdemu z nich przypisywany jest nowy parametr RLOC16 i RLOC:

Topologia OT po zmianie

Typy adresów Unicast

RLOC to tylko jeden z wielu adresów IPv6, które może mieć urządzenie Thread. Inną kategorią adresów są identyfikatory punktów końcowych (EID, Endpoint Identifier), które do identyfikowania unikalnego interfejsu Thread w partycji sieciowej Thread. Identyfikatory EID są niezależnie od topologii sieci Thread.

Poniżej znajdziesz informacje o popularnych typach unicast.

Identyfikator EID identyfikujący interfejs Thread, do którego można uzyskać dostęp za pomocą pojedynczej transmisji radiowej.
Przykładfe80::54db:881c:3845:57f4
IIDNa podstawie rozszerzonego adresu 802.15.4
ZakresLink lokalny
Szczegóły
  • Służy do wykrywania sąsiadów, konfigurowania połączeń i wymiany informacji o routingu
  • Adres nie można kierować
  • Zawsze ma prefiks fe80::/16

Lokalny EID sieci typu mesh (ML-EID)

Identyfikator EID identyfikujący interfejs Thread niezależny od topologii sieci. Służy do uzyskiwania dostępu do interfejsu Thread w tej samej partycji Thread. Nazywany także unikalnym adresem lokalnym (ULA).
Przykładfde5:8dba:82e1:1:416:993c:8399:35ab
IIDLosowo, wybrano po zakończeniu realizacji zamówienia
ZakresSieć typu mesh – lokalna
Szczegóły
  • Nie zmienia się wraz ze zmianą topologii
  • Powinny być używane przez aplikacje
  • Zawsze ma prefiks fd00::/8

Lokalizator routingu (RLOC)

Identyfikuje interfejs Thread na podstawie jego lokalizacji w topologii sieci.
Przykładfde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
ZakresSieć typu mesh – lokalna
Szczegóły
  • Wygenerowane po podłączeniu urządzenia do sieci
  • Do przesyłania datagramów IPv6 w sieci Thread
  • Zmiany wraz ze zmianą topologii
  • Zwykle nie są używane przez aplikacje

Lokalizator anycast (ALOC)

Identyfikuje interfejs Thread za pomocą wyszukiwania RLOC, gdy wartość RLOC miejsca docelowego nie jest znana.
Przykładfde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
ZakresSieć typu mesh – lokalna
Szczegóły
  • fcXX = miejsce docelowe ALOC, które wyszukuje odpowiednią wartość RLOC
  • Zwykle nie są używane przez aplikacje

Globalny adres Unicast (GUA)

Identyfikator EID, który identyfikuje interfejs Thread w zakresie globalnym, poza siecią Thread.
Przykład2000::54db:881c:3845:57f4
IID
  • SLAAC – jest przypisywany losowo przez samo urządzenie
  • DHCP – przypisane przez serwer DHCPv6
  • Ręcznie – przypisane przez warstwę aplikacji
ZakresCały świat
Szczegóły
  • Publiczny adres IPv6
  • Zawsze ma prefiks 2000::/3

Transmisja grupowa

Multicast służy do przekazywania informacji między wieloma urządzeniami jednocześnie. W Sieć Thread, określone adresy są zarezerwowane do użycia w trybie multicast z innymi grup urządzeń w zależności od zakresu.

Adres IPv6 Zakres Dostarczono do:
ff02::1 Link lokalny Wszystkie FTD i MED
ff02::2 Link lokalny Wszystkie punkty wyjścia
ff03::1 Sieć typu mesh – lokalna Wszystkie FTD i MED
ff03::2 Sieć typu mesh – lokalna Wszystkie punkty wyjścia

Możesz zauważyć, że śpiące urządzenia nie są uwzględnione w odbiorcy w powyższej tabeli multicast. Zamiast tego Thread określa, transmisja wieloetapowa IPv6 z prefiksem oparty na prefiksie połączenia lokalnego i zakresu lokalnego adres używany na potrzeby wszystkich węzłów Thread, w tym SED. Ta transmisja grupowa Adresy różnią się w zależności od sieci Thread, ponieważ jest ona oparta na transmisjach pojedynczych Prefiks sieci typu mesh-lokalny (patrz RFC 3306) .

W przypadku Thread są też obsługiwane dowolne zakresy wykraczające poza te już wymienione urządzenia.

Anycast

Protokół anycast jest używany do kierowania ruchu do interfejsu Thread, gdy wartość RLOC miejsce docelowe jest nieznana. Lokalizator anycast (ALOC) określa lokalizację wielu interfejsów w partycji Thread. Ostatnie 16 bitów ALOC, o nazwie ALOC16, ma format 0xfcXX, który reprezentuje typ ALOC.

Na przykład zakres ALOC16 między 0xfc01 a 0xfc0f jest zarezerwowany dla DHCPv6 Agenci. Jeśli konkretny RLOC agenta DHCPv6 jest nieznany (na przykład dlatego, że topologia sieci uległa zmianie), do agenta DHCPv6 ALOC można wysłać wiadomość do aby uzyskać RLOC.

Thread definiuje następujące wartości ALOC16:

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

Podsumowanie

Uzyskane informacje:

  • Sieć Thread składa się z 3 zakresów: Link-Local, Mesh-Local i Global
  • Urządzenie Thread ma wiele adresów IPv6 typu „unicast”
    • Wartość RLOC reprezentuje lokalizację urządzenia w sieci Thread
    • Identyfikator ML-EID jest unikalny dla urządzenia Thread w obrębie partycji i powinien być używany przez aplikacje.
  • Thread używa multiemisji do przekazywania danych do grup węzłów i routerów
  • Wątek używa anycast, gdy wartość RLOC miejsca docelowego jest nieznana

Aby dowiedzieć się więcej o adresowaniu IPv6 w Thread, zapoznaj się z sekcjami 5.2 i 5.3 dokumentu Thread Specification (Specyfikacja wątku).

Sprawdź swoją wiedzę

Które 3 zakresy są używane do adresowania zbiorczego w sieci Thread?
Prywatny
Źle.
Interfejs lokalny
Źle.
Link lokalny
Dobra odpowiedź.
Witryna lokalna
Źle.
Sieć typu mesh – lokalna
Dobra odpowiedź.
Cały świat
Dobra odpowiedź.
Co oznacza, jeśli identyfikator dziecka na urządzeniu to 0?
Urządzenie jest kontem dziecięcym.
Źle.
Urządzenie to REED.
Blisko, ale niepoprawnie.
Urządzenie to router.
Dobra odpowiedź. Router ma zawsze identyfikator podrzędny równy 0.
Kamera, która jest węzłem w sieci Thread, odbiera nowy sygnał RLOC16 i RLOC. Które z tych zdarzeń mogło to spowodować?
Ktoś zdalnie pobrał obrazy z kamery.
Źle. To wydarzenie nie będzie miało wpływu na wątek
Router rozłączył się z siecią.
Dobra odpowiedź. Gdy router odłączy się od sieci, zmian topologii, które mogą spowodować, że urządzenie zmieni się i uzyskanie nowego parametru RLOC.
Kamera przeszła w tryb uśpienia, co spowodowało zmianę topologii sieci.
Źle. Włączenie trybu uśpienia nie musi spowodować, że urządzenie aby otrzymać nowy adres sieciowy.
Urządzenie w sieci Thread subskrybuje sekcję ff03::2 adres grupowania. Co nam to mówi o urządzeniu?
Jest to minimalne urządzenie końcowe (MED).
Źle.
To kompleksowe urządzenie końcowe (FED).
Źle. Wskazówka: może, ale nie musi to być FED.
Jest to urządzenie z minimalną wątkami.
Źle.
Jest to urządzenie wielowątkowe (FTD).
Dobra odpowiedź. Tylko urządzenia pełnowątkowe subskrybują Adres transmisji grupowej ff03::2. Robią to w sieci lokalnej typu mesh zakresu.
Jakiego typu adresowania i routingu używa Thread, aby przekazywać dane do grupy węzłów i routerów?
unicast
Źle.
Anycast
Źle.
transmisja grupowa
Dobra odpowiedź.
komunikat
Źle.
Jakiego typu adresowania i routingu używa urządzenie Thread, gdy Wartość RLOC adresata wiadomości jest nieznana?
unicast
Źle.
Anycast
Dobra odpowiedź. Anycast umożliwia urządzeniu dotarcie do węzła, którego wartość RLOC nie jest ustawiona przez zwrócenie uwagi na wartość ALOC urządzenia.
transmisja grupowa
Źle.
komunikat
Źle.