آموزش CCNA : آشنایی با پروتکل BGP و پیاده سازی پروتکل eBGP در سیسکو
BGP، پروتکل مسیریابی در اینترنت است که شیوهی برقراری ارتباط بین روترها را تعیین میکند. روترها برای برقراری ارتباطات، همسایگی ایجاد میکنند. تعداد این همسایگیها، بهترین عامل سنجش اعتبار و قوت BGP است.
زمانی که یک نامه در صندوق پست انداخته میشود، ادارهی پست موظف است آن نامه را پردازش کرده و مسیری سریع و آسان برای تحویل آن به گیرنده انتخاب کند. در اینترنت هم همینطور است، وقتی کسی دادهها را از طریق اینترنت ارسال میکند، BGP مسئول بررسی تماممسیرهای موجود و انتخاب بهترین مسیر است.
BGP مخفف Border Gateway Protocol بوده و یکی از پروتکلهای مسیریابی در سراسر اینترنت است. پروتکلهای مسیریابی مانند BGP همچون نقشهای عمل میکند که بهترین مسیر را از مبدأ تا مقصد نشان داده و چگونگی برقراری ارتباط بین روترها برای انتشار انتقال اطلاعات را مشخص میکند. روتر BGP اطلاعات قابلدسترسی را با استفاده از یک پروتکل حملونقل به نام TCP تبادل کرده و پس از تشکیل یک اتصال TCP، روتر پیام اولیه را برای مذاکره و تأیید پارامترهای اتصال ارسال میکند.
پروتکل Border Gateway Protocol یا به اختصار BGP یک پروتکل مسیریابی سیستمی مستقل (Autonomous System)، مابین پروتکلهای مسیریابی دیگر است. سیستم خودمختار یا Autonomous، شبکه یا گروهی از شبکهها است که زیر نظر یک مدیریت مشترک، دارای Policyهای Routing مشترک است. از BGP برای تبادل اطلاعات مسیریابی در اینترنت استفاده میشود و پروتکلی است که بین ارائهدهندگان سرویس اینترنت (ISPها) مورد استفاده قرار میگیرد. شبکههای مصرفکننده، مانند دانشگاهها و شرکتهای بزرگ و سازمانها، برای تبادل اطلاعات مسیریابی درون شبکههای خود، معمولا از یک پروتکل مسیریابی داخلی (Interior Gateway Protocol (IGP مانند RIP یا OSPF استفاده میکنند. مشتریان به ISPها متصل میشوند و ISPها برای تبادل مسیرهای مشتری، از BGP استفاده میکنند. وقتی که BGP بین سیستمهای خودمختار (AS) مورد استفاده قرار میگیرد، BGP خارجی یا به اختصار EBGP خوانده میشود. اگر ارائهدهندهی یک سرویس برای تبادل مسیرها درون یک AS از BGP استفاده کند، این پروتکل BGP داخلی یا به اختصار IBGP خوانده میشود.
BGP یک پروتکل مسیریابی بسیار قدرتمند و انعطافپذیر است و به کارگیری BGP در اینترنت گواهی بر این امر میباشد. در جداول Internet BGP Routing بیش از 800.000 مسیر ثبت شده است. BGP برای دستیابی به مقیاسپذیری در این سطح از پارامترهای مسیریابی بسیاری که Attribute نامیده میشوند، استفاده میکند تا Policyمسیرهایی را تعریف کرده و محیط مسیریابی باثباتی را حفظ نماید.
بعلاوه در Attribute های BGP، مسیریابی بین دامین Classless یا به اختصار CIDR توسط BGP مورد استفاده قرار میگیرد تا اندازهی جداول مسیریابی اینترنت را کاهش دهد. برای مثال فرض میکنیم که یک ISP صاحب Block آدرس IP : 195.10.x.x از فضای آدرس Class C است. این Block شامل 256 آدرس Class C از 195.10.0.1 تا 195.10.255.254 است. فرض میکنیم که ISP برای هرکدام از مشتریانش یک بلاک از Class C را معین مینماید. بدون CIDR، ISP برای آدرسهای BGP خود 256 آدرس کلاس C را منتشر میکرد. با CIDR، BGP میتواند فضای آدرس را Supernet کرده و یک Block به IP:195.10.x.x را منتشر نماید. اندازهی این بلاک با یک آدرس کلاس B قدیمی یکسان است. تمایزات بین کلاسهای IP توسط CIDR منسوخ شدهاند و اندازه جداول BGP Routing را بسیار کاهش داده است.
وقتی که برای اولین بار اتصال TCP بین همسایهها تعیین شود، همسایههای BGP اطلاعات کامل مسیریابی را با هم تبادل مینمایند. زمانی که تغییرات در جدول Routing شناسایی شوند، روترهای BGP تنها مسیرهایی را به همسایههایشان میفرستند که تغییر کردهاند. Router های BGP بروزرسانیهای Routing دورهای را ارسال نمیکنند و بروزرسانیهای BGP Routing تنها مسیر بهینه به یک شبکهی مقصد را تبلیغ میکنند.
چرا به پروتکل 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 بهطور خودکار، ترافیک موردنیاز را از بستر پروایدر بکآپ عبور میدهد.
بررسی ویژگیهای BGP
مسیرهایی که از طریق BGP یافته شدهاند دارای ویژگیهای مرتبط به یکدیگر هستند که برای تعیین بهترین مسیر به یک مقصد، زمانی که چندین مسیر رو به یک مقصد خاص وجود داشته باشد، مورد استفاده قرار میگیرند. این ویژگیها Attributeهای BGP نامیده میشوند و درک چگونگی تاثیرAttribute های BGP در انتخاب مسیر برای طراحی شبکههای قدرتمند مورد نیاز است. این بخش Attributeهایی را که BGP برای فرایند انتخاب Route از آنها استفاده میکند، شرح میدهد:
مشخصه وزن (Weight)
وزن (Weight) یک مشخصه تعریف شده توسط سیسکو است که برای یک روتر، Local میباشد و به روترهای مجاور منتسب نمیشود. اگر روتر در مورد بیش از یک Route به مقصدی یکسان اطلاعات کسب کند، مسیری که دارای بالاترین وزن است، ارجحیت دارد. در شکل زیر Attribute وزن BGP، روتر A در حال دریافت اطلاعاتی برای شبکهی 172.16.1.0 از روترهای B و C است. وقتی که روتر A اطلاعات را از روتر B دریافت میکند، وزن مربوطه 50 تنظیم شده است. وقتی که روتر A اطلاعات را از روتر C دریافت میکند، وزن مربوطه 100 تنظیم شده است. هر دو مسیر برای شبکهی 172.16.1.0، با وزنهای مربوط به خود، در جدول BGP Routing خواهند بود. Route دارای بالاترین وزن در جدول IP Routing نصب خواهد شد.
مشخصه Local Preference
مشخصه Local Preference برای انتخاب بین یک نقطهی خروج از Local AS مورد استفاده قرار میگیرد. برخلاف مشخصه وزن، مشخصه Local Preferenc در سرتاسر Local AS پخش شده است. اگر چندین نقطهی خروج از AS وجود داشته باشد، مشخصه Local Preference برای انتخاب نقطهی خروج یک Route مشخص مورد استفاده قرار میگیرد. در شکل زیر، AS 100 دو مسیر برای شبکهی 172.16.1.0 از AS 200 دریافت میکند. وقتی که روتر A اطلاعات را برای شبکهی 172.16.1.0 دریافت میکند، Local Preference مربوطه 50 تنظیم شده است. وقتی که روتر B اطلاعات را برای شبکهی 172.16.1.0 دریافت میکند، Local Preference مربوطه 100 تنظیم شده است. این ترجیحات Local بین روترهای A و B تبادل میشوند. از آن جایی که روتر B ترجیح Local بالاتری نسبت به روتر A دارد، روتر B به عنوان نقطهی خروج از AS 100 برای رسیدن به شبکهی 172.16.1.0 در AS 200 مورد استفاده قرار میگیرد.
بررسی Multi-Exit Discriminator
(Multi-Exit Discriminator (MED یا مشخصه Metric به عنوان یک گزینه برای انتخاب مسیر بهتر AS خارجی که در AS منتشر میشود، مورد استفاده قرار میگیرد، چرا که AS خارجی که MEDها را دریافت میکند، ممکن است برای انتخاب مسیر از دیگر مشخصههای BGP استفاده نماید. شکل زیر مشخصه BGP Multi-Exit Discriminator روتر C، مسیر به 172.16.1.0 را با Metric 10 منتشر میکند، درحالیکه روتر D، 172.16.1.0 را با Metric 5 منتشر مینماید. مقدار پایینتر Metric اولویت دارد، در نتیجه AS 100، برای رسیدن به روتر D برای شبکهی 172.16.1.0 از AS 200 عبور مینماید. MEDها در سراسر Local AS منتشر میگردند.
مشخصهی Origin
در واقع مشخصهی Origin نشان میدهد که BGP چگونه از یک مسیر خاص مطلع شده است. Origin میتواند یکی از سه مقدار زیر را داشته باشد:
- IGP: در واقع مسیر داخلی منشاء AS است. وقتی که این مسیر با دستور پیکربندی در روتر شبکه BGP وارد گردد، مقدار مربوطه تنظیم میگردد.
- EGP نیز مسیر مربوطه از طریق Exterior Gateway Protocol یا به اختصار EGP پیدا میشود.
- Incomplete: منشأ Route ناشناخته است یا از طریق دیگری پیدا میشود. منشأ ناقص زمانی رخ میدهد که یک Route در BGP دوباره توزیع گردد.
مشخصه مسیر AS
زمانی که جدول مسیریابی از یک AS عبور کند، در واقع شمارهی AS به لیستی سفارشی از شمارههای AS اضافه میگردد که جدول مسیریابی از آن عبور کرده است. شکل زیر مشخصه مسیر AS نشاندهندهی شرایطی است که در آن یک Route از سه AS عبور میکند.
AS 1، مسیر خود به سمت 172.16.1.0 را آغاز میکند و با مشخصه مسیر AS مساوی با {1} و این مسیر برای AS 2 و AS 3 منتشر مینماید. AS 3 در جواب، با مشخصه مسیر AS {3,1} به AS 1 منتشر میکند و AS 2 در جواب، با مشخصه مسیر AS {2,1} بهAS 1 منتشر مینماید. AS 1 وقتی این مسیرها را رد میکند که شمارهی AS متعلق به خودش در لیست انتشار مسیر شناسایی شود. BGP با استفاده از این مکانیزم Loopهای مسیریابی را شناسایی مینماید. AS 2 و AS 3 با شمارهی AS خود که به مشخصه مسیر AS اضافه شده است، مسیر را برای یکدیگر انتشار میدهند. این مسیرها در جدول IP Routing فعال نمیگردند، زیرا AS 2 و AS 3 برای رسیدن به 172.16.1.0 از AS 1 از لیست AS-Path کوتاهتری مطلع هستند.
مشخصهی Next-Hop
مشخصهیEBGP Next-Hop ، آدرس IP است که برای دستیابی به روتر منتشر کننده، مورد استفاده قرار میگیرد. برای Peerهای EBGP، آدرس Next-Hop، همان آدرس IP اتصال بین Peerها است. برای IBGP، آدرس EBGP Next-Hop وارد Local AS میگردد، همانطور که در شکل BGP Next-Hop Attribute نمایش داده شده است.
روتر C شبکهی 172.16.1.0 را با Next Hop 10.1.1.1 منتشر میکند. وقتی که روتر A این Route را در AS خود منتشر میکند، اطلاعات EBGP Next-Hop حفظ میگردد. اگر روتر B دارای اطلاعات مسیریابی در مورد Next Hop نباشد، این مسیر کنار گذاشته میشود. در نتیجه اجرای IGP در AS برای انتشار اطلاعات Next-Hop Routing امری بسیار مهم میباشد.
مشخصهی Community
مشخصهی Community راهی را برای گروهبندی مقصدها که مشخصهی Community نامیده میشوند، فراهم میکند تا تصمیمات مسیریابی مانند پذیرش، ترجیحات و توزیع دوباره، را میتوان به آنها اعمال نمود. Route Mapها برای تنظیم مشخصهی Community مورد استفاده قرار میگیرند. مشخصههایCommunity از پیش تعریف شده در ادامه معرفی میگردند:
- No-Export: این مسیر نباید برای Peerهای EBGP منتشر شود.
- No-Advertise: این Route نباید برای هیچ Peerی منتشر شود.
- Internet: این Route باید برای Community اینترنت منتشر گردد؛ تمام Routerهای درون شبکه متعلق به آن هستند.
شکل زیر مشخصهی BGP no-advertise Community را نمایش میدهد. AS 1 با مشخصهی Community No-Export، 172.16.1.0 را برای AS 2 منتشر مینماید. AS 2، Route را در سرتاسر AS 2 منتشر میکند، اما این Route را به AS 3 یا هر AS خارجی دیگری نمیفرستد.
در شکل مشخصهی Community BGP No-Advertise، AS 1 با مشخصهی Community No-Advertise، 172.16.1.0 را برای AS 2 منتشر میکند روتر B در AS 2 این مسیر را برای هیچ روتر دیگری منتشر نمینماید.
شکل: BGP no-advertise Community Attribute
شکل زیر مشخصهی Community اینترنت را نمایش میدهد. هیچ محدودیتی در مورد مسیرها از AS 1 وجود ندارد.
انجام سناریوی eBGP
خوب حالا با هم یک سناریو eBGP رو می خواهیم انجام دهیم، در سناریوی زیر قرار است بین دو روتر R1 و R2 ارتباطی با پروتکل eBGP برقرار کنیم، همچین دو روتر R1 و R4 به صورت Static با هم در ارتباط هستن و روتر R2 و R3 نیز با کمک پروتکل EIGRP با هم در ارتباط هستن.
تنظیمات اولیه روتر ها مانند زیر می باشد.
روتر R1:
R1#configure terminal
R1(config)#interface loopback 1
R1(config-if)#ip address 192.168.1.1 255.255.255.0
R1(config)#interface fastEthernet 1/0
R1(config-if)#ip address 172.16.14.1 255.255.255.0
R1(config-if)#no shutdown
R1(config)#interface fastEthernet 0/0
R1(config-if)#ip address 172.16.12.1 255.255.255.0
R1(config-if)#no shutdown
R1(config)#ip route 192.168.4.0 255.255.255.0 172.16.14.4
روتر R2:
R2(config)#configure terminal
R2(config)#interface loopback 1
R2(config-if)#ip address 192.168.2.2 255.255.255.0
R2(config-if)#interface fastEthernet 1/0
R2(config-if)#ip address 172.16.23.1 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#interface fastEthernet 0/0
R2(config-if)#ip address 172.16.12.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#router eigrp 100
R2(config)#network 172.16.23.0 0.0.0.255
R2(config)#network 192.168.2.0
روتر R3:
R3#configure terminal
R3(config)#interface loopback 1
R3(config-if)#ip address 192.168.3.3 255.255.255.0
R3(config-if)#interface fastEthernet 0/0
R3(config-if)#ip address 172.16.23.3 255.255.255.0
R3(config-if)#no shutdown
R3(config-if)#router eigrp 100
R3(config-router)#network 172.16.23.0 0.0.0.255
R3(config-router)#network 192.168.3.0
روتر R4:
R4#configure terminal
R4(config)#interface loopback 1
R4(config-if)#ip address 192.168.4.4 255.255.255.0
R4(config-if)#interface fastEthernet 0/0
R4(config-if)#ip address 172.16.14.4 255.255.255.0
R4(config-if)#no shutdown
R4(config-if)#ip route 0.0.0.0 0.0.0.0 172.16.14.1
حال برای بحث bgp تنظیمات روتر ها به شکل زیر می باشد
تنظیمات bgp روتر R1:
R1(config)#router bgp 2
R1(config-router)#neighbor 172.16.12.2 remote-as 1
R1(config-router)#network 192.168.1.0
R1(config-router)#network 172.16.14.0 mask 255.255.255.0
R1(config-router)#network 192.168.4.0
نکته: با دستور neighbor همسایه bgp را معرفی می کنیم و با remote-as شماره AS همسایه را اطلاع می دهیم و سپس شبکه های متصل به روتر را می نویسیم.
نکته: شبکه 172.16.14.0 را اگر بدون mask آن وارد کنیم خود روتر آن را به صورت کلاس B یعنی با /16 ثبت می کند که ما در این سناریو از /24 استفاده کرده ایم.
تنظیمات bgp روتر R2:
R2(config)#router bgp 1
R2(config-router)#neighbor 172.16.12.1 remote-as 2
R2(config-router)#network 192.168.2.0
R2(config-router)#network 172.168.23.0 mask 255.255.255.0
R2(config-router)#network 192.168.3.0
دستورات show پرکاربرد جهت رفع اشکال bgp
چند نمونه از دستوراتی که به جهت مدیریت و پیدا کردن خطا در پروتکل BGP کمک می کند به شرح زیر است
show ip route
show ip bgp
show ip bgp ipv4
show ip bgp neighbors
show ip bgp paths
show ip bgp summary
show ip bgp template peer-policy
show ip bgp template peer-session
بد نیست به سرفصل های کتاب سیسکو هم نگاهی گنید:
A
B
C
D
E
F
H
I
M
N
R
S
T
U
V