بیایید نگاهی بیندازیم که چگونه Thread هر دستگاه را در شبکه شناسایی میکند و از چه نوع آدرسهایی برای ارتباط با یکدیگر استفاده میکنند.
محدودهها

سه حوزه در یک شبکه Thread برای آدرسدهی تکپخشی وجود دارد:
- لینک-محلی - تمام رابطها از طریق یک انتقال رادیویی واحد قابل دسترسی هستند
- مش-محلی - همه رابطها در یک شبکه Thread قابل دسترسی هستند
- سراسری - تمام رابطهای قابل دسترسی از خارج از شبکه Thread
دو حوزه اول مربوط به پیشوندهای تعیینشده توسط یک شبکه Thread هستند. Link-Local دارای پیشوندهای fe80::/16 است، در حالی که Mesh-Local دارای پیشوندهای fd00::/8 است.
یونیکست
چندین آدرس یونیکَست IPv6 وجود دارد که یک دستگاه Thread واحد را شناسایی میکنند. هر کدام بر اساس دامنه و مورد استفاده، عملکرد متفاوتی دارند.
قبل از اینکه به جزئیات هر نوع بپردازیم، بیایید در مورد یکی از رایجترین آنها به نام Routing Loc (RLOC) بیشتر بدانیم. RLOC یک رابط Thread را بر اساس موقعیت آن در توپولوژی شبکه شناسایی میکند.
چگونه یک مکانیاب مسیریابی ایجاد میشود
به همه دستگاهها یک شناسه روتر (Router ID) و یک شناسه فرزند (Child ID) اختصاص داده میشود. هر دستگاه والد (Parent) جدولی از تمام فرزندان خود را نگهداری میکند که ترکیب آنها به طور منحصر به فرد یک دستگاه را در داخل توپولوژی مشخص میکند. به عنوان مثال، گرههای هایلایت شده در توپولوژی زیر را در نظر بگیرید، که در آن عدد موجود در یک Mesh Extender (پنج ضلعی) شناسه روتر (Router ID) و عدد موجود در یک End Device (دایره) شناسه فرزند (Child ID) است:

شناسه روتر هر فرزند با والد آن (توسعهدهنده مش) مطابقت دارد. از آنجا که یک توسعهدهنده مش، فرزند نیست، شناسه فرزند برای یک توسعهدهنده مش همیشه ۰ است. این مقادیر در کنار هم برای هر دستگاه در شبکه Thread منحصر به فرد هستند و برای ایجاد RLOC16 استفاده میشوند که نشان دهنده ۱۶ بیت آخر RLOC است.
برای مثال، نحوه محاسبه RLOC16 برای گره بالا سمت چپ (شناسه روتر = ۱ و شناسه فرزند = ۱) به صورت زیر است:

RLOC16 بخشی از شناسه رابط (IID) است که مربوط به 64 بیت آخر آدرس IPv6 است. برخی از IID ها میتوانند برای شناسایی برخی از انواع رابطهای Thread استفاده شوند. به عنوان مثال، IID برای RLOC ها همیشه به این شکل است:
0000:00ff:fe00:RLOC16
IID، همراه با یک پیشوند Mesh-Local، منجر به RLOC میشود. برای مثال، با استفاده از پیشوند Mesh-Local به صورت fde5:8dba:82e1:1::/64 ، RLOC برای گرهای که RLOC16 = 0x401 دارد، به صورت زیر خواهد بود:

همین منطق را میتوان برای تعیین RLOC برای همه گرههای هایلایت شده در توپولوژی نمونه بالا استفاده کرد:

با این حال، از آنجا که RLOC بر اساس موقعیت گره در توپولوژی است، RLOC یک گره میتواند با تغییر توپولوژی تغییر کند.
برای مثال، شاید گره 0x400 از شبکه Thread حذف شود. گرههای 0x401 و 0x402 لینکهای جدیدی به Mesh Extenderهای مختلف ایجاد میکنند و در نتیجه به هر کدام یک RLOC16 و RLOC جدید اختصاص داده میشود:

