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
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:
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):
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:
Tej samej logiki można użyć do określenia RLOC wszystkich wyróżnionych węzłów w przykładowej topologii powyżej:
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 0x401 i 0x402 nawiązują nowe połączenia z różnymi wzmacniaczami sieci mesh, w wyniku czego każdy z nich otrzymuje nowy adres RLOC16 i RLOC:
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.
Adres lokalny (LLA) |
|
|---|---|
| Identyfikator EID, który identyfikuje interfejs Thread osiągalny za pomocą pojedynczej transmisji radiowej. | |
| Przykład | fe80::54db:881c:3845:57f4 |
| IID | Na podstawie rozszerzonego adresu 802.15.4 |
| Zakres | Połączenie lokalne |
| Szczegóły |
|
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ład | fde5:8dba:82e1:1:416:993c:8399:35ab |
| IID | Losowy, wybrany po zakończeniu uruchamiania |
| Zakres | Mesh-Local |
| Szczegóły |
|
Lokalizator routingu (RLOC) |
|
|---|---|
| Określa interfejs Thread na podstawie jego lokalizacji w topologii sieci. | |
| Przykład | fde5:8dba:82e1:1::ff:fe00:1001 |
| IID | 0000:00ff:fe00:RLOC16 |
| Zakres | Mesh-Local |
| Szczegóły |
|
Lokalizator Anycast (ALOC) |
|
|---|---|
| Identyfikuje interfejs Thread za pomocą wyszukiwania RLOC, gdy RLOC miejsca docelowego jest nieznany. | |
| Przykład | fde5:8dba:82e1:1::ff:fe00:fc01 |
| IID | 0000:00ff:fe00:fcXX |
| Zakres | Mesh-Local |
| Szczegóły |
|
Adres globalny typu unicast (GUA) |
|
|---|---|
| Identyfikator EID, który identyfikuje interfejs Thread w skali globalnej, poza siecią Thread. | |
| Przykład | 2000::54db:881c:3845:57f4 |
| IID |
|
| Zakres | Globalny |
| Szczegóły |
|
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 0xfc01 a 0xfc0f 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 |
0xfc01 – 0xfc0f |
Agent DHCPv6 |
0xfc10 – 0xfc2f |
Usługa |
0xfc30 – 0xfc37 |
Komisarz |
0xfc40 – 0xfc4e |
Agent wykrywania sąsiadów |
0xfc38 – 0xfc3f0xfc4f – 0xfcff |
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ę
ff03::2. Co to mówi nam o urządzeniu?ff03::2. Dzieje się to w zakresie Mesh-Local.