BGP

BGP مخفف Border Gateway Protocol است. آخرین نسخه BGP، نسخه 4 است. BGP-4 یکی از پروتکل‌های مسیریابی خارجی (Exterior Gateway Protocols) و استاندارد واقعی مسیریابی بین دامنه‌ای است. BGP-4 در RFC 1771 توصیف شده و توسط RFC 4271 به‌روزرسانی شده است. RFC 2858 پشتیبانی چند پروتکلی را به BGP-4 اضافه می‌کند.

مفاهیم پایه

Autonomous Systems

از RFC 1930:

یک AS (Autonomous System) گروهی متصل از یک یا چند پیشوند IP است که توسط یک یا چند اپراتور شبکه اجرا می‌شود و دارای یک سیاست مسیریابی واحد و به وضوح تعریف شده است.

هر AS دارای یک شماره شناسایی مرتبط با آن به نام ASN (Autonomous System Number) است. ASN یک مقدار دو اکتتی (16 بیتی) است که از 1 تا 65535 متغیر است. شماره‌های AS از 64512 تا 65535 به عنوان شماره‌های AS خصوصی تعریف شده‌اند. شماره‌های AS خصوصی نباید در اینترنت جهانی تبلیغ شوند و فقط برای استفاده در شبکه‌های خصوصی هستند.

ASN یکی از عناصر ضروری BGP است. BGP یک پروتکل مسیریابی distance-vector است و چارچوب AS-Path به عنوان متریک distance-vector و برای loop detection در BGP استفاده می‌شود. هر بار که یک مسیر از یک AS عبور می‌کند، شماره AS به ابتدای AS_PATH اضافه می‌شود.

Address Families

افزونه‌های چند پروتکلی (Multiprotocol Extensions) به BGP امکان حمل اطلاعات مسیریابی برای چندین پروتکل لایه شبکه را می‌دهند. BGP از یک شناسه خانواده آدرس (AFI - Address Family Identifier) برای IPv4 و IPv6 پشتیبانی می‌کند. همچنین پشتیبانی از چندین مجموعه اطلاعات per-AFI از طریق شناسه خانواده آدرس بعدی BGP (SAFI - Subsequent Address Family Identifier) ارائه می‌شود.

FRR از SAFI برای موارد زیر پشتیبانی می‌کند:

  • Unicast: اطلاعات مسیریابی unicast معمولی

  • Labeled: اطلاعات مسیریابی برچسب‌دار (RFC 3107 و RFC 8277)

  • VPN: اطلاعات VPN لایه 3 (RFC 4364 و RFC 4659)

Route Selection

فرآیند انتخاب مسیر (best-path selection) در BGP از معیارهای تصمیم‌گیری زیر به ترتیب اولویت استفاده می‌کند. BGP از بالای لیست شروع می‌کند و به سمت پایین می‌رود تا زمانی که بتواند یک مسیر را به عنوان بهترین مسیر انتخاب کند:

  1. Weight: مسیر با weight بالاتر ترجیح داده می‌شود. این معیار فقط در روتر محلی اعمال می‌شود و به همسایه‌ها ارسال نمی‌شود.

  2. Local Preference: مسیر با local preference بالاتر ترجیح داده می‌شود. این معیار فقط در iBGP استفاده می‌شود و به eBGP همسایه‌ها ارسال نمی‌شود.

  3. Local Route (مسیر محلی): مسیرهای محلی (static، aggregate، redistributed) به مسیرهای دریافت شده از همسایه‌ها ترجیح داده می‌شوند. اگر bgp bestpath aigp فعال باشد و هر دو مسیر دارای attribute AIGP باشند، BGP از AIGP برای انتخاب استفاده می‌کند.

  4. AS-Path length: مسیر با کوتاه‌ترین AS_PATH ترجیح داده می‌شود. AS_PATH به عنوان متریک distance-vector و برای loop detection استفاده می‌شود.

  5. Origin (منبع): مسیر با کمترین مقدار origin ترجیح داده می‌شود. ترتیب اولویت: IGP (0) بهتر از EGP (1)، بهتر از Incomplete (2).

  6. MED (Multi-Exit Discriminator): در صورتی که مسیرها از همان AS دریافت شده باشند، مسیر با کمترین MED ترجیح داده می‌شود. MED برای کنترل مسیر ورودی به یک AS استفاده می‌شود.

  7. External (خارجی): مسیر دریافت شده از یک همسایه eBGP به مسیرهای دریافت شده از iBGP یا دیگر انواع همسایه‌ها ترجیح داده می‌شود.

  8. IGP cost: مسیر با کمترین IGP cost به next-hop ترجیح داده می‌شود.

  9. Multi-path (چند مسیره): اگر multi-pathing فعال باشد، BGP بررسی می‌کند که آیا مسیرهای باقی‌مانده که هنوز از نظر اولویت متمایز نشده‌اند، می‌توانند به عنوان مسیرهای برابر (equal-cost) در نظر گرفته شوند. اگر bgp bestpath as-path multipath-relax تنظیم شده باشد، تمام این مسیرها برابر در نظر گرفته می‌شوند. در غیر این صورت، فقط مسیرهای iBGP با AS_PATH یکسان یا مسیرهای eBGP از همسایه‌های همان AS برابر در نظر گرفته می‌شوند.

  10. External انتخاب شده: در صورتی که هر دو مسیر از همسایه‌های eBGP دریافت شده باشند، مسیری که قبلاً به عنوان بهترین مسیر انتخاب شده است ترجیح داده می‌شود. این بررسی در صورتی که bgp bestpath compare-routerid تنظیم شده باشد اعمال نمی‌شود. این بررسی می‌تواند از برخی موارد نوسان (oscillation) جلوگیری کند.

  11. Router-ID: مسیر با کمترین Router-ID ترجیح داده می‌شود. اگر مسیر دارای attribute ORIGINATOR_ID باشد (از طریق iBGP reflection)، از آن Router-ID استفاده می‌شود، در غیر این صورت از Router-ID همسایه‌ای که مسیر از آن دریافت شده استفاده می‌شود.

  12. Cluster-List length: مسیر با کوتاه‌ترین cluster-list ترجیح داده می‌شود. cluster-list مسیر reflection iBGP را که مسیر طی کرده است را نشان می‌دهد.

  13. آدرس همسایه: به عنوان آخرین راه حل، مسیر دریافت شده از همسایه با آدرس لایه انتقال (transport layer address) بالاتر ترجیح داده می‌شود.

Capability Negotiation

هنگام افزودن ویژگی تبادل اطلاعات مسیریابی IPv6 به BGP، پیشنهاداتی وجود داشت. IETF IDR پیشنهادی به نام Multiprotocol Extension for BGP را اتخاذ کرد. مشخصات در RFC 2283 توصیف شده است. این پروتکل پروتکل‌های جدید تعریف نمی‌کند، بلکه ویژگی‌های جدید را به BGP موجود اضافه می‌کند. هنگامی که برای تبادل اطلاعات مسیریابی IPv6 استفاده می‌شود، BGP-4+ نامیده می‌شود. هنگامی که برای تبادل اطلاعات مسیریابی multicast استفاده می‌شود، MBGP نامیده می‌شود.

