دانشنامهسیسکوشبکه و اینترنت

پروتکل BGP

پروتکل Border Gateway Protocol

این پروتکل که نسخه ۴ آن استفاده می شود و پروتکل منتخب در اینترنت است، در دسته ی EGP یا exterior gateway protocol قرار می گیرد و برای مسیریابی بین AS ها استفاده می گردد. در این پروتکل یک Autonomous System Number یا ASN وجود دارد که ۱۶ بیت است و رنج آن از ۱ تا ۶۵۵۳۵ می باشد و رنج ۶۴۵۱۲ تا ۶۵۵۳۵ برای استفاده بصورت private رزرو شده است. BGP برای انتقال پکت های خود از پروتکل TCP و پورت ۱۷۹ استفاده می کند. 

اما در چه مواقعی نیاز به استفاده از BGP داریم؟ زمانی که از طریق چندین شرکت، چندین لینک به اینترنت داریم و یا از طریق یک شرکت چندین مسیر به اینترنت داریم.

BGP Peers (Neighbors)

پروتکل BGP برای انجام فعالیت های خود می بایست با روترهای دیگر رابطه همسایگی برقرار نماید. دو نوع رابطه همسایگی  iBGP و eBGP وجود دارد. در iBGP روترهای همسایه در یک AS قرار دارند ولی در eBGP این روترها هر کدام در یک AS مختلف قرار می گیرند. وقتی برای بار اول رابطه همسایگی ایجاد شد، آنها routing table خود را بین یکدیگر به اشتراک می گذارند و از آن به بعد تنها تغییرات را ارسال می کنند. در ضمن یک روتر فقط می تواند عضو یک AS باشد و نه بیشتر. همچنین AD مربوط به eBGP عدد ۲۰ و iBGP عدد ۲۰۰ است.

BGP Peers Messages

پیغام های مختلفی بین peerها در BGP ردوبدل می شود که عبارتند از:

Open

این پیغام بین peerها برای شروع یک session ارسال می گردد که شامل سه پارامتر BGP Version و شماره ASN و BGP Router ID می باشد. نسخه BGP باید بین روترها یکسان باشد. 

Keepalive

این پیغام هر ۶۰ ثانیه یکبار ارسال می شود تا اطمینان حاصل شود آن روتر همچنان در دسترس است. اگر تا ۱۸۰ ثانیه هیچ پیغامی دریافت نشود، آن روتر را به عنوان dead در نظر می گیرد. 

Update

این نوع از پیغام ها برای تبادل route بین peerها استفاده می شود. 

Notification

این پیغام زمانی ارسال می شود که یک fatal error وجود داشته باشد. 

 

مثال۱: پیکربندی اولیه BGP

عکس 216

در مرحله اول باید پروسه BGP را در روتر B فعال نموده و همسایه ها را معرفی نماییم:

routerB(config)#router bgp 100

routerB(config)#neighbor 10.1.1.1 remote-as 100

routerB(config)#neighbor 172.16.1.2 remote-as 900

همانطور که در بالا مشاهده می نمایید چه peering از نوع iBGP باشد و چه از نوع eBGP از remote-as استفاده می کنیم و تفاوتی در دستور وارده ایجاد نمی کند. 

برای stability purpose باید یک source interface را برای ساخت update ها برای یک neighbor مشخص، معرفی نماییم که در اینجا اینترفیس lo0 را انتخاب می کنیم:

routerB(config)#neighbor 172.16.1.2 update-source lo0

در مرحله بعد به سراغ پیکربندی روتر C می رویم که باید به آی پی loopback روتر B اشاره نماید که آی پی آن ۱.۱.۱.۱/۲۴ است.

routerC(config)#router bgp 900

routerC(config)#neighbor 1.1.1.1 remote-as 100

بصورت پیش فرض bgp فرض می کند که external peers  یک hop فاصله دارد. استفاده از اینترفیس لوپ بک به عنوان source interface باعث می شود که روتر B دو hop از روتر C فاصله داشته باشد. بنابراین باید ویژگی ebgp-multihop فعال نماییم.

routerC(config)#neighbor 1.1.1.1 ebgp-multihop 2

برای فعال کردن authenticate update بین دو روتر peers:

routerB(config)#neighbor 172.16.1.2 password CISCO

