O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Endereçamento IPv6

Ver fonte no GitHub

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

Scopes

OT Scopes

Existem três escopos em uma rede Thread para endereçamento unicast:

  • Link-Local - todas as interfaces alcançá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 têm prefixos de fe80::/16 , enquanto Mesh-locais têm prefixos de 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 de 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 seguinte topologia, onde o número em um roteador (pentágono) é a ID do roteador e o número em um dispositivo final (círculo) é a ID filha:

Topologia OT RLOC

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):

OT RLOC16

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 está sempre neste formato:

0000:00ff:fe00:RLOC16

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

OT RLOC

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

Topologia OT com endereço

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 nó 0x400 é removido da rede Thread. Nodes 0x401 e 0x402 estabelecer novas ligações para diferentes roteadores, e como resultado eles estão cada atribuído um novo RLOC16 e RLOC:

Topologia OT após mudança

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 dentro de 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.

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
Alcance Link-Local
Detalhes
  • Usado para descobrir vizinhos, configurar links e trocar informações de roteamento
  • Não é um endereço roteável
  • Sempre tem um prefixo de fe80::/16

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
Alcance Mesh-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 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
Alcance Mesh-Local
Detalhes
  • Gerado assim que um dispositivo se conecta a uma rede
  • Para entrega de datagramas IPv6 em uma rede Thread
  • Muda conforme a topologia muda
  • Geralmente não é usado por aplicativos

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
Alcance Mesh-Local
Detalhes
  • fc XX = destino ALOC , que procura o RLOC apropriada
  • Geralmente não é usado por aplicativos

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
  • SLAAC - atribuído aleatoriamente pelo próprio dispositivo
  • DHCP - atribuído por um servidor DHCPv6
  • Manual - atribuído pela camada de aplicativo
Alcance Global
Detalhes
  • Um endereço IPv6 público
  • Sempre tem um prefixo de 2000::/3

Multicast

O 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 Alcance 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 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 IPv6 de escopo link-local e realm-local usado para Todos os Thread Nodes, incluindo SEDs. Estes endereços multicast variam de acordo com rede de Thread, porque ele é construído sobre a unicast prefixo Mesh-Local (ver RFC 3306 para obter mais detalhes sobre unicast-prefixo baseada em IPv6 multicast endereços).

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 dentro de uma partição Thread. Os últimos 16 bits de um ALOC, o chamado ALOC16, está no formato de 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 Modelo
0xfc00 Líder
0xfc01 - 0xfc0f Agente DHCPv6
0xfc10 - 0xfc2f Serviço
0xfc30 - 0xfc37 Comissário
0xfc40 - 0xfc4e Agente de descoberta de 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 IPv6 de Tópico endereçamento, ver secções 5.2 e 5.3 da especificação da linha .