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

Simular redes Thread usando OTNS

1. Introdução

5abd22afa2f2ee9a.png.

O que é Thread &OTNS

A Thread é um protocolo de rede mesh sem fio de baixo consumo e baseado em IP que permite comunicações seguras entre dispositivos e da nuvem. As redes de linhas de execução podem se adaptar às mudanças de topologia para evitar um ponto único de falha.

O OpenThread lançado pelo Google é uma implementação de código aberto do Thread. Apesar do tamanho pequeno de código e da presença de memória, o OpenThread é compatível com todos os recursos definidos na Especificação de Thread.

O OpenThread Network Simulator (OTNS) pode ser usado para simular redes Thread executando nós do OpenThread simulados em plataformas posix. A OTNS oferece uma interface da Web fácil de usar (OTNS-Web) para visualizar e operar redes Thread simuladas.

O que você vai aprender

  • Instalar o OTNS e as dependências dele
  • Criar OpenThread para OTNS
  • Como adicionar/mover/excluir nós em OTNS-Web
  • Usar outros recursos úteis da ferramenta OTNS-Web' para operar a simulação de rede
  • Verificar o ponto de falha sem ponto único do OpenThread

Este codelab é focado na OTNS-CLI e na OTNS-Web. Outros recursos do OTNS, como script em Python, não são cobertos.

O que é necessário

  • Linux x86_64 ou Mac OS.
  • Git (em inglês).
  • Go 1.13 e versões posteriores.
  • Navegador da Web. A OTNS-Web usa um navegador da Web para exibir simulações.
  • Thread Primer: Você precisa conhecer os conceitos básicos da Thread para entender o que aprendeu neste codelab.

2. Instalação

Instalar o Go

A OTNS requer a criação do Go 1.13+.

  1. Instale o Go em https://golang.org/dl/
  2. Adicione $(go env GOPATH)/bin (normalmente $HOME/go/bin) a $PATH:
$ export PATH=$PATH:$(go env GOPATH)/bin

Receber código OTNS

$ git clone https://github.com/openthread/ot-ns.git ./otns
$ cd otns

Instalação das dependências

$ ./script/install-deps
grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy

Talvez seja necessário inserir uma senha para sudo.

Instalar otns

Instale otns em $GOPATH/bin:

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

Vamos verificar se a otns está instalada corretamente

  1. Execute which otns para verificar se o executável otns pode ser pesquisado em $PATH..
  2. Se o comando otns não for encontrado, verifique se você adicionou $(go env GOPATH)/bin ao $PATH..

3. Criar OpenThread para OTNS

Receber o código do OpenThread no GitHub

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

Criar OpenThread com OTNS=1

$ cd ~/src/openthread
$ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999

É possível encontrar os executáveis do OpenThread no diretório build:

$ ls ~/src/openthread/build/simulation/examples/apps/cli/
ot-cli-ftd        ot-cli-mtd        ot-cli-radio

Agora é hora de executar as OTNS...

4. Executar OTNS

Execute otns:

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

Quando iniciado, o OTNS entrará em um console da CLI (OTNS-CLI) e iniciará um navegador da Web para visualização e gerenciamento de rede (OTNS-Web):

a0e05178d66929b1.png

Se apenas uma página em branco para OTNS-Web for exibida, é provável que o WebGL não esteja ativado no seu navegador. Consultehttps://superuser.com/a/836833 para ver como ativar o WebGL.

Nas seções a seguir, você aprenderá a gerenciar simulações de OTNS por meio de OTNS-CLI e OTNS-Web.

5. Conheça o OTNS-CLI & OTNS-Web

CLI OTNS

O OTNS-CLI fornece uma interface de linha de comando (CLI) para gerenciar simulações de OTNS.

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

É possível digitar comandos pelo OTNS-CLI. Consulte a referência da CLI OTNS para ver uma lista completa de comandos. Não se preocupe, você só usará alguns desses comandos neste codelab.

OTNS: Web

