כתובות IPv6

הצגת המקור ב-GitHub

עכשיו נראה איך פרוטוקול Thread מזהה כל מכשיר ברשת, סוגי הכתובות שבהם הם משתמשים כדי לתקשר זה עם זה.

טווחים

היקפי הרשאות OT

יש שלושה היקפים ברשת של פרוטוקול Thread ליצירת כתובות בפורמט Unicode:

  • Link-Local – ניתן להגיע לכל הממשקים באמצעות שידור רדיו אחד
  • רשת מקומית – כל הממשקים שניתן להגיע אליהם דרך אותה רשת פרוטוקול Thread
  • גלובלי – כל הממשקים שניתן להגיע אליהם מחוץ לרשת בפרוטוקול Thread

שני ההיקפים הראשונים תואמים לקידומות שהוקצו על ידי רשת פרוטוקול Thread. הקידומות מסוג Link-Local הן fe80::/16 ו-Mesh-Local הן הקידומות של fd00::/8.

חד-נתיב

יש כמה כתובות unicast של IPv6 שמזהות מכשיר Thread יחיד. לכל אחת מהן יש פונקציה שונה בהתאם להיקף ולתרחיש לדוגמה.

לפני שנפרט כל סוג, בואו נלמד על טיפוס נפוץ, שנקרא מאתר ניתוב (RLOC). ה-RLOC מזהה ממשק של פרוטוקול Thread על סמך מיקום בטופולוגיה של הרשת.

איך נוצר הכלי לאיתור ניתוב

לכל המכשירים מוקצים מזהה נתב ומזהה צאצא. כל נתב שומר על טבלה שכוללת את כל הצאצאים, שהשילוב ביניהם מזהה באופן ייחודי בטופולוגיה. לדוגמה, נבחן את הצמתים המודגשים בטופולוגיה הבאה, כאשר המספר בנתב (מחושבת) הוא מזהה הנתב, והמספר במכשיר קצה (עיגול) הוא מזהה הצאצא:

הטופולוגיה של OTRLOC

כל מזהה נתב של ילדים תואם להורה שלהם (הנתב). כי נתב הוא לא בן, מזהה הצאצא של נתב הוא תמיד 0. יחד, הערכים האלה ייחודיים לכל מכשיר ברשת פרוטוקול Thread, ומשמשים ליצירת ה-RLOC16, שמייצג את 16 הביטים האחרונים של ה-RLOC.

לדוגמה, כך מחושב ה-RLOC16 לצומת בפינה השמאלית העליונה (נתב) ID = 1 ומזהה צאצא = 1):

הארכה RLOC16

ה-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 של כל הצמתים המודגשים בטופולוגיה לדוגמה שלמעלה:

הטופולוגיה של OT עם כתובת

עם זאת, מאחר שה-RLOC מבוסס על מיקום הצומת בטופולוגיה, ה-RLOC של צומת יכול להשתנות בהתאם לטופולוגיה משתנה.

לדוגמה, ייתכן שהצומת 0x400 הוסר מרשת פרוטוקול Thread. צמתים 0x401 ו-0x402 יוצרים קישורים חדשים לנתבים שונים, וכתוצאה מכך לכל אחד מהם מוקצים RLOC16 ו-RLOC חדשים:

טופולוגיה OTA לאחר שינוי

סוגי כתובות חד-כיווניים

ה-RLOC הוא רק כתובת אחת מבין כתובות רבות של IPv6 unicast שיכולות להיות במכשיר פרוטוקול Thread. קטגוריה נוספת של כתובות נקראות מזהי נקודות קצה (EID), לזהות ממשק Thread ייחודי במחיצה של רשת Thread. מספרי ה-EID הם ללא תלות בטופולוגיה של רשת פרוטוקול Thread.

בהמשך מפורטים הסוגים הנפוצים של Unicode.

EID שמזהה ממשק של פרוטוקול Thread שניתן להגיע אליו באמצעות שידור רדיו אחד.
דוגמהfe80::54db:881c:3845:57f4
IIDעל בסיס כתובת מורחבת 802.15.4
היקףקישור מקומי
פרטים
  • השירות משמש לזיהוי שכנים, להגדרת קישורים ולהעברת מידע על ניתוב
  • לא כתובת לניתוב
  • תמיד יש קידומת fe80::/16

Mesh-Local EID (ML-EID)

EID שמזהה ממשק של פרוטוקול Thread, ללא תלות בטופולוגיה של הרשת. משמש לכניסה לממשק של פרוטוקול Thread באותה מחיצת פרוטוקול. נקראת גם 'כתובת מקומית ייחודית' (ULA).
דוגמהfde5:8dba:82e1:1:416:993c:8399:35ab
IIDאקראי, נבחר אחרי שהעמלה הושלמה
היקףרשת מקומית
פרטים
  • לא משתנה כי הטופולוגיה משתנה
  • מיועד לשימוש באפליקציות
  • תמיד יש תחילית fd00::/8

מאתר ניתוב (RLOC)

זיהוי ממשק Thread על סמך המיקום שלו בטופולוגיה של הרשת.
דוגמהfde5:8dba:82e1:1::ff:fe00:1001
IID0000:00ff:fe00:RLOC16
היקףרשת מקומית
פרטים
  • נוצר כשמכשיר מתחבר לרשת
  • להעברת מערכי נתונים מסוג IPv6 ברשת בפרוטוקול Thread
  • שינויים בעקבות שינויים בטופולוגיה
  • בדרך כלל לא נמצא בשימוש באפליקציות

