|
Vamos dar uma olhada em como o Thread identifica cada dispositivo na rede e que tipos de endereços eles usam para se comunicarem.
Scopes

Existem três escopos em uma rede Thread para endereçamento unicast:
- Link-Local - todas as interfaces acessíveis por uma única transmissão de rádio
- Mesh-Local - todas as interfaces alcançáveis na mesma rede Thread
- Global - todas as interfaces acessíveis de fora de uma rede Thread
Os primeiros dois escopos correspondem a prefixos designados por uma rede Thread. Link-Local tem prefixos fe80::/16
, enquanto Mesh-Local tem prefixos fd00::/8
.
Unicast
Existem vários endereços unicast IPv6 que identificam um único dispositivo Thread. Cada um tem uma função diferente com base no escopo e no caso de uso.
Antes de detalhar cada tipo, vamos aprender mais sobre um comum, chamado Routing Locator (RLOC). O RLOC identifica uma interface Thread, com base em sua localização na topologia da rede.
Como um localizador de roteamento é gerado
Todos os dispositivos são atribuídos a um ID de roteador e um ID de filho. Cada roteador mantém uma tabela de todos os seus filhos, cuja combinação identifica exclusivamente um dispositivo dentro da topologia. Por exemplo, considere os nós destacados na topologia a seguir, onde o número em um roteador (pentágono) é o ID do roteador e o número em um dispositivo final (círculo) é o ID filho:

A ID do roteador de cada criança corresponde ao seu pai (roteador). Como um roteador não é filho, o ID filho de um roteador é sempre 0. Juntos, esses valores são exclusivos para cada dispositivo na rede Thread e são usados para criar o RLOC16, que representa os últimos 16 bits do RLOC.
Por exemplo, veja como o RLOC16 é calculado para o nó superior esquerdo (ID do roteador = 1 e ID do filho = 1):

O RLOC16 faz parte do Identificador de Interface (IID), que corresponde aos últimos 64 bits do endereço IPv6. Alguns IIDs podem ser usados para identificar alguns tipos de interfaces de Thread. Por exemplo, o IID para RLOCs é sempre no formato 0000:00ff:fe00: RLOC16
.
O IID, combinado com um prefixo local de malha, resulta no RLOC. Por exemplo, usando um Prefixo Mesh-Local de fde5:8dba:82e1:1::/64
, o RLOC para um nó onde RLOC16 = 0x401
é:

Essa mesma lógica pode ser usada para determinar o RLOC para todos os nós destacados na topologia de amostra acima:

No entanto, como o RLOC é baseado na localização do nó na topologia, o RLOC de um nó pode mudar conforme a topologia muda.
Por exemplo, talvez o nó 0x400
seja removido da rede Thread. Os nós 0x401
e 0x402
estabelecem novos links para roteadores diferentes e, como resultado, cada um deles recebe um novo RLOC16 e RLOC:

