SRE at Asa Co. / Agah Group
آشنایی با پروتکل Border Gateway Protocol - BGP
در CCNA، آخرین پروتکل مسیریابی ای که درموردش صحبت میشود ، پروتکل BGP یا همان Border Gateway Protocol میباشد(البته قابل ذکر است در CCNA بسیار کلی و درحد آشنایی با این پروتکل صحبت خواهد شد، و در CCNP و CCIE و دیگر مدارک بصورت پیشرفته تر وارد این بحث میشویم).
این پروتکل در دسته EGP ها قرار میگیرد و پروتکلی است که برای مسیریابی در سطح اینترنت، مسیریابی بین Service Provider ها و... ازش استفاده میشود. عموما بسیاری از مراکز در سطح داخلی خود یکی از پروتکل های IGP (مثل OSPF ,EIGRP و...) را پیاده سازی میکنند و برای ارتباط به مراکز دیگرشون در دیگر نقاط دنیا از BGP استفاده میکنند. این پروتکل ویژگی های بسیار زیادی دارد که در آینده با آنها آشنا میشوید،از ویژگی های شاخص آن میتوان به 3 مورد زیر اشاره کرد :
- مقیاس پذیری : پروتکل های دسته ی IGP برای داخل سازمان ها طراحی شده اند و برای شبکه های بسیار بزرگ ، مثل اینترنت مناسب نیستند ، چراکه ممکن است میلیون ها و شاید میلیارد ها مسیر برای مسیریابی وجود داشته باشد و آن پروتکل ها از پس این مقیاس نمیتوانند بر بیاییند.BGP پروتکلی است که برای این مقیاس طراحی شده است و میتواند اینگونه مسیریابی هارا به خوبی Handle کند.پس به این نتیجه رسیدیم که وقتی حجم مسیرها و مسیریابی بسیار زیاد میشود یا برای مسیریابی در بین مراکز خود،میتوانیم از این پروتکل استفاده کنیم(تنها کاربرد این پروتکل در سطح اینترنت نیست و در پروژه های بزرگ دیگر و همچنین مسیریابی در SP ها و در بین مرکزهای مختلف(منظور از مراکز ، AS های مورد نظر شما است، به عنوان مثال یکی از شعب شرکت شما) (در سطح شهر،استان،کشور،قاره) هم قابل استفاده و پیاده سازی میباشد).
- ساختار AS های مستقل: این پروتکل به پروتکل داخلی و اجرایی در سطح AS شما کاری ندارد و به راحتی میتواند با پروتکل های IGP ترکیب شود. همانطور که قبلا اشاره شد،شما میتوانید در مراکز در سطح داخلی خود یکی از پروتکل هایه IGP (مثل OSPF,EIGRPو...) را پیاده سازی کرده و در بین مراکز خود ، در سطح کشور یا هرسطحی که مدنظرتان باشد، با استفاده از BGP مسیریابی را انجام دهید.
- مسیریابی بر اساس Policy مورد نظر شما: شما میتوانید در این پروتکل متریک را کنار گذاشته و بر اساس سیاست های دلخواه خودتون مسیریابی را انجام دهید،شاید بخواهید مسیر را از Service Provider ارزان تر انتخاب کنید ، این انتخاب میتواند بر اساس خواسته ی شما باشد.
مفاهیم
برای وارد شدن به بحث BGP، تمام دیدگاه های خود درمورد جزئیات IGP ها را دور بریزید و بجاش روی هدف اصلی روتینگپروتکلها تمرکز کنید:
- یادگیری مسیرها
- انتخاب بهترین مسیر(در زمان وجود چند مسیر برای رسیدن به مقصد ، بهترین مسیر انتخاب شود)
- همگرایی(وقتی تغییری رخ میدهد،به اطلاع بقیه ی همسایه ها برسد)
پروتکل های IGP، به دنبال اینند که مسیر سابنت های جدید را یاد بگیرند، با استفاده از متریک بهترین مسیر را انتخاب کنند و تا جایی که میتوانند با سرعت بیشتر فرآیند همگرایی را انجام دهند. BGP هم همین اهداف را دارد اما با چند تفاوت اساسی؛ اول از همه، bgp روی reachability(قابل دسترس بودن) تمرکز خواهد داشت، که چه prefix هایی قابل دسترسی خواهند بود؟ bgp برای استفاده در اینترنت درنظر گرفته شده است و اولین و مهمترین کارش این است که مطمئن شود که تمام روتر ها ، تمام public ip address prefix هایه قابل دسترس در اینترنت را یاد بگیرند.
برای متوجه شدن بزرگیِ جداول مسیریابی درحال استفاده در روتر های اصلی اینترنت ، کافیه فقط به وبسایت:
http://bgp.potaroo.net
مراجعه کنید.
تبلیغ مسیر ها به وسیله BGP: پروتکل BGP تبادل اطلاعات مسیریابی ها را، همانند روند IGP ها انجام میدهد، البته با کمی تفاوت؛ در ابتدای این فرایند، یک روتر میبایستی اطلاعات یک یا چند شبکه را بداند ، سپس با استفاده از یک پروتکل برای تبادل پیام های BGP (BGP protocol message) و پکت BGP Update، اطلاعات مسیریابی را با یک روتر دیگر تبادل میکند.(به روتر های همسایه BGP Neighbor یا BGP Peer گفته میشود.)
یکی از تفاوت های بزرگ در مقایسه ی BGP با بقیه ی پروتکل های IGP این است که BGP مسیر هارا به روتر های دیگر در سازمان های دیگر advertise میکند (در مثال تصویر زیر ، بین ISP ها)، اما IGP ها طبق چیزی که از قبل برایشان تعریف شده است، مسیر هارا برای روترهای دیگر در داخل همان سازمان advertise میکنند.
پروتکل BGP میتواند برای ADVERTISE کردن Public IPv4 Prefix یک شرکت به ISP محلی خودش استفاده شود، به عنوان مثال در عکس بالا، سازمان ما در سمت چپ با استفاده از BGP Peering Relationship به ISP محلی خودش (در این مثال ISP1) آدرسPublic Prefix محلی خودش رو برای شبکه ی جهانی اینترنت به ISP شماره ی 1، advertise میکند(شبکه ی 192.0.2.0/24).ـISP ها بهم متصلند ، پس ISP ها به ISP های دیگری که متصلند ، این شبکه را Advertise میکنند.و در انتها تمام قسمت های اینترنت میدانند که به چه صورتی پکت هارا به آدرس 192.0.2.0/24 ارسال کنند.
در BGP ـ، ASN یا همان Autonomous System Number کلید و نکته ی بسیار مهمی میباشد،حتی مهمتر از ارزشی که در EIGRP داشت. در BGP ، همانند EIGRP مفهومه AS به معنی شبکه ای که به صورت جداگانه و مستقل و خودمختار فعالیت میکند است .
پروتکل BGP از ASN (شماره ی اختصاص داده شده به هر AS) در بسیاری از بخش ها و امکانات مختلفش استفاده میکند، مثلا برای فرایند انتخاب بهترین مسیر در BGP (همان BGP Best Route) و یا مکانیزم پیشگیری از loop در شبکه استفاده میشود.
مکانیزم تبادل پایگاه داده در BGP بسیار شبیه Distance Vectorها میباشد، از این رو به BGP، پروتکل Path Vector نیز گفته میشود؛ BGP پروتکل بسیار گسترده و پیچیده ای میباشد و بسیاری از متخصص ها ترجیح میدهند تا جایی که میتوانند از پروتکل ها و راهکارهای ساده تر استفاده کنند و در مواقعی که نیاز نیست، این پیچیدگی زیاد را وارد شبکه ی خود نمیکنند.
بحث اینکه چرا پروتکل BGP را باید استفاده کنیم ، بحث بسیار بزرگیست که مطرح کردنش از حوصله این مطلب خارج است.مثلا ممکن است یک بانک بخواهد یک رنج عمومی خارج از رنج ISP های ارتباطی خودش داشته باشد تا بتواند همیشه ارتباط خودش را با اینترنت از طریق SP های مختلف حفظ کند.
بسیاری از بسیاری از مراکز، ASN و Public IP Address های خودشون رو مستقیما از RIPE (در خاورمیانه) خریداری میکنند و در اینجا مجبورند که بین خودشون و Service Provider پروتکل BGP را اجرا کنند و یا مثلا زمانی که سازمان هایی که در سابنت یکدیگر نیستند (مثلا از MPLS VPN استفاده میکنند)، برای برقراری ارتباط بین مراکزشون ، مجبورند از پروتکلی استفاده کنند که برای همسایگی بین AS ها ، برایش سابنت ها مهم نباشد(BGP)، در اینجا میایند و از رنج خصوصی ASN ها و پروتکل BGP استفاده میکنند(کاربرد Private ASN تقریبا مشابه Private IP Address ها میباشد).
در این پروتکل ، همسایه ها باید بصورت استاتیک و دستی، طبق یکسری مشخصه های خاص بهم معرفی شوند.
پروتکل BGP ، همانطور که قبلا گفتیم پروتکلی Policy Base میباشد، یعنی شما میتوانید مسیرهای انتقالی خودرا ، با تغییر attribute های مختلفی و زیادی که در این پروتکل وجود دارد،خودتان انتخاب کنید؛ اما درصورتی که درحالت پیشفرض قرار دهید و تغییری در attribute ها ایجاد نکنید، این پروتکل از مشخصه AS_Path برای یافتن بهترین مسیر استفاده میکند،این بحث هم جایه توضیح و بحثه بسیاری دارد، اما تا این حد میتونم بگم که هربار که از سازمانی به سمت سازمان دیگر، بسته های بروزرسانی BGP ارسال میشوند، ASN ها در داخل بسته قرار میگیرندو بسته وقتی که میخواهد به مقصدش برسد، از هر سازمانی که عبور کند، ASN آن سازمان را در بسته ی خودش قرار میدهد(مثلا ISPها)، در نهایت بعد از رسیدن بسته به مقصد، مسیری برای انتقال داده انتخاب میشود، که تعداد ASN هایی که در بین مسیرش وجود داشته اند،کمتر باشد (مثل DV که مسیری را انتخاب میکرد که router های کمتری در مسیر داشته باشد). (شکل زیر،فرایند انتخاب بهترین مسیر با این مشخصه را به خوبی نشان میدهد)(چون در مسیر پایین asn کمتری قرار دارد، آن مسیر انتخاب میشود).
پروتکل BGP به دو دسته:
- Internal (Internal BGP = iBGP)
- External (External BGP = eBGP)
تقسیم میشود(مثال در عکس پایین)؛ در تعریف ساده، eBGP برای استفاده و پیاده سازی در بین AS ها میباشد و iBGP برای استفاده در داخل AS ها میباشد.ممکن است بپرسید چرا با وجود IGP ها باید از iBGP استفاده کنیم؟ بحث موارد استفاده ی eBGP و iBGP ها گسترده است و در مراتب بالاتر بصورت کامل بررسی میشود، ولی به عنوان یک نمونه میتوان گفت به عنوان مثال در همان بحث AS_PATH ها ، بسته های آپدیت فقط میبایستی از پروتکل BGP عبور کند،با هربار عبور از eBGP ها عدد AS یا همان ASN به AS_PATH اضافه میشود(که در انتها مشخص میشود بسته از چه AS هایی گذشته است.) اما در iBGP فقط بسته در داخل AS عبور داده میشود و از Edge Router اینطرف، تا Edge Router طرف دیگر بسته رسانده میشود و تغییری در AS_PATH ایجاد نمیشود(ولی بسته در قالب پروتکل BGP و در داخل سازمان انتقال پیدا کرده است).
مباحث مربوط به eBGP و iBGP در CCNP بصورت بهتر و کاملتر مورد بررسی قرار میگیرد و در CCNA در حد آشنایی با تفاوت کلی اشان معرفی شده اند.
انواع اتصالات در طراحی لبه ی اینترنت که در BGP مورد بررسی قرار گرفته میشود(در حالت های Multihomed ممکن است تعداد بیشتر از 2 عدد باشد):
امیدوارم که این مطلب برایتان مفید واقع شده باشد / موفق باشید.
مطلبی دیگر از این انتشارات
پروازی بر دنیای امنیت شبکه (قسمت اول) - مقدمه
مطلبی دیگر از این انتشارات
آشنایی با QoS – بخش هفتم (Congestion Avoidance) - قسمت نهایی
مطلبی دیگر از این انتشارات
پروازی بر دنیای امنیت شبکه (قسمت پنجم) – دستورالعمل ها