bgpd از Multiprotocol Extension for BGP پشتیبانی می‌کند. بنابراین اگر یک همسایه راه دور از این پروتکل پشتیبانی کند، bgpd می‌تواند اطلاعات مسیریابی IPv6 و/یا multicast را تبادل کند.

BGP سنتی ویژگی تشخیص قابلیت‌های همسایه راه دور را نداشت. به عنوان مثال، نمی‌توانست تشخیص دهد که آیا همسایه می‌تواند انواع پیشوند غیر از مسیرهای unicast IPv4 را مدیریت کند یا خیر. این یک مشکل بزرگ در استفاده از Multiprotocol Extension for BGP در یک شبکه عملیاتی بود. RFC 2842 ویژگی‌ای به نام Capability Negotiation را معرفی کرد که این مشکل را حل می‌کند. bgpd از این Capability Negotiation برای تشخیص قابلیت‌های همسایه راه دور استفاده می‌کند.

به طور پیش‌فرض، FRR اتصال همسایگی را با حداقل قابلیت مشترک برای هر دو طرف برقرار می‌کند. به عنوان مثال، اگر روتر محلی قابلیت unicast و multicast را داشته باشد و روتر راه دور فقط قابلیت unicast را داشته باشد، روتر محلی اتصال را فقط با قابلیت unicast برقرار می‌کند. هنگامی که هیچ قابلیت مشترکی وجود ندارد، FRR خطای Unsupported Capability را ارسال می‌کند و سپس اتصال را reset می‌کند.

پیکربندی روتر BGP

ASN و Router-ID

ابتدا باید روتر BGP را با دستور router bgp ASN پیکربندی کنید. شماره AS یک شناسه برای سیستم مستقل است. شناسه AS می‌تواند یک عدد یا دو عدد جدا شده با نقطه باشد. پروتکل BGP از شناسه AS برای تشخیص اینکه آیا اتصال BGP داخلی (iBGP) است یا خارجی (eBGP) استفاده می‌کند.

router bgp ASN

فرآیند پروتکل BGP را با ASN مشخص شده فعال یا غیرفعال می‌کند. پس از این دستور می‌توانید هر دستور BGP را وارد کنید.

bgp router-id A.B.C.D

این دستور Router-ID را مشخص می‌کند. اگر bgpd به zebra متصل شود، اطلاعات اینترفیس و آدرس را دریافت می‌کند. در آن صورت مقدار پیش‌فرض Router-ID به عنوان بزرگترین آدرس IP اینترفیس‌ها انتخاب می‌شود.

bgp log-neighbor-changes

تغییرات در وضعیت همسایه را لاگ می‌کند.

neighbor <A.B.C.D|X:X::X:X|WORD> remote-as <1-4294967295|internal|external>

همسایه BGP را با AS مشخص شده پیکربندی می‌کند. اگر AS همان AS محلی باشد، اتصال iBGP است. در غیر این صورت، اتصال eBGP است.

neighbor <A.B.C.D|X:X::X:X|WORD> password <password>

رمز عبور احراز هویت را برای همسایه تنظیم می‌کند.

neighbor <A.B.C.D|X:X::X:X|WORD> ttl-security hops <1-254>

امنیت TTL را برای همسایه پیکربندی می‌کند. این ویژگی از حملات spoofing محافظت می‌کند.

neighbor <A.B.C.D|X:X::X:X|WORD> update-source <INTERFACE>

اینترفیس یا آدرس IP منبع را برای اتصال BGP مشخص می‌کند. این دستور معمولاً برای iBGP استفاده می‌شود تا از loopback interface به عنوان منبع استفاده شود و اتصال پایدارتر باشد.

address-family ipv4 unicast

وارد حالت پیکربندی address-family برای IPv4 unicast می‌شود. در این حالت می‌توانید شبکه‌ها را تبلیغ کنید و سیاست‌های مسیریابی را برای IPv4 unicast تنظیم کنید.

network <A.B.C.D/M>

شبکه مشخص شده را در BGP تبلیغ می‌کند. شبکه باید در جدول مسیریابی موجود باشد (از طریق connected، static، یا پروتکل‌های دیگر) تا بتواند در BGP تبلیغ شود.

neighbor <A.B.C.D|X:X::X:X|WORD> next-hop-self

آدرس next-hop را به آدرس IP خود روتر تغییر می‌دهد. این دستور معمولاً در iBGP استفاده می‌شود، زیرا در iBGP next-hop از eBGP حفظ می‌شود و ممکن است غیرقابل دسترس باشد.

neighbor <A.B.C.D|X:X::X:X|WORD> route-map <WORD> [in|out]

route-map را برای همسایه اعمال می‌کند. in برای مسیرهای ورودی و out برای مسیرهای خروجی استفاده می‌شود. route-map می‌تواند برای فیلتر کردن یا تغییر attribute‌های مسیر استفاده شود.

aggregate-address <A.B.C.D/M> [summary-only]

آدرس‌های تجمیع شده (aggregate) را ایجاد می‌کند. اگر summary-only استفاده شود، فقط مسیر تجمیع شده تبلیغ می‌شود و مسیرهای جزئی (specific routes) حذف می‌شوند. در غیر این صورت، هم مسیر تجمیع شده و هم مسیرهای جزئی تبلیغ می‌شوند.

neighbor <A.B.C.D|X:X::X:X|WORD> default-originate

مسیر پیش‌فرض (0.0.0.0/0) را به همسایه تبلیغ می‌کند. این دستور برای ارائه default route به همسایه‌ها استفاده می‌شود.

neighbor <A.B.C.D|X:X::X:X|WORD> remove-private-AS

شماره‌های AS خصوصی (64512-65535) را از AS_PATH حذف می‌کند. این دستور معمولاً در روترهای مرزی استفاده می‌شود که AS خصوصی را به اینترنت تبلیغ می‌کنند.

Route-Reflector

Route-Reflector یک راه‌حل برای کاهش تعداد اتصالات iBGP در یک AS است. به جای ایجاد اتصال full-mesh بین تمام روترهای iBGP، می‌توان از Route-Reflector استفاده کرد.

neighbor <A.B.C.D|X:X::X:X|WORD> route-reflector-client

همسایه را به عنوان route-reflector-client تنظیم می‌کند. Route-Reflector مسیرهای دریافت شده از یک client را به سایر client‌ها و non-client‌ها منعکس می‌کند.

bgp cluster-id <A.B.C.D|1-4294967295>

Cluster-ID را برای route-reflector تنظیم می‌کند. Cluster-ID برای جلوگیری از حلقه در Route Reflection استفاده می‌شود. اگر یک Route Reflector مسیری با Cluster-ID خودش را دریافت کند، آن مسیر را رد می‌کند.

Route-Map و Policy

Route-Map برای اعمال سیاست‌های مسیریابی و تغییر attribute‌های BGP استفاده می‌شود. هر route-map شامل یک یا چند sequence است که به ترتیب بررسی می‌شوند.

route-map <WORD> [permit|deny] <1-65535>

route-map را ایجاد یا ویرایش می‌کند. permit به معنای اعمال تغییرات و deny به معنای رد کردن مسیر است. عدد sequence ترتیب بررسی را مشخص می‌کند.