انواع آدرسهای یونیکست
RLOC تنها یکی از آدرسهای یونیکَست IPv6 متعددی است که یک دستگاه Thread میتواند داشته باشد. دسته دیگری از آدرسها، شناسههای نقطه پایانی (EID) نامیده میشوند که یک رابط Thread منحصر به فرد را در یک پارتیشن شبکه Thread شناسایی میکنند. EIDها مستقل از توپولوژی شبکه Thread هستند.
انواع رایج Unicast در زیر شرح داده شده است.
آدرس محلی-لینک (LLA) | |
|---|---|
| یک EID که رابط Thread قابل دسترسی توسط یک انتقال رادیویی واحد را مشخص میکند. | |
| مثال | fe80::54db:881c:3845:57f4 |
| آی آی دی | بر اساس آدرس توسعهیافته ۸۰۲.۱۵.۴ |
| محدوده | لینک-محلی |
| جزئیات |
|
EID محلی-مش (ML-EID) | |
|---|---|
| یک EID که یک رابط Thread را مستقل از توپولوژی شبکه شناسایی میکند. برای دسترسی به یک رابط Thread در همان پارتیشن Thread استفاده میشود. همچنین به آن آدرس محلی منحصر به فرد (ULA) نیز گفته میشود. | |
| مثال | fde5:8dba:82e1:1:416:993c:8399:35ab |
| آی آی دی | تصادفی، پس از تکمیل راهاندازی انتخاب میشود |
| محدوده | شبکه محلی |
| جزئیات |
|
مکانیاب مسیریابی (RLOC) | |
|---|---|
| یک رابط Thread را بر اساس موقعیت آن در توپولوژی شبکه شناسایی میکند. | |
| مثال | fde5:8dba:82e1:1::ff:fe00:1001 |
| آی آی دی | 0000:00ff:fe00: RLOC16 |
| محدوده | شبکه محلی |
| جزئیات |
|
مکانیاب Anycast (ALOC) | |
|---|---|
| یک رابط Thread را از طریق جستجوی RLOC شناسایی میکند، زمانی که RLOC یک مقصد مشخص نیست. | |
| مثال | fde5:8dba:82e1:1::ff:fe00:fc01 |
| آی آی دی | 0000:00ff:fe00:fc XX |
| محدوده | شبکه محلی |
| جزئیات |
|
آدرس یونیکست جهانی (GUA) | |
|---|---|
| یک EID که یک رابط Thread را در یک محدوده سراسری، فراتر از یک شبکه Thread، شناسایی میکند. | |
| مثال | 2000::54db:881c:3845:57f4 |
| آی آی دی |
|
| محدوده | جهانی |
| جزئیات |
|
چندپخشی
از چندپخشی برای انتقال اطلاعات به چندین دستگاه به طور همزمان استفاده میشود. در یک شبکه Thread، آدرسهای خاصی برای استفاده چندپخشی با گروههای مختلف دستگاهها، بسته به دامنه، رزرو شدهاند.
| آدرس IPv6 | محدوده | تحویل داده شده به |
|---|---|---|
ff02::1 | لینک-محلی | همه داروهای FTD و MED |
ff02::2 | لینک-محلی | همه FTD ها |
ff03::1 | شبکه محلی | همه داروهای FTD و MED |
ff03::2 | شبکه محلی | همه FTD ها |
ممکن است متوجه شوید که دستگاههای انتهایی خوابآلود (SED) به عنوان گیرنده در جدول چندپخشی بالا لحاظ نشدهاند. در عوض، Thread آدرس چندپخشی IPv6 مبتنی بر پیشوند unicast با دامنه link-local و realm-local را که برای همه گرههای Thread، از جمله SEDها، استفاده میشود، تعریف میکند. این آدرسهای چندپخشی بر اساس شبکه Thread متفاوت هستند، زیرا بر اساس پیشوند unicast Mesh-Local ساخته شدهاند (برای جزئیات بیشتر در مورد آدرسهای چندپخشی IPv6 مبتنی بر پیشوند unicast به RFC 3306 مراجعه کنید).
دامنههای دلخواه فراتر از مواردی که قبلاً ذکر شدهاند نیز برای دستگاههای Thread پشتیبانی میشوند.
انیکست
Anycast برای مسیریابی ترافیک به یک رابط Thread زمانی که RLOC یک مقصد مشخص نیست، استفاده میشود. یک Anycast Locator (ALOC) مکان چندین رابط را در یک پارتیشن Thread شناسایی میکند. 16 بیت آخر یک ALOC، که ALOC16 نامیده میشود، به فرمت 0xfc XX است که نشان دهنده نوع ALOC است.
برای مثال، یک ALOC16 بین 0xfc01 و 0xfc0f برای DHCPv6 Agents رزرو شده است. اگر RLOC مربوط به DHCPv6 Agent خاص ناشناخته باشد (شاید به این دلیل که توپولوژی شبکه تغییر کرده است)، میتوان پیامی را به DHCPv6 Agent ALOC ارسال کرد تا RLOC را دریافت کند.
Thread مقادیر ALOC16 زیر را تعریف میکند:
| ALOC16 | نوع |
|---|---|
0xfc00 | رهبر |
0xfc01 – 0xfc0f | عامل DHCPv6 |
0xfc10 – 0xfc2f | خدمات |
0xfc30 – 0xfc37 | کمیسر |
0xfc40 – 0xfc4e | مامور کشف همسایه |
0xfc38 – 0xfc3f0xfc4f – 0xfcff | رزرو شده |
خلاصه
آنچه آموختهاید:
- یک شبکه Thread از سه حوزه تشکیل شده است: Link-Local، Mesh-Local و Global
- یک دستگاه Thread دارای چندین آدرس IPv6 تک پخشی است
- یک RLOC نشان دهنده موقعیت مکانی یک دستگاه در شبکه Thread است.
- یک ML-EID مختص یک دستگاه Thread درون یک پارتیشن است و باید توسط برنامهها استفاده شود.
- نخ از چندپخشی برای ارسال دادهها به گروههای گره استفاده میکند.
- وقتی RLOC یک مقصد ناشناخته است، Thread از anycast استفاده میکند.
برای کسب اطلاعات بیشتر در مورد آدرسدهی IPv6 در Thread، به بخشهای 5.2 و 5.3 از مشخصات Thread مراجعه کنید.
درک خود را بررسی کنید
ff03::2 مشترک میشود. این چه چیزی در مورد دستگاه به ما میگوید؟ff03::2 مشترک میشوند. آنها این کار را در محدوده Mesh-Local انجام میدهند.