Google is committed to advancing racial equity for Black communities. See how.
Questa pagina è stata tradotta dall'API Cloud Translation.
Switch to English

Strumenti OpenWeave

jinja-placeholder-0 /index.md "> Visualizza sorgente su GitHub

OpenWeave include una serie di strumenti da riga di comando per configurare, gestire e testare le distribuzioni OpenWeave.

Costruisci strumenti di tessitura

Il target di weave-tools crea un archivio tar di strumenti a riga di comando Weave selezionati per la distribuzione. Include i seguenti strumenti:

Attrezzo Descrizione Posizione di costruzione autonoma
gen-qr-code Genera un codice QR /src/tools/misc
mock-device Simulatore di dispositivo Weave generico /src/test-apps
weave Generare e gestire certificati Weave /src/tools/weave
weave-device-descriptor Codifica e decodifica Stringhe descrittore del dispositivo Weave per l'associazione di codici QR /src/test-apps
weave-device-mgr Gestire il processo di associazione del dispositivo /src/device-manager/python
weave-heartbeat Invia e ricevi i messaggi del profilo Heartbeat /src/test-apps
weave-key-export Invia richieste di esportazione chiave /src/test-apps
weave-ping Invia e ricevi messaggi di profilo echo /src/test-apps

Per costruire l'obiettivo:

  1. Installa tutti i prerequisiti di compilazione .
  2. Configura OpenWeave senza il supporto BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Rendi target gli weave-tools :
     make weave-tools 
  4. Controllare la openweave-core root openweave-core per l'archivio tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

Gen-qr-code

Lo strumento gen-qr-code richiede il modulo qrcode Python. Usa pip per installarlo:

 pip install --user qrcode

Utilizzare gen-qr-code per generare un codice QR ai fini dell'associazione del dispositivo. L'input per lo strumento deve risiedere in un file locale. Ad esempio, per generare un codice QR che invia l'utente a https://www.google.com :

  1. Crea un file con la stringa per il codice QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Genera un codice QR 64x64 di quella stringa:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Per salvare il codice QR come immagine, specificare un file di output:
     ./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.

mock-Dispositivo

Lo strumento mock-device simula un nodo Weave generico. Altri strumenti e script di test case utilizzano questo strumento per incapsulare la funzionalità Weave. Crea istanze di dispositivi simulati su singoli nodi Happy per testare la funzionalità Weave in una topologia simulata.

Ad esempio, per avviare un dispositivo finto Weave in ascolto su un indirizzo IPv6 di fd00:0:1:1::1 , aggiungere innanzitutto l'indirizzo IPv6 all'interfaccia lo (loopback):

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

Quindi avviare il dispositivo di simulazione 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

Utilizzare il flag --help per visualizzare tutte le opzioni di configurazione disponibili.

tessere-dispositivo descrittore

Lo strumento weave-device-descriptor codifica o decodifica una stringa descrittore del dispositivo. Queste stringhe contengono informazioni di identificazione per un dispositivo codificato nel suo codice QR di associazione Weave. Utilizzare il flag --help con le opzioni di encode o decode per ulteriori informazioni.

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

codificare

Ad esempio, per codificare una stringa descrittore del dispositivo con le seguenti informazioni di identificazione, utilizzare i flag e i valori appropriati:

Campo Bandiera Valore
ID del venditore -V 1
numero identificativo del prodotto -p 1
Numero di revisione del prodotto -r 2
Numero di serie -s 18B4300000000004
Data di produzione -m 2018/05/02
Indirizzo MAC 802.15.4 (Thread, BLE) -8 000D6F000DA80466
Codice di associazione -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$

Utilizzare questa stringa di output con lo strumento gen-qr-code per generare il codice QR.

decodificare

Utilizzare la decode opzione per decodificare un elemento di una stringa descrittore dispositivo. L'elemento da decodificare ha la sintassi seguente:

1 + <device-descriptor-element> + $

Ad esempio, per decodificare l'elemento descrittore dispositivo W:5CF370800E77 :

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

tessuto-battito cardiaco

Utilizzare weave-heartbeat per inviare e ricevere i messaggi del profilo Heartbeat tra due nodi Weave. Heartbeat fornisce un mezzo per indicare la vivacità di un nodo con gli altri nodi nella rete o per verificare se un nodo rimane connesso al tessuto.

Un Heartbeat di successo richiede che un nodo funga da server (ascoltando e rispondendo al Heartbeat) e un nodo che funga da client (invio dell'Heartbeat).

Testa lo strumento weave-heartbeat utilizzando l'interfaccia di loopback per imitare due nodi:

  1. Aggiungi gli indirizzi IPv6 da utilizzare per ciascun nodo Heartbeat all'interfaccia lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Avviare il server Heartbeat sull'indirizzo fd00:0:1:1::1 e assegnargli un node-id di 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. Aprire una seconda finestra del terminale e avviare il client Heartbeat sull'indirizzo fd00:0:1:1::2 con un node-id 2 e l'indirizzo IPv6 del primo nodo come destinazione per 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. Dopo una connessione riuscita, il nodo 2 invia Heartbeat al nodo 1 e il nodo 1 registra gli Heartbeat ricevuti dal 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
     

Battito cardiaco con un dispositivo finto

weave-heartbeat crea un'istanza di un mock-device per server e client. La stessa funzionalità Heartbeat può essere dimostrata utilizzando il mock-device al posto del primo server Heartbeat weave-heartbeat :

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

tessuto-ping

Usa il weave-ping di weave-ping per inviare e ricevere messaggi del profilo Echo tra due nodi Weave. Un payload Echo è costituito da dati arbitrari forniti dal nodo richiedente e si prevede che venga ripetuto l'eco alla lettera nella risposta. Eco fornisce un mezzo per testare la connettività di rete e la latenza.

Un Echo di successo richiede che un nodo funga da server (in ascolto e risposta alla richiesta Echo) e un nodo che funga da client (invio della richiesta Echo).

Testa lo strumento weave-ping usando l'interfaccia di loopback per imitare due nodi:

  1. Aggiungi gli indirizzi IPv6 da utilizzare per ciascun nodo Echo all'interfaccia lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Avviare il server Echo sull'indirizzo fd00:0:1:1::1 , assegnandogli un node-id di 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. Aprire una seconda finestra del terminale e avviare il client Echo sull'indirizzo fd00:0:1:1::2 con un node-id di 2 e l'indirizzo IPv6 del primo nodo come destinazione per la richiesta 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. Dopo una connessione riuscita, il nodo 1 registra le richieste di eco dal nodo 2 e il nodo 2 registra le risposte di eco dal 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 finto

weave-ping crea un'istanza di un mock-device per server e client. La stessa funzionalità Echo può essere dimostrata usando mock-device al posto del primo server Echo a weave-ping :

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