Google is committed to advancing racial equity for Black communities. See how.
Esta página foi traduzida pela API Cloud Translation.
Switch to English

Ferramentas OpenWeave

jinja-placeholder-0 /index.md "> Ver fonte no GitHub

O OpenWeave inclui um conjunto de ferramentas de linha de comando para configurar, gerenciar e testar as implantações do OpenWeave.

Construa ferramentas de tecer

O destino das weave-tools cria um arquivo tar de ferramentas de linha de comando selecionadas para distribuição. Inclui as seguintes ferramentas:

Ferramenta Descrição Local autônomo de construção
gen-qr-code Gere um código QR /src/tools/misc
mock-device Simulador genérico de dispositivo de tecelagem /src/test-apps
weave Gere e gerencie certificados de tecer /src/tools/weave
weave-device-descriptor Codificar e decodificar strings de descritor de dispositivo Weave para emparelhar códigos QR /src/test-apps
weave-device-mgr Gerenciar o processo de emparelhamento do dispositivo /src/device-manager/python
weave-heartbeat Envie e receba mensagens de perfil Heartbeat /src/test-apps
weave-key-export Enviar solicitações de exportação de chaves /src/test-apps
weave-ping Enviar e receber mensagens de perfil de Echo /src/test-apps

Para criar o destino:

  1. Instale todos os pré-requisitos de construção .
  2. Configure o OpenWeave sem suporte ao BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Faça o alvo das weave-tools :
     make weave-tools 
  4. Verifique o openweave-core raiz do openweave-core para obter o arquivo tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

código gen-qr

A ferramenta gen-qr-code requer o módulo qrcode do Python. Use o pip para instalá-lo:

 pip install --user qrcode

Use gen-qr-code para gerar um código QR para fins de emparelhamento de dispositivo. A entrada para a ferramenta deve residir em um arquivo local. Por exemplo, para gerar um código QR que envia o usuário para https://www.google.com :

  1. Crie um arquivo com a sequência para o código QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Gere um código QR de 64x64 dessa sequência:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Para salvar o código QR como uma imagem, especifique um arquivo de saída:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode > ~/ow_qrcode.png
    Use the weave-device-descriptor tool to generate the device descriptor string
    for use in a Weave device's pairing QR code.

dispositivo falso

A ferramenta de mock-device simulado simula um nó Weave genérico. Outras ferramentas e scripts de caso de teste usam essa ferramenta para encapsular a funcionalidade do Weave. Instancie dispositivos simulados em nós felizes individuais para testar a funcionalidade do Weave em uma topologia simulada.

Por exemplo, para iniciar um dispositivo Weave simulado que escuta em um endereço IPv6 de fd00:0:1:1::1 , primeiro adicione esse endereço IPv6 à interface lo (loopback):

 sudo ifconfig lo add fd00:0:1:1::1/64

Em seguida, inicie o dispositivo de simulação do Weave:

 ./mock-device -a fd00:0:1:1::1
WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:1:1::1]:11095
WEAVE:ML: Listening on IPv6 TCP endpoint
WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095
WEAVE:IN: IPV6_PKTINFO: 92
WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::1]:11095 (lo)
WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo)
WEAVE:ML: Listening on IPv6 multicast receive endpoint
WEAVE:EM: Cannot listen for BLE connections, null BleLayer
Weave Node Configuration:
  Fabric Id: 1
  Subnet Number: 1
  Node Id: 1
WEAVE:SD: init()
Weave Node Configuration:
  Fabric Id: 1
  Subnet Number: 1
  Node Id: 1
  Listening Addresses:
      fd00:0:1:1::1 (ipv6)
  Pairing Server: fd00:0:1:1::1
Mock Time Sync is disabled and not initialized
Mock System Time Offset initialized to: 3.213773 sec
Listening for requests...
Weave Node ready to service events; PID: 256904; PPID: 251571

Use o sinalizador --help para visualizar todas as opções de configuração disponíveis.

weave-device-descriptor

A ferramenta weave-device-descriptor codifica ou decodifica uma cadeia de caracteres do descritor de dispositivo. Essas cadeias contêm informações de identificação para um dispositivo codificado no código QR de emparelhamento do Weave. Use o sinalizador --help com as opções de encode ou decode para obter mais informações.

 ./weave-device-descriptor encode --help
./weave-device-descriptor decode --help

codificar

Por exemplo, para codificar uma cadeia de caracteres do descritor de dispositivo com as seguintes informações de identificação, use os sinalizadores e valores apropriados:

Campo Bandeira Valor
ID do fornecedor -V 1
ID do produto -p 1
Número de Revisão do Produto -r 2
Número de série -s 18B4300000000004
Data de fabricação -m 2018/05/02
Endereço MAC 802.15.4 (Thread, BLE) -8 000D6F000DA80466
Código de emparelhamento -P AB713H
 ./weave-device-descriptor encode -V 1 -p 1 -r 2 -s 18B4300000000004 -m 2018/05/02 \
                                   -8 000D6F000DA80466 -w 5CF370800E77 -P AB713H
