Google is committed to advancing racial equity for Black communities. See how.
Halaman ini diterjemahkan oleh Cloud Translation API.
Switch to English

Alat OpenWeave

jinja-placeholder-0 /index.md "> Lihat sumber di GitHub

OpenWeave mencakup seperangkat alat baris perintah untuk mengkonfigurasi, mengelola, dan menguji penerapan OpenWeave.

Membangun alat tenun

Target weave-tools membangun arsip tar dari alat baris perintah Weave untuk distribusi. Ini termasuk alat-alat berikut:

Alat Deskripsi Lokasi pembangunan mandiri
gen-qr-code Hasilkan kode QR /src/tools/misc
mock-device Simulator perangkat Weic generik /src/test-apps
weave Buat dan kelola Weave sertifikat /src/tools/weave
weave-device-descriptor Encode dan decode Weave device descriptor string untuk memasangkan kode QR /src/test-apps
weave-device-mgr Kelola proses pemasangan perangkat /src/device-manager/python
weave-heartbeat Kirim dan terima pesan profil Heartbeat /src/test-apps
weave-key-export Kirim permintaan ekspor utama /src/test-apps
weave-ping Kirim dan terima pesan profil Echo /src/test-apps

Untuk membangun target:

  1. Instal semua prasyarat pembuatan .
  2. Konfigurasikan OpenWeave tanpa dukungan BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. Buat target weave-tools :
     make weave-tools 
  4. Periksa direktori root openweave-core untuk arsip tar:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

gen-qr-code

Alat gen-qr-code membutuhkan modul qrcode Python. Gunakan pip untuk menginstalnya:

 pip install --user qrcode

Gunakan gen-qr-code untuk menghasilkan kode QR untuk keperluan pemasangan perangkat. Input untuk alat harus berada di file lokal. Misalnya, untuk menghasilkan kode QR yang mengirim pengguna ke https://www.google.com :

  1. Buat file dengan string untuk kode QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. Hasilkan kode QR 64x64 dari string itu:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. Untuk menyimpan kode QR sebagai gambar, tentukan file keluaran:
     ./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.

perangkat tiruan

Alat mock-device mensimulasikan node Weave generik. Alat lain dan skrip kasus pengujian menggunakan alat ini untuk merangkum fungsi Weave. Instantiate perangkat tiruan pada masing-masing node Happy untuk menguji fungsi Weave dalam topologi yang disimulasikan.

Misalnya, untuk memulai perangkat Weave mock yang mendengarkan alamat IPv6 dari fd00:0:1:1::1 , pertama-tama tambahkan alamat IPv6 itu ke antarmuka lo (loopback):

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

Kemudian jalankan perangkat Weave mock:

 ./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

Gunakan flag --help untuk melihat semua opsi konfigurasi yang tersedia.

menenun-perangkat-deskriptor

Alat weave-device-descriptor mengkodekan atau mendekodekan string deskriptor perangkat. String ini berisi informasi pengidentifikasi untuk perangkat yang dikodekan ke dalam kode QR pasangan Weave. Gunakan flag --help dengan opsi encode atau decode untuk informasi lebih lanjut.

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

menyandi

Misalnya, untuk menyandikan string deskriptor perangkat dengan informasi pengidentifikasi berikut, gunakan flag dan nilai yang sesuai:

Bidang Bendera Nilai
ID vendor -V 1
ID Produk -p 1
Nomor Revisi Produk -r 2
Nomor seri -s 18B4300000000004
Tanggal pembuatan -m 2018/05/02
802.15.4 Alamat MAC (Utas, BLE) -8 000D6F000DA80466
Kode Pemasangan -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$

Gunakan string keluaran ini dengan alat gen-qr-code untuk menghasilkan kode QR.

membaca sandi

Gunakan opsi decode untuk mendekode elemen string descriptor perangkat. Elemen yang akan didekode memiliki sintaks berikut:

1 + <device-descriptor-element> + $

Misalnya, untuk mendekode elemen deskriptor perangkat W:5CF370800E77 :

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

menenun-detak jantung

Gunakan weave-heartbeat untuk mengirim dan menerima pesan profil Heartbeat antara dua node Weave. Detak jantung menyediakan sarana untuk menunjukkan liveness dari satu node ke node lain dalam jaringan, atau untuk memeriksa apakah sebuah node tetap terhubung ke fabric.

Detak Jantung yang berhasil membutuhkan satu simpul untuk bertindak sebagai server (mendengarkan dan merespons Detak Jantung) dan satu simpul untuk bertindak sebagai klien (mengirimkan Detak Jantung).

Uji alat weave-heartbeat menggunakan antarmuka loopback untuk meniru dua node:

  1. Tambahkan alamat IPv6 yang akan digunakan untuk setiap node Detak Jantung ke antarmuka lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Mulai server Heartbeat pada fd00:0:1:1::1 dan berikan 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. Buka jendela terminal kedua dan mulai klien Detak Jantung pada fd00:0:1:1::2 alamat IPv6 dengan node-id 2 dan alamat IPv6 node pertama sebagai tujuan untuk Detak Jantung:

     ./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. Setelah koneksi berhasil, simpul 2 mengirimkan Detak Jantung ke simpul 1, dan simpul 1 mencatat Detak Jantung yang diterima dari simpul 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
     

Detak jantung dengan perangkat tiruan

weave-heartbeat instantiates perangkat mock-device untuk server dan klien. Fungsionalitas Detak Jantung yang sama dapat diperagakan dengan menggunakan mock-device sebagai ganti server Detak Jantung weave-heartbeat :

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

menenun-ping

Gunakan weave-ping untuk mengirim dan menerima pesan profil Echo antara dua node Weave. Echo payload terdiri dari data sewenang-wenang yang disediakan oleh node yang meminta dan diharapkan akan digaungkan kembali kata demi kata dalam respons. Echo menyediakan sarana untuk menguji konektivitas dan latensi jaringan.

Echo yang berhasil membutuhkan satu simpul untuk bertindak sebagai server (mendengarkan dan menanggapi permintaan Echo) dan satu simpul untuk bertindak sebagai klien (mengirimkan permintaan Echo).

Uji alat weave-ping menggunakan antarmuka loopback untuk meniru dua node:

  1. Tambahkan alamat IPv6 yang akan digunakan untuk setiap node Echo ke antarmuka lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. Mulai server Echo pada fd00:0:1:1::1 , dan fd00:0:1:1::1 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. Buka jendela terminal kedua dan mulai klien Echo pada fd00:0:1:1::2 alamat IPv6 dengan node-id 2 dan alamat IPv6 node pertama sebagai tujuan untuk permintaan 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. Setelah koneksi berhasil, node 1 mencatat Echo Requests dari node 2, dan node 2 mencatat Echo Responses dari node 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
     

Gema dengan perangkat tiruan

weave-ping instantiates perangkat mock-device untuk server dan klien. Fungsionalitas Echo yang sama dapat ditunjukkan dengan menggunakan mock-device sebagai pengganti server Echo weave-ping pertama:

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