1. מבוא
מה זה Thread ו-OTNS
Thread הוא פרוטוקול של רשת אלחוטית מבוססת-IP עם צריכת אנרגיה נמוכה. פרוטוקול זה מאפשר תקשורת מאובטחת בין מכשירים לבין מכשירים לענן. רשתות שרשור יכולות להסתגל לשינויים בטופולוגיה כדי למנוע נקודת כשל אחת.
OpenThread ש-Google פרסמה הוא הטמעת קוד פתוח של Thread. על אף גודל הקוד הקטן וטביעת הרגל של הזיכרון, מערכת OpenThread תומכת בכל התכונות שהוגדרו במפרט השרשורים.
אפשר להשתמש בסימולטור של רשת OpenThread (OTNS) כדי לדמות רשתות שרשור על ידי הדמיה של צומתי OpenThread בפלטפורמות של posix. פרוטוקול OTNS מספק ממשק אינטרנט קל לשימוש (OTNS-Web) להמחשה והפעלה של רשתות שרשור מדומות.
מה תלמדו
- התקנת OTNS ויחסי התלות שלו
- פיתוח פרוטוקול OpenThread עבור OTNS
- איך להוסיף/להעביר/למחוק צמתים ב-OTNS-Web
- שימוש בתכונות שימושיות אחרות של OTNS-Web כדי להפעיל את סימולציית הרשת
- בדיקה אם נקודת הכשל היא נקודת כשל אחת ב-OpenThread
מעבדה זו מתמקדת ב-OTNS-CLI וב-OTNS-Web. תכונות אחרות של OTNS, כגון סקריפט של Python, אינן נכללות.
מה הדרישות כדי להצטרף לתוכנית?
- Linux x86_64 או Mac OS
- Git.
- גרסה 1.13 ואילך.
- דפדפן אינטרנט. OTNS-Web משתמש בדפדפן אינטרנט להצגת סימולציות.
- Thread Primer. צריך להכיר את המושגים הבסיסיים של Thread כדי להבין מה מלמד ב-Codelab הזה.
2. התקנה
להתקנת Go
כדי ליצור פרוטוקול OTNS, נדרשת גרסה 1.13 ואילך.
- להתקין את 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
.
התקנת OTS
התקנת 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/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
קובצי ההפעלה של OpenThread מופיעים בספרייה build
:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
הגיע הזמן להפעיל את OTNS...
4. הפעלת OTNS
מריצים את otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ 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
מספקת ממשק שורת פקודה (CLI) לניהול סימולציות ב-OTNS.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
אפשר להקליד פקודות באמצעות OTNS-CLI
. בחומרי העזר של OTNS CLI יש רשימה מלאה של פקודות. אל דאגה, בכוונתך להשתמש רק בכמה מהפקודות האלה ב-Codelab הזה.
פרוטוקול OTNS
OTNS-Web
הוא הכלי של OTNS להצגה ולניהול של הרשת. הוא מספק ייצוג חזותי של הצמתים, ההודעות והקישורים של רשת הסימולציה. שימו לב לרכיבים השונים של 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
אמור להופיע. יש לגרור את הצומת כדי להיות ליד הליד שיצרת דרך OTNS-CLI
. כל הצמתים צריכים להתמזג בסופו של דבר למחיצה אחת:
כמו כן, כדי ליצור סוגים אחרים של צמתים, יש ללחוץ גם על לחצני ה-FED, MED ו-SED בסרגל הפעולות. גוררים אותם למיקומים ליד הצמתים הקיימים כדי לצרף אותם לאותה רשת Thread:
עכשיו יצרתם רשת Thread עם מחיצה אחת שמכילה הרבה צמתים. בקטע הבא אנחנו מתכוונים להתאים את מהירות הסימולציה כדי שהסימולציה תפעל מהר יותר.
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 שניות) כדי שהנתב השני יהפוך למנהיג החדש:
רשת ה-Threading משחזרת את כשל ה-Leader באופן אוטומטי על ידי יצירת מחיצה חדשה עם Leader חדש. למחיצה החדשה יש גם צבע מחיצה חדש.
הפעל רדיו
יש לבחור את הליד שהרדיו שלו הושבת. יש ללחוץ על הלחצן ב-
Action Bar
כדי לשחזר את קישוריות הרדיו:
ה-Leader צריך להתחבר מחדש לרשת לאחר שחזור הקישוריות ברדיו.
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>
, מה שמציין את ההקשר הנוכחי של הצומת. אפשר להקליד פקודות CLI של OpenThread כדי לבצע אותן בצומת, כאילו שמקיימים אינטראקציה ישירות עם הצומת.
ביצוע פקודות בהקשר של צומת
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.
המאמרים הבאים
בדקו כמה מ-Codelabs אלה...
- סימולציה של רשת Thread עם OpenThread
- סימולציה של רשת Thread באמצעות OpenThread ב-Docker
- בניית רשת Thread עם לוחות nRF52840 ו-OpenThread