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