match ip address prefix-list <WORD>

prefix-list را برای match کردن مسیرها استفاده می‌کند. فقط مسیرهایی که با prefix-list مطابقت دارند، در این sequence پردازش می‌شوند.

match community <WORD>

community-list را برای match کردن مسیرها استفاده می‌کند. مسیرهایی که community مشخص شده را دارند، match می‌شوند.

set local-preference <0-4294967295>

Local Preference را تنظیم می‌کند. مقدار پیش‌فرض 100 است. مسیر با Local Preference بالاتر ترجیح داده می‌شود. این attribute فقط در iBGP استفاده می‌شود و به eBGP همسایه‌ها ارسال نمی‌شود.

set metric <0-4294967295>

MED را تنظیم می‌کند. MED برای تأثیرگذاری بر انتخاب مسیر ورودی به یک AS استفاده می‌شود. مسیر با MED کمتر ترجیح داده می‌شود. MED فقط بین eBGP همسایه‌های همان AS مقایسه می‌شود.

set as-path prepend <1-4294967295> [...]

AS-Path را با اضافه کردن AS number‌های مشخص شده به ابتدای AS_PATH طولانی‌تر می‌کند. این کار باعث می‌شود مسیر کمتر ترجیح داده شود، زیرا BGP مسیر با AS_PATH کوتاه‌تر را ترجیح می‌دهد.

set community <AA:NN|local-AS|no-advertise|no-export|internet|additive>

community را تنظیم می‌کند. AA:NN فرمت استاندارد community است که AA شماره AS و NN مقدار community است. Community‌های well-known عبارتند از:

  • local-AS: مسیر به eBGP همسایه‌ها تبلیغ نمی‌شود (معادل RFC 1997 no-export-subconfed)

  • no-advertise: مسیر به هیچ همسایه‌ای (نه iBGP و نه eBGP) تبلیغ نمی‌شود

  • no-export: مسیر به eBGP همسایه‌ها تبلیغ نمی‌شود اما به iBGP همسایه‌ها تبلیغ می‌شود

  • internet: مسیر به همه همسایه‌ها تبلیغ می‌شود (این community به صورت پیش‌فرض به همه مسیرها اضافه می‌شود)

additive community جدید را به community‌های موجود اضافه می‌کند. در غیر این صورت، community جدید جایگزین community‌های قبلی می‌شود.

set weight <0-65535>

Weight را تنظیم می‌کند. Weight یک attribute محلی است که فقط در روتر محلی استفاده می‌شود و به همسایه‌ها ارسال نمی‌شود. مسیر با Weight بالاتر ترجیح داده می‌شود. مقدار پیش‌فرض برای مسیرهای دریافت شده از eBGP 32768 و برای iBGP 0 است.

Prefix-List

Prefix-List برای فیلتر کردن مسیرها بر اساس prefix و طول subnet mask استفاده می‌شود.

ip prefix-list <WORD> seq <1-4294967295> [permit|deny] <A.B.C.D/M> [le <0-32>] [ge <0-32>]

prefix-list را ایجاد یا ویرایش می‌کند. seq شماره sequence را مشخص می‌کند که ترتیب بررسی را تعیین می‌کند. le (less than or equal) حداکثر طول subnet mask و ge (greater than or equal) حداقل طول subnet mask را مشخص می‌کند. به عنوان مثال، 10.0.0.0/8 le 24 به معنای تمام subnet‌های 10.0.0.0/8 با طول mask از 8 تا 24 است.

Community-List

Community-List برای match کردن مسیرها بر اساس BGP community استفاده می‌شود.

bgp community-list [standard|expanded] <WORD> [permit|deny] <AA:NN|local-AS|no-advertise|no-export|internet>

community-list را ایجاد یا ویرایش می‌کند. standard برای match کردن community‌های دقیق و expanded برای استفاده از regular expression استفاده می‌شود. AA:NN فرمت استاندارد community است که AA شماره AS و NN مقدار community است. local-AS، no-advertise، no-export و internet community‌های well-known هستند.

AS-Path Access-List

AS-Path Access-List برای فیلتر کردن مسیرها بر اساس AS_PATH استفاده می‌شود و از regular expression استفاده می‌کند.

bgp as-path access-list <WORD> [permit|deny] <REGEX>

AS-Path access-list را ایجاد یا ویرایش می‌کند. از regular expression برای match کردن AS_PATH استفاده می‌شود. به عنوان مثال، ^$ به معنای AS_PATH خالی (مسیرهای محلی) است، ^65001$ به معنای مسیرهایی که فقط AS 65001 را دارند، و 65001_ به معنای مسیرهایی که AS 65001 را در AS_PATH دارند.

نمایش اطلاعات BGP

show bgp [vrf <NAME|all>] summary [json]

اطلاعات خلاصه BGP را نمایش می‌دهد. این دستور شامل اطلاعاتی مانند Router-ID، شماره AS محلی، تعداد entries در RIB، تعداد همسایه‌ها، و وضعیت هر همسایه (Up/Down، تعداد prefix‌های دریافت شده) است.

show bgp [vrf <NAME|all>] neighbors [<A.B.C.D|X:X::X:X|WORD>] [json]

اطلاعات همسایه‌های BGP را نمایش می‌دهد. اگر آدرس همسایه مشخص شود، فقط اطلاعات آن همسایه نمایش داده می‌شود. این دستور شامل اطلاعاتی مانند AS number، BGP version، وضعیت اتصال، timer‌ها، و تعداد prefix‌های ارسال/دریافت شده است.

show bgp [vrf <NAME|all>] [ipv4|ipv6] [unicast|multicast] [<A.B.C.D/M|X:X::X:X/M>] [json]

جدول مسیریابی BGP را نمایش می‌دهد. اگر prefix مشخص شود، فقط اطلاعات آن prefix نمایش داده می‌شود. این دستور شامل اطلاعاتی مانند AS_PATH، next-hop، origin، local preference، MED، و community‌ها است.

show bgp [vrf <NAME|all>] [ipv4|ipv6] [unicast|multicast] route-map <WORD> [json]

مسیرهای BGP که با route-map مشخص شده مطابقت دارند را نمایش می‌دهد. این دستور برای بررسی تأثیر route-map بر روی مسیرها مفید است.

Debugging BGP

debug bgp [as4|aspath|bestpath|events|filters|keepalives|updates|zebra]

سطح‌های مختلف debug برای BGP را فعال می‌کند:

  • as4: اطلاعات مربوط به AS4 byte format

  • aspath: اطلاعات مربوط به AS-Path processing

  • bestpath: اطلاعات مربوط به best-path selection

  • events: رویدادهای BGP (اتصال، قطع اتصال، و غیره)

  • filters: اطلاعات مربوط به فیلتر کردن مسیرها

  • keepalives: بسته‌های keepalive

  • updates: بسته‌های update

  • zebra: ارتباط بین BGP و zebra (RIB)

show debugging bgp

نمایش می‌دهد که کدام سطح debug BGP فعال است. این دستور برای بررسی تنظیمات debug مفید است.

سناریو ۱: پیکربندی پایه BGP

در این سناریو، یک پیکربندی ساده BGP بین دو روتر را تنظیم می‌کنیم.