1V:1$P:1$R:2$D:180502$S:18B4300000000004$L:000D6F000DA80466$W:5CF370800E77$C:AB713H$

Use esta sequência de saída com a ferramenta gen-qr-code para gerar o código QR.

decodificar

Use a opção decode para decodificar um elemento de uma cadeia de caracteres do descritor de dispositivo. O elemento a decodificar possui a seguinte sintaxe:

1 + <device-descriptor-element> + $

Por exemplo, para decodificar o elemento descritor de dispositivo W:5CF370800E77 :

 ./weave-device-descriptor decode 1W:5CF370800E77$
Primary WiFi MAC: 5C:F3:70:80:0E:77

tecer-batimento cardíaco

Use weave-heartbeat para enviar e receber mensagens de perfil Heartbeat entre dois nós do Weave. A pulsação fornece um meio para indicar a animação de um nó para os outros nós na rede ou para verificar se um nó permanece conectado à malha.

Uma pulsação bem-sucedida requer um nó para atuar como servidor (ouvindo e respondendo à pulsação) e um nó para atuar como cliente (enviando a pulsação).

Teste a ferramenta weave-heartbeat usando a interface de loopback para imitar dois nós:

  1. Adicione os endereços IPv6 a serem usados ​​para cada nó Heartbeat na interface lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Inicie o servidor Heartbeat no fd00:0:1:1::1 e atribua a ele um node-id de node-id 1:

     ./weave-heartbeat --node-addr fd00:0:1:1::1 --node-id 1 --listen
        WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:1:1::1]:11095
        WEAVE:ML: Listening on IPv6 TCP endpoint
        WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095
        WEAVE:IN: IPV6_PKTINFO: 92
        WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::1]:11095 (lo)
        WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
        WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo)
        WEAVE:ML: Listening on IPv6 multicast receive endpoint
        WEAVE:EM: Cannot listen for BLE connections, null BleLayer
        Weave Node Configuration:
          Fabric Id: 1
          Subnet Number: 1
          Node Id: 1
          Listening Addresses:
              fd00:0:1:1::1 (ipv6)
        Listening for Heartbeats...
        Weave Node ready to service events; PID: 170883; PPID: 170418

  3. Abra uma segunda janela do terminal e inicie o cliente Heartbeat no endereço IPv6 fd00:0:1:1::2 com um node-id de node-id 2 e o endereço IPv6 do primeiro nó como destino para o Heartbeat:

     ./weave-heartbeat --node-addr fd00:0:1:1::2 --node-id 2 --dest-addr fd00:0:1:1::1 1
        WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:1:1::2]:11095
        WEAVE:ML: Listening on IPv6 TCP endpoint
        WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095
        WEAVE:IN: IPV6_PKTINFO: 92
        WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::2]:11095 (lo)
        WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
        WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo)
        WEAVE:ML: Listening on IPv6 multicast receive endpoint
        WEAVE:EM: Cannot listen for BLE connections, null BleLayer
        WEAVE:EM: Binding 0 : Allocated
        Weave Node Configuration:
          Fabric Id: 1
          Subnet Number: 1
          Node Id: 2
          Listening Addresses:
              fd00:0:1:1::2 (ipv6)
        Sending Heartbeats via UDP to node 1 (fd00:0:1:1::1) every 1000 ms
        Weave Node ready to service events; PID: 170932; PPID: 170608
        WEAVE:EM: Binding 0 : Configuring
        WEAVE:EM: Binding 0 : Preparing
        WEAVE:EM: Binding 0 : Ready, peer 1 ([fd00:0:1:1::1]:11095) via UDP

  4. Após uma conexão bem-sucedida, o nó 2 envia pulsações para o nó 1 e o nó 1 registra pulsações recebidas do nó 2:

     Node 1
    <code></code>
    WEAVE:EM: Msg rcvd 00000013:1 1 0000000000000002 0000 C993 0 MsgId:1380A259
    WEAVE:EM: ec id: 1, AppState: 0xb8e89790
    Heartbeat from node 2 (fd00:0:1:1::2): state=1, err=No Error
    ### Node 2
    <code></code>
    WEAVE:EM: ec id: 1, AppState: 0x0
    WEAVE:EM: Msg sent 00000013:1 1 0000000000000001 0000 C993 0 MsgId:1380A259
    Heartbeat sent to node 1: state=1
     

Batimento cardíaco com um dispositivo simulado

weave-heartbeat instancia um mock-device para servidor e cliente. A mesma funcionalidade de pulsação pode ser demonstrada usando o mock-device no lugar do primeiro servidor de pulsação de weave-heartbeat :

 ./mock-device -a fd00:0:1:1::1

tecer-ping

Use o weave-ping para enviar e receber mensagens de perfil Echo entre dois nós do Weave. Uma carga útil do eco consiste em dados arbitrários fornecidos pelo nó solicitante e espera-se que seja ecoado literalmente na resposta. O Echo fornece um meio de testar a conectividade e latência da rede.

