BGP چرا و چگونه
فرض کنیم کل اینترنت تحت مدیریت واحد قرار داشت. یا مثلاً آدرس همه کامپیوترها از همه جای شبکه قابلدیدن بود. حتی وقتی شما کامپیوتر خود را روشن میکردید، همه روترهای دنیا باید جدول آدرسهای خود را بهروزرسانی میکردند. در آن صورت آیا شبکه جهانی پایدار میماند؟ یا بهعنوانمثال، اگر هر اشتباه کوچک در پیکربندی شبکهای محلی، امنیت کل اینترنت را به خطر بی اندازد، آیا برقراری امنیت در چنین شبکهای خوابوخیالی نخواهد بود؟
مشکلات گفتهشده، با بزرگ شدن اینترنت بهواقع به وجود آمد و سیاستگذاران شبکه را بر آن داشت تا چارهای بیندیشند. امروزه پروتکل مدیریت مسیرها بین سیستمهای مستقل AS) یا (Autonomous System پروتکل BGP است. ولی بیایید نگاهی بی اندازیم به اینکه BGP چرا و چگونه به وجود آمد؟
پیش از BGP چه بود؟
در اوایل دهه 1980 ARPANET پروتکلی اجرا میکرد که Gateway-to-Gateway Protocol یا GGP نام داشت. هر گیتوی مسیر رسیدن به تمام آدرسهای شبکه موجود را میدانست و فاصله خود را تا آن آدرس بر اساس تعداد هاپ اندازهگیری مینمود. با توسعه ARPANET مشکلاتی ایجاد شد از این قبیل:
- چون هر گیتوی آدرس همه شبکهها را داشت، همحجم جدول مسیریابی آن بزرگ بود و هم با هر تغییر در توپولوژی شبکه، گیتویها باید دوباره باهم اطلاعات ردوبدل میکردند و جدول مسیریابی خود را دوباره میساختند.
- تعداد نرمافزارهای GGP که باید پیادهسازی میشد مدام در حال افزایش بود و این نرمافزارها روی سختافزارهای مختلفی نصبشده بود. این مسئله مدیریت واحد و نگهداری و عیبیابی را تقریباً غیرممکن کرده بود.
- با افزایش تعداد گیتویها اعمال تغییرات و بهروزرسانی آنها نیز بسیار وقتگیر میشد.
راهحل این مشکل در RFC 827 پیشنهاد شد. راهحل این بود که ARPANET به مجموعهای از شبکههای بههمپیوسته و با مدیریت مستقل تقسیم شود و برای هر شبکه مستقل که به نام Autonomous System یا AS شناخته میشود، مدیر جداگانهای وجود داشته باشد و بنا به سیاست مستقل خود شبکه را مدیریت نماید. تا پیشازاین، یک شبکه از شبکهها وجود داشت و با این راهحل شبکهای از Autonomous System ها به وجود آمد که هر AS خود شبکهای از شبکهها بود. هر AS هم با یک شماره به نام autonomous system number شناخته میشود که عددی 16 بیتی است و توسط یک موسسه بینالمللی مدیریت میشود. البته بعداً این عدد به 32 بیت افزایش یافت.
یکی از مهمترین تصمیماتی که مدیر هر شبکه باید برای AS خود میگرفت انتخاب پروتکل مسیریابی روی گیتویهای شبکه تحت مدیریت خود بود. به دلیل اینکه گیتویها درون AS قرار داشتند پروتکل مسیریابی روی آنها به نام interior gateway protocol یا IGP نامیده شد؛ و چون پروتکل GGP از قبل روی ARPANET اجراشده بود تبدیل به اولین پروتکل مسیریابی IGP شد. پسازآن در سال 1982 پروتکل RIP به وجود آمد و بهمرور پروتکلهای دیگری از قبیل RIP-2، RIPng، EIGRP، OSPF نسخه دو و سه و IS-IS و جای GGP را در شبکهها گرفتند.
AS ها بهوسیله یک یا چند گیتوی بیرونی به یکدیگر متصل میشوند و RFC 827 پیشنهاد میکند که این گیتویهای بیرونی، با استفاده از یک پروتکل به نام EGP اطلاعات مسیریابی خود را باهم ردوبدل نمایند. البته EGP یک پروتکل مسیریابی نبود بلکه فقط یک پروتکل بردار-فاصله بود که بهمنظور به اشتراکگذاری اطلاعات دسترسی به شبکهها بین گیتویهای بیرونی استفاده میشد و فاقد الگوریتم برای محاسبه بهترین مسیر به شبکهها بود. اطلاعات دسترسی به شبکهها شامل فهرستی از آدرس شبکههای اصلی (و نه زیر شبکهها) و گیتویهای لازم برای رسیدن به آنها بود.
EGP چگونه کار میکند؟
اولین نسخه EGP در RFC 827 ارائه شد. نسخه 2 با تغییراتی اندک در RFC 888 و نهایتاً بهطور رسمی در RFC 904 و بهعنوان EGPv2 معرفی گردید.
در EGP به دو روتر که باهم تشکیل همسایگی داده و در یک AS قرار دارند interior neighbors گویند و دو همسایه که در دو AS مختلف واقعشدهاند exterior neighbor نامیده میشوند. پیامهای EGP بین دو همسایه یا همتا[1] مبادله میشوند. در EGP مکانیسمی برای کشف خودکار همسایهها وجود ندارد و آدرس همسایهها باید بهصورت دستی پیکربندی گردند. پیامهایی که بین همسایهها ردوبدل میگردد بهصورت unicast به آدرس پیکربندیشده ارسال میگردد.
در RFC 888 پیشنهاد شد که TTL در پیامهای EGP عدد کوچکی قرار داده شود، چون این پیامها لازم نیست که از یک همسایه جلوتر بروند. در EGP لازم نیست که دو همسایه در یک لینک لایه دو (DataLink) شریک باشند. همانطور که در شکل زیر هم میبینیم بین دو همسایه BGP یک روتر دیگر قرار دارد و بین آنها پروتکل RIP برقرار است. از آنجائی که روترهای همسایه در EGP بهصورت unicast و با آدرس مشخصشده باهم ارتباط برقرار مینمایند، تنها لازم است که پیش از تشکیل همسایگی این آدرسهای مشخص در لایه سه قابلدسترسی باشند (امکان پینگ کردن آدرس وجود داشته باشد).
لازم به ذکر است که مفاهیم همسایههای interior و exterior و ارسال پیام بهصورت unicast به این دلیل مهم است که در BGP هم مورداستفاده قرارگرفتهاند.
مشکلات EGP
اصلیترین مشکل EGP این است که این پروتکل توانایی تشخیص loop در فرآیند مسیریابی را ندارد. البته مکانیسم counting to infinity که درواقع جلوگیری از رسیدن به فاصله (Distance) 255 است، در EGP وجود دارد. ولی این مکانیسم همراه با typical Poll interval بیاستفاده خواهد بود. مثلاً اگر typical Poll interval را برابر 180 ثانیه قرار دهیم، حدود 13 ساعت طول میکشد تا مکانیسم counting to infinity عمل کند. در RFC 904 بیانشده است که “اگر توپولوژی از قوانین موجود برای Stub ها تبعیت نکند، EGP نمیتواند اطلاعات توپولوژیکی لازم برای جلوگیری از loop را فراهم نماید”
پس EGP نیاز به یک شبکه بدون loop داشت تا درست کار کند. گرچه در ابتدا این محدودیت چندان مهم نبود، ولی با توسعه اینترنت شبکهای به وجود آمد که در آن AS ها تقریباً بدون نظم بهصورت مش به هم متصل بودند و حتی برخی از این AS ها باید ترافیک سایر AS ها را عبور میدادند.
وقتی شبکه NSFnet به وجود آمد وضع بدتر شد. حالا دو زیرساخت وجود داشت و برای هر ترافیک هم سیاست خاصی باید اعمال میشد تا از زیرساخت مناسب خودش استفاده نماید؛ اما چون EGP از مسیریابی مبتنی بر سیاست پشتیبانی نمیکرد، در RFC 1092 راهحلی موقتی ارائه شد.
مشکل عمده دیگر در ارتباط با EGP، ناتوانی این پروتکل در همکاری با IGP ها و یافتن کوتاهترین مسیر در یک AS دیگر بود. مثلاً پارامتر مسافت در EGP را نمیشد بدون خطا به hop count در RIP تبدیل نمود، چون اگر پارامتر مسافت در EGP باعث شود که hop count بزرگتر از پانزده شود، پروتکل RIP آن شبکه را غیرقابل دسترسی فرض میکند. از دیگر محدودیتهای EGP وقتی بروز میکند که بخواهد اطلاعات مربوط به تعداد زیادی شبکه را منتقل نماید در این حالت احتمال fail شدن EGP بسیار زیاد است. از دیگر محدودیتها هم میتوان به آسیبپذیر بودن این پروتکل در برابر اطلاعات نادرست از شبکه است که یا بهصورت عمدی و یا غیرعمدی به آن داده میشود.
بهعنوان آخرین مشکل باید بهسرعت بسیار پایین EGP در انتشار تغییرات یک شبکه اشاره نمود. پروسه ایجاد همسایگی بسیار کند است و سرعت انتشار تغییرات شبکه تقریباً صفر. بهعنوانمثال EGP زمانی یک مسیر را down فرض میکند که شش آپدیت متوالی برای آن مسیر را دریافت نکند. ازآنجاییکه بازه زمانی ارسال آپدیت در EGP بهصورت پیشفرض 180 ثانیه است، 18 دقیقه طول میکشد تا EGP یک مسیر را down به شمار بیاورد. این طولانی بودن زمان تشخیص خطا ممکن است مدیر شبکه را هم در تشخیص محل دقیق وقوع خطا بهاشتباه بی اندازد.
تلاشهای زیادی انجام شد تا EGPv3 را به وجود بیاورند، ولی هیچکدام موفقیتآمیز نبودند و درنهایت EGP جای خود را به پروتکل جدیدتری داد به نام BGP. امروزه EGP نام یک کلاس از پروتکلهاست که مسیریابی بین AS ها را انجام میدهند. آنچه بهعنوان میراث پروتکل EGP برای ما باقیمانده است مفاهیمی مثل Autonomous System و مسیریابی بین AS ها است. شود که چون اگر مسافت در باید اعمال میشد تا از زیرساخت مناسب خودش استفاده نماید.
اختراع BGP
دلیل اینکه تلاشهای انجامشده برای توسعه EGP به شکست انجامید این بود که پروتکل EGP یک پروتکل مسیریابی نبود. این پروتکل درواقع فقط امکان دسترسی را فراهم مینمود. تبدیل EGP به یک پروتکل مسیریابی آنقدر تفاوت ایجاد میکرد که پروتکل جدید، دیگر نسخهای از EGP بهحساب نمیآمد؛ بنابراین اگر بنا بود پروتکلی جدید ایجاد شود بهتر بود پروتکلی کاملاً نوین باشد که مشکلات EGP را نداشته باشد. مثلاً امکان یافتن بهترین مسیر به یک مقصد را داشته باشد و بتواند از loop جلوگیری نموده و برای محاسبه فاصله بهطور صحیح با پروتکلهای IGP تعامل کند.
این پروتکل جدید که BGP نام داشت در سال 1989 و با RFC 1105 معرفی شد و دقیقاً یک سال بعد با RFC 1163 بهروزرسانی گردید. پسازآن دو نسخه دیگر نیز به وجود آمدند و درنهایت در سال 1995 در RFC 1771 نسخه چهارم BGP بنام BGP-4 معرفی شد. البته این RFC با RFC 4271 جایگزین گردید. BGP-4 با نسخههای اولیه بسیار متفاوت است. مهمترین اختلاف آن با نسخههای قبلی این است که BGP-4، classless است درحالیکه نسخههای قبلی classful بودند. دلیل اصلی این تغییر عمده این بود که مسیریابی اینترنت را قابل مدیریت و قابلاطمینان نگهدارند. در سال 1993، سایدر یا Classless Inter-Domain Routing یا CIDR به همین منظور به وجود آمد و متعاقب آن BGP-4 برای پشتیبانی از سایدر ایجاد شد. بهمرورزمان، با از بین رفتن سایر نسخههای BGP شماره نسخه هم حذف شد و هر جا از BGP صحبت میشود منظور همان BGP-4 خواهد بود.
[1] همسایه (neighbor) یا همتا (peer) اختلاف کمی دارند و معمولاً بهجای یکدیگر به کار میروند. همسایه به دو روتر گویند که یک نشست پروتکل مسیریابی بین آنها برقرار است. همتا دو همسایه هستند که اطلاعات دسترسی به شبکهها را روی آن نشست باهم ردوبدل مینمایند. پس دو روتر ابتدا تشکیل همسایگی داده و سپس باهم همتا میشوند.
برچسب:Course