בדיקת רשת של פרוטוקול Thread באמצעות תצוגה חזותית

1. מבוא

5abd22afa2f2ee9a.png

מה זה פרוטוקול Thread, OpenThread, OTNS ו-Siri

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

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

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

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

מה תלמדו

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

ה-Codelab הזה מתמקד בשימוש ב-Silk עם 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 היא מהאפשרות סימולציה של רשתות פרוטוקולי Thread באמצעות OTNS, ואחרות הן מבניית רשת של פרוטוקול Thread עם לוחות nRF52840 ו-OpenThread.

3. משי

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

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

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

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

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

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

כלי בשם usbinfo מותקן כחלק מ-Silk, שבו אפשר להשתמש כדי למצוא את המספר הסידורי של הממשק ואת המספר של ממשק ה-USB. DutENTER הוא מספר ה-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 בפיתוח Codelab של רשת פרוטוקול 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 שמתארות את האופן שבו צריך להציג את רשת ה-Thread, במקום להריץ מספר תהליכי ot-cli כדי לדמות את הרשת. דף התצוגה החזותית אמור להיפתח באופן אוטומטי בדפדפן ללא אזור עריכה.

4dd5b41bf7e71334.png

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

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

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

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

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 פועל במצב אמיתי מציג באופן חזותי את רשת פרוטוקול Thread בממשק האינטרנט.

מה השלב הבא?

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

קריאה נוספת

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

מסמכי עזר