1. מבוא
מה זה פרוטוקול 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 בסיסיים קודמים
- Thread Primer: תצטרכו להכיר את העקרונות הבסיסיים של Thread כדי להבין מה מלמדים ב-Codelab הזה.
- בניית רשת פרוטוקול Thread עם לוחות nRF52840 ו-OpenThread ה-Codelab הזה יוצא מנקודת הנחה שבנית בהצלחה רשת בפרוטוקול Thread.
- סימולציה של רשתות Thread באמצעות OTNS. פלטפורמת ה-Codelab הזו יוצאת מנקודת הנחה שהרצתם את הכלי OTNS.
בדיקת הדרישות המוקדמות לחבילה
חשוב לוודא שכל הדרישות המוקדמות מתקיימות.
- מריצים את הפקודה
which otns
כדי לבדוק אם אפשר לחפש את קובץ ההפעלהotns
ב-$PATH
. - מריצים את הפקודה
which wpantund
כדי לוודא שהשירותwpantund
זמין. - צריך לוודא שחבילות הכלים של 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
כדי לדמות את הרשת. דף התצוגה החזותית אמור להיפתח באופן אוטומטי בדפדפן ללא אזור עריכה.
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 באינטרנט.
בפינה הימנית העליונה מופיעים נתונים סטטיסטיים של תצוגה חזותית, גרסת OT וכותרת הבדיקה. בפינה הימנית התחתונה יש פקדים של חלון היומן, שמוצג בצד שמאל. בהתחלה, המערכת מוסיפה צמתים אבל לא נוצרת רשת. ככל שהבדיקה מתקדמת, המצבים והתפקידים של כל צומת משתנים והקישורים נוצרים.
7. מזל טוב
איזה כיף, הרצת בהצלחה בדיקת משי על מכשירי Thread פיזיים וראיתי את התכונה הזו באמצעות OTNS!
ביצעת בדיקת משי באמצעות לוחות פיתוח עם קושחה עם תמיכה ב-OTNS. הלוחות מדווחים על הסטטוס שלהם לשרת משי, שעוקב אחר כולם וצובר אותם, ושולח אותם לשירות OTNS יחד עם פרטים נוספים של הבדיקה. OTNS פועל במצב אמיתי מציג באופן חזותי את רשת פרוטוקול Thread בממשק האינטרנט.
מה השלב הבא?
כדאי לנסות להריץ מקרי בדיקה אחרים של OpenThread שכלולים בחבילת Silk.
קריאה נוספת
ב-openthread.io וב-Silk יש מגוון משאבים של OpenThread.