آدرس دهی IPv6

مشاهده منبع در GitHub

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

محدوده ها

محدوده های OT

سه حوزه در شبکه Thread برای آدرس دهی unicast وجود دارد:

  • Link-Local - همه اینترفیس ها با یک انتقال رادیویی قابل دسترسی هستند
  • Mesh-Local - همه رابط‌های قابل دسترسی در یک شبکه Thread
  • جهانی - همه رابط های قابل دسترسی از خارج از شبکه Thread

دو حوزه اول مربوط به پیشوندهایی است که توسط شبکه Thread تعیین شده است. Link-Local دارای پیشوند fe80::/16 است، در حالی که Mesh-Local دارای پیشوند fd00::/8 است.

Unicast

چندین آدرس IPv6 unicast وجود دارد که یک دستگاه Thread را شناسایی می کند. هر کدام بر اساس محدوده و مورد استفاده عملکرد متفاوتی دارند.

قبل از اینکه هر نوع را به تفصیل بیان کنیم، بیایید در مورد یک نوع رایج به نام مسیریابی یاب (RLOC) بیشتر بیاموزیم. RLOC یک رابط Thread را بر اساس موقعیت آن در توپولوژی شبکه شناسایی می کند.

نحوه ایجاد مسیریابی یاب

به همه دستگاه ها یک شناسه روتر و یک شناسه فرزند اختصاص داده شده است. هر روتر جدولی از تمام فرزندان خود را نگه می دارد که ترکیب آن ها به طور منحصر به فرد دستگاهی را در توپولوژی شناسایی می کند. به عنوان مثال، گره های برجسته شده در توپولوژی زیر را در نظر بگیرید، که در آن عدد در روتر (پنج ضلعی) شناسه روتر است و عدد در یک دستگاه پایانی (دایره) شناسه فرزند است:

توپولوژی OT RLOC

شناسه روتر هر کودک مربوط به والدین آنها (روتر) است. از آنجایی که روتر Child نیست، شناسه فرزند برای روتر همیشه 0 است. این مقادیر با هم برای هر دستگاه در شبکه Thread منحصر به فرد هستند و برای ایجاد RLOC16 استفاده می شوند که نشان دهنده 16 بیت آخر RLOC است.

به عنوان مثال، در اینجا نحوه محاسبه RLOC16 برای گره سمت چپ بالا آمده است (شناسه روتر = 1 و شناسه فرزند = 1):

OT RLOC16

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 است:

OT RLOC

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

توپولوژی OT با آدرس

با این حال، از آنجایی که RLOC بر اساس مکان گره در توپولوژی است، RLOC یک گره می تواند با تغییر توپولوژی تغییر کند.

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

توپولوژی OT پس از تغییر

انواع آدرس Unicast

RLOC تنها یکی از بسیاری از آدرس‌های unicast IPv6 است که یک دستگاه Thread می‌تواند داشته باشد. دسته دیگری از آدرس‌ها، شناسه‌های نقطه پایانی (EID) نامیده می‌شوند که یک رابط Thread منحصر به فرد را در یک پارتیشن شبکه Thread شناسایی می‌کنند. EIDها مستقل از توپولوژی شبکه Thread هستند.

انواع متداول unicast در زیر به تفصیل آمده است.

یک EID که یک رابط Thread قابل دسترسی توسط یک انتقال رادیویی را شناسایی می کند.
مثال fe80::54db:881c:3845:57f4
شناسه بر اساس 802.15.4 Extended Address
محدوده پیوند-محلی
جزئیات
  • برای کشف همسایگان، پیکربندی پیوندها و تبادل اطلاعات مسیریابی استفاده می شود
  • آدرس قابل مسیریابی نیست
  • همیشه پیشوند fe80::/16

EID مش-محلی (ML-EID)

یک EID که یک رابط Thread را مستقل از توپولوژی شبکه شناسایی می کند. برای رسیدن به یک رابط 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
  • با تغییر توپولوژی تغییر می کند
  • معمولاً توسط برنامه ها استفاده نمی شود

Anycast Locator (ALOC)

