Google is committed to advancing racial equity for Black communities. See how.
דף זה תורגם על ידי Cloud Translation API.
Switch to English

כלי OpenWeave

jinja-placeholder-0 /index.md "> צפה במקור ב- GitHub

OpenWeave כוללת מערכת כלים של שורת פקודה להגדרת תצורה, ניהול ובדיקת פריסות OpenWeave.

בנה כלים לארוג

יעד weave-tools בונה ארכיב זפת של כלים נבחרים לשורת הפקודה Weave להפצה. זה כולל את הכלים הבאים:

כְּלִי תיאור מיקום בנייה עצמאי
gen-qr-code צור קוד QR /src/tools/misc
mock-device סימולטור התקני Weave גנרי /src/test-apps
weave צור ונהל אישורי Weave /src/tools/weave
weave-device-descriptor קידוד ופענוח מחרוזות מתאר מכשירי מארג להתאמת קודי QR /src/test-apps
weave-device-mgr נהל את תהליך התאמת ההתקנים /src/device-manager/python
weave-heartbeat שלח וקבל הודעות פרופיל Heartbeat /src/test-apps
weave-key-export שלח בקשות ייצוא מפתח /src/test-apps
weave-ping שלח וקבל הודעות הד ' פרופיל רשת /src/test-apps

לבניית היעד:

  1. התקן את כל תנאי התנאי הבנויים .
  2. קבע את התצורה של OpenWeave ללא תמיכה ב- BlueZ:
     cd <path-to-openweave-core>
    ./configure --without-bluez 
  3. הפוך את weave-tools למטרה:
     make weave-tools 
  4. בדוק את ספריית openweave-core עבור ארכיב הזפת:
     ls weave*
        weave-tools-x86_64-unknown-linux-gnu-4.0d.tar.gz

gen-qr-code

הכלי gen-qr-code דורש את מודול ה- Python qrcode . השתמש ב- pip כדי להתקין אותו:

 pip install --user qrcode

השתמש gen-qr-code כדי ליצור קוד QR למטרות התאמה בין מכשירים. על הקלט לכלי להיות ממוקם בקובץ מקומי. לדוגמה, כדי ליצור קוד QR השולח את המשתמש אל https://www.google.com :

  1. צור קובץ עם המחרוזת לקוד ה- QR:
     echo "https://www.google.com" >> ~/ow_qrcode 
  2. צור קוד QR 64x64 של מחרוזת זו:
     ./gen-qr-code -v 1 -s 64 < ~/ow_qrcode 
  3. כדי לשמור את קוד ה- QR כתמונה, ציין קובץ פלט:
     ./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-device המדמה מדמה צומת Weave גנרי. כלים אחרים ותסריטים למבחני מקרה משתמשים בכלי זה כדי להכיל את פונקציונליות ה- Weave. התקן מכשירים מדומים על צמתים מאושרים בודדים כדי לבדוק פונקציונליות של Weave בטופולוגיה מדומה.

לדוגמה, כדי להפעיל מכשיר מדומה של Weave המאזין בכתובת IPv6 של fd00:0:1:1::1 , הוסף תחילה את כתובת ה- IPv6 לממשק lo (loopback):

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

ואז הפעל את מכשיר העגלה של 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

השתמש בדגל --help כדי להציג את כל אפשרויות התצורה הזמינות.

תיאור מכשיר לארוג

weave-device-descriptor מקודד כלי או מפענח מחרוזת מתאר התקן. מחרוזות אלה מכילות מידע מזהה עבור התקן המקודד לקוד ה- QR של זיווג Weave. השתמש --help דגל עם encode או decode אפשרויות לקבלת מידע נוסף.

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

לְהַצְפִּין

לדוגמה, לקידוד מחרוזת מתאר מכשירים עם המידע המזהה הבא, השתמש בדגלים והערכים המתאימים:

