آدرس دهی IPv6، آدرس دهی IPv6

مشاهده منبع در گیت‌هاب

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

محدوده‌ها

اسکوپ‌های OT

سه حوزه در یک شبکه 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) است:

توپولوژی OT RLOC

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

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

OT 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 دارد، به صورت زیر خواهد بود:

OT RLOC

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

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

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

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

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

انواع آدرس‌های یونی‌کست

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

انواع رایج Unicast در زیر شرح داده شده است.

یک EID که رابط Thread قابل دسترسی توسط یک انتقال رادیویی واحد را مشخص می‌کند.
مثال fe80::54db:881c:3845:57f4
آی آی دی بر اساس آدرس توسعه‌یافته ۸۰۲.۱۵.۴
محدوده لینک-محلی
جزئیات
  • برای کشف همسایگان، پیکربندی لینک‌ها و تبادل اطلاعات مسیریابی استفاده می‌شود.
  • آدرس قابل مسیریابی نیست
  • همیشه پیشوند 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 (ALOC)

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

آدرس یونی‌کست جهانی (GUA)

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

چندپخشی

از چندپخشی برای انتقال اطلاعات به چندین دستگاه به طور همزمان استفاده می‌شود. در یک شبکه 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 رهبر
0xfc010xfc0f عامل DHCPv6
0xfc100xfc2f خدمات
0xfc300xfc37 کمیسر
0xfc400xfc4e مامور کشف همسایه
0xfc380xfc3f
0xfc4f0xfcff
رزرو شده

خلاصه

آنچه آموخته‌اید:

  • یک شبکه Thread از سه حوزه تشکیل شده است: Link-Local، Mesh-Local و Global
  • یک دستگاه Thread دارای چندین آدرس IPv6 تک پخشی است
    • یک RLOC نشان دهنده موقعیت مکانی یک دستگاه در شبکه Thread است.
    • یک ML-EID مختص یک دستگاه Thread درون یک پارتیشن است و باید توسط برنامه‌ها استفاده شود.
  • نخ از چندپخشی برای ارسال داده‌ها به گروه‌های گره استفاده می‌کند.
  • وقتی RLOC یک مقصد ناشناخته است، Thread از anycast استفاده می‌کند.

برای کسب اطلاعات بیشتر در مورد آدرس‌دهی IPv6 در Thread، به بخش‌های 5.2 و 5.3 از مشخصات Thread مراجعه کنید.

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

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