توپولوژی

[Router1] ---- [Router2]
  AS65001        AS65002

پیکربندی Router1

Router1(config)# router bgp 65001
Router1(config-router)# bgp router-id 1.1.1.1
Router1(config-router)# bgp log-neighbor-changes
Router1(config-router)# neighbor 192.168.1.2 remote-as 65002
Router1(config-router)# neighbor 192.168.1.2 password mypassword
Router1(config-router)# neighbor 192.168.1.2 ttl-security hops 1
Router1(config-router)# exit

Router1(config)# address-family ipv4 unicast
Router1(config-router-af)# network 10.1.1.0/24
Router1(config-router-af)# neighbor 192.168.1.2 activate
Router1(config-router-af)# exit-address-family

پیکربندی Router2

Router2(config)# router bgp 65002
Router2(config-router)# bgp router-id 2.2.2.2
Router2(config-router)# bgp log-neighbor-changes
Router2(config-router)# neighbor 192.168.1.1 remote-as 65001
Router2(config-router)# neighbor 192.168.1.1 password mypassword
Router2(config-router)# neighbor 192.168.1.1 ttl-security hops 1
Router2(config-router)# exit

Router2(config)# address-family ipv4 unicast
Router2(config-router-af)# network 10.2.2.0/24
Router2(config-router-af)# neighbor 192.168.1.1 activate
Router2(config-router-af)# exit-address-family

بررسی وضعیت

Router1# show bgp summary
IPv4 Unicast Summary:
BGP router identifier 1.1.1.1, local AS number 65001
RIB entries 2, using 192 bytes of memory
Peers 1, using 21 KiB of memory

Neighbor        V         AS   MsgRcvd   MsgSent   TblVer  InQ OutQ  Up/Down State/PfxRcd
192.168.1.2     4      65002        15        15        0    0    0 00:05:23        1

سناریو ۲: BGP با Local Preference و MED

در این سناریو، از Local Preference و MED برای کنترل مسیریابی استفاده می‌کنیم. Local Preference برای تأثیرگذاری بر انتخاب مسیر در iBGP و MED برای تأثیرگذاری بر انتخاب مسیر ورودی به یک AS استفاده می‌شود.

توپولوژی

[AS10] ---- [AS20] ---- [AS30]

پیکربندی AS10 (Router1)

در این مثال، Router1 در AS10 مسیرهای خود را با MED 100 به AS20 تبلیغ می‌کند و مسیرهای دریافت شده از AS20 را بر اساس community تنظیم شده، با local preference 150 یا 100 تنظیم می‌کند.

Router1(config)# ip prefix-list PLIST-AS10 seq 5 permit 172.10.0.0/22 le 32
Router1(config)# route-map RMAP-SET_LOC_PREF permit 10
Router1(config-route-map)# match ip address prefix-list PLIST-AS10
Router1(config-route-map)# set local-preference 150
Router1(config-route-map)# exit
Router1(config)# route-map RMAP-SET_LOC_PREF permit 20
Router1(config-route-map)# exit

Router1(config)# route-map RMAP-SET_MED permit 10
Router1(config-route-map)# match ip address prefix-list PLIST-AS10
Router1(config-route-map)# set metric 100
Router1(config-route-map)# exit
Router1(config)# route-map RMAP-SET_MED permit 20
Router1(config-route-map)# exit

Router1(config)# router bgp 10
Router1(config-router)# neighbor 192.168.1.2 remote-as 20
Router1(config-router)# exit
Router1(config)# address-family ipv4 unicast
Router1(config-router-af)# neighbor 192.168.1.2 route-map RMAP-SET_LOC_PREF in
Router1(config-router-af)# neighbor 192.168.1.2 route-map RMAP-SET_MED out
Router1(config-router-af)# exit-address-family

سناریو ۳: BGP Route-Reflector

در این سناریو، از Route-Reflector برای کاهش تعداد اتصالات iBGP استفاده می‌کنیم. به جای ایجاد اتصال full-mesh بین تمام روترهای iBGP (که در شبکه‌های بزرگ غیرعملی است)، از Route-Reflector استفاده می‌کنیم تا مسیرها را به client‌ها منعکس کند.

توپولوژی

     [RR]
    / | \
   /  |  \
 [R1][R2][R3]

در این توپولوژی، RR (Route Reflector) به عنوان مرکز عمل می‌کند و R1، R2، و R3 به عنوان client‌ها عمل می‌کنند. هر client فقط با RR اتصال دارد و نیازی به اتصال مستقیم با سایر client‌ها ندارد.

پیکربندی Route-Reflector

RR(config)# router bgp 100
RR(config-router)# bgp cluster-id 1.1.1.1
RR(config-router)# neighbor 10.1.1.1 remote-as 100
RR(config-router)# neighbor 10.1.1.1 update-source loopback0
RR(config-router)# neighbor 10.2.2.2 remote-as 100
RR(config-router)# neighbor 10.2.2.2 update-source loopback0
RR(config-router)# neighbor 10.3.3.3 remote-as 100
RR(config-router)# neighbor 10.3.3.3 update-source loopback0
RR(config-router)# exit

RR(config)# address-family ipv4 unicast
RR(config-router-af)# neighbor 10.1.1.1 route-reflector-client
RR(config-router-af)# neighbor 10.2.2.2 route-reflector-client
RR(config-router-af)# neighbor 10.3.3.3 route-reflector-client
RR(config-router-af)# exit-address-family

پیکربندی Client (R1)

R1(config)# router bgp 100
R1(config-router)# neighbor 10.0.0.1 remote-as 100
R1(config-router)# neighbor 10.0.0.1 update-source loopback0
R1(config-router)# exit

R1(config)# address-family ipv4 unicast
R1(config-router-af)# network 172.16.1.0/24
R1(config-router-af)# exit-address-family

سناریو ۴: BGP با Community و AS-Path Prepending

در این سناریو، از Community برای کنترل مسیریابی و AS-Path Prepending برای تأثیرگذاری بر انتخاب مسیر استفاده می‌کنیم. Community برای علامت‌گذاری مسیرها و اعمال سیاست‌های مشترک استفاده می‌شود. AS-Path Prepending برای طولانی کردن AS_PATH و در نتیجه کمتر ترجیح داده شدن مسیر استفاده می‌شود.

پیکربندی

در این مثال، Router1 مسیرهای خود را با community 10:110 علامت‌گذاری می‌کند و AS number خود را سه بار به AS_PATH اضافه می‌کند تا مسیر کمتر ترجیح داده شود.

Router1(config)# ip prefix-list PLIST-AS10 seq 5 permit 172.10.0.0/22 le 32
Router1(config)# bgp community-list standard CLIST-10:110 permit 10:110
Router1(config)# route-map RMAP-SET_COMMUN permit 10
Router1(config-route-map)# match ip address prefix-list PLIST-AS10
Router1(config-route-map)# set community 10:110 additive
Router1(config-route-map)# exit
Router1(config)# route-map RMAP-SET_COMMUN permit 20
Router1(config-route-map)# exit

Router1(config)# route-map RMAP-SET_PREPEND permit 10
Router1(config-route-map)# match ip address prefix-list PLIST-AS10
Router1(config-route-map)# set as-path prepend 10 10 10
Router1(config-route-map)# exit
Router1(config)# route-map RMAP-SET_PREPEND permit 20
Router1(config-route-map)# exit