Um eco bem-sucedido requer um nó para atuar como servidor (atendendo e respondendo à solicitação de eco) e um nó para atuar como cliente (enviando a solicitação de eco).

Teste a ferramenta weave-ping usando a interface de loopback para imitar dois nós:

  1. Adicione os endereços IPv6 a serem usados ​​para cada nó Echo na interface lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Inicie o servidor Echo no fd00:0:1:1::1 , atribuindo a ele um node-id de node-id 1:

     ./weave-ping --node-addr fd00:0:1:1::1 --node-id 1 --listen
        WEAVE:ML: Binding IPv6 TCP listen endpoint to [fd00:0:1:1::1]:11095
        WEAVE:ML: Listening on IPv6 TCP endpoint
        WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095
        WEAVE:IN: IPV6_PKTINFO: 92
        WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::1]:11095 (lo)
        WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
        WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo)
        WEAVE:ML: Listening on IPv6 multicast receive endpoint
        WEAVE:EM: Cannot listen for BLE connections, null BleLayer
        WEAVE:SD: init()
        Weave Node Configuration:
          Fabric Id: 1
          Subnet Number: 1
          Node Id: 1
          Listening Addresses:
              fd00:0:1:1::1 (ipv6)
        Listening for Echo requests...
        Iteration 0
        Weave Node ready to service events; PID: 120927; PPID: 113768
        WEAVE:ECH: Listening...

  3. Abra uma segunda janela do terminal e inicie o cliente Echo no endereço IPv6 fd00:0:1:1::2 com um node-id de node-id 2 e o endereço IPv6 do primeiro nó como destino da solicitação de eco:

     ./weave-ping --node-addr fd00:0:1:1::2 --node-id 2 --dest-addr fd00:0:1:1::1 1
        WEAVE:ML: Binding general purpose IPv4 UDP endpoint to [::]:11095
        WEAVE:IN: IPV6_PKTINFO: 92
        WEAVE:ML: Binding general purpose IPv6 UDP endpoint to [fd00:0:1:1::2]:11095 (lo)
        WEAVE:ML: Listening on general purpose IPv6 UDP endpoint
        WEAVE:ML: Binding IPv6 multicast receive endpoint to [ff02::1]:11095 (lo)
        WEAVE:ML: Listening on IPv6 multicast receive endpoint
        WEAVE:EM: Cannot listen for BLE connections, null BleLayer
        WEAVE:SD: init()
        Weave Node Configuration:
          Fabric Id: 1
          Subnet Number: 1
          Node Id: 2
          Listening Addresses:
              fd00:0:1:1::2 (ipv6)
        Sending Echo requests to node 1 at fd00:0:1:1::1
        Iteration 0
        Weave Node ready to service events; PID: 121125; PPID: 121017
        WEAVE:ML: Con start 9A00 0000000000000001 0001
        WEAVE:ML: Con DNS complete 9A00 0
        WEAVE:ML: TCP con start 9A00 fd00:0:1:1::1 11095
        WEAVE:ML: TCP con complete 9A00 0
        WEAVE:ML: Con complete 9A00
        Connection established to node 1 (fd00:0:1:1::1)

  4. Após uma conexão bem-sucedida, o nó 1 registra as Solicitações de Eco do nó 2 e o nó 2 registra as Respostas de Eco do nó 1:

     Node 1
    <code></code>
    WEAVE:ML: Con rcvd AA00 fd00:0:1:1::2 41675
    Connection received from node 2 (fd00:0:1:1::2)
    WEAVE:EM: Msg rcvd 00000001:1 15 0000000000000002 AA00 B8A5 0 MsgId:00000000
    WEAVE:EM: ec id: 1, AppState: 0xfce0ca80
    Echo Request from node 2 (fd00:0:1:1::2): len=15 ... sending response.
    WEAVE:EM: Msg sent 00000001:2 15 0000000000000002 AA00 B8A5 0 MsgId:00000000
    WEAVE:EM: Msg rcvd 00000001:1 15 0000000000000002 AA00 B8A6 0 MsgId:00000001
    ### Node 2
    <code></code>
    WEAVE:EM: ec id: 1, AppState: 0xd239baa0
    WEAVE:EM: Msg sent 00000001:1 15 0000000000000001 9A00 B8A5 0 MsgId:00000000
    WEAVE:EM: Msg rcvd 00000001:2 15 0000000000000001 9A00 B8A5 0 MsgId:00000000
    Echo Response from node 1 (fd00:0:1:1::1): 1/1(100.00%) len=15 time=0.228ms
     

Eco com um dispositivo simulado

weave-ping instancia um mock-device para servidor e cliente. A mesma funcionalidade Echo pode ser demonstrada usando o mock-device no lugar do primeiro servidor Echo de weave-ping :

 ./mock-device -a fd00:0:1:1::1