כתובות IPv6

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

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

טווחים

היקפי OT

לרשת Thread יש שלושה היקפים לטיפול בבקשות ל-unicast:

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

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

Unicast

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

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

איך נוצר ממקם מסלול.

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

הטופולוגיה של OT RLOC

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

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

הארכה RLOC16

ה-RLOC16 הוא חלק ממזהה הממשק (IID), שתואם ל-64 הביטים האחרונים בכתובת ה-IPv6. חלק ממזהי ה-ID יכולים לשמש לזיהוי סוגים מסוימים של ממשקי Thread. לדוגמה, ה-IID ל-RLOC תמיד נמצא בפורמט הזה:

0000:00ff:fe00:RLOC16

ה-IID, בשילוב עם קידומת Mesh-Local, מובילים ל-RLOC. לדוגמה, באמצעות קידומת Mesh-Local של fde5:8dba:82e1:1::/64, ה-RLOC של הצומת שבו RLOC16 = 0x401 הוא:

אר' ר'

ניתן להשתמש באותו לוגיקה כדי לקבוע את ה-RLOC עבור כל הצמתים המודגשים בטופולוגיה לדוגמה שלמעלה:

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

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

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

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

סוגי כתובות Unicast

RLOC הוא רק אחת מתוך הרבה כתובות Unicode של IPv6 שמכשיר Thread יכול לקבל. קטגוריה אחרת של כתובות נקראת 'מזהי נקודות קצה (EID)', שמזהים את ממשק השרשורים הייחודי שבתוך שרשור רשת. EIDs אינם תלויים בטופולוגיה של רשת השרשורים.

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

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

Mesh-Local EID (ML-EID)

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

ממקם ניתוב (RLOC)

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

Anycast Locator (ALOC)

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

כתובת Unicast גלובלית (GUA)

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

מולטיקאסט

ריבוי שידורים משמש להעברת מידע למכשירים מרובים בו-זמנית. ברשת Thread, כתובות ספציפיות נשמרות לשימוש בשידורים שונים עם קבוצות שונות של מכשירים, בהתאם להיקף.

כתובת IPv6 היקף נשלחה אל
ff02::1 קישור מקומי כל ה-FED ואירועי ה-MED
ff02::2 קישור מקומי כל ה-FTD
ff03::1 רשת סבך מקומי כל ה-FED ואירועי ה-MED
ff03::2 רשת סבך מקומי כל ה-FTD

יכול להיות שתבחינו בכך ש-Sleepy End Devices (SED) לא כלולים כנמען בטבלה של מספר ה-Casts שלמעלה. במקום זאת, פרוטוקול Thread מגדיר כתובת סביבה מקומית של קישור מקומי והיקף אזורי של unicast המבוסס על קידומת IPv6 שמשמשת את כל השרשורים של Thread, כולל SED. כתובות ה-Multicast האלה משתנות בהתאם לרשת השרשורים, כי היא מבוססת על התחילית unicast מסוג Mesh-Local (כאן מפורט מידע נוסף על RFC 3306 על כתובות IPv6 המבוססות על קידומת של unicast).

היקפים שרירותיים שאינם כלולים ברשימה נתמכים גם במכשירי Thread.

Anycast

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

לדוגמה, ALOC16 בין 0xfc01 ל-0xfc0f שמור לסוכני DHCPv6. אם ה-DLOPv6 של סוכן RLOC לא ידוע (אולי כי הטופולוגיה של הרשת השתנתה), ניתן לשלוח הודעה ל-DOC של סוכן DHCPv6 כדי לתפוס את ה-RLOC.

שרשור ההגדרה של ערכי ALOC16 הוא:

ALOC16 סוג
0xfc00 המוביל/ה
0xfc010xfc0f סוכן DHCPv6
0xfc100xfc2f שירות
0xfc300xfc37 קומישינר
0xfc400xfc4e סוכן לגילוי שכנים
0xfc38 עד 0xfc3f
0xfc4f עד 0xfcff
בוצעה הזמנה

Recap

מה למדת:

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

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

הבנת הנושא

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