آشنایی با IPv6
استفاده از IPv6 به یکی از مباحث داغ در networking شده و کم کم حرکت بسوی آن و جایگزین شدن آن بجای IPv4 پدیده ای است که باید منتظرش بود. یک آدرس IPv6 برخلاف IPv4 بصورت 128 بیتی می باشد که 64 بیت آن به عنوان Network Prefix و 64 بیت آن به عنوان Host Portion در نظر گرفته می شود. ساده ترین نوع آدرس دهی در IPv6 ، Link Local نام دارد. یک آدرس link-local در IPv6 ، آدرسی است که با Bit Pattern معادل 1111111010 و یا نمای Hex معادل FE80::/10 در قالب آدرس دهی 128 بیتی IPv6 آغاز می شود.اصولا ، بدین گونه بیان می شود که آدرس های Link-Local تنها در حوزه و یا محدود Local کار می کنند .این عملا بدان معناست که Packet های با Source و یا Destination مبتنی بر Link-Local نمی توانند از لینک Local خود خارج شوند.اگر بخواهیم که در IPv4 یک معادل برای آن پیدا کنیم ، شاید APIPA که دارای فرمت آدرسی دهی 169.254.x.x می باشد نزدیکترین عملکرد مشابه link-local را داراست. از این آدرس در ICMPv6 برای Neighbor Discovery ، Stateless Autoconfiguration جهت برقراری ارتباط با host هایی که از IP های Global Unicast استفاده نمی کنند وشناسایی آدرس های duplicate استفاده می شود. برای استفاده از آدرس های link-local در IPv6 سه راه وجود دارد :
• با استفاده از فرمان ipv6 enable در تنظیمات interface
• پس از اختصاص یک آدرس Global یا anycast با فرمان ipv6 address در تنظیمات interface
• با استفاده از فرمان ipv6 address
البته در دو روش اولی یک آدرس IPv6 به صورت خودکار generate می شود که Prefix آن FE80::/64 بوده و Host Address آن بر اساس EUI-64 می باشد. آدرس EUI-64 از MAC-Address همان Interface و یا اگر interface دارای MAC نباشد (مثل Serial و یا Tunnel ) از Pool آدرس MAC انتخاب می شود. برای درک بهتر این مطلب به مثال زیر توجه کنید.
فرض کنید که قصد داریم که IPv6 را بر روی روتر خود config کنیم
ابتدا به interface روتر خود رفته و فرمان IPv6 enable را وارد کنیم.
R1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
R1(config)#int fast
R1(config)#int fastEthernet 0/0
R1(config-if)#ipv6 enable
استفاده از این آدرس به همین سادگی است و تنظیمات تمام شده است . تنها کافیست از فعال شدن آن IPv6 اطمینان حاصل کنیم:
R1#sh ipv6 interface fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
IPv6 is enabled , link-local address is FE80::C800:FFF:FEF0:8
حال عینا همین مراحل را بر روی روتر دوم خود تکرار می کنیم و مجددا فقط از صحت تنظیمات مطمئن می شویم.
R2#sh ipv6 interface fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
IPv6 is enabled , link-local address is FE80::C801:FFF:FEF0:0
در گام نهایی نیز جهت اطمینان از ارتباط از فرمان ping استفاده می شود.
R1# ping ipv6 FE80::C801:FFF:FEF0:0
Output Interface: fastEthernet0/0
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to FE80::C801:FFF:FEF0:0, timeout is 2 seconds:
Packet sent with a source address of FE80::C800:FFF:FEF0:8
!!!!!
Success rate is 100 percent (5/5) , round-trip min/avg/max = 4/4/8 ms
اما شاید این سوال مطرح شود که MAC-Address برابر با 48 بیت و Host-Address در IPv6 برابر با 64 بیت می باشد . پس چگونه MAC به آدرس EUI تبدیل می شود؟
برای پاسخ به این سوال ، از اطلاعات مثال بالا استفاده می کنیم. ابتدا آدرس MAC متعلق به FastEthernet0/0 را پیدا می کنیم.
R1#sh int fastEthernet 0/0
FastEthernet0/0 is up, line protocol is up
Hardware is i82543 (Livengood), address is ca00.0ff0.0008 (bia ca00.0ff0.0008)
در مرحله ، FFFE مابین Vendor-id و Extension-id اضافه می شود.
[ca00.0f] : Vendor-id
[f0.0008] : extension-id
Ca00.0f + fffe + f0.008 = ca00.0fff.fef0.0008
سپس بیت 7 آدرس برعکس ( Inverse ) می شود.
ca00 = 1100 10 1 0 000 000 =>Inverse=>
1100 10 0 0 000 000 = c800
هم اکنون “.” ها را برداشته ، بلوک های 4 تایی جدا کرده و بین آنها “:” قرار می دهیم.
ca00.0fff.fef0.0008 => ca000ffffef00008 => c800:0fff : fef0 : 0008
بر طبق قوانین آدرس دهی در IPv6 که می توان اعداد صفری را که در جلوی “:” و قبل از عدد قبلی غیر از صفر می باشد را حذف کرد ، تغییرات را اعمال می کنیم:
c800: 0 fff : fef0 : 000 8 => c800:fff:fef0:8
در انتها نیز نتیجه بدست آمده همراه با Prefix مربوط به link-local نوشته می شود :
FE80:: C800:FFF:FeF0:8