Endereçamento IPv6

Veja o código-fonte no GitHub

Vamos conferir como o Thread identifica cada dispositivo na rede e o que e os tipos de endereços que usam para se comunicar entre si.

Escopos

Escopos de OT

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 dentro da 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. O Link-Local tem prefixos de fe80::/16, enquanto o 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 aprender mais sobre um comum, chamado RLOC. O RLOC identifica uma interface Thread com base no 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 um tabela de todos os seus Filhos, e a combinação dos quais identifica exclusivamente um na topologia. Por exemplo, considere os nós destacados na topologia a seguir, em que o número em um roteador (pentágono) é o ID dele, e o número em um Dispositivo Final (círculo) seja o ID da Criança:

Topologia RLOC OT

O ID do roteador filho de cada filho corresponde ao pai (roteador). Como um roteador não um filho, esse ID de um roteador será 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 (Roteador ID = 1 e ID secundário = 1):

OT RLOC16

O RLOC16 é parte do Identificador de Interface (IID), que corresponde ao e os últimos 64 bits do endereço IPv6. Alguns IIDs podem ser usados para identificar alguns tipos de interfaces Thread. Por exemplo, o IID de RLOCs está sempre neste formato:

0000:00ff:fe00:RLOC16

O IID, combinado com um prefixo local da malha, resulta no RLOC. Por exemplo: usando um prefixo local da malha de fde5:8dba:82e1:1::/64, o RLOC de um nó em que RLOC16 = 0x401 é:

RLOC OT

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

Topologia de OT com endereço

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 seja removido da rede Thread. Nós 0x401 e 0x402 estabelecem novos links para diferentes roteadores e, como resultado, cada um deles recebe um novo RLOC16 e RLOC:

Topologia de OT após a mudança

Tipos de endereços Unicast

O RLOC é apenas um dos muitos 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 identificar uma interface Thread exclusiva em uma partição de rede Thread. EIDs são independente da topologia de rede Thread.

Os tipos comuns de unicast estão detalhados abaixo.

Um EID que identifica uma interface Thread acessível por uma única transmissão de rádio.
Exemplofe80::54db:881c:3845:57f4
IIDCom base no endereço estendido 802.15.4
EscopoLink-local
Detalhes
  • Usado para descobrir vizinhos, configurar links e trocar informações de roteamento
  • Não é um endereço roteável
  • Sempre tem o prefixo fe80::/16.

EID de 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).
Exemplofde5:8dba:82e1:1:416:993c:8399:35ab
IIDAleatório, escolhido após a conclusão do comissionamento
EscopoMalha local
Detalhes
  • Não muda conforme a topologia muda
  • Deve ser usado por aplicativos
  • Sempre tem um prefixo fd00::/8

Localizador de roteamento (RLOC)

Identifica uma interface Thread, com base na sua localização na topologia de rede.
Exemplofde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
EscopoMalha local
Detalhes
  • Gerados quando um dispositivo é conectado a uma rede
  • Para entregar datagramas IPv6 dentro de uma rede Thread
  • Mudanças à medida que a topologia muda
  • Geralmente não são usados por aplicativos

Localizador Anycast (ALOC)

Identifica uma interface Thread via pesquisa RLOC, quando o RLOC de um destino não é conhecido.
Exemplofde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
EscopoMalha local
Detalhes
  • fcXX = destino ALOC, que pesquisa o RLOC adequado
  • Geralmente não são usados por aplicativos

Endereço unicast global (GUA)

Um EID que identifica uma interface Thread em um escopo global, além de uma rede Thread.
Exemplo2000::54db:881c:3845:57f4
IID
  • SLAAC: atribuído aleatoriamente pelo próprio dispositivo
  • DHCP: atribuído por um servidor DHCPv6
  • Manual: atribuído pela camada do aplicativo
EscopoGlobal
Detalhes
  • Um endereço IPv6 público
  • Sempre tem o prefixo 2000::/3.

Multicast

O multicast é usado para comunicar informações a vários dispositivos ao mesmo tempo. Em um 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 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