Router1(config)# router bgp 10
Router1(config-router)# neighbor 192.168.1.2 remote-as 20
Router1(config-router)# exit
Router1(config)# address-family ipv4 unicast
Router1(config-router-af)# neighbor 192.168.1.2 route-map RMAP-SET_COMMUN out
Router1(config-router-af)# neighbor 192.168.1.2 route-map RMAP-SET_PREPEND out
Router1(config-router-af)# exit-address-family

سناریو ۵: BGP Aggregate Address

در این سناریو، از Aggregate Address برای خلاصه‌سازی مسیرها استفاده می‌کنیم. Aggregate Address برای کاهش تعداد مسیرها در جدول مسیریابی و کاهش حجم اطلاعات تبادل شده در BGP استفاده می‌شود. با استفاده از summary-only، فقط مسیر تجمیع شده تبلیغ می‌شود و مسیرهای جزئی حذف می‌شوند.

پیکربندی

در این مثال، Router1 سه شبکه 172.16.1.0/24، 172.16.2.0/24، و 172.16.3.0/24 را دارد و آن‌ها را به یک مسیر تجمیع شده 172.16.0.0/22 خلاصه می‌کند.

Router1(config)# router bgp 100
Router1(config-router)# address-family ipv4 unicast
Router1(config-router-af)# network 172.16.1.0/24
Router1(config-router-af)# network 172.16.2.0/24
Router1(config-router-af)# network 172.16.3.0/24
Router1(config-router-af)# aggregate-address 172.16.0.0/22 summary-only
Router1(config-router-af)# exit-address-family

سناریو ۶: سناریوی پیچیده چند AS

سناریوی زیر را در نظر بگیرید. این سناریو شامل 6 AS است: AS1، AS10، AS20، AS30، AS40، AS65001. قصد داریم این سناریو را با BGP تنظیم کنیم. فرض کنید قصد داریم نقش‌ها و سیاست‌های زیر را در روترها پیاده‌سازی کنیم:

AS10:

در این AS روترهای n3 و n4 به عنوان Route Reflector استفاده می‌شوند و با iBGP با هم در ارتباط هستند و برای دیگر روترها به عنوان Route Server استفاده می‌شوند. سیاست‌های این AS:

  1. ترافیکی که از AS30 به مقصد AS10 دریافت می‌شود باید از n2 انتقال یابد. بدین منظور روترهای n1 و n2 باید پارامتر MED را تغییر دهند.

  2. remote peer‌ها می‌توانند Local Preference را تغییر دهند.

AS20:

در n13 پروتکل BGP اجرا نیست. سیاست‌های این AS:

  1. این AS یک transit AS نیست. بنابراین از یک filter list برای جلوگیری از توزیع Route‌های بدست آمده استفاده می‌شود. تا Route‌ها به روترهای دیگر ارسال نشوند.

  2. ترافیک خروجی از این AS به سمت AS30 باید از AS40 انتقال یابند نه از طریق AS10. در نتیجه n11 و n12 پارامتر Local Preference را (که به عنوان یک سیاست در سمت ورودی است) تغییر می‌دهند.

AS30:

روتر n9 به عنوان Default Route برای AS65001 استفاده می‌شود. همچنین با تجمیع کردن prefix‌ها و حذف AS65001 از AS_PATH قبل از توزیع به دیگر روترها باعث خلاصه‌سازی Route‌ها شده و Route‌های AS65001 را به عنوان Route‌های خود و شبکه‌های خود به دیگر روترها تبلیغ و توزیع می‌کند. سیاست‌های این AS:

  1. ترافیک ورودی به این AS باید از AS10 بیاید و نه از AS40. بدین منظور روتر n9 چند بار AS خود را به AS-PATH اضافه می‌کند.

AS40:

  1. ترافیک خروجی به مقصد AS20 باید به n11 ارسال شود.

  2. روتر n10 از community به عنوان یک سیاست خروجی برای تأثیرگذاری روی ترافیک ورودی که از AS10 به AS30 می‌رود تا پس از آن به AS40 برسد، استفاده می‌کند.

AS65001:

یک AS خصوصی است که فقط به AS30 متصل است. ویژگی no-export community را تنظیم می‌کند و AS30 این Route را به دیگران ارسال نمی‌کند. AS65001 فقط یک default route از AS30 قبول می‌کند.

AS1:

این AS یک Network Area Point است و ما را به اینترنت وصل می‌کند. prefix‌های تجمیع شده و دیگر prefix‌ها را تبلیغ می‌کند.

با توجه به توضیحات بالا حال به تنظیم سناریو می‌پردازیم:

Bgp2

AS10

frr version 7.2-0.1
frr defaults traditional
hostname n1
log file
interface loopback 0
no ip forwarding
no ipv6 forwarding
!
ip prefix-list PLIST-AS10 seq 5 permit 172.10.0.0/22 le 32
!
interface loopback0
 ip address 10.10.0.1/32
!
interface ge0
 ip address 10.10.13.1/24
!
interface ge1
 ip address 192.168.19.1/24
!
interface ge2
 ip address 10.10.17.1/24
!
router eigrp 10
 network 10.10.0.0/16
!
router bgp 10
 bgp log-neighbor-changes
 neighbor 10.10.0.3 remote-as 10
 neighbor 10.10.0.3 update-source loopback0
 neighbor 10.10.0.4 remote-as 10
 neighbor 10.10.0.4 update-source loopback0
 neighbor 192.168.19.9 remote-as 30
 neighbor 192.168.19.9 password as3010
 neighbor 192.168.19.9 ttl-security hops 1
 !
 address-family ipv4 unicast
  neighbor 10.10.0.3 next-hop-self
  neighbor 10.10.0.4 next-hop-self
  neighbor 192.168.19.9 route-map RMAP-SET_LOC_PREF in
  neighbor 192.168.19.9 route-map RMAP-SET_MED out
 exit-address-family
!
bgp community-list standard CLIST-10:110 permit 10:110
bgp community-list standard CLIST-10:90 permit 10:90
!
route-map RMAP-SET_LOC_PREF permit 10
 match community CLIST-10:110
 set local-preference 110
!
route-map RMAP-SET_LOC_PREF permit 20
 match community CLIST-10:90
 set local-preference 90
!
route-map RMAP-SET_LOC_PREF permit 30
!
route-map RMAP-SET_MED permit 10
 match ip address prefix-list PLIST-AS10
 set metric 1000
!
route-map RMAP-SET_MED permit 20
!
line vty
!
frr version 7.2-0.1
frr defaults traditional
hostname n2
log file
debug zebra event
debug if event
debug ospf event
debug vxlan event 
debug vlan event
debug isis events
debug mpls ldp event
debug ipsec event
debug vrf event
debug rip events
debug qos event
debug nat44 event
interface loopback 0
no ip forwarding
no ipv6 forwarding
!
ip prefix-list PLIST-AS10 seq 5 permit 172.10.0.0/22 le 32
!
interface loopback0
 ip address 10.10.0.2/32
!
interface ge0
 ip address 10.10.24.2/24
