פרוטוקול Thread ו-IPv6

Matter משתמש ב-IPv6 לתקשורת התפעולית שלו, ומשתמש גם בכתובות IPv6 Unicast וגם בכתובות Multicast כדי לגשת לצמתים ולקבוצות שלו, בהתאמה.

הספק נמוך

חלק מהצומתים של Matter מחוברים בחוט ויש להם תקציבי אנרגיה שמאפשרים להם להפעיל את הרדיו שלהם באופן קבוע. לסוגים אחרים של צמתים, כמו חיישנים, יש דרישות לפעולה במשך שנים על סוללה, והם מפעילים את הרדיו שלהם ברשתות בעלות הספק נמוך כמו Thread. ארכיטקטורת שרת ה-proxy, יחד עם Thread מכשירי קצה רדומים, מאפשרת לצמתים עם הספק אנרגיה מלא לספק פונקציונליות ברמת הרשת וברמת האפליקציה, שמבודדת את הצמתים הצאצאים שלהם מעסקאות עתירות אנרגיה.

היבט מהותי של Matter הוא שהיא פועלת גם בסביבות רשת עם תפוקת נתונים גבוהה, כמו Wi-Fi ו-Ethernet, וגם בסביבות עם זמן אחזור קצר ורוחב פס נמוך, כמו Thread. אם כל המנות של Multicast מ-Wi-Fi היו עוברות דרך Thread, היינו מעמיסים יתר על המידה על הרשת, ויכול להיות שהיא הייתה מוצפת. המטרה של Thread היא להפעיל IPv6 ברשתות רשתות רשתות (mesh) עם צריכת אנרגיה נמוכה וזמן אחזור קצר, ולא בהעברת נתונים ברוחב פס גבוה. זמן ה-RTT של ה-pings של Thread ברשת מקומית הוא בדרך כלל כמה עשרות אלפיות השנייה, אבל רוחב הפס הכולל שלו מוגבל ל-250kbps ב-PHY של IEEE 802.15.4. אחרי העברות חוזרות של חבילות ועלויות נוספות, רוחב הפס המקסימלי הממוצע הוא כ-125kbps. במילים אחרות, פי כמה וכמה פחות מ-Wi-Fi.

פריימים ב-PHY של IEEE 802.15.4 הם באורך 127 בייטים, אבל יחידת ההעברה המקסימלית (MTU) הגדולה ביותר (והאופיינית) של חבילות IPv6 ב-Thread היא 1,280 בייטים. לכן, לרוב צריך לפצל את חבילות ה-IPv6 לכמה מסגרות PHY. התהליך הזה מוגדר ב-RFC4944.

מידע נוסף זמין בקטע IPv6 Addressing במאמר העזרה בנושא Thread באתר openthread.io.

נתבי גבולות

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

נתבים קצרים מאפשרים קישוריות בין רשתות קצרות לרשתות רגילות. Stub Network היא רשת 'מייל אחרון' שמספקת קישוריות חיצונית לחברים שלה, אבל לא משמשת כנתיב של רשת העברה בין רשתות אחרות. בדרך כלל, רשתות Matter Stub מבוססות על Thread. מידע נוסף על רשתות קטוע (stub) זמין בטיוטת RFC.

לכן, ברשתות BR יש אחריות להיות הקישור בין רשת ה-Stub לבין Adjacent Infrastructure Network, שהיא רשת ה-Wi-Fi או ה-Ethernet המקומית. הם מעבירים רק את החבילות שרלוונטיות לרשת Thread.

התהליך הזה מתבצע על ידי הקצאת תחיליות IPv6 שונות ל-Thread ולרשתות התשתית הסמוכות. לכן, ה-BR מעביר רק הודעות unicast אל קידומת ה-IPv6 Thread או ממנה.

נתבי גבולות אחראים גם על:

  • הגדרה אוטומטית של נתיבי IPv6 ותחיליות IPv6 גם לרשת Thread וגם לרשתות התשתית הסמוכות, כדי שמארחים משני צידי נתב הגבול Thread יוכלו לתקשר.
  • פרסום חבילות גילוי של mDNS DNS-SD בשם צמתים של Thread, כדי שניתן יהיה לזהות אותם ברשת התשתית הסמוכה.

מידע נוסף זמין במדריך Border Router באתר openthread.io.

IPv6 Multicast

הודעות קבוצתיות חשובות גם הן, כי הן מאפשרות לשלוט בו-זמנית בכמה צמתים של Matter דרך Multicast. כדי לנתב את התנועה הזו לרשת Thread, גם Matter וגם Thread מטמיעים את Unicast Prefix-based IPv6 Multicast Addressing Scheme (סכימת כתובות IPv6 מבוססת-קידומת של Unicast) שמוגדרת ב-RFC 3306.

השיטה הזו מאפשרת לבחור את צמתים היעד של חבילה Multicast על סמך הקידומת Unicast המשותפת שלהם ב-IPv6.

לדוגמה, כתובת Matter Multicast עשויה להיראות כך:

FF35:0040:FD<Fabric ID>00:<Group ID>

בטבלה 1 מוסבר איך נוצרת הכתובת הזו:

טבלה 1: Unicast כתובות IPv6 שמבוססות על קידומת
ביטים תיאור
12 ביט 0xFF3
4 ביט 0x05

היקף: site-local

8 ביט 0x00

שמור

8 ביט 0x40

מציין תחילית באורך 64 ביט

8 ביט 0xFD

הקצאת קידומת של ULA

56 ביטים מזהה Fabric
8 ביט 0x00
16 ביט מזהה קבוצה

מידע נוסף זמין בקטע Multicast במאמר העזרה של Thread וב-RFC עצמו.

כשיוצרים כתובות IPv6 מסוג Multicast, הן כוללות גם את 56 הביטים העליונים של מזהה ה-Fabric. ההשלכה החשובה היא שהיקף של Multicast הוא בתוך Fabric, בעוד שכתובות Unicast משותפות בין Fabrics. לצמתים עם הרבה רשתות יכולות להיות כמה כתובות Multicast שמגדירות קבוצות צמתים חופפות ברמת כל רשת.

היציאות

Matter משתמש ביציאה 5540 להעברות ה-Multicast שלו.