Os dispositivos finais sonolentos (SEDs, na sigla em inglês) não estão incluídos como um destinatário na tabela multicast acima. Em vez disso, Thread define multicast IPv6 baseado em prefixo de prefixo de link-local e realm-local usado para todos os nós de linha de execução, incluindo SEDs. Esses multicast variam de acordo com a rede Thread, porque ela é criada com base Prefixo Mesh-Local (consulte RFC 3306, em inglês) para mais detalhes sobre endereços multicast IPv6 baseados em prefixo unicast).

Escopos arbitrários além dos já listados também são compatíveis com Thread dispositivos.

Anycast

O Anycast é usado para rotear o tráfego para uma interface Thread quando o RLOC de uma destino desconhecido. Um localizador Anycast (ALOC) identifica a localização várias interfaces em uma partição Thread. Os últimos 16 bits de um ALOC, chamado ALOC16, está no formato 0xfcXX, que representa o tipo de ALOC.

Por exemplo, um ALOC16 entre 0xfc01 e 0xfc0f é reservado para o DHCPv6 Agentes. Se o RLOC do agente DHCPv6 específico for desconhecido (talvez porque o a topologia de rede tenha sido alterada), uma mensagem pode ser enviada a um ALOC de agente DHCPv6 para para receber o RLOC.

A linha de execução define os seguintes valores ALOC16:

ALOC16 Tipo
0xfc00 Líder
0xfc01 a 0xfc0f Agente DHCPv6
0xfc10 a 0xfc2f Serviço
0xfc30 a 0xfc37 Comissionário
0xfc40 a 0xfc4e Agente de descoberta vizinho
0xfc380xfc3f
0xfc4f0xfcff
Reservado

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
    • Um 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 linha de execução 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 Especificação da linha de execução.

Teste seu conhecimento

Quais são os três escopos usados para endereçamento unicast em uma rede Thread?
Particular
Incorreto.
Interface local
Incorreto.
Link-local
Correto.
Site local
Incorreto.
Malha local
Correto.
Global
Correto.
O que significa quando um dispositivo tem um ID infantil igual a 0?
O dispositivo é uma criança.
Incorreto.
O dispositivo é um REED.
Quase, mas incorreta.
O dispositivo é um roteador.
Correto. Um roteador sempre tem um ID filho igual a 0.
Uma câmera, que é um nó em uma rede Thread, recebe um novo RLOC16 e RLOC. Qual dos seguintes eventos pode ter causado isso?
Alguém fez o download remoto de imagens da câmera.
Incorreto. Esse evento não teria relação com a linha de execução em uma rede VPC.
Um roteador desligou a rede.
Correto. Quando um roteador perde uma rede, ela mudanças de topologia, o que pode fazer com que o dispositivo se promova a um roteador e obter um novo RLOC.
A câmera entrou no modo de espera, o que alterou a topologia da rede.
Incorreto. Entrar no modo de espera não faz com que o dispositivo para receber um novo endereço de rede.
Um dispositivo em uma rede Thread assina o ff03::2 multicast. O que isso nos diz sobre o dispositivo?
Ele é um dispositivo final mínimo (MED, na sigla em inglês).
Incorreto.
Ele é um dispositivo final completo (FED, na sigla em inglês).
Incorreto. (Dica: pode ou não ser o FED.)
Trata-se de um dispositivo mínimo com thread (MTD, na sigla em inglês).
Incorreto.
Ele é um dispositivo de linha de execução completa (FTD, na sigla em inglês).
Correto. Somente dispositivos Thread completo se inscrevem no Endereço multicast ff03::2. Eles fazem isso no Mesh-Local do projeto.
Que tipo de endereçamento e roteamento a Thread usa para encaminhar dados para grupos de nós e roteadores?
Unicast
Incorreto.
Anycast
Incorreto.
multicast
Correto.
transmissão
Incorreto.
Que tipo de endereçamento e roteamento um dispositivo Thread usa quando a O RLOC do destinatário da mensagem é desconhecido?
Unicast
Incorreto.
Anycast
Correto. O Anycast permite que um dispositivo alcance um nó cujo RLOC não está conhecida, abordando o ALOC do dispositivo.
multicast
Incorreto.
transmissão
Incorreto.