בדיקה של רשת Thread עם תצוגה חזותית

1. מבוא

5abd22afa2f2ee9a.png

מה זה Thread, OpenThread, OTNS ו-Silk?

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

OpenThread ש-Google פרסמה הוא הטמעת קוד פתוח של Thread. על אף גודל הקוד הקטן וטביעת הרגל של הזיכרון, מערכת OpenThread תומכת בכל התכונות שהוגדרו במפרט השרשורים.

אפשר להשתמש בסימולטור של רשת OpenThread (OTNS) כדי לדמות רשתות שרשור על ידי הדמיה של צומתי OpenThread בפלטפורמות של posix. פרוטוקול OTNS מספק ממשק אינטרנט קל לשימוש (OTNS-Web) להמחשה והפעלה של רשתות שרשור מדומות.

Silk היא פלטפורמת בדיקה אוטומטית לחלוטין לאימות הביצועים של OpenThread, של התכונות ושל ביצועי המערכת במכשירים אמיתיים.

מה תלמדו

  • מסגרת אימות הפונקציונליות של OpenThread: Silk
  • יצירת OpenOpen למכשירים אמיתיים כשתכונת OTNS מופעלת
  • שימוש בממשק OTNS-Web כדי לעקוב אחר הסטטוס של רשת ה-thread שנוצרה על ידי הרצת מקרי בדיקה של משי

מעבדה זו מתמקדת בשימוש ב-SILS ב-OTNS. תכונות אחרות של משי ו-OTNS לא נכללות.

מה הדרישות כדי להצטרף לתוכנית?

חומרה:

  • 6 לוחות נורדיים למחצה nRF52840
  • 6 כבלי USB למיקרו USB כדי לחבר את הלוחות
  • מפצל USB

תוכנה:

  • ב-Linux x86_64.
  • Git.
  • גרסה 1.11 ואילך.
  • דפדפן אינטרנט. OTNS-Web משתמש בדפדפן אינטרנט להצגת סימולציות.

דרישות מוקדמות:

2. דרישות מוקדמות

השלמת ה-Codelabs הבסיסיים הקודמים

בדיקת הדרישות המוקדמות לגבי החבילה

בואו נוודא שכל הדרישות המוקדמות מתקיימות.

  1. מריצים את הפקודה which otns כדי לבדוק אם אפשר להפעיל את קובץ ההפעלה otns ב-$PATH.
  2. מריצים את הפקודה which wpantund כדי לוודא ש-wpantund זמין.
  3. חשוב לוודא שכל חבילות הכלים של ARM GNU, J-Link ו-nrfjprog זמינות.

הערה: הנחיות לגבי הגדרה מפורטות במסמכי התיעוד המקושרים. דרישה מוקדמת מס' 1 היא מ-סימולציה של שרשורי רשתות באמצעות OTNS ואחרים מתבצעת מבניית רשת Thread עם לוחות nRF52840 ו-OpenThread.

3. הגדרת משי

כדי לשכפל את המשי ולהגדיר את הסביבה, מריצים את הפקודות הבאות בספריית המקור:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

הגדרה של קובץ התצורה של החומרה

כדי לאפשר למשי לאסוף את משאבי החומרה הזמינים לבדיקה למכונה שלך, יש להגדיר קובץ hwconfig.ini בפורמט הבא:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

כלי בשם usbinfo מותקן כחלק מ-Slik, המאפשר לאתר את המספר הסידורי של הממשק ואת מספר ממשק ה-USB. DutSerial הוא מספר ה-SN מודפס על הצ'יפ או מוצג על ידי usbinfo למוצרי J-Link.

השדות LayoutCenter ו-LayoutRadius בקטע [DEFAULT] מגדירים את צורת הפריסה כשהמכשירים מוצגים בממשק המשתמש באינטרנט. מומלץ להגדיר עבורם ערכים בהתחלה.

לאחר מכן הוא מגדיר קטע לכל מכשיר בדיקה ומספק את פרטי החומרה הרלוונטיים.

4. הידור OpenThread עם הפעלת OTNS

תמונה של בניין מהבהבת

