یافتن گره های همسایه « وبلاگ ipSpace.net

اکنون که کمی بیشتر در مورد آدرسها در پشته شبکه میدانیم (کل سری را بخوانید) و اینکه چرا CLNP از آدرسهای گره استفاده میکند در حالی که TCP/IP از آدرسهای رابط استفاده میکند، بیایید ببینیم که چگونه مشکلات آدرسدهی رایج مانند یافتن گرههای همسایه را حل میکنند.
بیایید با فیل در اتاق شروع کنیم: چگونه می دانید که می توانید به میزبانی که می خواهید مستقیماً با او ارتباط برقرار کنید، دسترسی پیدا کنید؟ در نمودار زیر، A چگونه می داند که B در کنار او نشسته است؟
در TCP IP، پاسخ بی اهمیت است. هر زیر شبکه چیزی به نام ماسک زیر شبکه دارد. بنابراین آدرس IP خود را می گیرید، آدرس IP مقصد را می گیرید، ماسک زیر شبکه را می گیرید و بقیه بیت ها را پاک می کنید. سپس میتوانید مقایسه کنید که آیا زیرشبکه شما و زیرشبکه هدف مطابقت دارند یا خیر، و اگر مطابقت دارند، میدانید که میتوانید مستقیماً به آدرس IP مورد نظر برسید. هر دو میزبان باید به یک بخش لایه پیوند داده متصل شوند.
این فرآیند در IPv6 کمی پیچیده تر است. روترها ممکن است پیشوندهای اتصال IPv6 اضافی را در پیامهای تبلیغاتی روتر خود تبلیغ کنند و میزبان باید این موارد را در حین انجام بررسیهای بالا در نظر بگیرد. همچنین حذف پیشوندهای پیوند از پیامهای تبلیغاتی روتر قانونی است، در این صورت یک میزبان IPv6 که به خوبی نگهداری میشود باید تمام بستهها را به روتر اولین هاپ ارسال کند.
سوال بعدی: چگونه به آدرس IP مورد نظر برسیم؟ ما باید از پروتکلی استفاده کنیم که (با توجه به آدرس IP مقصد) آدرس MAC مقصد را پیدا کند که می توانیم در هدر لایه 2 برای ارسال بسته به میزبان مقصد استفاده کنیم. IPv4 برای انجام این کار از رسانه LAN ARP استفاده می کند و IPv6 از Neighbor Discover (ND، بخشی از ICMPv6) استفاده می کند..
برای اتصال نقطه به نقطه سطح 2 نیازی به ARP یا ND ندارید زیرا شما قبلاً آدرس لایه پیوند داده را برای استفاده برای شخص دیگر می دانید. به عنوان مثال، در پست وبلاگ Early Data-Link Layer Addressing، اشاره کردیم که آدرس MAC مقصد پیوند PPP همیشه 0xFF (آدرس پخش) است. از آنجایی که ما آدرس مک مقصد را می دانیم، ARP را روی PPP یا هر اتصال سریال نقطه به نقطه دیگری انجام نمی دهیم. (IPv6 هنوز هم می تواند Neighbor Discovery را انجام دهد).
OSI (CLNP) رویکرد کاملاً متفاوتی نسبت به TCP/IP داشت زیرا یک آدرس شبکه CLNP (NSAP – Network Service Service Point) متعلق به یک گره است و یک گره می تواند چندین رابط داشته باشد. شما نمی توانید از بخشی از آدرس شبکه هدف برای تعیین اینکه آیا گره همسایه شماست استفاده کنید. برای حل این مشکل، هر گره CLNP پیام های سلام ارسال می کند – میزبان ها به سیستم پایان سلام می فرستند.(ESH) و روترها سیستم Intermediate Hello را ارسال می کنند(ISH) – NSAP های خود را تبلیغ می کنند.
هر گره CLNP در یک بخش LAN به تمام پیامهای hello که سایر گرهها روی آن بخش ارسال میکنند گوش میدهد و یک کش از آدرسهای NSAP همسایه ایجاد میکند. در مثال ما، A می داند که B یک همسایه است زیرا پیام ESH را از B می بیند. به همین ترتیب، با فرض وجود پیوند دیگری که A و D را به هم متصل می کند (نمودار زیر را ببینید)، A می داند که D یک همسایه است (اما). در یک رابط متفاوت) پس از دریافت پیام تبریک سیستم پایانی از D. به طور مشابه، B می داند که D همسایه نیست زیرا هرگز ESH از D ندیده است.

یک پیوند دیگر و یک گره دیگر به شبکه CLNP اضافه کنید
در نهایت، برای تصمیمگیری برای ارسال و ارسال بستهها، به اطلاعات بیشتری در کش همسایه نسبت به NSAPهای همسایه نیاز داریم. همانطور که در مورد میزبان A می بینید، ورودی های کش همسایه باید دارای رابط های خروجی باشند. ما همچنین به آدرس های MAC مورد نظر نیاز داریم که جمع آوری آنها بی اهمیت است. پیام های Hello حاوی آدرس MAC فرستنده هستند و گره های CLNP می توانند از آنها برای ایجاد نقشه بین NSAP های همسایه و آدرس های لایه 2 استفاده کنند.
به طور موثر، کش همسایه CLNP از نظر عملکردی معادل مسیرهای میزبانی است که به رابط ها و آدرس های MAC اشاره می کنند.
خارج از موضوع: ARP و تحرک ماشین مجازی
در مراکز داده که از مجازی سازی سرور استفاده می کنند، ما اغلب با ماشین های مجازی سر و کار داریم که خواه ناخواه در بافت مرکز داده حرکت می کنند. اگر ماشین مجازی پس از جابجایی، تبلیغ شود تا همه بدانند که آدرس MAC ماشین مجازی اکنون در جای دیگری است، مفید خواهد بود. این بلافاصله با CLNP کار می کند، اما متأسفانه ما مکانیزم مشابهی در IP نداریم.
هاست های IP مکانیزمی به نام دارند ARP رایگانجایی که یک میزبان یک پاسخ ARP پخش را ارسال می کند و یک نقشه جدید بین آدرس IP و آدرس MAC خود را اعلام می کند (میزبان ها هنگامی که آدرس IP یا MAC خود تغییر می کند از این استفاده می کنند). با این حال، این همان پیام های خوشامدگویی دوره ای تولید شده توسط میزبان نیست.
بسیاری از هایپروایزرها آدرسهای MAC و IP ماشین مجازی را ردیابی میکنند و پس از جابجایی ماشین مجازی، ARPهای رایگان جعلی ارسال میکنند، اما IP برای استفاده به این صورت طراحی نشده است. فروشندگان مجازی سازی که سعی کرده اند سرمایه گذاری خود را در پشته شبکه در حداقل مطلق نگه دارند (فکر کنید VMware) به درخواست ها و پاسخ های ARP گوش نمی دهند. به این ترتیب آنها نمی توانند ARP های بلاعوض را هنگام حرکت VM تولید کنند.
با این حال، VMware متوجه شد که پروتکل کاملا منسوخ دیگری به نام Reverse ARP وجود دارد (تعریف شده در RFC 1984 که هیچ کس برای چندین دهه از آن استفاده نکرده بود. بسته های RARP فقط دارای آدرس MAC هستند، نه آدرس IP، و از آنجایی که VMware ESXi آدرس MAC VM را می داند. ، می تواند یک بسته RARP از طرف VM پس از جابجایی ماشین مجازی تولید کند.




