עכשיו נראה איך פרוטוקול Thread מזהה כל מכשיר ברשת, סוגי הכתובות שבהם הם משתמשים כדי לתקשר זה עם זה.
טווחים
יש שלושה היקפים ברשת של פרוטוקול Thread ליצירת כתובות בפורמט Unicode:
- Link-Local – ניתן להגיע לכל הממשקים באמצעות שידור רדיו אחד
- רשת מקומית – כל הממשקים שניתן להגיע אליהם דרך אותה רשת פרוטוקול Thread
- גלובלי – כל הממשקים שניתן להגיע אליהם מחוץ לרשת בפרוטוקול Thread
שני ההיקפים הראשונים תואמים לקידומות שהוקצו על ידי רשת פרוטוקול Thread.
הקידומות מסוג Link-Local הן fe80::/16
ו-Mesh-Local הן הקידומות של
fd00::/8
.
חד-נתיב
יש כמה כתובות unicast של IPv6 שמזהות מכשיר Thread יחיד. לכל אחת מהן יש פונקציה שונה בהתאם להיקף ולתרחיש לדוגמה.
לפני שנפרט כל סוג, בואו נלמד על טיפוס נפוץ, שנקרא מאתר ניתוב (RLOC). ה-RLOC מזהה ממשק של פרוטוקול Thread על סמך מיקום בטופולוגיה של הרשת.
איך נוצר הכלי לאיתור ניתוב
לכל המכשירים מוקצים מזהה נתב ומזהה צאצא. כל נתב שומר על טבלה שכוללת את כל הצאצאים, שהשילוב ביניהם מזהה באופן ייחודי בטופולוגיה. לדוגמה, נבחן את הצמתים המודגשים בטופולוגיה הבאה, כאשר המספר בנתב (מחושבת) הוא מזהה הנתב, והמספר במכשיר קצה (עיגול) הוא מזהה הצאצא:
כל מזהה נתב של ילדים תואם להורה שלהם (הנתב). כי נתב הוא לא בן, מזהה הצאצא של נתב הוא תמיד 0. יחד, הערכים האלה ייחודיים לכל מכשיר ברשת פרוטוקול Thread, ומשמשים ליצירת ה-RLOC16, שמייצג את 16 הביטים האחרונים של ה-RLOC.
לדוגמה, כך מחושב ה-RLOC16 לצומת בפינה השמאלית העליונה (נתב) ID = 1 ומזהה צאצא = 1):
ה-RLOC16 הוא חלק ממזהה הממשק (IID), שתואם 64 הביטים האחרונים של כתובת ה-IPv6. אפשר להשתמש במזהי IID מסוימים כדי לזהות סוגים מסוימים של ממשקי Thread. לדוגמה, ה-IID של RLOC תמיד מופיע בפורמט הזה:
0000:00ff:fe00:RLOC16
ה-IID, בשילוב עם קידומת מסוג Mesh-Local, מוביל ל-RLOC. לדוגמה,
באמצעות קידומת רשת מקומית fde5:8dba:82e1:1::/64
, ה-RLOC לצומת שבו
RLOC16 = 0x401
הוא:
אפשר להשתמש באותה לוגיקה כדי לקבוע את ה-RLOC של כל הצמתים המודגשים בטופולוגיה לדוגמה שלמעלה:
עם זאת, מאחר שה-RLOC מבוסס על מיקום הצומת בטופולוגיה, ה-RLOC של צומת יכול להשתנות בהתאם לטופולוגיה משתנה.
לדוגמה, ייתכן שהצומת 0x400
הוסר מרשת פרוטוקול Thread. צמתים
0x401
ו-0x402
יוצרים קישורים חדשים לנתבים שונים, וכתוצאה מכך
לכל אחד מהם מוקצים RLOC16 ו-RLOC חדשים:
סוגי כתובות חד-כיווניים
ה-RLOC הוא רק כתובת אחת מבין כתובות רבות של IPv6 unicast שיכולות להיות במכשיר פרוטוקול Thread. קטגוריה נוספת של כתובות נקראות מזהי נקודות קצה (EID), לזהות ממשק Thread ייחודי במחיצה של רשת Thread. מספרי ה-EID הם ללא תלות בטופולוגיה של רשת פרוטוקול Thread.
בהמשך מפורטים הסוגים הנפוצים של Unicode.
כתובת קישור מקומית (LLA) |
|
---|---|
EID שמזהה ממשק של פרוטוקול Thread שניתן להגיע אליו באמצעות שידור רדיו אחד. | |
דוגמה | fe80::54db:881c:3845:57f4 |
IID | על בסיס כתובת מורחבת 802.15.4 |
היקף | קישור מקומי |
פרטים |
|
Mesh-Local EID (ML-EID) |
|
---|---|
EID שמזהה ממשק של פרוטוקול Thread, ללא תלות בטופולוגיה של הרשת. משמש לכניסה לממשק של פרוטוקול Thread באותה מחיצת פרוטוקול. נקראת גם 'כתובת מקומית ייחודית' (ULA). | |
דוגמה | fde5:8dba:82e1:1:416:993c:8399:35ab |
IID | אקראי, נבחר אחרי שהעמלה הושלמה |
היקף | רשת מקומית |
פרטים |
|
מאתר ניתוב (RLOC) |
|
---|---|
זיהוי ממשק Thread על סמך המיקום שלו בטופולוגיה של הרשת. | |
דוגמה | fde5:8dba:82e1:1::ff:fe00:1001 |
IID | 0000:00ff:fe00:RLOC16 |
היקף | רשת מקומית |
פרטים |
|
Anycast Locator (ALOC) |
|
---|---|
זיהוי ממשק Thread באמצעות חיפוש RLOC כאשר ה-RLOC של יעד לא ידוע. | |
דוגמה | fde5:8dba:82e1:1::ff:fe00:fc01 |
IID | 0000:00ff:fe00:fcXX |
היקף | רשת מקומית |
פרטים |
|
כתובת גלובלית חד-פעמית (GUA) |
|
---|---|
EID שמזהה ממשק של פרוטוקול Thread בהיקף גלובלי, מעבר לרשת של פרוטוקול Thread. | |
דוגמה | 2000::54db:881c:3845:57f4 |
IID |
|
היקף | גלובלי |
פרטים |
|
Multicast
פרוטוקול Multicast משמש להעברת מידע לכמה מכשירים בו-זמנית. תוך שימוש רשת פרוטוקול Thread, כתובות ספציפיות שמורות לשימוש בריבוי שידורים עם קבוצות של מכשירים, בהתאם להיקף.
כתובת IPv6 | היקף | החבילה נמסרה אל |
---|---|---|
ff02::1 |
קישור מקומי | כל סוגי ה-FTD וה-MED |
ff02::2 |
קישור מקומי | כל ה-FTD |
ff03::1 |
רשת מקומית | כל סוגי ה-FTD וה-MED |
ff03::2 |
רשת מקומית | כל ה-FTD |
יכול להיות שתבחינו שמכשירי סיום שינה (SED) לא נכללים נמען בטבלה Multicast שלמעלה. במקום זאת, פרוטוקול Thread מגדיר קישור מקומי והיקף מקומי ב-unicast מבוסס קידומת IPv6 Multicast משמשת לכל צומתי ה-Thread, כולל SED. שידורי Multicast האלה הכתובות משתנות בהתאם לרשת בפרוטוקול Thread, כי היא מבוססת על Unicode קידומת מסוג Mesh-Local (ראו RFC 3306 לקבלת פרטים נוספים על כתובות IPv6 מבוססות קידומת Unicode).
יש תמיכה גם בהיקפים שרירותיים מעבר לאלה שכבר רשומים בפרוטוקול Thread מכשירים.
Anycast
Anycast משמש לניתוב תנועה לממשק של פרוטוקול Thread כשה-RLOC של
היעד אינו ידוע. מאתר Anycast (ALOC) מזהה את המיקום של
כמה ממשקים במחיצת Thread. 16 הביטים האחרונים של ALOC,
שנקרא ALOC16, הוא בפורמט 0xfcXX
,
שמייצג את הסוג של ALOC.
לדוגמה, ALOC16 בין 0xfc01
ל-0xfc0f
שמור ל-DHCPv6
סוכנים. אם ה-RLOC של סוכן DHCPv6 הספציפי לא ידוע (אולי כי בגלל
הטופולוגיה של הרשת השתנתה), ניתן לשלוח הודעה לסוכן DHCPv6 ALOC אל
את ה-RLOC.
בפרוטוקול Thread מוגדרים ערכי ALOC16 הבאים:
ALOC16 | סוג |
---|---|
0xfc00 |
מנהיג |
0xfc01 – 0xfc0f |
סוכן DHCPv6 |
0xfc10 – 0xfc2f |
שירות |
0xfc30 – 0xfc37 |
קומישינר |
0xfc40 – 0xfc4e |
נציג Discovery של השכן |
0xfc38 – 0xfc3f 0xfc4f – 0xfcff |
בוצעה הזמנה |
Recap
מה למדת:
- רשת פרוטוקול Thread מורכבת משלושה היקפים: 'קישור-מקומי', 'רשת מקומית' ו'גלובלי'
- למכשיר פרוטוקול Thread יש כמה כתובות IPv6 מסוג unicast
- RLOC מייצג את המיקום של מכשיר ברשת בפרוטוקול Thread
- ML-EID הוא ייחודי להתקן Thread במחיצה, ואמור לשמש אפליקציות
- פרוטוקול Thread משתמש בריבוי שידורים כדי להעביר נתונים לקבוצות של צמתים ונתבים
- ה-thread משתמש ב- anycast כשה-RLOC של יעד לא ידוע
למידע נוסף על כתובות IPv6 של Thread, ראו סעיפים 5.2 ו-5.3 מפרט לשרשורים
בדיקת ההבנה
ff03::2
כתובת Multicast. מה זה אומר על המכשיר?ff03::2
. הם עושים זאת ב-Mesh-Local
היקף.