1. מבוא
מה זה Thread ו-OTNS
שרשור הוא פרוטוקול רשת אלחוטי עם חשמל נמוך המבוסס על IP שמאפשר תקשורת מאובטחת בין מכשירים למכשיר. שרשורי רשת יכולים להתאים את עצמם לשינויים בטופולוגיה כדי להימנע מנקודה אחת.
OpenThread השקה של Google היא הטמעה של קוד פתוח בתקן של Thread. למרות גודל הקוד הקטן וטביעת הרגל שלו, OpenThread תומך בכל התכונות המוגדרות במפרט השרשור.
אפשר להשתמש בסימולטור של רשת OpenThread (OTNS) כדי לדמות רשתות של שרשורים. לשם כך, פועלים סימולציות של OpenThread בפלטפורמות posix. OTNS מספק ממשק אינטרנט קל לשימוש (OTNS-Web) להצגה ולהפעלה של סימולציות של שרשורים ברשת.
מה תלמדו
- התקנת OTNS והתלות שלו
- בניית OpenThread ל-OTNS
- איך להוסיף/להעביר/למחוק צמתים ב-OTNS-Web
- שימוש בתכונות שימושיות אחרות של OTNS-Web להפעלת הסימולציה של הרשת
- אימות האיכות של נקודת כשל לא נקודתית ב-OpenThread
ה-Codelab הזה מתמקד ב-OTNS-CLI וב-OTNS-Web. תכונות אחרות של OTNS, כגון סקריפט Python, אינן נכללות.
דרישות:
- Linux x86_64 או Mac OS.
- Git.
- נכנסים ל- 1.11+.
- דפדפן אינטרנט. OTNS-Web משתמש בדפדפן אינטרנט להצגת סימולציות.
- Primer Primer. תצטרכו להבין את העקרונות הבסיסיים של שרשור כדי להבין מה נלמד ב-Codelab הזה.
2. התקנה
להתקנת Go
כדי לבנות OTNS, יש לעבור ל-Go 1.11 ואילך.
- התקן את Go מהכתובת https://golang.org/dl/
- הוספה של
$(go env GOPATH)/bin
(בדרך כלל$HOME/go/bin
) אל$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
קבלת קוד OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
תלות של תוסף
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
ייתכן שתתבקש להזין סיסמה עבור sudo
.
התקנת OTN
התקנת האפליקציה otns
במכשיר של $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
האם האפליקציה otns
מותקנת נכון?
- יש להריץ את
which otns
כדי לבדוק אם ניתן לחפש את קובץ ההפעלהotns
ב-$PATH.
- אם הפקודה
otns
לא נמצאה, יש לוודא שהוספת את$(go env GOPATH)/bin
אל$PATH.
3. בניית OpenThread ל-OTNS
קבלת קוד OpenThread מ-GitHub
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
בנייה של OpenThread באמצעות OTNS=1
$ cd ~/src/openthread $ ./script/bootstrap $ ./bootstrap $ make -f examples/Makefile-simulation OTNS=1
ניתן למצוא את קובצי ההפעלה של OpenThread בספרייה output
:
Linux
$ ls ~/src/openthread/output/simulation/bin ot-cli-ftd ot-cli-mtd ot-ncp-ftd ot-ncp-mtd ot-rcp
macOS
$ ls ~/src/openthread/output/simulation/bin ot-cli-ftd ot-cli-mtd ot-ncp-ftd ot-ncp-mtd ot-rcp
עכשיו הגיע הזמן להפעיל את OTNS...
4. הפעלת OTNS
הרצה otns
:
$ cd ~/src/openthread/output/simulation/bin $ otns > ← OTNS-CLI prompt
כשהתהליך יסתיים בהצלחה, OTNS ייכנס לקונסולת CLI (OTNS-CLI
) ויופעל דפדפן אינטרנט להצגה ולניהול של הרשת (OTNS-Web
):
אם אתם יכולים לראות רק דף ריק בפורמט OTNS-Web, רוב הסיכויים ש-WebGL לא מופעל בדפדפן שלכם. כדאי לעיין במאמרhttps://superuser.com/a/836833 איך מפעילים את WebGL.
בסעיפים הבאים נסביר איך לנהל סימולציות של OTNS דרך OTNS-CLI
ו-OTNS-Web
.
5. היכרות עם OTNS-CLI ו-OTNS-Web
OTNS-CLI
OTNS-CLI
מספק ממשק של שורת פקודה (LILI) לניהול סימולציות של OTNS.
$ cd ~/src/openthread/output/simulation/bin $ otns > ← OTNS-CLI prompt
אפשר להקליד בפקודות דרך OTNS-CLI
. רשימת הפקודות המלאה מפורטת בחומר העזר בנושא CLI של OTNS. אל דאגה, אתה רק תשתמש בכמה מהפקודות האלה ב-Codelab הזה.
OTNS-אינטרנט
OTNS-Web
הוא הכלי להצגה ולניהול של רשתות OTNS. הוא מספק ייצוג חזותי של הצמתים, ההודעות והקישורים של רשת ה-thread. שימו לב לרכיבים השונים של OTNS-Web
:
6. הוסף צמתים
הוספת צמתים באמצעות OTNS-CLI
יש להוסיף נתב במיקום (300, 100)
> add router x 300 y 100 1 Done
אמור להופיע צומת שנוצר בOTNS-Web
. הצומת מתחיל כ'נתב' והופך למוביל בתוך מספר שניות:
הוספת צמתים באמצעות OTNS-CLI
> add fed x 200 y 100 2 Done > add med x 400 y 100 3 Done > add sed x 300 y 200 4 Done
ממתינים מספר שניות עד שהצמתים יתמזגו למחיצה אחת. הצמתים מוצגים ב-OTNS-WEB
:
הוספת צמתים לפי OTNS-Web
אפשר גם להוסיף צמתים דרך OTNS-Web
. לוחצים על הלחצן New Router
של Action Bar
. אתה אמור לראות צומת שנוצר מעל ללחצן New Router
. יש לגרור את הצומת כך שיהיה קרוב ל-Leader שנוצר דרך OTNS-CLI
. כל הצמתים צריכים להתמזג בסופו של דבר למחיצה אחת:
אפשר גם ללחוץ על הלחצנים FED, MED ו-SED בסרגל הפעולות כדי ליצור סוגים אחרים של צמתים. גוררים אותם למיקומים ליד צמתים קיימים כדי לצרף אותם לרשת שרשורים:
עכשיו יצרתם רשת שרשורים של מחיצה אחת שמכילה צמתים רבים. בקטע הבא, נתאים את מהירות הסימולציה כדי להאיץ את הסימולציה.
7. שינוי המהירות
נכון לעכשיו הסימולציה צריכה לפעול במהירות של 1X
. כלומר, הזמן שחלף עד עכשיו הוא זהה לזמן בפועל מאז שיצרנו את הצומת הראשון.
התאמת המהירות דרך OTNS-CLI
ניתן לשנות את מהירות הסימולציה באמצעות OTNS-CLI
.
הגדרת מהירות הסימולציה ל-100X
> speed 100 Done
אתם אמורים לראות את הצמתים ששולחים הודעות בתדירות גבוהה בהרבה מבעבר.
הגדרת מהירות הסימולציה ל-MAX
> speed max Done
כעת, OTNS מנסה לבצע את הסימולציה הטובה ביותר האפשרית, לכן אתם אמורים לראות צמתים השולחים כמות גדולה של הודעות.
הדמיית השהיה
> speed 0 Done
הגדרת מהירות הסימולציה ל-0
משהה את הסימולציה.
שחזור סימולציה במהירות רגילה
> speed 1 Done
הגדרת הסימולציה של המהירות לערך גדול מ-0
תגרום להמשך הסימולציה.
התאמת המהירות דרך OTNS-Web
לחצני בקרת מהירות
איתור הלחצנים לבקרת מהירות ב
Action Bar
הנתונים. הלחצנים מציגים את מהירות הסימולציה הנוכחית וניתן להשתמש בהם כדי לשנות את מהירות הסימולציה ולהשהות/להמשיך את הסימולציה.
סימולציית מהירות
ניתן לזרז את הסימולציה על ידי לחיצה על הלחצן עד שהמהירות תגיע ל-
MAX
: .
סימולציית האטה
כדי להאט את הסימולציה, לוחצים על הלחצן .
הדמיית השהיה
יש ללחוץ על הלחצן כדי להשהות את הסימולציה בזמן שהיא פועלת. הלחצן ישתנה ל
.
המשך הסימולציה
יש ללחוץ על הלחצן כדי להמשיך את הסימולציה כאשר היא מושהית. הלחצן ישתנה בחזרה ל-
.
הגדרת מהירות הסימולציה ל-10X
כדי לחסוך זמן אפשר להשתמש בתכונה
OTNS-CLI
כדי להתאים את מהירות הסימולציה ל-
10X
כך נוכל לזהות שינויים בטופולוגיה ברשת במהירות רבה יותר.
> speed 10 Done
8. הפעלת/כיבוי רדיו
עכשיו הסימולציה צריכה לכלול 2 נתבים (צורה משושה) וילדים רבים, במהירות גבוהה פי 10.
כדי למצוא את ה-Leader הנוכחי (גבול אדום) של שני הנתבים, יש ללחוץ עליו פעם אחת כדי לבחור בו:
כבה רדיו
יש ללחוץ על הלחצן בסרגל הפעולות כדי להשבית את הרדיו של צומת המנהיגים:
המוביל לא יוכל לשלוח או לקבל הודעות כאשר הרדיו כבוי.
יש להמתין כ-12 שניות (זמן הדמיה של 120 שניות) עד שהנתב השני יהפוך למנהיג החדש:
רשת Thread מתאוששת באופן אוטומטי מכשל ב-Leader על ידי יצירת מחיצה חדשה עם Leader חדש. למחיצה החדשה יש גם צבע מחיצה חדש.
הפעל רדיו
בוחרים ב'מנהיג' שהרדיו שלו הושבת. יש ללחוץ על הלחצן ב-
Action Bar
כדי לשחזר את קישוריות הרדיו:
המנהיג צריך להתחבר מחדש לרשת לאחר חידוש הקישורית לרדיו.
9. העברת צמתים
OTNS מאפשר למשתמשים להעביר צמתים בקלות באמצעות OTNS-CLI
או OTNS-Web
.
העברת צומת דרך OTNS-CLI
העברת צומת 5 למיקום חדש:
> move 5 600 300 Done
מאחר שצומת 5 נמצא הרחק מהנתב השני, עליהם לאבד את הקישוריות זה לזה, ולאחר כ-12 שניות (120 שניות בזמן הסימולציה) הופכים למובילים בקטגוריית המחיצה שלהם:
העברת צומת דרך OTNS-Web
כדי לגרור את צומת 5 למיקום המקורי, גוררים אותו. שתי המחיצות צריכות להתמזג חזרה למחיצה אחת:
10. מחיקת צמתים
מחיקת צמתים דרך OTNS-CLI
מחיקת צומת 8:
> del 8 Done
צומת 8 אמור להיעלם מהסימולציה:
מחיקת צמתים דרך OTNS-Web
יש לבחור את צומת 5 וללחוץ על הלחצן ב-
Action Bar
כדי למחוק את צומת 5:
Node 1
צריך להפוך למנהיג, ו-Node 7
צריך להתנתק. אין לו אפשרות להגיע לנתב כלשהו.
ניקוי סימולציה (מחיקת כל הצמתים)
אפשר לנקות את הסימולציה על ידי מחיקת כל הצמתים דרך OTNS-Web
.
יש ללחוץ על הלחצן ב-
Action Bar.
כל הצמתים ייעלמו בבת אחת.
לפני שממשיכים...
יש להוסיף לצומת הזה כמה צמתים, כדי שניתן יהיה להמשיך במדריך הזה.
11. הקשר הצומת OTNS-CLI
OTNS-CLI
מספק מצב הקשר לצומת המאפשר אינטראקציה קלה עם הצמתים, על מנת לעזור למפתחים לאבחן את הסטטוס של הצומת.
מעבר למצב צומת של צומת
מזינים את הקשר הצומת של צומת 1:
> node 1 Done node 1>
בקשת ה-CLI השתנתה ל-node 1>
, ופירושה הקשר של הצומת הנוכחי. ניתן להקליד פקודות CTTread CLI כדי לבצע את הצומת כאילו שאתה יוצר אינטראקציה עם הצומת ישירות.
הפעלת פקודות בהקשר של הצומת
node 1> state leader Done node 1> channel 11 Done node 1> panid 0xface Done node 1> networkname OpenThread Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:d800 fdde:ad00:beef:0:2175:8a67:1000:6352 fe80:0:0:0:2075:82c2:e9e9:781d Done
מעבר להקשר צומת אחר
node 1> node 2 Done node 2>
יציאה מהקשר הצומת
node 1> exit Done >
12. נהדר
מזל טוב, ביצעת בהצלחה את סימולציית ה-OTNS הראשונה שלך!
למדת איך להתקין OTNS ואת יחסי התלות שלו. בנית את OpenThread באירועי OTNS. התחלת סימולציה של OTNS באמצעות מופעי הדמיה של OpenThread. למדת איך לתמרן את הסימולציה בדרכים שונות, הן ב-OTNS-CLI
והן ב-OTNS-Web
.
עכשיו אתם יודעים מה זה OTNS ואיך אתם יכולים להשתמש ב-OTNS כדי לדמות רשתות OpenThread.
מה השלב הבא?
הנה כמה ממעבדות הקוד...
- סימולציה של רשת Thread באמצעות OpenThread
- סימולציה של רשת Thread באמצעות OpenThread ב-Dock
- בניית רשת שרשורים עם לוחות nRF52840 ו-OpenThread