כברירת מחדל, מכשירי OpenThread לא פולטים הודעות שקשורות ל-OTNS. כדי לאפשר ללוחות הפיתוח לפלט מסרים של סטטוס חיוניים לממשקי יומן שחיוניים להצגה חזותית של OTNS, מריצים את הפקודה הבאה בספריית המקור של OpenThread כדי לבנות תמונה של FTD, ולהמיר אותה לפורמט הקסדצימלי.

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

כדי להבהב את לוחות העריכה, בצעו את ההוראות בשלב 4 של בניית קוד רשת Thread כדי להשתמש ב-nrfjprog. לאחר מכן, יש לחבר את כל הלוחות באמצעות יציאת ה-nRF USB למכונה המארחת. ניתן לנתק את אותה קבוצה של כבלים מ-USB למיקרו USB מיציאות J-Link ולחיבורי nRF USB של לוחות nRF52840. כך שניתן לבצע רק את 6 הכבלים האלה כדי לבצע בדיקה. כדאי להשתמש ב-12 כבלים ולחבר לשתי היציאות כדי להימנע מהטרחה.

5. הפעלת שרת OTNS במצב אמיתי

הרצת OTNS עם פרמטרים שמוגדרים כברירת מחדל מאפשרת למשתמש לדמות רשת Thread. כדי להשתמש בו ככלי להצגה ברשת פיזית בפועל, יש להפעיל אותו באמצעות:

otns -raw -real -ot-cli otns-silk-proxy

הארגומנטים האלה אומרים ל-OTNS לצפות להודעות gRPC ו-UDP שמתארות איך צריך להמחיש את רשת השרשורים במקום להריץ מספר תהליכים של ot-cli כדי לדמות את הרשת. הדפדפן צריך לפתוח באופן אוטומטי את דף התצוגה החזותית עם לוח הציור הריק.

4dd5b41bf7e71334.png

6. הרצת מקרי בדיקה של משי בתמיכה ב-OTNS

Silk היא פלטפורמת בדיקה אוטומטית לחלוטין לאימות הביצועים של פיצ'רים של OpenThread, של התכונות ושל המערכת באמצעות מכשירים אמיתיים. ההוראות בפרויקט README מתייחסות לאופן השימוש בו.

קובץ silk_run_test.py שנמצא ב-silk/unit_tests מספק לך יתרון. Sky מספק תמיכה ב-OTNS בעת הפעלת בקשת בדיקה. מכיוון ששירות המצב האמיתי של OTNS כבר פועל באופן מקומי, אנחנו פשוט צריכים לשנות את הקובץ silk_run_test.py עם המיקומים הרצויים עבור קובץ יומן של פלט, סקריפטים של בדיקת קלט וקובץ hwconfig.ini. הארגומנט -s localhost מורה ל- המשי לשלוח הודעות OTNS ל-localhost.

לדוגמה, אפשר להריץ את הבדיקה 'ot_test_form_network.py' באמצעות השינויים הבאים בקובץ silk_run_test.py. /opt/openthread_test/ הוא נתיב ברירת המחדל שבו המשי משתמש בפלט יומן ובקובץ תצורה, אבל אפשר להשתמש בכל נתיב.

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

התצוגה החזותית של הטופולוגיה של הרשת שנוצרה תופיע בממשק המשתמש באינטרנט של OTNS.

ee443b66e0a6620b.png

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

5c38e2c72519e620.png

7. מזל טוב

מזל טוב, הפעלת בדיקת משי על מכשירי Thread פיזיים ומראה אותה באמצעות OTNS!

הפעלת בדיקת משי באמצעות לוחות פיתוח מהבהבים עם קושחה עם תמיכה ב-OTNS. הלוחות מדווחים על הסטטוס שלהם לשרת משי, שעוקב אחרי כולם וקובע אותם ושולח אותם לשירות OTNS יחד עם מידע נוסף לבדיקה. פרוטוקול OTNS שפועל במצב אמיתי ממחיש את רשת השרשורים בממשק האינטרנט.

המאמרים הבאים

כדאי לנסות להריץ מקרי בדיקה אחרים של OpenThread שכלולים בחבילת המשי.

קריאה נוספת

באתר openthread.io ו-Silk יש מגוון משאבים של OpenThread.

מסמכי עזר