OTNS-Web é a ferramenta de visualização e gerenciamento de rede do OTNS. Ele oferece uma representação visual dos nós, mensagens e links da rede Thread simulada. Observe os vários elementos de OTNS-Web:

4c5b43509a2ca0d0.png.

6. Adicionar nós

Adicionar nós por OTNS-CLI

Adicionar um roteador na posição (300, 100)

> add router x 300 y 100
1
Done

Você verá um nó criado em OTNS-Web. O nó começa como um roteador e se torna um líder em alguns segundos:

6ca8c2e63ed9818d.png.

Adicionar nós em OTNS-CLI

> add fed x 200 y 100
2
Done
> add med x 400 y 100
3
Done
> add sed x 300 y 200
4
Done

Aguarde alguns segundos para que os nós sejam mesclados em uma partição. Você verá os nós em OTNS-WEB:

3ee67903c01aa612.png.

Adicionar nós por OTNS-Web

Também é possível adicionar nós com OTNS-Web. Clique no botão New Router do Action Bar. Você verá um nó sendo criado logo acima do botão New Router. Arraste o nó para ficar próximo do líder criado pelo OTNS-CLI. Todos os nós vão ser mesclados em uma partição:

420258bb92561146.png.

Clique também nos botões FED, MED e SED da barra de ações para criar outros tipos de nós. Arraste-os para posições próximas aos nós existentes para anexá-los a essa rede Thread:

fe15d6f9726a099e.png

Agora você criou uma rede Thread de uma partição com muitos nós. Na próxima seção, vamos ajustar a velocidade da simulação para acelerar a simulação.

7. Ajustar velocidade

No momento, a simulação precisa ser executada na velocidade 1X, o que significa que o tempo de simulação decorrido até o momento é o mesmo que o tempo real desde que criamos o primeiro nó.

Ajuste a velocidade em OTNS-CLI

Você pode ajustar a velocidade de simulação em OTNS-CLI.

Definir a simulação da velocidade como 100X

> speed 100
Done

Você verá que os nós enviam mensagens com muito mais frequência do que antes.

Definir a simulação da velocidade como MAX

> speed max
Done

O OTNS está tentando simular o mais rápido possível, então você verá os nós enviando um grande número de mensagens.

Pausar simulação

> speed 0
Done

Definir a simulação da velocidade como 0 pausa a simulação.

Restaurar simulação na velocidade normal

> speed 1
Done

Definir a simulação de velocidade como um valor maior que 0 retoma a simulação.

Ajuste a velocidade em OTNS-Web

Botões de controle de velocidade

Localize os botões de controle de velocidade do 9329157c1bd12672.png. na Action Bar. Os botões mostram a velocidade de simulação atual e podem ser usados para ajustar a velocidade de simulação e pausar/retomar a simulação.

Simulação de aceleração

É possível acelerar a simulação clicando no botão 39b88331779277ad.png. até que a velocidade alcance MAX: f5f460b2586d299b.png.

Simulação de lentidão

Você pode desacelerar a simulação clicando no botão 31cca8d5b52fa900.png..

Pausar simulação

Clique no botão 46cc2088c9aa7ab6.png. para pausar a simulação quando ela estiver em execução. O botão vai ser alterado para ce25eda3496ffcd4.png.

Retomar simulação

Clique no botão ce25eda3496ffcd4.png para retomar a simulação quando ela estiver pausada. O botão voltará para 46cc2088c9aa7ab6.png..

Definir a simulação da velocidade como 10X

Para economizar tempo, use

OTNS-CLI para ajustar a velocidade de simulação para

10X para observar as alterações de topologia na rede com muito mais rapidez.

> speed 10
Done

8. Ativar/desativar rádio

Agora, a simulação deve conter 2 roteadores (formato hexagonal) e muitos filhos e ser executado em velocidade 10 vezes.

Encontre o líder atual (borda vermelha) dos dois roteadores. Clique uma vez para selecioná-lo:

