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

1. מבוא

5abd22afa2f2ee9a.png

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

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

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

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

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

מה תלמדו

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

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

דרישות:

חומרה:

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

תוכנה:

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

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

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

יש להשלים את Codelab בסיסיים קודמים

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

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

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

הערה: לקבלת הנחיות להגדרה, יש לעיין במסמכי התיעוד המקושרים. דרישה מס' 1 היא מ-Simulate Thread Networks, תוך שימוש ב-OTNS, וחברות אחרות נלקחות מ-Build a Thread network with nRF52840 boards and OpenThread.

3. הגדרת משי

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

$ 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 מותקן כחלק משי, וניתן להשתמש בו כדי למצוא את המספר הסידורי של הממשק ואת מספר ממשק ה-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 של Build a Thread Network Codelab כדי להשתמש ב-nrfjprog. לאחר מכן, יש לחבר את כל הלוחים דרך יציאת ה-USB מסוג nRF אל המחשב המארח. ניתן לנתק את אותה קבוצת כבלים מ-USB למיקרו USB ביציאות J-Link ולחבר אותן ליציאות USB מסוג nRF של לוחות הפיתוח של nRF52840. לכן ניתן לבצע את 6 הכבלים האלה רק באמצעות בדיקת הבדיקה. כדי למנוע את הטרחה, צריך להשתמש ב-12 כבלים ולהתחבר אל שתי היציאות.

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

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

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

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

4dd5b41bf7e71334.png

6. הרצת מקרי ניסיון של משי עם תמיכה ב-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. נהדר

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

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

מה השלב הבא?

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

קריאה נוספת

נסו את openthread.io ואת Silk לצפייה במגוון מקורות מידע מסוג OpenThread.

מסמכים לעיון