שדה דֶגֶל ערך
מזהה ספק -V 1
מזהה מוצר -p 1
מספר עדכון מוצר -r 2
מספר סידורי -s 18B4300000000004
תאריך יצור -m 2018/05/02
802.15.4 כתובת MAC (אשכול, BLE) -8 000D6F000DA80466
קוד זיווג -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$

השתמש במחרוזת פלט זו עם הכלי gen-qr-code כדי ליצור את קוד ה- QR.

לְפַעֲנֵחַ

השתמש באפשרות decode כדי לפענח אלמנט של מחרוזת מתאר מכשירים. האלמנט לפענוח כולל את התחביר הבא:

1 + <device-descriptor-element> + $

לדוגמה, כדי לפענח את רכיב מתאר ההתקנים W:5CF370800E77 :

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

פעימות לב

השתמש weave-heartbeat כדי לשלוח ולקבל הודעות פרופיל פעימות לב בין שני צמתי מארג. פעימות לב מספקות אמצעי להצביע על חייה של צומת אחד לצמתים האחרים ברשת, או לבדוק אם צומת נשאר מחובר לבד.

פעימות לב מצליחות דורשות צומת אחד לפעול כשרת (האזנה לדופק הלב ומגיבו) וצומת אחד לפעול כלקוח (שליחת פעימות הלב).

בדוק את הכלי weave-heartbeat באמצעות ממשק הלולאה כדי לחקות שני צמתים:

  1. הוסף את כתובות ה- IPv6 שישמשו עבור כל צומת פעימות לב לממשק lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. הפעל את שרת Heartbeat fd00:0:1:1::1 והקצה לו 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. פתח חלון מסוף שני והפעל את לקוח Heartbeat fd00:0:1:1::2 IPv6 עם node-id של 2 וכתובת ה- IPv6 של הצומת הראשון כיעד עבור פעימות הלב:

     ./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. לאחר חיבור מוצלח, צומת 2 שולח את Heartbeats לצומת 1, והצומת 1 רושם פעימות לב שהתקבלו מצומת 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
     

פעימות לב עם מכשיר מדומה

weave-heartbeat ארוגות mock-device לשרת ולקוח כאחד. ניתן להדגים את אותה פונקציונליות של פעימות לב על ידי שימוש mock-device במקום שרת פעימות weave-heartbeat הראשון של weave-heartbeat :

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

מארג-פינג

השתמש weave-ping כדי לשלוח ולקבל הודעות פרופיל Echo בין שני צמתי Weave. עומס אקו מורכב מנתונים שרירותיים המסופקים על ידי הצומת המבקש וצפויים להיות מהדהדים בחזרה מילולית בתגובה. Echo מספק אמצעי לבדיקת קישוריות לרטנטיות של זמן רשת.

הד מצליח דורש צומת אחד לפעול כשרת (האזנה לבקשת Echo והיענותה) וצומת אחד לפעול כלקוח (שליחת בקשת Echo).

בדוק את הכלי weave-ping באמצעות ממשק הלולאה כדי לחקות שני צמתים:

  1. הוסף את כתובות ה- IPv6 שישמשו עבור כל צומת הד לממשק lo (loopback):
     sudo ifconfig lo add fd00:0:1:1::1/64
    sudo ifconfig lo add fd00:0:1:1::2/64 
  2. הפעל את שרת Echo 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. פתח חלון מסוף שני והפעל את לקוח Echo fd00:0:1:1::2 IPv6 עם מספר node-id של 2 וכתובת ה- IPv6 של הצומת הראשון כיעד לבקשת 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. לאחר חיבור מוצלח, צומת 1 יומן בקשות הד מהצומת 2, וצומת 2 רושם תגובות הד מהצומת 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
     

הד עם מכשיר מדומה

weave-ping מייצר מכשיר mock-device הן לשרת והן ללקוח. ניתן להדגים את אותה פונקציונליות Echo באמצעות mock-device במקום שרת ה- Echo הראשון של weave-ping :

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