برای تغییر زمان keepalive timer مطابق دستور زیر عمل می کنیم. اگر hold-time timer بین روترها متفاوت باشد، ارتباط همچنان برقرار می ماند و کوچکترین timer استفاده خواهد شد. 

routerB(config-router)#timers bgp 30 90

برای تنظیم timer یک روتر همسایه بصورت زیر عمل می کنیم، که در اینصورت این timer بر global timer غلبه می کند:

routerB(config-router)#neighbor 172.16.1.2 timers 30 90

برای نمایش وضعیت روترهای neighbor از دستورات زیر استفاده می کنیم:

routerB#show ip bgp neighbors

routerB#show ip bgp neighbors 172.16.1.2

مثال۲: استفاده از BGP Synchronization

مثال زیر را در نظر بگیرید. AS200 در نقش transit بین AS100 و AS300 است و یکی از این روترهای transit یعنی روتر C از پروتکل BGP پشتیبانی نمی کند. BGP قانونی دارد به نام synchronization rule که بر اساس آن تمامی روترها در transit AS که حتی شامل روترهایی که از BGP استفاده نمی کنند نیز می شود، باید route را learn کنند قبل از اینکه آن مسیر به روترهای خارج از AS بخواهد advertise شود.

عکس 217

گیج شدید؟ 

مثال بالا را دوباره نگاه کنید. روتر A شبکه خود یعنی ۱۰.۵.۰.۰/۱۶ را به روتر B که روتر همسایه است، advertise می کند. در نهایت آن route به روتر D می رسد. حال یک blackhole وجود خواهد داشت اگر روتر D آن route را به روتر E ارسال کند در حالی که همچین مسیری در روتر C وجود ندارد و اگر روتر E بخواهد به شبکه ۱۰.۵.۰.۰ برسد، روتر C آنرا drop خواهد کرد. حال اگر مشکل را متوجه شدید، می رویم به سراغ راه حل که همان قانون یکسان سازی است. این قانون روتر D را وادار می کند که آن route را ارسال نکند و صبر نماید تا روتر C آنرا learn کند. حال سوال پیش می آید که روتر D از کجا باید بفهمد که روتر C آن مسیر را learn کرده است؟ به راحتی و زمانی که روتر D یک بروزرسانی از روتر C و از طریق پروتکل های IGP مانند EIGRP و OSPF دریافت نماید که شامل آن route باشد. 

در دو حالت می توان این قانون را غیرفعال کرد:

۱ – در صورتی که AS مربوطه transit بین AS های دیگر نباشد.

۲ – در صورتی که همه روترهای transit AS پروتکل iBGP را داشته باشند و fully meshed باشند.

در نسخه های IOS جدید این قانون بصورت پیش فرض غیرفعال می باشد. اما برای غیرفعال کردن آن بصورت زیر عمل می کنیم:

routerD(config)#router bgp 200

routerD(config)#no synchronization

چگونه آدرس های مختلف network را در BGP وارد نماییم؟

سه روش برای advertise کردن network وجود دارد:

۱ – با استفاده از دستور network

۲ – با استفاده از دستور aggregate-address

۳ – از طریق redistribute کردن یک IGP به درون BGP

استفاده از دستور network به BGP می گوید که چه شبکه هایی advertise گردند و نه اینکه چه اینترفیس هایی BGP را فعال کنند. با استفاده از آن می توان networkهایی را که در local AS هستند به BGP تزریق کرد حتی اگر از طریق پروتکل های IGP وارد شده باشند. پس برای advertise کردن فقط محدود به route هایی که مستقیما به روتر متصل هستند، نیستیم. با این وجود یک قانون بنیادین وجود دارد که می گوید حتما باید آن route درون routing table روتر باشد تا advertise گردد. حتی prefix وارده نیز باید حتما با چیزی که در routing table وجود دارد، یکسان باشد. مثلا اگر آدرس ۱۷۲.۱۶.۰.۰/۱۶ در routing table از طریق EIGRP وجود دارد شما نیز باید دستور زیر را برای BGP بزنید:

routerD(config-router)#network 172.16.0.0 mask 255.255.0.0

اگر دستور زیر را بزنید اشتباه است و آن آدرس advertise نخواهد شد:

routerD(config-router)#network 172.16.0.0 mask 255.255.255.0

 


بیشتر بدانید:


نمایش بیشتر

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا