Google is committed to advancing racial equity for Black communities. See how.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Herramientas OpenWeave

jinja-placeholder-0 /index.md "> Ver código fuente en GitHub

OpenWeave incluye un conjunto de herramientas de línea de comandos para configurar, administrar y probar las implementaciones de OpenWeave.

Construir herramientas de tejido

El objetivo de weave-tools crea un archivo tar de herramientas de línea de comandos de weave-tools seleccionadas para su distribución. Incluye las siguientes herramientas:

Herramienta Descripción Ubicación de construcción independiente
gen-qr-code Genera un código QR /src/tools/misc
mock-device Simulador de dispositivo de tejido genérico /src/test-apps
weave Generar y administrar certificados de tejido /src/tools/weave
weave-device-descriptor Codificar y decodificar cadenas de descriptores de dispositivos de tejido para emparejar códigos QR /src/test-apps
weave-device-mgr Administra el proceso de emparejamiento de dispositivos /src/device-manager/python
weave-heartbeat Enviar y recibir mensajes de perfil Heartbeat /src/test-apps
weave-key-export Enviar solicitudes de exportación clave /src/test-apps
weave-ping Enviar y recibir mensajes de perfil de Echo /src/test-apps

Para construir el objetivo:

  1. Instale todos los requisitos previos de compilación .
  2. Configure OpenWeave sin soporte BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Haga que las weave-tools objetivo:
     make weave-tools 
  4. Consulte el openweave-core raíz de openweave-core para el archivo tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

gen-qr-code

La herramienta gen-qr-code requiere el módulo Python qrcode . Use pip para instalarlo:

 pip install --user qrcode

Utilice gen-qr-code para generar un código QR para fines de emparejamiento de dispositivos. La entrada para la herramienta debe residir en un archivo local. Por ejemplo, para generar un código QR que envíe al usuario a https://www.google.com :

  1. Cree un archivo con la cadena para el código QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Genere un código QR de 64x64 de esa cadena:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Para guardar el código QR como una imagen, especifique un archivo de salida:
     ./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 simulado

La herramienta de mock-device simula un nodo de tejido genérico. Otras herramientas y scripts de casos de prueba utilizan esta herramienta para encapsular la funcionalidad de Weave. Instale dispositivos simulados en nodos Happy individuales para probar la funcionalidad de Weave en una topología simulada.

Por ejemplo, para iniciar un dispositivo simulado Weave que escucha en una dirección IPv6 de fd00:0:1:1::1 , primero agregue esa dirección IPv6 a la interfaz lo (loopback):

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

Luego, inicie el dispositivo simulado 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 el indicador --help para ver todas las opciones de configuración disponibles.

descriptor de dispositivo de tejido

La herramienta weave-device-descriptor codifica o decodifica una cadena de descriptor de dispositivo. Estas cadenas contienen información de identificación para un dispositivo que está codificado en su código QR de emparejamiento Weave. Use el indicador --help con las opciones de encode o decode para obtener más información.

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

codificar

Por ejemplo, para codificar una cadena de descriptor de dispositivo con la siguiente información de identificación, use los indicadores y valores apropiados:

Campo Bandera Valor
ID del vendedor -V 1
identificación de producto -p 1
Número de revisión del producto -r 2
Número de serie -s 18B4300000000004
Fecha de fabricación -m 2018/05/02
Dirección MAC 802.15.4 (subproceso, BLE) -8 000D6F000DA80466
Código de emparejamiento -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 cadena de salida con la herramienta gen-qr-code para generar el código QR.

descodificar

Usar la decode opción para decodificar un elemento de una cadena de descriptor de dispositivo. El elemento a decodificar tiene la siguiente sintaxis:

1 + <device-descriptor-element> + $

Por ejemplo, para decodificar el elemento descriptor del dispositivo W:5CF370800E77 :

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

latido del corazón

Use weave-heartbeat para enviar y recibir mensajes de perfil Heartbeat entre dos nodos de Weave. Heartbeat proporciona un medio para indicar la vida de un nodo a los otros nodos en la red, o para verificar si un nodo permanece conectado a la estructura.

Un Heartbeat exitoso requiere un nodo para actuar como servidor (escuchando y respondiendo al Heartbeat) y un nodo para actuar como un cliente (enviando el Heartbeat).

Pruebe la herramienta weave-heartbeat usando la interfaz loopback para imitar dos nodos:

  1. Agregue las direcciones IPv6 que se utilizarán para cada nodo Heartbeat a la interfaz lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Inicie el servidor Heartbeat en la dirección fd00:0:1:1::1 y asígnele un node-id de node-id de 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 una segunda ventana de terminal e inicie el cliente Heartbeat en la dirección IPv6 fd00:0:1:1::2 con un node-id de node-id de 2 y la dirección IPv6 del primer nodo como destino para 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. Después de una conexión exitosa, el nodo 2 envía latidos al nodo 1, y el nodo 1 registra los latidos recibidos del nodo 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
     

Latido del corazón con un dispositivo simulado

weave-heartbeat crea una instancia mock-device tanto para el servidor como para el cliente. La misma funcionalidad de Heartbeat se puede demostrar utilizando mock-device en lugar del primer servidor de weave-heartbeat :

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

tejer ping

Use weave-ping para enviar y recibir mensajes de perfil Echo entre dos nodos de Weave. Una carga útil Echo consiste en datos arbitrarios suministrados por el nodo solicitante y se espera que se repitan textualmente en la respuesta. Echo proporciona un medio para probar la conectividad y la latencia de la red.

Un Echo exitoso requiere un nodo para actuar como servidor (escuchando y respondiendo a la solicitud de Echo) y un nodo para actuar como un cliente (enviando la solicitud de Echo).

Pruebe la herramienta weave-ping con la interfaz loopback para imitar dos nodos:

  1. Agregue las direcciones IPv6 que se utilizarán para cada nodo Echo a la interfaz lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Inicie el servidor Echo en la dirección fd00:0:1:1::1 , asignándole un node-id de node-id de 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 una segunda ventana de terminal e inicie el cliente Echo en la dirección IPv6 fd00:0:1:1::2 con un node-id de node-id de 2 y la dirección IPv6 del primer nodo como destino para la solicitud Echo:

     ./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. Después de una conexión exitosa, el nodo 1 registra las solicitudes de eco del nodo 2 y el nodo 2 registra las respuestas de eco del nodo 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 con un dispositivo simulado

weave-ping crea una instancia de un mock-device para el servidor y el cliente. La misma funcionalidad Echo se puede demostrar mediante el uso de mock-device en lugar del primer servidor Echo de weave-ping :

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