כתובת IPv6

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

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

טווחים

היקף הרשאות ב-OT

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

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

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

Unicast

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

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

כיצד נוצר איתור ניתוב

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

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

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

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

OT RLOC16

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

0000:00ff:fe00:RLOC16

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

הארכה

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

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

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

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

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

סוגי כתובות ב-Unicast

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

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

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

ESH-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
היקףרשת מקומית
פרטים
  • נוצרת אחרי שמכשיר מצורף לרשת
  • להעברת קובצי נתונים של IPv6 בתוך רשת Thread
  • שינויים המתרחשים בטופולוגיה
  • בדרך כלל לא בשימוש על ידי אפליקציות

כל מכשיר העברה (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
מזהה
  • הסכם רמת שירות (SLAAC) – מוקצה באופן אקראי על ידי המכשיר עצמו
  • DHCP — הוקצה על ידי שרת DHCPv6
  • ידני – הוקצה על ידי שכבת האפליקציה
היקףכללי
פרטים
  • כתובת IPv6 ציבורית
  • הקידומת 2000::/3 כוללת תמיד

שידורים מרובים

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

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

ייתכן שתבחינו שמכשירי קצה ישנוניים (SEDpy) אינם כלולים כנמען בטבלה של ה-multicast שלמעלה. במקום זאת, Thread מגדיר כתובת IPv3 מקומית והיקף ברמת ה-unicast המבוססת על קידומות, ומשמשות לכל צומתי השרשורים, כולל SED. הכתובות האלה עבור שידורים מרובים תלויות ברשת שרשורים, מפני שהן מבוססות על קידומת Unicast Mesh-Local (עיינו ב-RFC 3306 לפרטים נוספים על שידור ב-IPv6 המבוסס על קידומת Unicast-prefix) ).

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

הכול

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

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

שרשור מגדיר את ערכי ALOC16 הבאים:

ALOC16 סוג
0xfc00 המוביל/ה
0xfc010xfc0f סוכן DHCPv6
0xfc100xfc2f שירות
0xfc300xfc37 קומישינר
0xfc400xfc4e סוכן Neighbor Discovery Agent
0xfc380xfc3f
0xfc4f0xfcff
שמורה

תקציר משחק

מה למדת:

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

למידע נוסף על כתובות IP של שרשור, אפשר לעיין בסעיפים 5.2 ו-5.3 של מפרט השרשור.

בדיקת ההבנה

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