1. Introdução
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+.
- Instale o Go em https://golang.org/dl/
- 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
- Execute
which otns
para verificar se o executávelotns
pode ser pesquisado em$PATH.
. - 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
):
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
:
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:
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
:
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:
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:
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 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 até a velocidade atingir
MAX
: .
Simulação de lentidão
Você pode desacelerar a simulação clicando no botão .
Pausar simulação
Clique no botão para pausar a simulação quando ela estiver em execução. O botão será alterado para
.
Retomar a simulação
Clique no botão para retomar a simulação quando ela estiver pausada. O botão voltará para
.
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:
Desativar o rádio
Clique no botão na barra de ações para desativar o rádio do nó líder:
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:
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 em
Action Bar
para restaurar a conectividade de rádio:
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:
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:
10. Excluir nós
Excluir nós até OTNS-CLI
Exclua o nó 8:
> del 8 Done
O nó 8 desaparecerá da simulação:
Excluir nós até OTNS-Web
Selecione o nó 5 e clique no botão no
Action Bar
para excluir o nó 5:
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 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:
- Simular uma rede Thread com OpenThread
- Como simular uma rede Thread usando OpenThread no Docker
- Crie uma rede Thread com placas nRF52840 e OpenThread