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

Simular redes de linhas de execução usando OTNS

1. Introdução

5abd22afa2f2ee9a.png.

O que é Thread & OTNS

A Thread é um protocolo de rede mesh sem fio de baixo consumo baseado em IP que permite a comunicação segura de dispositivo para dispositivo e de nuvem para dispositivo. As redes Thread podem se adaptar a mudanças de topologia para evitar pontos únicos de falha.

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

O simulador de rede OpenThread (OTNS) pode ser usado para simular redes Thread executando nós OpenThread simulados em plataformas posix. O OTNS fornece 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 OTNS-Web'para operar a simulação de rede
  • Verificar o ponto de falha único do OpenThread'

Este codelab é focado no OTNS-CLI e OTNS-Web. Outros recursos do OTNS, como scripting em Python, não são abordados.

Pré-requisitos

  • Linux x86_64 ou Mac OS
  • Git (link em inglês).
  • Go 1.11+
  • Navegador da Web. O OTNS-Web usa um navegador da Web para exibir simulações.
  • Thread Primer: É necessário conhecer os conceitos básicos da Thread para entender o que é ensinado neste codelab.

2. Instalação

Instalar o Go

O OTNS requer a criação do Go 1.11+.

  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

Instalar 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 otns está instalado 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 a $PATH.

3. Criar OpenThread para OTNS

Receber 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/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

Localize os executáveis do OpenThread no diretório output:

Linux

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Agora é a hora de executar os OTNS...

4. Executar OTNS

Execute otns:

$ cd ~/src/openthread/output/simulation/bin
$ 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 você só puder ver uma página em branco para OTNS-Web, é provável que a WebGL não esteja ativada no seu navegador. Consultehttps://superuser.com/a/836833 para saber como ativar a 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 a OTNS-CLI & OTNS-Web

CLI OTNS

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

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Você pode digitar comandos usando OTNS-CLI. Consulte a referência da CLI do 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 pela 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 mais nós usando 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 os nós se mesclarem 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 por meio do OTNS-Web. Clique no botão New Router da Action Bar. Você verá um nó sendo criado logo acima do botão New Router. Arraste o nó para ficar perto do líder criado por meio do OTNS-CLI. Todos os nós precisam se mesclar em uma partição:

420258bb92561146.png

Além disso, clique nos botões FED, MED e SED na barra de ações para criar outros tipos de nós. Arraste-os para as 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 que contém muitos nós. Na próxima seção, ajustaremos a velocidade de simulação para tornar a simulação mais rápida.

7. Ajustar velocidade

Atualmente, a simulação deve estar em execução em velocidade 1X, o que significa que o tempo de simulação decorrido até o momento é igual ao tempo real desde que criamos o primeiro nó.

Ajustar velocidade usando OTNS-CLI

É possível ajustar a velocidade de simulação em OTNS-CLI.

Definir a simulação de velocidade para 100X

> speed 100
Done

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

Definir a simulação de velocidade para MAX

> speed max
Done

Agora, o OTNS está tentando simular da melhor forma possível, então você deve ver os nós enviando um grande número de mensagens.

Pausar simulação

> speed 0
Done

Configurar a simulação de velocidade como 0 pausa a simulação.

Restaurar simulação na velocidade normal

> speed 1
Done

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

Ajustar velocidade usando OTNS-Web

Botões de controle de velocidade

Localize os botões de controle de velocidade 9329157c1bd12672.png no Action Bar. Os botões mostram a velocidade de simulação atual e podem ser usados para ajustá-la e pausar/retomar a simulação.

Acelerar a simulação

É possível acelerar a simulação clicando no botão 39b88331779277ad.png. até a velocidade atingir 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 será alterado para ce25eda3496ffcd4.png.

Retomar a 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 de velocidade para 10X

Para economizar tempo, use

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

10X para que possamos observar as mudanças de topologia na rede muito mais rapidamente.

> speed 10
Done

8. Ativar/desativar o rádio

Agora, a simulação deve conter dois roteadores (forma hexagonal) e muitos filhos e é executada em uma velocidade de 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 desativado.

Aguarde cerca de 12 segundos (120 segundos na simulação do tempo) para que o outro roteador se torne o novo líder:

e3d32f85c4a1b990.png

A rede Thread se recupera da falha do líder automaticamente 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 o líder cujo rádio foi 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 depois que a conectividade de rádio for restaurada.

9. Mover nós

Com o OTNS, os usuários podem mover nós facilmente pelo OTNS-CLI ou OTNS-Web.

Mover nó por OTNS-CLI

Mova o nó 5 para um novo local:

> move 5 600 300
Done

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

c06b4d0a4f183299.png

Mover nó pelo OTNS-Web

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

9ba305c4c5a5f892.png

10. Excluir nós

Excluir nós até OTNS-CLI

Exclua 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 precisa se tornar líder, e Node 7 precisa ser desconectado, porque não consegue alcançar nenhum roteador.

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

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

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

Antes de continuar...

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

11. Contexto do nó da OTNS-CLI

OTNS-CLI fornece o modo de contexto do nó para facilitar a interação com os nós e ajudar os desenvolvedores a diagnosticar o status deles.

Entrar no modo de contexto de nó

Digite o contexto do nó 1:

> node 1
Done
node 1>

O prompt da CLI foi alterado para node 1>, indicando o contexto atual do nó. Você pode digitar comandos da CLI do Thread a serem executados no nó como se estivesse interagindo com o nó diretamente.

Executar comandos no contexto do nó

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ó

node 1> exit
Done
>

12. Parabéns

Parabéns! Você executou sua primeira simulação de OTNS.

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

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

A seguir

Confira alguns dos seguintes codelabs:

Documentos de referência