8c6a2e191cdae0c7.png

Desativar o rádio

Clique no botão 7ca085f470491dd4.png. na barra de ações para desativar o rádio do nó líder:

a3bf58d9d125f95f.png

O líder não poderá enviar nem receber mensagens com o rádio desligado.

Aguarde cerca de 12 s (120 s em simulação de tempo) para que o outro roteador se torne o novo Líder:

e3d32f85c4a1b990.png

A rede Thread se recupera automaticamente da falha de um líder formando uma nova partição com um novo líder. A nova partição também tem uma nova cor de partição.

Ativar o rádio

Selecione a líder com o rádio desativado. Clique no botão 2d9cecb8612b42aa.png. em Action Bar para restaurar a conectividade de rádio:

7370a7841861aa3a.png.

O líder deve se reconectar à rede após a restauração da conectividade de rádio.

9. Mover nós

Com a OTNS, os usuários podem mover nós com facilidade pelo OTNS-CLI ou pelo OTNS-Web.

Mover nó por OTNS-CLI

Mova o nó 5 para um novo local:

> move 5 600 300
Done

Como agora o nó 5 está longe do outro roteador, eles perderão a conectividade entre si e, após cerca de 12 s (120 s na simulação do tempo), ambos se tornarão líderes da própria partição:

c06b4d0a4f183299.png

Mover o nó pelo OTNS-Web

Arraste o nó 5 de volta para o local original arrastando-o. As duas partições serão mescladas em uma única partição:

9ba305c4c5a5f892.png.

10. Excluir nós

Excluir nós até OTNS-CLI

Excluir o nó 8:

> del 8
Done

O nó 8 desaparecerá da simulação:

18156770d9f8bf83.png.

Excluir nós até OTNS-Web

Selecione o nó 5 e clique no botão 7ff6afd565f4eafc.png. no Action Bar para excluir o nó 5:

d4079cceea0105f0.png.

Node 1 será o líder, e o Node 7 será removido, porque não é possível acessar nenhum roteador.

Limpar simulação (excluir todos os nós)

É possível limpar a simulação excluindo todos os nós até OTNS-Web.

Clique no botão 89618191721e79a0.png. em Action Bar.. Todos os nós desaparecerão de uma só vez.

Antes de continuar...

Adicione alguns nós à simulação por conta própria para continuar este tutorial.

11. Contexto do nó da OTNS-CLI

OTNS-CLI fornece o modo de contexto de nós para fácil interação com os nós para ajudar os desenvolvedores a diagnosticar o status de um nó.

Entrar no modo de contexto de nós

Digite o contexto de nó do nó 1:

> node 1
Done
node 1>

O prompt da CLI foi alterado para node 1>, indicando o contexto atual do nó. Digite comandos da CLI do OpenThread para serem executados no nó como se você estivesse interagindo diretamente com o nó.

Executar comandos no contexto de nós

node 1> state
leader
Done
node 1> channel
11
Done
node 1> panid
0xface
Done
node 1> networkname
OpenThread
Done
node 1> ipaddr
fdde:ad00:beef:0:0:ff:fe00:fc00
fdde:ad00:beef:0:0:ff:fe00:d800
fdde:ad00:beef:0:2175:8a67:1000:6352
fe80:0:0:0:2075:82c2:e9e9:781d
Done

Alternar para outro contexto de nó

node 1> node 2
Done
node 2> 

Sair do contexto de nós

node 1> exit
Done
>

12. Parabéns

Parabéns, você realizou sua primeira simulação de OTNS!

Você aprendeu como instalar o OTNS e as dependências dele. Você criou OpenThread para OTNS e iniciou a simulação de OTNS com instâncias de simulação do OpenThread. Você aprendeu a manipular a simulação de várias maneiras usando OTNS-CLI e OTNS-Web.

Agora você sabe o que é OTNS e como pode usá-lo para simular redes do OpenThread.

A seguir

Confira alguns destes codelabs:

Documentos de referência