پروتکل BGP
BGP پروتکل مسیریابی در اینترنت است که شیوهی برقراری ارتباط بین روترها را تعیین میکند. روترها برای برقراری ارتباطات، همسایگی ایجاد میکنند. تعداد این همسایگیها، بهترین عامل سنجش اعتبار و قوت BGP است.زمانی که یک نامه در صندوق پست انداخته میشود، ادارهی پست موظف است آن نامه را پردازش کرده و مسیری سریع و آسان برای تحویل آن به گیرنده انتخاب کند. در اینترنت هم همینطور است، وقتی کسی دادهها را از طریق اینترنت ارسال میکند، BGP مسئول بررسی تماممسیرهای موجود و انتخاب بهترین مسیر است.
BGP مخفف Border Gateway Protocol بوده و یکی از پروتکلهای مسیریابی در سراسر اینترنت است. پروتکلهای مسیریابی مانند BGP همچون نقشهای عمل میکند که بهترین مسیر را از مبدأ تا مقصد نشان داده و چگونگی برقراری ارتباط بین روترها برای انتشار انتقال اطلاعات را مشخص میکند. روتر BGP اطلاعات قابلدسترسی را با استفاده از یک پروتکل حملونقل به نام TCP تبادل کرده و پس از تشکیل یک اتصال TCP، روتر پیام اولیه را برای مذاکره و تأیید پارامترهای اتصال ارسال میکند.
چرا به پروتکل BGP نیاز داریم؟
اینترنت ابتدا تنها از یک ابر کوچک تشکیلشده بود و فقط چند شبکه به هم متصل در آن وجود داشت. در آن زمان، تمام آنچه برای مسیریابی انجام میشد تعریف گرههای این شبکههای محدود و ایجاد ارتباط بین آنها بود. اما اینترنت کوچک باقی نماند و ترکیب بیشتری از شبکهها در اینترنت به وجود آمده است که برای برقراری ارتباط وجود یک سیستم مسیریابی پویا الزامی است. درنتیجه، که یک پروتکل مسیریابی خارجی جدید تعریف شد که قابلیتهای مقیاسپذیری را فراهم آورد. ویژگی مقیاسپذیری پروتکل BGP سبب شد اینگونه مسیریابیها را بهخوبی انجام دهد.
پروتکلBGP چگونه کار میکند؟
وقتی دو Autonomous System)AS، سیستم خودمختار، گروهی از دستگاهها که توسط یک سازمان مستقل مدیریت میشوند) اقدام به برقراری ارتباط و تبادل اطلاعات با یکدیگر میکنند معمولاً از BGP برای مسیریابی استفاده میکنند. از دیدگاه مسیریابی، محیط اینترنت از تعداد زیادی AS تشکیلشده که با راههای ارتباطی اصلی به هم متصل شدهاند. هر AS دارای یک شمارهی مستقل است که به آن (Autonomous System Number)ASN میگویند. ASNهای برای استفاده در مسیریابی بیرونی اختصاص دادهشدهاند. BGP میتواند تمام ASهای مختلف را ببیند، هر ASN را شناسایی و بهترین مسیر (طبق سیاست سیستم) را انتخاب کند.
بهصورت خلاصه میتوان گفت: روترها برای ارتباط با یکدیگر ایجاد همسایگی میکنند به این همسایگی peer میگویند. پسازآن هر روتر اطلاعات کامل مسیر تا یک مقصد خارج را به روترهای همسایهی خود ارسال میکنند. هر peer تماممسیرهایی که برای هر شبکه میشناسد، مدیریت میکند و انتشار آن اطلاعات را به AS مجاور خود گسترش میدهد. مکانیسم تصمیمگیری BGP به این صورت است که همهی دادههای بهدستآمده را تجزیهوتحلیل میکند و یکی از همسایههای خود را برای ارسال بستهها برای یک مقصد خاص تعیین مینماید.
پس وقتی حجم مسیرها و مسیریابی بسیار زیاد است برای مسیریابی در بین مراکز، از پروتکل BGP استفاده میشود. BGP بهطور خاص برای تبادل اطلاعات مسیریابی بین تمام ارائهدهندگان خدمات اینترنتی مورداستفاده قرار میگیرد. به این صورت که اگر شرکتی از بیش یک شرکت ارائهدهندهی خدمات اینترنتی پهنای باند دریافت کند، در صورت down شدن یکی از سرویسها BGP بهطور خودکار، ترافیک موردنیاز را از بستر پروایدر بکآپ عبور میدهد.مسیریابی بین روترهای مرزی ASها که باعث میشود اطلاعات بین AS ها ردوبدل شود مسیریابی برونی(EGP)گویند. BGP یک پروتکل مسیریابی برونی است.
مسیر یابی درونی و بیرونی
در حال حاضر برای مسیریابی بین AS ها در اینترنت یا از default route که نوعی مسیریابی ایستا است، استفاده میکنیم یا از BGP.
مسیریابی بستههای IP در درون شبکه خود مختار بیشتر تابع پارامترهای قابل اندازهگیری مانند سرعت، قابل اعتماد بودن و… است. ولی مسیریابی بستههای اطلاعاتی بر روی شاهراههایی که شبکه های AS را به هم متصل کرده مسائلی کاملا متفاوت با مسیریابی در درون یک شبکه خود مختار دارد. در مسیریابی بین شبکههای AS مسائلی نظیر امنیت، پرداخت حق اشتراک و سیاست نیز میتواند در انتخاب بهترین مسیر دخیل باشد. در ادامه درباره چگونگی به کاربردن این policyها بیشتر صحبت می کنیم.
پروتکل BGP مسئول انتقال اطلاعات و انتخاب بهترین مسیرهای منتهی به مقاصد مختلف در محیط اینترنت می باشند. زمانی که دو AS اقدام به برقراری ارتباط با یکدیگر می کنند به طور معمول از BGP برای تبادل اطلاعات routing استفاده می کنند.
در حال حاضر جدیدترین نسخه این پروتکل BGP4 است که این نسخه از ادرسدهی classless پشتیبانی می کند.
این پروتکل برای ردوبدل کردن پیامهای خود بین روترها از یک اتصال قابل اعتماد استفاده میکند برای
این کار از پروتکل TCP و پورت 179 استفاده میکند.
پروتکل BGP یک پروتکل مسیریابی مسیر (Path Vector Protocol) است. یعنی هر روتر اطلاعات کامل مسیر تا یک مقصد خاص را به روتر همسایهی خود میفرستد.به عنوان مثال به شکل زیر نگاه کنید در این شکل تمام همسایههای مسیریاب F اطلاعات کامل مسیرهای خود را تا تمامی مقصدها مثلا روتر D برای آن میفرستند. حال مسیریاب F ابتدا مسیر EFGCD وIFGCD را به دلیل اینکه خود درون این مسیرها است را حذف میکند (تا در حلقه نیفتد) سپس از بین مسیر BCD و GCD بر اساس پارامترها و صفتهای BGP یکی را انتخاب میکند و بسته را به روتر همسایه میفرستد. درباره این کار در روتر بعدی انجام میشود تا بالاخره بسته به مقصد D برسد.
این پروتکل از دو پروتکل مکمل EBGP و IBGP تشکیل شده است. قبل از اینکه این دو تا تفاوتشان را بیان کنیم باید بدانید که شبکهها از نظر ارتباط با مسیریابهای BGP سه دسته اند:
شبکههای stub:این شبکهها فقط با یک مسیریاب BGP در ارتباطند بنابراین فقط دریافتکننده یا ارسالکننده اولیهاند و در توزیع ترافیک اینترنت و مسیریابی در اینترنت نقشی ندارند.
شبکههای multihome:در این شبکهها چند اتصال با یک یا چند مسیریاب BGP که در یک AS دیگر وجود دارد در ارتباطند پس ترافیک اینترنت میتوانند از داخل این شبکهها عبور کند.
شبکههای ترانزیت:این شبکهها دارای چندین مسیریاب مرزی هستند که نقش عمدهای در ترافیک اینترنت دارند.
IBGP
ارسال اطلاعات به سمت اینترنت در شرایطی که تنها یک روتر در مرز بین سازمان و اینترنت قرار دارد کاری بسیار اسان است. در این شرایط کافی است که روتر مرزی یک default route را از طریق پروتکل مسیریابی درونی(IGP) برای دیگر دستگاههای داخلی ارسال کند تا آنها تمامی پیامهای مقصد خارجی را برای روتر مرزی بفرستند.اما در صورت استفاده از چندین روتر مختلف برای برقراری ارتباط با اینترنت مسائل مختلفی را باید مد نظر قرار داد. بهمنظور برطرف کردن مشکل احتمالی و همچنین بهرهگیری از امکانات بیشتر می توان از IBGP در بین روترهای مرزی استفاده کرد.در واقع IBGP برای این است که مسیریابهای مرزی درون یک As بتوانند اطلاعات خود را ردوبدل کنند و بهاین ترتیب همه مسیریابها از تمام راههای مرزی مطلع هستند و میتوانند بهترین راه خروجی راپیدا کنند
EBGP
ایده ای که در پشت عملکرد این پروتکل قرار دارد شبیه به پروتکل های IGP مانند OSPF و EIGRP است. بدین ترتیب BGP نیز شبیه دو پروتکل یاد شده، در ابتدا سعی در برقراری رابطه مجاورت مابین روترها در ASهای مختلف می کند سپس، روترهای همسایه اطلاعات مورد نظر خود را از یکدیگر کسب کرده و انها را داخل جدول BGP قرار می دهند سپس پروتکل BGP اطلاعات موجود در جدول BGP را آنالیز کرده و اقدام به شناسایی بهترین مسیر منتهی به هر مقصد می نماید این route ها در داخل جدول routing روترها قرار دارد.
زمانی که روترهای همسایه در ASهای جداگانه باشند برای برقراری ارتباط و ردوبدل کردن اطلاعات مسیریابی از پروتکل EBGP استفاده میکنند.
هریک از routerهای، BGP از سه جدول برای نگهداری اطلاعات پروتکل BGPاستفاده میکند که این جدول ها به شرح زیر میباشند:
Routing table: شامل اطلاعاتی است که باید طی پیام Update مبادله شود.
Neighbor table: همسایههای روتر در این جدول نگهداری میشوند.
BGP table: اطلاعات دریافتی از بقیه مسیریابها و نیز دیگر path attributeها در این جدول ذخیره میشوند.