!
interface ge1
 ip address 192.168.29.2/24
!
interface ge2
 ip address 192.168.210.2/24
!
interface ge3
 ip address 10.10.27.2/24
!
router eigrp 10
 network 10.10.0.0/16
!
router bgp 10
 bgp log-neighbor-changes
 neighbor 10.10.0.3 remote-as 10
 neighbor 10.10.0.3 update-source loopback0
 neighbor 10.10.0.4 remote-as 10
 neighbor 10.10.0.4 update-source loopback0
 neighbor 192.168.29.9 remote-as 30
 neighbor 192.168.29.9 password as1030
 neighbor 192.168.29.9 ttl-security hops 1
 neighbor 192.168.210.10 remote-as 40
 neighbor 192.168.210.10 password as1040
 neighbor 192.168.210.10 ttl-security hops 1
 !
 address-family ipv4 unicast
  neighbor 10.10.0.3 next-hop-self
  neighbor 10.10.0.4 next-hop-self
  neighbor 192.168.29.9 route-map RMAP-SET_LOC_PREF in
  neighbor 192.168.29.9 route-map RMAP-SET_MED out
  neighbor 192.168.210.10 route-map RMAP-SET_LOC_PREF in
 exit-address-family
!
bgp community-list standard CLIST-10:110 permit 10:110
bgp community-list standard CLIST-10:90 permit 10:90
!
route-map RMAP-SET_LOC_PREF permit 10
 match community CLIST-10:110
 set local-preference 110
!
route-map RMAP-SET_LOC_PREF permit 20
 match community CLIST-10:90
 set local-preference 90
!
route-map RMAP-SET_LOC_PREF permit 30
!
route-map RMAP-SET_MED permit 10
 match ip address prefix-list PLIST-AS10
 set metric 500
!
route-map RMAP-SET_MED permit 20
!
line vty
!
frr version 7.2-0.1
frr defaults traditional
hostname n3
interface loopback 0
no ip forwarding
no ipv6 forwarding
!
interface loopback0
 ip address 10.10.0.3/32
!
interface ge0
 ip address 10.10.13.3/24
!
interface ge1
 ip address 10.10.35.3/24
!
interface ge2
 ip address 10.10.34.3/24
!
interface ge3
 ip address 172.10.0.1/24
!
interface ge4
 ip address 172.10.1.1/24
!
router eigrp 10
 network 10.10.0.0/16
 network 172.10.0.0/16
!
router bgp 10
 bgp log-neighbor-changes
 bgp cluster-id 10.10.0.0
 network 172.10.0.0/24
 network 172.10.1.0/24
 neighbor PGROUP-INTERNAL peer-group
 neighbor PGROUP-INTERNAL remote-as 10
 neighbor PGROUP-INTERNAL update-source loopback0
 neighbor 10.10.0.1 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.2 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.5 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.6 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.7 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.4 remote-as 10
 neighbor 10.10.0.4 update-source loopback0
 !
 address-family ipv4 unicast
  neighbor PGROUP-INTERNAL route-reflector-client
 exit-address-family
!
line vty
!
frr version 7.2-0.1
frr defaults traditional
hostname n4
interface loopback 0
no ip forwarding
no ipv6 forwarding
!
interface loopback0
 ip address 10.10.0.4/32
!
interface ge3
 ip address 172.10.2.1/24
!
interface ge4
 ip address 172.10.3.1/24
!
interface ge0
 ip address 10.10.24.4/24
!
interface ge1
 ip address 10.10.46.4/24
!
interface ge2
 ip address 10.10.34.4/24
!
router eigrp 10
 network 10.10.0.0/16
 network 172.10.0.0/16
!
router bgp 10
 bgp log-neighbor-changes
 bgp cluster-id 10.10.0.0
 network 172.10.2.0/24
 network 172.10.3.0/24
 neighbor PGROUP-INTERNAL peer-group
 neighbor PGROUP-INTERNAL remote-as 10
 neighbor PGROUP-INTERNAL update-source loopback0
 neighbor 10.10.0.1 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.2 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.5 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.6 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.7 peer-group PGROUP-INTERNAL
 neighbor 10.10.0.3 remote-as 10
 neighbor 10.10.0.3 update-source loopback0
 !
 address-family ipv4 unicast
  neighbor PGROUP-INTERNAL route-reflector-client
 exit-address-family
!
line vty
frr version 7.2-0.1
frr defaults traditional
hostname n5
interface loopback 0
no ip forwarding
no ipv6 forwarding
!
interface loopback0
 ip address 10.10.0.5/32
!
interface ge0
 ip address 10.10.35.5/24
!
interface ge1
 ip address 192.168.115.5/24
!
interface ge2
 ip address 10.10.57.5/24
!
router eigrp 10
 network 10.10.0.0/16
!
router bgp 10
 bgp log-neighbor-changes
 neighbor 10.10.0.3 remote-as 10
 neighbor 10.10.0.3 update-source loopback0
 neighbor 10.10.0.4 remote-as 10
 neighbor 10.10.0.4 update-source loopback0
 neighbor 192.168.115.11 remote-as 20
 neighbor 192.168.115.11 password as1030
 neighbor 192.168.115.11 ttl-security hops 1
 !
 address-family ipv4 unicast
  neighbor 10.10.0.3 next-hop-self
  neighbor 10.10.0.4 next-hop-self
  neighbor 192.168.115.11 route-map RMAP-SET_LOC_PREF in
 exit-address-family
!
bgp community-list standard CLIST-10:110 permit 10:110
bgp community-list standard CLIST-10:90 permit 10:90
!
route-map RMAP-SET_LOC_PREF permit 10
 match community CLIST-10:90
 set local-preference 90
!
route-map RMAP-SET_LOC_PREF permit 20
 match community CLIST-10:110
 set local-preference 110
!
route-map RMAP-SET_LOC_PREF permit 30
!
line vty
!
frr version 7.2-0.1
frr defaults traditional
hostname n6
interface loopback 0
no ip forwarding
no ipv6 forwarding
!
interface loopback0
 ip address 10.10.0.6/32
!
interface ge0
 ip address 10.10.46.6/24
!
interface ge1
 ip address 192.168.126.6/24
!
interface ge2
 ip address 10.10.67.6/24
!
router eigrp 10
 network 10.10.0.0/16
!
router bgp 10
 bgp log-neighbor-changes
 neighbor 10.10.0.3 remote-as 10
 neighbor 10.10.0.3 update-source loopback0
 neighbor 10.10.0.4 remote-as 10
 neighbor 10.10.0.4 update-source loopback0
 neighbor 192.168.126.12 remote-as 20
 neighbor 192.168.126.12 password as1020
 neighbor 192.168.126.12 ttl-security hops 1
 !
 address-family ipv4 unicast
  neighbor 10.10.0.3 next-hop-self
  neighbor 10.10.0.4 next-hop-self
  neighbor 192.168.126.12 route-map RMAP-SET_LOC_PREF in
 exit-address-family
!
bgp community-list standard CLIST-10:110 permit 10:110
bgp community-list standard CLIST-10:90 permit 10:90
!
route-map RMAP-SET_LOC_PREF permit 10
 match community CLIST-10:90
 set local-preference 90
