همانطور که در بخش قبلی گفته شد، آدرس های IPV4 بدلیل 32 بیتی بودن آن از محدودیت تعداد آدرس رنج می برند. و بنابراین برای رفع مشکل موقتا از شیوه NAT و به عنوان راه حل دائمی از آدرس دهی IPV6 استفاده می شود. آدرس های IPV6، 128 بیتی هستند و بنابراین محدوده بسیار بسیار گسترده تری را نسبت به IPV4 پوشش می دهند
و به نظر می آید که با محدودیت تعداد آدرس IPV6 در آینده نزدیک مواجه نخواهیم شد. در ادامه ابتدا به شکل و فرمت آدرس های IPV6 می پردازیم و روش نوشتن آدرس IPV6 را مورد بررسی قرار می دهیم. سپس به انواع آدرس IPV6 و محل استفاده آنها خواهیم پرداخت. بعد از آن جزئیات هر یک از انواع آدرس دهی بحث خواهد شد و به چگونگی اختصاص آدرس به نود ها می پردازیم. آیا مانند آدرس دهی در IPV4 از دو شیوه Static و DHCP برای اختصاص آدرس IPV6 به نودها استفاده می شود و یا اینکه روش های دیگری نیز اضافه شده است؟ در ادامه به یکی از مهمترین پروتکل های پایه ای IPV6 به نام Neighbor Discovery که اساس ارتباطات در IPV6 را تشکیل می دهد، خواهیم پرداخت و در پایان نیز به مقایسه IPV4 با IPV6 می پردازیم که عمدتا به تفاوت Encapsulation آنها خواهیم پرداخت. این سوال پیش می آید دیگر ابزارهای شبکه در IPV4 با IPV6 چه تفاوتی دارند. به عنوان مثال Routing در IPV4 با IPV6 چه تفاوتهایی دارند. و یا اینکه ابزارهایی مانند Access-List، QoS، Multicast در بستر IPV6 چگونه اجرا می شوند. در این کتاب که اساس آن IPV4 است، در انتهای هر فصل بخشی را در نظر گرفتیم که در خصوص مباحث آن فصل در بستر IPV6 نیز می پردازیم. لذا IPV6 در این کتاب از چشم ها به دور نخواهد ماند. ضمنا فصل انتهایی این فصل به صورت خاص به چگونگی انواع روش های مهاجرت از بستر IPV4 به بستر IPV6 می پردازد.
شیوه نوشتن آدرس IPV6
آدرس IPV6، 128 بیتی است و به صورت XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX/n نوشته می شود. همانطور که ملاحضه می کنید، آدرس IPV6 از 8 بخش تشکیل شده است که هر بخش آن را 4 رقم هگزا دسیمال از 0000 تا ffff تشکیل می دهد و هر دو بخش با علامت : از هم جدا می شوند. در پایان نیز مقدار Subnet Mask با /n در انتهای آدرس قرار داده می شود تا بخش Prefix (معادل Network در IPV4) را از بخش Interface-Id (معادل Host در IPV4) جدا نماید. آدرس های زیر مثالهایی از آدرس های IPV6 هستند
1234:5678:9ABC:DEF0:1234:5678:9ABC:DEF0:1234/64
2001:00AA:0001:0001:0000:0000:0000:0001/64
عمدتا آدرس های IPV6 که در شبکه طراحی می شوند دارای تعداد زیادی 0 هستند که دلیل آن زیاد بودن تعداد آدرس در IPV6 است. بنابراین آدرس کاربران در بستر IPV6 بیشتر شبیه به مثال دوم است.
از دو مثال فوق پیداست که نوشتن آدرس IPV6 در مقایسه با IPV4 بسیار مشکل تر است و باید تدابیری اندیشیده شود تا نوشتن آن ساده تر گردد. اگر فرض کنیم آدرس های IPV6 تعدا زیادی 0 دارند، می توان از دو قانون زیر که در آدرس IPV6 با هدف نگارش ساده آن ابداع شده اند، استفاده نمود
قانون اول: در هر بخش از آدرس IPV6 که با علامت : از دیگر بخش های جدا می شوند، می توان 0 های پیشین را اضافه نمود. در مثال فوق در صورت استفاده از قانون اول آدرس به صورت زیر تغییر می کند.
2001:00AA:0001:0001:0000:0000:0000:0001/64 à 2001:AA:1:1:0:0:0:1/64
قانون دوم: چنانچه بخش های متوالی دارای مقدار 0 باشند، می توان همه 0 های متوالی را حذف نمود و به جای آن از دو بار علامت : یعنی :: استفاده نمود. البته فقط یکبار می توانید از این قانون در یک آدرس استفاده کنید. اگر این قانون را در مثال فوق اجرا نماییم، آدرس به صورت زیر تغییر می کند
2001:00AA:0001:0001:0000:0000:0000:0001/64 à 2001:AA:1:1::1/64
فقط یک بار می توان از این قانون استفاده نمود. در غیر این صورت نمی توان تعداد 0 های حذف شده را محاسبه نمود. به روش صحیح و غلط خلاصه سازی نوشتاری آدرس IPV6 در مثال زیر دقت کنید
2001:0000:0000:0001:0000:0000:0000:0001/64
2001::1::1/64 غلط
2001:0:0:1::1/64 صحیح
در روش اولی که غلط است نمی توان تعداد 0 هایی که جایگزین هر :: می شود را محاسبه نمود. بنابراین فقط یک بار می توانید 0 های متوالی را حذف نموده و با :: جایگزین نمایید
همانطور که گفته شد به دلیل بالا بودن تعداد آدرس IPV6، عمدتا این آدرس ها از تعداد زیادی 0 تشکیل شده اند و بنابراین با دو قانون فوق اکثر آدرس ها در نوشتن قابل خلاصه سازی هستند.
انواع آدرس IPV6
همانند آدرس های IPV4 آدرس های IPV6 نیز انواع مختلف دارند و به سه دسته اصلی Unicast، Multicast و Anycast تقسیم می شوند. از جمله قبل حتما متوجه شدید در IPV6 عنوان جدیدی تحت عنوان Anycast اضافه شده است که ممکن در نگاه اول به اشتباه تصور کنید که این آدرس جایگزین Broadcast شده است. اما در آدرس دهی IPV6، آدرس Broadcast حذف شده است و آدرس های Multicast خاصی برای ارسال ترافیک Broadcast به نودهای شبکه در نظر گرفته شده است و لذا ارسال broadcast به شیوه جدیدی صورت می پذیرد. در عین حال نوع جدیدی از آدرس با نام Anycast به این مجموعه اضافه شده است که در مباحث پیش رو تشریح خواهد شد.
ذکر این نکته خالی از لطف نیست که اولا ارسال Broadcast با شیوه Multicast روش جدیدی نیست و در آدرس IPV4 نیز وجود داشته است (آدرس 224.0.0.1 برای این منظور در نظر گرفته شده بود)، اما علاوه بر آن آدرس اختصاصی نیز برای ارسال Broadcast وجود دارد اما در آدرس دهی IPV6 فقط از روش Multicast برای ارسال broadcast استفاده می شود. دوم اینکه آدرس Anycast در IPV4 نیز استفاده می شود (مثلا در پروتکل MSDP) اما به صورت رسمی در تعاریف اولیه IPV4 وجود تدارد. در IPV6 آدرس Anycast نقش مهمی را بازی می کند و با این ویژگی سعی نموده است Redundancy و Load Sharing را به مجموعه IPV6 اضافه نماید. بعدا در مورد این نوع آدرس بیشتر صحبت خواهیم نمود.
آدرس Unicast
منظور از آدرس Unicast این است که این نوع آدرس صرفا به یک نود اختصاص دارد و وقتی می خواهیم ترافیکی را به نود خاصی ارسال نمائیم، آدرس مقصد را Unicast قرار می دهیم. اگر به خاطر داشته باشید آدرس Unicast در IPV4 به سه دسته اصلی APIPA، Private و Public تقسیم می شود. در IPV6، آدرس Unicast به سه دسته اصلی Link Local، Unique Local و Unique Global تقسیم می شود که با اغماض می توان آدرس Link Local را معادل APIPA، آدرس Unique Local را معادل Private و آدرس Unique Global را معادل آدرس Public دانست. در ادامه به حزئیات هر یک از آنها پرداخته می شود. قبل از پرداختن به جزئیات می توانید در جدول زیر انواع و کاربرد هر یک از آدرس ها را مشاهده نمایید
کاربرد | محدوده آدرس | نوع آدرس | |
ارتباطات داخل لینک | FE80::/10 | Link Local | Unicast |
ارتباطات داخل سازمانی | FD00::/8 | Unique Local | |
ارتباطات اینترنتی | 2000::/3 | Unique Global | |
ارتباطات یک نفر به چند نفر (one-to-many) و یا چند نفر به چند نفر (many-to-many) | FF00::/8 | Multicast | Multicast |
در پروتکل Neighbor Discovery کاربرد دارد | FF02::1:FF00:0/104 | Solicited-Node | |
Redundancy و Load Sharing | همانند Unicast | Anycast |
انواع آدرس های IPV6
آدرس Link Local
در شبکه های IPV6، هر اینترفیسی که فعال می گردد به صورت اتوماتیک آدرسی از نوع Link Local ایجاد می کند که این آدرس فقط در سطح همان لینک Unique است و برای ارتباطات داخل لینک از این آدرس استفاده می شود. این روش آدرس دهی این مزیت را دارد که هر اینترفیس IPV6 همواره دارای آدرس است و بنابراین همیشه و حتی بدون آدرس دهی دستی و یا DHCP باز نیز قابلیت ارتباط با دیگر نودهای شبکه را دارد. خواهیم دید که اکثر مکانیزم های پروتکل Neighbor Discovery و همچنین پروتکل های مسیریابی IGP از این نوع آدرس برای ارتباطات داخل لینک بهره می برند. با توجه به اینکه محدوده Unique بودن این نوع آدرس در داخل لینک لایه 2 ای است، لذا نمی توان از این آدرس برای ارتباط با نودهایی که در داخل دیگر لینک ها هستند، استفاده نمود.
حال این سوال پیش می آید که محدوده آدرس های Link Local چند است و چگونه این آدرس ها به صورت اتوماتیک تخصیص می یابند؟ همانطور که در جدول بالا ذکر شده است، محدوده آدرس Link Local، FE80::/10 است. بدین معنی که این آدرس ها در محدوده FE8-FEB قرار می گیرند. 64 بیت ابتدایی آدرس های Link Local همواره ثابت و FE80::/64 هستند و بخش prefix آدرس را تشکیل می دهند و 64 بیت بعدی این آدرس که بخش Interface-Id آدرس را تشکیل می دهد به صورت اتوماتیک و با مکانیزم EUI-64 محاسبه می گردد که Unique بودن آدرس را در همان لینک تضمین می کند.
مکانیزم EUI-64: برای استخراج اتوماتیک 64 بیت انتهایی آدرس IPV6، از 48 بیت آدرس MAC که در سطح لینک Unique است، استفاده می گردد. بدین صورت که آدرس 48 بیتی MAC نود مربوطه را به دو بخش مساوی 24 بیتی جدا می کنیم و مابین آن مقدار FFFE قرار می گیرد تا 64 بیتی Unique در آن لینک ایجاد گردد. البته بیت هفتم پرارزش که به بیت Universal/Local مشهور است نیز به یک تغییر می کند. مثلا اگر آدرس MAC مقدار 0024.BEE9.F789 داشته باشد، مقدار Interface-Id به صورت 0224:BEFF:FEE9:F789 خواهد بود. در میانه آدرس MAC مقدار FFFE قرار داده شده است و بیت هفتم پرارزش نیز از مقدار 0 به مقدار 1 تغییر داده شده است که در نتیجه رقم دوم پرارزش هگزادسیمال از 0 به 2 تغییر کرده است. مقدار آدرس Link Local در این نود FE80:: 0224:BEFF:FEE9:F789 است
شکل زیر مثال دیگری را نشان می دهد. قسمت بالایی آدرس MAC و در قسمت پایینی معادل Interface-Id آن آمده است
مکانیزم EUI-64
آدرس Unique Local
آدرس Unique Local معادل آدرس private در IPV4 است. به عبارت دیگر این نوع آدرس فقط در داخل سازمان منحصربفرد است. این پرسش مطرح می شود که در آدرس IPV4 جهت رفع موقتی مشکل محدودیت تعداد آدرس، از آدرس Private و یا NAT استفاده می شود اما در IPV6 که چنین مشکلی وجود ندارد و همه نود ها می توانند به تعداد مورد نیاز آدرس IPV6 در اختیار داشته باشند چرا از محدوده آدرس Private و یا Unique Local استفاده می شود؟ سوال کاملا منطقی است و انتظار می رود در شبکه IPV6 نیاز به این نوع آدرس وجود نداشته باشد اما با این حال محدوده ای مجزا برای آن در نظر گرفته شده است. شاید بتوان گفت برای آدرس دهی نودهایی که هیچگاه نیاز به ارتباط اینترنتی ندارند و همواره به صورت داخلی استفاده می شوند، می توان از این نوع آدرس استفاده نمود. مثلا سوییچ های شبکه، Access Point های بیسیم، UPS ها و دیگر تجهیزات مشابه می توانند از این نوع آدرس استفاده کنند. زیرا اگر آدرس Unique Local به آنها داده شود هیچگاه در معرض حملات اینترنتی قرار نمی گیرند
محدوده آدرس Unique Local، FD00::/8 است به عبارت دیگر آدرس های Unique Local با FD شروع می شود. به عنوان مثال اگر بخواهیم سه Subnet مختلف از یک سازمان را با این روش آدرس دهی کنیم، محدوده آدرس های FD00:1:1:1::/64، FD00:1:1:2::/64 و FD00:1:1:3::/64 نمونه ای قابل قبول است.
آدرس Unique Global
آدرس های Unique Global همان آدرس های اینترنتی هستند و به ازاء هر نود، حداقل یک آدرس منحصربفرد در اینترنت وجود دارد. آدرسی که از طرف ISP به سازمان ها داده می شود دارای 48 بیت ابتدایی ثابت است و سازمان از بیت 49 تا 64 را به عنوان Subnet و 64 بیت کم ارزش آن را به عنوان Interface-Id در نظر می گیرد.
فرمت آدرس های Unique Global
مثلا ISPx، قصد دارد به دو سازمان آدرس IPV6 اختصاص دهد. به اولی، مقدار Prefix 2001:AA:1001::/48 و به دومی، Prefix 2001:AA:1002::/48 را اختصاص می دهد.
سازمان 1: 2001:AA:1001::/48
سازمان 2: 2001:AA:1002::/48
سازمان شماره 1، بخش چهارم آدرس را که شامل 16 بیت است به عنوان شماره Subnet در نظر می گیرد و به هر Subnet شماره ای منحصربفرد اختصاص می دهد.
سازمان 1، شبکه 1: 2001:AA:1001:1::/64
سازمان 1، شبکه 2: 2001:AA:1001:2::/64
سازمان 1، شبکه 3: 2001:AA:1001:3::/64
بدیهی است که هر سازمانی در دنیا Prefix منحصربفرد خود را داراست و بنابراین همه آدرس های دنیا منحصربفرد خواهند بود.
آدرس Multicast
هدف از آدرس Multicast ارسال همزمان ترافیک به چندین نفر است و به همین دلیل به آدرس Multicast آدرس گروه و یا (Group Address) نیز گفته می شود. به عنوان مثال فیلمی در حال پخش روی آدرس Multicast مشخصی است و همه افرادی که درخواست دریافت فیلم را از طریق نرم افزاری ارائه می دهند، در واقع عضو آدرس Multicast مورد نظر می شوند و دقیق تر اینکه عضو گروه مالتی کست با آدرس مشخصی می شوند و همه ترافیک های ارسالی به گروه توسط تمامی افراد گروه دریافت می شود. در IPV6 همانند IPV4 محدوده آدرس مشخصی برای Multicast در نظر گرفته شده است.
محدوده آدرس Multicast در شبکه IPV6، FF00::/8 است بدین معنی که آدرس های Multicast در IPV6 همواره با FF شروع می شوند. فرمت آدرس Multicast در IPV6 به صورت زیر است
فرمت آدرس Multicast در IPV6
در شکل فوق پیداست که آدرس Multicast همواره با FF شروع می شود. رقم هگزادسیمال سوم موقتی بودن و یا دائمی بودن آدرس را نشان می دهد. رقم چهارم محدوده عملکرد آدرس Multicast را نشان می دهد که اگر مقدار 2 داشته باشد، بدین معنی است که اعضاء آدرس Multicast صرفا در همان لینک هستند و اگر مقدار 8 داشته باشد، محدوده آدرس کل سازمان است. در صورتی که اعضاء یک آدرس Multicast کاربران اینترنت باشند، رقم چهارم با E مقداردهی می شود.
در IPV4، آدرس های Multicast که با 224.0.0.X شروع می شوند، رزرو شده هستند و البته دائمی نیز هستند. محدوده عملکرد آنها نیز داخل لینک است. به عنوان مثال آدرس 224.0.0.5 آدرس Multicast رزرو شده برای ارسال ترافیک های OSPF است. معادل آدرس های رزرو شده در IPV6، FF02::/16 است. که 0 دائمی بودن آدرس و 2 محدوده عملکردی لینک را نشان می دهد. جدول زیر معادل آدرس های رزرو شده IPV4 را در IPV6 نشان می دهد.
کاربرد آدرس | معادل آدرس Multicast در IPV6 | آدرس Multicast در IPV4 |
همه نودها | FF02::1 | 224.0.0.1 |
همه روترها | FF02::2 | 224.0.0.2 |
همه روترهای OSPF | FF02::5 | 224.0.0.5 |
روتر های DR و BDR در OSPF | FF02::6 | 224.0.0.6 |
همه روترهای RIP | FF02::9 | 224.0.0.9 |
همه روترهای EIGRP | FF02::A | 224.0.0.10 |
همه روترهای PIM | FF02::D | 224.0.0.13 |
همه روترهای IGMPV3 | FF02::16 | 224.0.0.22 |
آدرس های Multicast رزرو شده در شبکه IPV6
Solicited Node Multicast Address
در IPV6 هر نودی یک آدرس اختصاصی Multicast با نام Solicited Node Multicast Address در اختیار دارد که از آدرس Unicast و یا Anycast خود استخراج می کند. این آدرس در مکانیزم های Neighbor Discovery، که در مباحث پیش رو تشریح می شود، بسیار پرکاربرد است. در اینجا تنها به این نکته اشاره کنیم که این آدرس Multicast از ارسال Broadcast های غیر ضروری در IPV6 (برخلاف IPV4) جلوگیری می کند. به عنوان مثال در IPV6 بسته ARP، Broadcast نمی شود که دلیل آن استفاده از همین نوع آدرس دهی است و در ادامه و در همین فصل چگونگی انجام آن را تشریح خواهیم نمود.
104 بیت ابتدایی آدرس Solicited Node Multicast همواره مقدار ثابت FF02::1:FF00:0000/104 را دارد و 24 بیت کم ارزش آن (6 رقم سمت راست آدرس) از روی 24 بیت کم ارزش آدرس Unicast و یا Anycast استخراج می شود. به عنوان مثال اگر آدرس نودی 2001:1:1::ABCD:EF01 باشد، معادل آدرس Solicited Node Multicast آن FF02::1:FFCD:EF01 خواهد بود. 24 بیت کم ارزش آن یعنی CD:EF01 از روی آدرس Unicast استخراج شده است.
IPV6 Solicited Node Multicast Address | IPV6 Unicast Address |
FF02::1:FFCD:EF01 | 2001:1:1::ABCD:EF01 |
استخراج آدرس Solicited Node Multicast Address از روی آدرس Unicast
router(config-if)# ipv6 address 2001:1:1:1::1/64 anycast |
تخصیص آدرس Anycast در شبکه IPV6
انواع روش های آدرس دهی در IPV6
از دو روش Static و DHCP (Stateful Auto Configuration) برای آدرس دهی نود IPV4 استفاده می شود. در IPV6 روش دیگری نیز به روش های فوق اضافه شده است که Stateless Auto Configuration نامیده می شود. این نام گذاری بدین دلیل انجام شده است که در DHCP، سرور از وضعیت IP همه نودهای شبکه آگاهی دارد اما در روش Stateless Auto Configuration، هیچ سروری به صورت متمرکز وجود ندارد که از وضعیت آدرس همه نودهای شبکه آگاهی داشته باشد.
روش کار بدین صورت است که روتر به صورت دوره ای Prefix خود را به همراه آدرس IP و دیگر پارامترهای شبکه به همه نودهای شبکه ارسال می کند (با بکارگیری مکانیزم Neighbor Discovery که جلوتر تشریح خواهد شد) و هر نود شبکه با یادگرفتن Prefix شبکه و همچنین مکانیزم EUI-64 که قبلا تشریح شد، آدرس IPV6 خود را تکمیل و محاسبه می کند (Prefix، 64 بیت پرارزش آدرس و مکانیزم EUI-64، 64 بیت کم ارزش آدرس IPV6 را، که همان Interface-Id است، تشکیل می دهد). بنابراین هر نود شبکه با بکارگیری دو مکانیزم Neighbor Discovery و EUI-64 آدرس IP خود را به صورت اتوماتیک ایجاد می نماید و بعد از اطمینان از منحصربفرد بودن آن در شبکه، که خود این نیز از با مکانیزم Neighbor Discovery انجام می شود، آدرس مورد نظر را روی اینترفیس خودش تخصیص می دهد. هر نود با این شیوه نه تنها آدرس IPV6 خود را به صورت اتوماتیک محاسبه می کند بلکه آدرس روتر (Default Gateway) و دیگر پارامترهای شبکه از جمله MTU را هم از طریق مکانیزم Neighbor Discovery یاد می گیرد.
مکانیزم Stateless Auto Configuration
در مورد جزئیات بسته Router Advertisement که به صورت دوره ای ارسال می گردد در بخش بعد صحبت خواهد شد.
مکانیزم EUI-64 نیز پیشتر تشریح شد و می دانیم که با این مکانیزم بخش Interface-Id آدرس IPV6 به صورت اتوماتیک از روی MAC تولید می شود. اما اکنون آموختیم که این مکانیزم فقط در تعیین آدرس Link Local کاربرد ندارد، بلکه بخش Interface-Id هر نوع آدرسی با این شیوه قابل محاسبه است. به عنوان مثال اگر بخواهید بخش Interface-Id آدرس اینترفیسی از روتر را با EUI-64 محاسبه کنید، کافی است تا از دستور زیر استفاده شود
router(config-if)# ipv6 address 2001:1:1:1::/64 eui-64 |
تخصیص بخش Interface-Id آدرس IPV6 با مکانیزم EUI-64
اگر دقت کنید در دستور فوق در بخش Interface-Id، هیچ آدرسی تخصیص داده نشده است و در انتهای دستور از کلمه eui-64 استفاده شده است که Interface-Id را به صورت اتوماتیک و از روی آدرس mac تولید می کند.