1. מבוא
מה זה Thread & OTNS
פרוטוקול Thread הוא פרוטוקול רשת אלחוטית מבוסס-IP בעל מתח נמוך, שמאפשר תקשורת מאובטחת ממכשיר למכשיר וממכשירים לענן. רשתות של פרוטוקול Thread יכולות להסתגל לשינויים בטופולוגיה כדי להימנע מנקודת כשל בודדת.
OpenThread ש-Google השיקה הוא הטמעת קוד פתוח של פרוטוקול Thread. למרות גודל הקוד הקטן וטביעת הרגל הפחמנית שלו, פרוטוקול OpenThread תומך בכל התכונות שמוגדרות במפרט פרוטוקול ה-Thread.
OpenThread Network ATM (OTNS) יכול לשמש להדמיה של רשתות פרוטוקול Thread על ידי הרצת צומתי OpenThread מדומים בפלטפורמות posix. OTNS מספק ממשק אינטרנט קל לשימוש (OTNS-Web) להמחשת רשתות Thread להדמיה ולהפעלה שלהן.
מה תלמדו
- התקנת OTNS ויחסי התלות שלו
- פיתוח OpenThread ל-OTNS
- איך להוסיף/להעביר/למחוק צמתים ב-OTNS-Web
- להשתמש בתכונות שימושיות נוספות של OTNS-Web כדי להפעיל את סימולציית הרשת
- אימות 'ללא נקודה אחת של כשל' של OpenThread
ה-Codelab הזה מתמקד ב-OTNS-CLI וב-OTNS-Web. תכונות אחרות של OTNS, כמו כתיבת סקריפט Python, לא נכללות.
למה תזדקק?
- Linux x86_64 או Mac OS.
- Git.
- לגרסה 1.13 ואילך.
- דפדפן אינטרנט. OTNS-Web משתמש בדפדפן אינטרנט להצגת סימולציות.
- Thread Primer: תצטרכו להכיר את העקרונות הבסיסיים של Thread כדי להבין מה מלמדים ב-Codelab הזה.
2. התקנה
התקנת Go
ל-OTNS צריך להתקין Go 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
.
התקנת otns
התקנת 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-אינטרנט
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 להמחשה ולניהול של הרשת. הוא מספק ייצוג חזותי של הצמתים, ההודעות והקישורים של רשת ה-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
. גוררים את הצומת כדי להיות ליד הליד שיצרתם דרך 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 הנוכחי (הגבול האדום) של שני הנתבים, בלחיצה אחת כדי לבחור אותו:
כבה רדיו
לוחצים על הלחצן בסרגל הפעולות כדי לכבות את הרדיו של צומת ה-Leader:
המנהל לא יוכל לשלוח או לקבל הודעות כשהרדיו כבוי.
ממתינים כ-12 שניות (בזמן הסימולציה) עד שהנתב השני יהפוך למנהיג החדש:
רשת פרוטוקול 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>
, כדי לציין את ההקשר הנוכחי של הצומת. אפשר להקליד פקודות של OpenThread 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.
מה השלב הבא?
כדאי לנסות כמה מ-Codelabs האלה...
- הדמיה של רשת פרוטוקול Thread באמצעות OpenThread
- הדמיה של רשת Thread באמצעות OpenThread ב-Docker
- פיתוח רשת פרוטוקול Thread באמצעות לוחות nRF52840 ו-OpenThread