!
route-map RMAP-SET_LOC_PREF permit 20
 match community CLIST-10:110
 set local-preference 110
!
route-map RMAP-SET_LOC_PREF permit 30
!
line vty
!
frr version 7.2-0.1
frr defaults traditional
interface loopback 0
no ip forwarding
no ipv6 forwarding
hostname n7
!
interface loopback0
 ip address 10.10.0.7/32
!
interface ge0
 ip address 192.168.78.7/24
!
interface ge1
 ip address 10.10.17.7/24
!
interface ge2
 ip address 10.10.27.7/24
!
interface ge3
 ip address 10.10.57.7/24
!
interface ge4
 ip address 10.10.67.7/24
!
router eigrp 10
 network 10.10.0.0/16
!
router bgp 10
 neighbor 10.10.0.3 remote-as 10
 neighbor 10.10.0.3 update-source loopback0
 neighbor 10.10.0.4 remote-as 10
 neighbor 10.10.0.4 update-source loopback0
 neighbor 192.168.78.8 remote-as 1
 neighbor 192.168.78.8 ttl-security hops 1
 !
 address-family ipv4 unicast
  neighbor 10.10.0.3 next-hop-self
  neighbor 10.10.0.4 next-hop-self
 exit-address-family
!
line vty
!

AS20

Building configuration...

Current configuration:
!
hostname n11
system update server-url https://update.soodar.ir
system update update-poll-interval 10
system update inventory-poll-interval 15
no ip forwarding
no ipv6 forwarding
enable password s
!
ip prefix-list PLIST-AS30 seq 5 permit 172.30.0.0/22 le 32

interface loopback0
 no shutdown
 ip address 10.20.0.11/32
!
interface ge0
 no shutdown
 ip address 10.20.112.11/24
!
interface ge1
 no shutdown
 ip address 192.168.115.11/24
!
interface ge2
 no shutdown
 ip address 192.168.111.11/24
!
interface ge3
 no shutdown
 ip address 10.20.113.11/24
!
router eigrp 20
 network 10.20.0.0/16
!
router bgp 20
 bgp log-neighbor-changes
 neighbor 10.20.0.12 remote-as 20
 neighbor 10.20.0.12 update-source loopback0
 neighbor 192.168.111.10 remote-as 40
 neighbor 192.168.115.5 remote-as 10
 neighbor 192.168.115.5 password as1020
 neighbor 192.168.115.5 ttl-security hops 1
 !
 address-family ipv4 unicast
  network 172.20.0.0/24
  network 172.20.1.0/24
  network 172.20.2.0/24
  network 172.20.3.0/24
  neighbor 10.20.0.12 next-hop-self
  neighbor 192.168.111.10 route-map RMAP-SET_LOC_PREF_HIGH in
  neighbor 192.168.111.10 filter-list 1 out
  neighbor 192.168.115.5 route-map RMAP-SET_LOC_PREF_LOW in
  neighbor 192.168.115.5 filter-list 1 out
 exit-address-family
!
bgp as-path access-list 1 permit ^$
!
route-map RMAP-SET_LOC_PREF_HIGH permit 10
 match ip address prefix-list PLIST-AS30
 set local-preference 150
!
route-map RMAP-SET_LOC_PREF_HIGH permit 20
!
route-map RMAP-SET_LOC_PREF_LOW permit 10
 match ip address prefix-list PLIST-AS30
 set local-preference 50
!
route-map RMAP-SET_LOC_PREF_LOW permit 20
!
end
Building configuration...

Current configuration:
!
hostname n12
system update server-url https://update.soodar.ir
system update update-poll-interval 10
system update inventory-poll-interval 15
no ip forwarding
no ipv6 forwarding
enable password s
!
ip prefix-list PLIST-AS30 seq 5 permit 172.30.0.0/22 le 32

interface loopback0
 no shutdown
 ip address 10.20.0.12/32
!
interface ge0
 no shutdown
 ip address 10.20.112.12/24
!
interface ge1
 no shutdown
 ip address 192.168.126.12/24
!
interface ge2
 no shutdown
 ip address 192.168.112.12/24
!
interface ge3
 no shutdown
 ip address 10.20.123.12/24
!
router eigrp 20
 network 10.20.0.0/16
!
router bgp 20
 bgp log-neighbor-changes
 neighbor 10.20.0.11 remote-as 20
 neighbor 10.20.0.11 update-source loopback0
 neighbor 192.168.112.10 remote-as 40
 neighbor 192.168.126.6 remote-as 10
 neighbor 192.168.126.6 password as1020
 neighbor 192.168.126.6 ttl-security hops 1
 !
 address-family ipv4 unicast
  network 172.20.0.0/24
  network 172.20.1.0/24
  network 172.20.2.0/24
  network 172.20.3.0/24
  neighbor 10.20.0.11 next-hop-self
  neighbor 192.168.112.10 route-map RMAP-SET_LOC_PREF_HIGH in
  neighbor 192.168.112.10 filter-list 1 out
  neighbor 192.168.126.6 route-map RMAP-SET_LOC_PREF_LOW in
  neighbor 192.168.126.6 filter-list 1 out
 exit-address-family
!
bgp as-path access-list 1 permit ^$
!
route-map RMAP-SET_LOC_PREF_HIGH permit 10
 match ip address prefix-list PLIST-AS30
 set local-preference 150
!
route-map RMAP-SET_LOC_PREF_HIGH permit 20
!
route-map RMAP-SET_LOC_PREF_LOW permit 10
 match ip address prefix-list PLIST-AS30
 set local-preference 50
!
route-map RMAP-SET_LOC_PREF_LOW permit 20
!
end
system update server-url https://update.soodar.ir
system update update-poll-interval 10
system update inventory-poll-interval 15
no ip forwarding
no ipv6 forwarding
enable password s
!
ip route 0.0.0.0/0 10.20.113.11
ip route 0.0.0.0/0 10.20.123.12
!
interface loopback0
 no shutdown
 ip address 10.20.0.13/32
!
interface loopback1
!
interface loopback2
!
interface loopback3
!
interface loopback4
!
interface ge0
 no shutdown
 ip address 10.20.113.13/24
!
interface ge1
 no shutdown
 ip address 10.20.123.13/24
!
interface ge2
 no shutdown
 ip address 172.20.0.1/24
!
interface ge3
 no shutdown
 ip address 172.20.1.1/24
!
interface ge4
 no shutdown
 ip address 172.20.2.1/24
!
interface ge5
 no shutdown
 ip address 172.20.3.1/24
!
router eigrp 20
 network 10.20.0.0/16
 network 172.20.0.0/16
!
end

AS30

Building configuration...

Current configuration:
!
hostname n9
system update server-url https://update.soodar.ir
system update update-poll-interval 10
system update inventory-poll-interval 15
no ip forwarding
no ipv6 forwarding
enable password s
!
ip prefix-list PLIST-AS30 seq 5 permit 172.30.0.0/22 le 32
!
interface loopback0
 no shutdown
 ip address 10.30.0.9/32
!
interface loopback1
!
interface loopback2
!
interface loopback3
!
interface ge0
 no shutdown
 ip address 192.168.19.9/24
!
interface ge1
 no shutdown
 ip address 192.168.29.9/24
