بیایید نگاهی بیندازیم که Thread چگونه هر دستگاه را در شبکه شناسایی می کند و از چه نوع آدرس هایی برای برقراری ارتباط با یکدیگر استفاده می کند.
محدوده ها
سه حوزه در شبکه Thread برای آدرس دهی unicast وجود دارد:
- Link-Local - همه اینترفیس ها با یک انتقال رادیویی قابل دسترسی هستند
- Mesh-Local - همه رابطهای قابل دسترسی در یک شبکه Thread
- جهانی - همه رابط های قابل دسترسی از خارج از شبکه Thread
دو حوزه اول مربوط به پیشوندهایی است که توسط شبکه Thread تعیین شده است. Link-Local دارای پیشوند fe80::/16
، در حالی که Mesh-Local دارای پیشوند fd00::/8
.
Unicast
چندین آدرس IPv6 unicast وجود دارد که یک دستگاه Thread را شناسایی می کند. هر کدام بر اساس محدوده و مورد استفاده عملکرد متفاوتی دارند.
قبل از اینکه هر نوع را به تفصیل بیان کنیم، بیایید در مورد یک نوع رایج به نام مسیریابی یاب (RLOC) بیشتر بیاموزیم. RLOC یک رابط Thread را بر اساس موقعیت آن در توپولوژی شبکه شناسایی می کند.
نحوه ایجاد مسیریابی یاب
به همه دستگاه ها یک شناسه روتر و یک شناسه فرزند اختصاص داده شده است. هر روتر جدولی از تمام فرزندان خود را نگه می دارد که ترکیب آن ها به طور منحصر به فرد دستگاهی را در توپولوژی شناسایی می کند. به عنوان مثال، گره های برجسته شده را در توپولوژی زیر در نظر بگیرید، که در آن عدد در روتر (پنج ضلعی) شناسه روتر است و عدد در یک دستگاه پایانی (دایره) شناسه فرزند است:
شناسه روتر هر کودک مربوط به والدین آنها (روتر) است. از آنجایی که یک روتر Child نیست، شناسه فرزند برای یک روتر همیشه 0 است. این مقادیر با هم برای هر دستگاه در شبکه Thread منحصر به فرد هستند و برای ایجاد RLOC16 استفاده می شوند که نشان دهنده 16 بیت آخر RLOC است.
به عنوان مثال، در اینجا نحوه محاسبه RLOC16 برای گره سمت چپ بالا آمده است (شناسه روتر = 1 و شناسه فرزند = 1):
RLOC16 بخشی از شناسه رابط (IID) است که مربوط به آخرین 64 بیت آدرس IPv6 است. برخی از IDها می توانند برای شناسایی برخی از انواع رابط های Thread استفاده شوند. برای مثال، ID برای 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
پیوندهای جدیدی را به روترهای مختلف ایجاد میکنند و در نتیجه هر کدام یک RLOC16 و RLOC جدید اختصاص میدهند:
انواع آدرس Unicast
RLOC تنها یکی از بسیاری از آدرسهای unicast IPv6 است که یک دستگاه Thread میتواند داشته باشد. دسته دیگری از آدرسها، Endpoint Identifiers (EIDs) نام دارند که یک رابط Thread منحصر به فرد را در یک پارتیشن شبکه Thread شناسایی میکنند. EIDها مستقل از توپولوژی شبکه Thread هستند.
انواع متداول unicast در زیر به تفصیل آمده است.
پیوند-آدرس محلی (LLA) | |
---|---|
یک EID که یک رابط Thread قابل دسترسی توسط یک انتقال رادیویی را شناسایی می کند. | |
مثال | fe80::54db:881c:3845:57f4 |
شناسه | بر اساس 802.15.4 Extended Address |
دامنه | پیوند-محلی |
جزئیات |
|
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 Locator (ALOC) | |
---|---|
زمانی که RLOC مقصد مشخص نباشد، یک رابط Thread را از طریق جستجوی RLOC شناسایی می کند. | |
مثال | fde5:8dba:82e1:1::ff:fe00:fc01 |
شناسه | 0000:00ff:fe00:fc XX |
دامنه | مش-محلی |
جزئیات |
|
آدرس جهانی Unicast (GUA) | |
---|---|
یک EID که یک رابط Thread را در یک محدوده جهانی، فراتر از یک شبکه Thread شناسایی می کند. | |
مثال | 2000::54db:881c:3845:57f4 |
شناسه |
|
دامنه | جهانی |
جزئیات |
|
چندپخشی
Multicast برای برقراری ارتباط همزمان اطلاعات به چندین دستگاه استفاده می شود. در شبکه Thread، بسته به محدوده، آدرسهای خاصی برای استفاده چندپخشی با گروههای مختلف دستگاهها رزرو میشوند.
آدرس IPv6 | دامنه | تحویل به |
---|---|---|
ff02::1 | پیوند-محلی | همه FTD ها و MED ها |
ff02::2 | پیوند-محلی | همه FTD ها |
ff03::1 | مش-محلی | همه FTD ها و MED ها |
ff03::2 | مش-محلی | همه FTD ها |
ممکن است متوجه شوید که Sleepy End Devices (SED) به عنوان گیرنده در جدول چندپخشی بالا گنجانده نشده است. در عوض، Thread آدرس چندپخشی IPv6 مبتنی بر پیشوند تک پخشی را که برای همه گرههای Thread، از جمله SEDها استفاده میشود، تعریف میکند. این آدرسهای چندپخشی بر اساس شبکه Thread متفاوت است، زیرا بر روی پیشوند unicast Mesh-Local ساخته شده است (برای جزئیات بیشتر در مورد آدرسهای چندپخشی IPv6 مبتنی بر پیشوند unicast، به RFC 3306 مراجعه کنید).
دامنه های دلخواه فراتر از موارد ذکر شده قبلاً برای دستگاه های Thread پشتیبانی می شوند.
Anycast
زمانی که RLOC مقصد مشخص نیست، از Anycast برای هدایت ترافیک به یک رابط Thread استفاده می شود. Anycast Locator (ALOC) مکان چندین رابط را در یک پارتیشن Thread شناسایی می کند. 16 بیت آخر یک ALOC، به نام ALOC16، در قالب 0xfc XX
است که نشان دهنده نوع ALOC است.
به عنوان مثال، یک ALOC16 بین 0xfc01
و 0xfc0f
برای عوامل DHCPv6 رزرو شده است. اگر عامل خاص DHCPv6 RLOC ناشناخته باشد (شاید به این دلیل که توپولوژی شبکه تغییر کرده است)، می توان برای دریافت RLOC پیامی به یک عامل DHCPv6 ALOC ارسال کرد.
Thread مقادیر ALOC16 زیر را تعریف می کند:
ALOC16 | تایپ کنید |
---|---|
0xfc00 | رهبر |
0xfc01 – 0xfc0f | عامل DHCPv6 |
0xfc10 – 0xfc2f | خدمات |
0xfc30 – 0xfc37 | کمیسر |
0xfc40 - 0xfc4e | عامل کشف همسایه |
0xfc38 – 0xfc3f 0xfc4f – 0xfcff | رزرو شده است |
خلاصه
آنچه یاد گرفته اید:
- یک شبکه Thread از سه حوزه تشکیل شده است: Link-Local، Mesh-Local و Global
- یک دستگاه Thread چندین آدرس IPv6 unicast دارد
- یک RLOC مکان دستگاه را در شبکه Thread نشان می دهد
- یک ML-EID برای یک دستگاه Thread در یک پارتیشن منحصر به فرد است و باید توسط برنامه ها استفاده شود
- Thread از Multicast برای ارسال داده ها به گروه هایی از گره ها و روترها استفاده می کند
- زمانی که RLOC مقصد ناشناخته باشد، Thread از anycast استفاده می کند
برای کسب اطلاعات بیشتر در مورد آدرس دهی IPv6 Thread، به بخش های 5.2 و 5.3 از مشخصات Thread مراجعه کنید.
درک خود را بررسی کنید
ff03::2
می شود. این چه چیزی در مورد دستگاه به ما می گوید؟ff03::2
مشترک می شوند. آنها این کار را در محدوده Mesh-Local انجام می دهند.