Vamos ver como a linha de execução identifica cada dispositivo na rede e quais tipos de endereços eles usam para se comunicar entre si.
Escopos

Há 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 acessíveis na mesma rede Thread
- Global: todas as interfaces acessíveis de fora de uma rede Thread
Os dois primeiros escopos correspondem aos prefixos designados por uma rede Thread.
Link-Local tem prefixos de fe80::/16
, enquanto Mesh-Local tem prefixos de
fd00::/8
.
Unicast
Há 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 saber mais sobre um comum, chamado Localizador de roteamento (RLOC). O RLOC identifica uma interface de linha de execução com base na localização dela na topologia de rede.
Como um localizador de roteamento é gerado
Todos os dispositivos recebem um ID do roteador e um ID filho. Cada roteador mantém uma tabela com todos os filhos, a combinação que identifica um dispositivo dentro da topologia. Por exemplo, considere os nós destacados na topologia a seguir, em que o número em um roteador (pentagon) é o ID do roteador e o número em um dispositivo final (círculo) é o ID filho:

O ID do roteador de cada filho corresponde ao pai (Roteador). Como um roteador não é filho, o ID filho de um roteador é sempre zero. 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 filho = 1):

O RLOC16 faz parte do identificador de interface (IID), que corresponde aos últimos 64 bits do endereço IPv6. Algumas IIDs podem ser usadas para identificar alguns tipos de interfaces Thread. Por exemplo, o IID dos RLOCs está sempre neste formato:
0000:00ff:fe00:RLOC16
O IID, combinado com um prefixo de malha local, resulta em um RLOC. Por exemplo,
usando um prefixo local de malha de fde5:8dba:82e1:1::/64
, o RLOC para um nó em que
RLOC16 = 0x401
é:

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

No entanto, como o RLOC é baseado no local do nó na topologia, o RLOC de um nó pode mudar conforme a topologia muda.
Por exemplo, talvez o nó 0x400
tenha sido removido da rede Thread. Os nós
0x401
e 0x402
estabelecem novos links para diferentes roteadores e, como resultado,
recebem novos RLOC16 e RLOC:

Tipos de endereço Unicast
O RLOC é apenas um dos vários endereços unicast IPv6 que um dispositivo Thread pode ter. Outra categoria de endereços é chamada de identificadores de endpoint (EIDs, na sigla em inglês), que identificam uma interface Thread única dentro de uma partição de rede Thread. Os EIDs são independentes da topologia de rede de linhas de execução.
Os tipos unicast comuns são detalhados abaixo.
Endereço local do link (LLA, na sigla em inglês) |
|
---|---|
Um EID que identifica uma interface Thread acessível por uma única transmissão de rádio. | |
Exemplo | fe80::54db:881c:3845:57f4 |
IDE | Com base no endereço estendido 802.15.4 |
Scope | Link local |
Detalhes |
|
EID da malha local (ML-EID) |
|
---|---|
Um EID que identifica uma interface Thread, independente da topologia de rede. Usado para acessar uma interface Thread dentro da mesma partição Thread. Também chamado de endereço local exclusivo (ULA, na sigla em inglês). | |
Exemplo | fde5:8dba:82e1:1:416:993c:8399:35ab |
IDE | Aleatório, escolhido após a conclusão da ativação |
Scope | Malha local |
Detalhes |
|
Localizador de roteamento (RLOC) |
|
---|---|
Identifica uma interface Thread com base na localização dela na topologia de rede. | |
Exemplo | fde5:8dba:82e1:1::ff:fe00:1001 |
IDE | 0000:00ff:fe00:RLOC16 |
Scope | Malha local |
Detalhes |
|
Anycast Locator (ALOC) |
|
---|---|
Identifica uma interface Thread via pesquisa RLOC, quando o RLOC de um destino não é conhecido. | |
Exemplo | fde5:8dba:82e1:1::ff:fe00:fc01 |
IDE | 0000:00ff:fe00:fcXX |
Scope | Malha 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 |
IDE |
|
Scope | Global |
Detalhes |
|
Multicast
O multicast é usado para comunicar informações a vários dispositivos ao mesmo tempo. Em uma rede Thread, os endereços específicos são reservados para uso multicast com diferentes grupos de dispositivos, dependendo do escopo.
Endereço IPv6 | Escopo | Entregue em |
---|---|---|
ff02::1 |
Link local | Todos os FTDs e MEDs |
ff02::2 |
Link local | Todos os FTDs |
ff03::1 |
Malha local | Todos os FTDs e MEDs |
ff03::2 |
Malha local | Todos os FTDs |
Observe que os dispositivos com dispositivos de suspensão de sono (SEDs, na sigla em inglês) não estão incluídos como destinatário na tabela de multicast acima. Em vez disso, a linha de execução define o endereço multicast IPv6 baseado no prefixo unicast de escopo local e realm local usado para todos os nós de linha de execução, incluindo SEDs. Esses endereços de multicast variam de acordo com a rede Thread, porque são criados no prefixo Mesh-Local unicast (consulte RFC 3306 para mais detalhes sobre endereços multicast IPv6 baseados em prefixos unicast).
Escopos arbitrários além dos já listados também são compatíveis com dispositivos Thread.
Anycast
O Anycast é usado para rotear o tráfego a uma interface Thread quando o RLOC de um
destino não é conhecido. Um Anyloc Locator (ALOC) identifica o local de
várias interfaces em uma partição Thread. Os últimos 16 bits de um ALOC,
chamado de ALOC, estão no formato 0xfcXX
, 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 poderá ser enviada a um ALOC do agente DHCPv6 para
recebê-lo.
A linha de execução define os seguintes valores de ALOC16:
ALOC16 | Tipo |
---|---|
0xfc00 |
Líder |
0xfc01 – 0xfc0f |
Agente DHCPv6 |
0xfc10 – 0xfc2f |
Serviço |
0xfc30 – 0xfc37 |
Comissionário |
0xfc40 – 0xfc4e |
Agente de descoberta do vizinho |
0xfc38 a 0xfc3f 0xfc4f – 0xfcff |
Reservados |
Recapitulação
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
- O ML-EID é exclusivo para um dispositivo Thread dentro de uma partição e deve ser usado por aplicativos
- A linha de execução usa multicast para encaminhar dados a grupos de nós e roteadores
- A Thread usa anycast quando o RLOC de um destino é desconhecido
Para saber mais sobre o endereçamento IPv6 da linha de execução, consulte as seções 5.2 e 5.3 da Especificação da Thread.
Teste seu conhecimento
ff03::2
. O que isso nos diz sobre o dispositivo?ff03::2
. Isso é feito no escopo
da malha local.