כתובות IPv6

צפייה במקור ב-GitHub

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

היקפים

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

יש שלושה היקפים ברשת 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 (מחומש) הוא מזהה הנתב, והמספר במכשיר קצה (עיגול) הוא מזהה הצאצא:

OT RLOC Topology

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

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

OT RLOC16

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

0000:00ff:fe00:RLOC16

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

OT RLOC

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

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

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

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

טופולוגיית ה-OT אחרי השינוי

סוגי כתובות Unicast

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

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

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

מזהה EID מקומי לרשת (ML-EID)

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

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

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

Anycast Locator (ALOC)

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

כתובת גלובלית של שידור יחיד (GUA)

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

מולטיקאסט

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

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.

בדיקה של רמת ההבנה שלך

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