Anycast Locator (ALOC)

זיהוי ממשק Thread באמצעות חיפוש RLOC כאשר ה-RLOC של יעד לא ידוע.
דוגמהfde5:8dba:82e1:1::ff:fe00:fc01
IID0000:00ff:fe00:fcXX
היקףרשת מקומית
פרטים
  • fcXX = יעד ALOC, שמבצע חיפוש של ה-RLOC המתאים
  • בדרך כלל לא נמצא בשימוש באפליקציות

כתובת גלובלית חד-פעמית (GUA)

EID שמזהה ממשק של פרוטוקול Thread בהיקף גלובלי, מעבר לרשת של פרוטוקול Thread.
דוגמה2000::54db:881c:3845:57f4
IID
  • הסכם רמת שירות – מוקצה באופן אקראי על ידי המכשיר עצמו
  • DHCP – הוקצה על ידי שרת DHCPv6
  • ידני – הוקצתה על ידי שכבת האפליקציה
היקףגלובלי
פרטים
  • כתובת IPv6 ציבורית
  • תמיד יש קידומת 2000::/3

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 מנהיג
0xfc010xfc0f סוכן DHCPv6
0xfc100xfc2f שירות
0xfc300xfc37 קומישינר
0xfc400xfc4e נציג Discovery של השכן
0xfc380xfc3f
0xfc4f0xfcff
בוצעה הזמנה

Recap

מה למדת:

  • רשת פרוטוקול Thread מורכבת משלושה היקפים: 'קישור-מקומי', 'רשת מקומית' ו'גלובלי'
  • למכשיר פרוטוקול Thread יש כמה כתובות IPv6 מסוג unicast
    • RLOC מייצג את המיקום של מכשיר ברשת בפרוטוקול Thread
    • ML-EID הוא ייחודי להתקן Thread במחיצה, ואמור לשמש אפליקציות
  • פרוטוקול Thread משתמש בריבוי שידורים כדי להעביר נתונים לקבוצות של צמתים ונתבים
  • ה-thread משתמש ב- anycast כשה-RLOC של יעד לא ידוע

למידע נוסף על כתובות IPv6 של Thread, ראו סעיפים 5.2 ו-5.3 מפרט לשרשורים

בדיקת ההבנה

אילו שלושה היקפים משמשים ליצירת כתובות בפורמט Unicode ברשת של פרוטוקול Thread?
פרטי
תשובה לא נכונה.
ממשק מקומי
תשובה לא נכונה.
קישור מקומי
נכון.
מיקום באתר
תשובה לא נכונה.
רשת מקומית
נכון.
גלובלי
נכון.
מה המשמעות של מזהה צאצא 0 במכשיר?
המכשיר הוא ילד.
תשובה לא נכונה.
המכשיר הוא REED.
סגור, אבל שגוי.
המכשיר הוא נתב.
נכון. לנתב תמיד יש מזהה צאצא 0.
מצלמה, שהיא צומת ברשת בפרוטוקול Thread, מקבלת RLOC16 חדש ו-RLOC. אילו מהאירועים הבאים גרם לכך?
מישהו הוריד מרחוק תמונות מהמצלמה.
תשובה לא נכונה. לאירוע הזה לא תהיה השפעה על השרשור עמוקה מאוד,
נתב התנתק מהרשת.
נכון. כשהנתב מנתק את הרשת, לשינויים בטופולוגיה, שעשויים להוביל לכך שהמכשיר יקדם את עצמו ולקבל RLOC חדש.
המצלמה עברה למצב שינה, ובעקבות זאת הטופולוגיה של הרשת השתנתה.
תשובה לא נכונה. כניסה למצב שינה לא בהכרח גורמת למכשיר כדי לקבל כתובת רשת חדשה.
מכשיר ברשת של פרוטוקול Thread נרשם למינוי של ff03::2 כתובת Multicast. מה זה אומר על המכשיר?
זהו מכשיר קצה מינימלי (MED).
תשובה לא נכונה.
זהו מכשיר קצה מלא (FED).
תשובה לא נכונה. (רמז: זה יכול להיות FED ויכול להיות שלא.)
זהו מכשיר פרוטוקול Thread מינימלי (MTD).
תשובה לא נכונה.
זהו מכשיר בפרוטוקול Full Thread (FTD).
נכון. רק מכשירי Thread מלאים נרשמים ל- כתובת Multicast של ff03::2. הם עושים זאת ב-Mesh-Local היקף.
באיזה סוג של כתובת וניתוב נעשה שימוש בפרוטוקול Thread כדי להעביר נתונים קבוצות של צמתים ונתבים?
unicast
תשובה לא נכונה.
anycast
תשובה לא נכונה.
Multicast
נכון.
שידור
תשובה לא נכונה.
באיזה סוג של כתובת וניתוב נעשה שימוש במכשיר של פרוטוקול Thread כאשר RLOC של הנמען של ההודעה שרצית לשלוח לא ידוע?
unicast
תשובה לא נכונה.
anycast
נכון. שירות Anycast מאפשר למכשיר להגיע לצומת שה-RLOC שלו לא הידוע, על ידי פנייה ל-ALOC של המכשיר.
Multicast
תשובה לא נכונה.
שידור
תשובה לא נכונה.