!
interface ge2
 no shutdown
 ip address 192.168.109.9/24
!
interface ge3
 no shutdown
 ip address 192.168.149.9/24
!
interface ge4
 no shutdown
 ip address 172.30.0.1/24
!
interface ge5
 no shutdown
 ip address 172.30.1.1/24
!
interface ge6
 no shutdown
 ip address 172.30.2.1/24
!
router bgp 30
 bgp log-neighbor-changes
 neighbor 192.168.19.1 remote-as 10
 neighbor 192.168.19.1 password as3010
 neighbor 192.168.19.1 ttl-security hops 1
 neighbor 192.168.29.2 remote-as 10
 neighbor 192.168.29.2 password as1030
 neighbor 192.168.29.2 ttl-security hops 1
 neighbor 192.168.109.10 remote-as 40
 neighbor 192.168.109.10 password as4030
 neighbor 192.168.149.14 remote-as 65001
 neighbor 192.168.149.14 ttl-security hops 1
 !
 address-family ipv4 unicast
  network 172.30.0.0/24
  network 172.30.1.0/24
  network 172.30.2.0/24
  aggregate-address 172.30.0.0/22 summary-only
  neighbor 192.168.19.1 remove-private-AS
  neighbor 192.168.29.2 remove-private-AS
  neighbor 192.168.109.10 remove-private-AS
  neighbor 192.168.109.10 route-map RMAP-SET_PREPEND out
  neighbor 192.168.149.14 default-originate
 exit-address-family
!
route-map RMAP-SET_PREPEND permit 10
 match ip address prefix-list PLIST-AS30
 set as-path prepend 30 30 30 30 30
!
route-map RMAP-SET_PREPEND permit 20
!
end

AS40

Building configuration...

Current configuration:
!
hostname n10
system update server-url https://update.soodar.ir
system update update-poll-interval 10
system update inventory-poll-interval 15
no ip forwarding
no ipv6 forwarding
enable password s
!
ip prefix-list PLIST-AS20 seq 5 permit 172.20.0.0/22 le 32
ip prefix-list PLIST-AS40 seq 5 permit 172.40.0.0/22 le 32
!
interface loopback0
 no shutdown
 ip address 10.40.0.10/32
!
interface loopback1
!
interface loopback2
!
interface loopback3
!
interface loopback4
!
interface ge0
 no shutdown
 ip address 192.168.111.10/24
!
interface ge1
 no shutdown
 ip address 192.168.112.10/24
!
interface ge2
 no shutdown
 ip address 192.168.109.10/24
!
interface ge3
 no shutdown
 ip address 192.168.210.10/24
!
interface ge4
 no shutdown
 ip address 172.40.0.1/24
!
interface ge5
 no shutdown
 ip address 172.40.1.1/24
!
interface ge6
 no shutdown
 ip address 172.40.2.1/24
!
interface ge7
 no shutdown
 ip address 172.40.3.1/24
!
router bgp 40
 bgp log-neighbor-changes
 neighbor 192.168.109.9 remote-as 30
 neighbor 192.168.109.9 password as4030
 neighbor 192.168.111.11 remote-as 20
 neighbor 192.168.112.12 remote-as 20
 neighbor 192.168.210.2 remote-as 10
 neighbor 192.168.210.2 password as1040
 neighbor 192.168.210.2 ttl-security hops 1
 !
 address-family ipv4 unicast
  network 172.40.0.0/24
  network 172.40.1.0/24
  network 172.40.2.0/24
  network 172.40.3.0/24
  neighbor 192.168.109.9 route-map RMAP-SET_COMMUN out
  neighbor 192.168.111.11 route-map RMAP-SET_WEIGHT_HIGH in
  neighbor 192.168.112.12 route-map RMAP-SET_WEIGHT_LOW in
 exit-address-family
!
route-map RMAP-SET_COMMUN permit 10
 match ip address prefix-list PLIST-AS40
 set community 10:110 additive
!
route-map RMAP-SET_COMMUN permit 20
!
route-map RMAP-SET_WEIGHT_HIGH permit 10
 match ip address prefix-list PLIST-AS20
 set weight 2048
!
route-map RMAP-SET_WEIGHT_HIGH permit 20
!
route-map RMAP-SET_WEIGHT_LOW permit 10
 match ip address prefix-list PLIST-AS20
 set weight 1024
!
route-map RMAP-SET_WEIGHT_LOW permit 20
!
end

AS65001

Building configuration...

Current configuration:
!
hostname n14
system update server-url https://update.soodar.ir
system update update-poll-interval 10
system update inventory-poll-interval 15
no ip forwarding
no ipv6 forwarding
enable password s

!
interface loopback0
 no shutdown
 ip address 10.65.0.14/32
!
interface loopback1
!
interface loopback2
!
interface ge0
 no shutdown
 ip address 192.168.149.14/24
!
interface ge1
 no shutdown
 ip address 172.30.3.1/24
!
interface ge2
 no shutdown
 ip address 172.65.0.1/24
!
router bgp 65001
 bgp log-neighbor-changes
 neighbor 192.168.149.9 remote-as 30
 neighbor 192.168.149.9 ttl-security hops 1
 !
 address-family ipv4 unicast
  network 172.30.3.0/24
  network 172.65.0.0/24
  neighbor 192.168.149.9 distribute-list ACL-DEFAULT_ROUTE in
  neighbor 192.168.149.9 route-map RMAP-NO_EXPORT out
 exit-address-family
!
route-map RMAP-NO_EXPORT permit 10
 match ip address ACL-NO_EXPORT
 set community no-export
!
route-map RMAP-NO_EXPORT permit 20
!
end

AS1

Building configuration...

Current configuration:
!
hostname n8
system update server-url https://update.soodar.ir
system update update-poll-interval 10
system update inventory-poll-interval 15
no ip forwarding
no ipv6 forwarding
enable password s

!
interface ge0
 no shutdown
 ip address 192.168.78.8/24
!
interface ge1
 no shutdown
 ip address 172.1.0.1/24
!
interface ge2
 no shutdown
 ip address 172.1.1.1/24
!
interface ge3
 no shutdown
 ip address 172.1.2.1/24
!
interface ge4
 no shutdown
 ip address 172.1.3.1/24
!
router bgp 1
 neighbor 192.168.78.7 remote-as 10
 neighbor 192.168.78.7 ttl-security hops 1
 !
 address-family ipv4 unicast
  network 172.1.0.0/24
  network 172.1.1.0/24
  network 172.1.2.0/24
  network 172.1.3.0/24
  aggregate-address 172.1.0.0/16
 exit-address-family
!
end

خلاصه

BGP یک پروتکل مسیریابی قدرتمند برای:

مسیریابی بین دامنه‌ای در اینترنت و شبکه‌های بزرگ
کنترل دقیق مسیریابی با استفاده از Local Preference، MED، و AS-Path
سیاست‌گذاری پیشرفته با route-map و Community
مقیاس‌پذیری بالا با Route Reflector و Peer Groups
امنیت با TTL Security و Password Authentication

با استفاده صحیح از BGP می‌توانید یک زیرساخت مسیریابی پایدار و قابل کنترل برای شبکه خود ایجاد کنید.