زمانی که RLOC مقصد مشخص نباشد، یک رابط Thread را از طریق جستجوی RLOC شناسایی می کند.
مثال fde5:8dba:82e1:1::ff:fe00:fc01
شناسه 0000:00ff:fe00:fc XX
محدوده مش-محلی
جزئیات
  • fc XX = مقصد ALOC ، که RLOC مناسب را جستجو می کند
  • معمولاً توسط برنامه ها استفاده نمی شود

آدرس جهانی Unicast (GUA)

یک EID که یک رابط Thread را در یک محدوده جهانی، فراتر از یک شبکه Thread شناسایی می کند.
مثال 2000::54db:881c:3845:57f4
شناسه
  • SLAAC - به طور تصادفی توسط خود دستگاه اختصاص داده می شود
  • DHCP - توسط یک سرور DHCPv6 اختصاص داده شده است
  • دستی - توسط لایه برنامه اختصاص داده شده است
محدوده جهانی
جزئیات
  • یک آدرس IPv6 عمومی
  • همیشه پیشوند 2000::/3 دارد

چندپخشی

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 رهبر
0xfc010xfc0f عامل DHCPv6
0xfc100xfc2f سرویس
0xfc300xfc37 کمیسیونر، رئیس پلیس
0xfc40 - 0xfc4e عامل کشف همسایه
0xfc380xfc3f
0xfc4f0xfcff
رزرو شده است

خلاصه

آنچه یاد گرفته اید:

  • یک شبکه 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 مراجعه کنید.

درک خود را بررسی کنید

کدام سه محدوده برای آدرس دهی unicast در شبکه Thread استفاده می شود؟
خصوصی
غلط.
رابط-محلی
غلط.
پیوند-محلی
درست.
سایت-محلی
غلط.
مش-محلی
درست.
جهانی
درست.
وقتی یک دستگاه دارای شناسه فرزند 0 باشد به چه معناست؟
دستگاه کودک است.
غلط.
دستگاه REED است.
بسته، اما نادرست.
دستگاه یک روتر است.
درست. یک روتر همیشه دارای شناسه فرزند 0 است.
یک دوربین که یک گره در شبکه Thread است، یک RLOC16 و RLOC جدید دریافت می کند. کدام یک از رویدادهای زیر ممکن است باعث این امر شده باشد؟
شخصی تصاویر را از راه دور از دوربین دانلود کرده است.
غلط. این رویداد هیچ ارتباطی با شبکه Thread ندارد.
یک روتر از شبکه خارج شد.
درست. هنگامی که روتر از شبکه خارج می شود، توپولوژی شبکه تغییر می کند، که ممکن است منجر به ارتقای دستگاه خود به یک روتر و دریافت یک RLOC جدید شود.
دوربین وارد حالت خواب شد که توپولوژی شبکه را تغییر داد.
غلط. ورود به حالت خواب لزوماً باعث نمی‌شود که دستگاه یک آدرس شبکه جدید دریافت کند.
دستگاهی در شبکه Thread مشترک آدرس چندپخشی ff03::2 می شود. این چه چیزی در مورد دستگاه به ما می گوید؟
این یک دستگاه حداقل پایانی (MED) است.
غلط.
این یک دستگاه تمام پایان (FED) است.
غلط. (نکته: ممکن است FED باشد یا نباشد.)
این یک دستگاه حداقل نخ (MTD) است.
غلط.
این یک دستگاه تمام نخ (FTD) است.
درست. فقط دستگاه های Full Thread در آدرس چندپخشی ff03::2 مشترک می شوند. آنها این کار را در محدوده Mesh-Local انجام می دهند.
Thread از چه نوع آدرس دهی و مسیریابی برای ارسال داده ها به گروه هایی از گره ها و روترها استفاده می کند؟
unicast
غلط.
anycast
غلط.
چندپخشی
درست.
پخش
غلط.
هنگامی که RLOC گیرنده پیام مورد نظرش ناشناخته است، دستگاه Thread از چه نوع آدرس دهی و مسیریابی استفاده می کند؟
unicast
غلط.
anycast
درست. Anycast به دستگاه اجازه می دهد تا با آدرس دادن به ALOC دستگاه به گره ای که RLOC آن شناخته نشده است برسد.
چندپخشی
غلط.
پخش
غلط.