Tipos de endereço Unicast
O RLOC é apenas um dos muitos endereços unicast IPv6 que um dispositivo Thread pode ter. Outra categoria de endereços são chamados de Endpoint Identifiers (EIDs), que identificam uma interface de Thread exclusiva em uma partição de rede de Thread. Os EIDs são independentes da topologia de rede Thread.
Os tipos comuns de unicast são detalhados abaixo.
Endereço local de link (LLA) | |
---|---|
Um EID que identifica uma interface Thread acessível por uma única transmissão de rádio. | |
Exemplo | fe80::54db:881c:3845:57f4 |
IID | Baseado em 802.15.4 Extended Address |
Escopo | Link-Local |
Detalhes |
|
EID local de malha (ML-EID) | |
---|---|
Um EID que identifica uma interface Thread, independente da topologia da rede. Usado para acessar uma interface de Thread na mesma partição de Thread. Também chamado de endereço local exclusivo (ULA). | |
Exemplo | fde5:8dba:82e1:1:416:993c:8399:35ab |
IID | Aleatório, escolhido após a conclusão do comissionamento |
Escopo | Mesh-Local |
Detalhes |
|
Localizador de roteamento (RLOC) | |
---|---|
Identifica uma interface de Thread, com base em sua localização na topologia da rede. | |
Exemplo | fde5:8dba:82e1:1::ff:fe00:1001 |
IID | 0000:00ff:fe00: RLOC16 |
Escopo | Mesh-Local |
Detalhes |
|
Anycast Locator (ALOC) | |
---|---|
Identifica uma interface Thread por meio de pesquisa RLOC, quando o RLOC de um destino não é conhecido. | |
Exemplo | fde5:8dba:82e1:1::ff:fe00:fc01 |
IID | 0000:00ff:fe00:fc XX |
Escopo | Mesh-Local |
Detalhes |
|
Endereço Unicast Global (GUA) | |
---|---|
Um EID que identifica uma interface Thread em um escopo global, além de uma rede Thread. | |
Exemplo | 2000::54db:881c:3845:57f4 |
IID |
|
Escopo | Global |
Detalhes |
|
Multicast
Multicast é usado para comunicar informações a vários dispositivos ao mesmo tempo. Em uma rede Thread, endereços específicos são reservados para uso multicast com diferentes grupos de dispositivos, dependendo do escopo.
Endereço IPv6 | Escopo | Entregue a |
---|---|---|
ff02::1 | Link-Local | Todos os FTDs e MEDs |
ff02::2 | Link-Local | Todos os FTDs |
ff03::1 | Mesh-Local | Todos os FTDs e MEDs |
ff03::2 | Mesh-Local | Todos os FTDs |
Você pode notar que os Sleepy End Devices (SEDs) não estão incluídos como destinatários na tabela multicast acima. Em vez disso, Thread define o endereço multicast IPv6 baseado em prefixo de unicast de escopo local de link e local de domínio usado para Todos os Nós de Thread, incluindo SEDs. Esses endereços multicast variam de acordo com a rede Thread, porque são construídos no prefixo unicast Mesh-Local (consulte RFC 3306 para obter mais detalhes sobre endereços multicast IPv6 baseados em prefixo unicast).
Escopos arbitrários além daqueles já listados também são suportados para dispositivos Thread.
Anycast
Anycast é usado para rotear o tráfego para uma interface Thread quando o RLOC de um destino não é conhecido. Um Anycast Locator (ALOC) identifica a localização de várias interfaces em uma partição Thread. Os últimos 16 bits de um ALOC, denominado ALOC16, estão no formato 0xfc XX
, que representa o tipo de ALOC.
Por exemplo, um ALOC16 entre 0xfc01
e 0xfc0f
é reservado para Agentes DHCPv6. Se o RLOC do Agente DHCPv6 específico for desconhecido (talvez porque a topologia da rede tenha mudado), uma mensagem pode ser enviada a um Agente DHCPv6 ALOC para obter o RLOC.
Thread define os seguintes valores ALOC16:
ALOC16 | Tipo |
---|---|
0xfc00 | Líder |
0xfc01 - 0xfc0f | Agente DHCPv6 |
0xfc10 - 0xfc2f | Serviço |
0xfc30 - 0xfc37 | Comissário |
0xfc40 - 0xfc4e | Agente de descoberta vizinho |
0xfc38 - 0xfc3f 0xfc4f - 0xfcff | Reservado |
Recapitular
O que você aprendeu:
- Uma rede Thread consiste em três escopos: Link-Local, Mesh-Local e Global
- Um dispositivo Thread tem vários endereços IPv6 unicast
- Um RLOC representa a localização de um dispositivo na rede Thread
- Um ML-EID é exclusivo para um dispositivo Thread dentro de uma partição e deve ser usado por aplicativos
- Thread usa multicast para encaminhar dados para grupos de nós e roteadores
- Thread usa anycast quando o RLOC de um destino é desconhecido
Para saber mais sobre o endereçamento IPv6 do Thread, consulte as seções 5.2 e 5.3 da Thread Specification .