Route Reflector و Confederation های BGP: مقیاس‌دهی iBGP فراتر از Full Mesh

نیازمندی full-mesh iBGP، که به‌طور مختصر پیش‌تر در این مجموعه ذکر شد، با رشد یک سیستم خودمختار به یک مسئله جدی مقیاس‌دهی تبدیل می‌شود، که نیازمند تعدادی جلسه است که به‌طور درجه‌دوم با تعداد روتر افزایش می‌یابد. این مقاله دقیقاً توضیح می‌دهد چرا full mesh مقیاس‌پذیر نیست، اینکه route reflector ها چگونه این را با شل‌کردن قوانین معمول انتشار-مسیر BGP حل می‌کنند مرور می‌کند، و confederation ها را به‌عنوان یک رویکرد جایگزین که یک AS واحد را به سیستم‌های خودمختار زیرمجموعه کوچک‌تر تقسیم می‌کند پوشش می‌دهد.

Route Reflector BGPFull Mesh iBGPConfederation BGP

~7 دقیقه مطالعه · آخرین به‌روزرسانی ۲۱ شهریور ۱۴۰۵

چرا iBGP از ابتدا به یک Full Mesh نیاز دارد

BGP یک قانون جلوگیری-از-حلقه خاص برای iBGP شامل می‌شود، که پیش‌تر در این مجموعه بحث شد: یک روتر هرگز یک مسیر یادگرفته‌شده از طریق iBGP را به یک همتای iBGP دیگر دوباره تبلیغ نمی‌کند. این قانون وجود دارد چون مسیرهای iBGP هیچ تغییر AS path‌ای درون همان AS ندارند، که پیش‌تر در این مجموعه درباره ویژگی AS path بحث شد، پس BGP نمی‌تواند به تشخیص حلقه AS path به همان شیوه‌ای که بین سیستم‌های خودمختار متفاوت انجام می‌دهد متکی باشد.

پیامد این قانون: تا هر روتر در یک AS واقعاً
هر مسیر را یاد بگیرد، هر روتر باید یک جلسه
iBGP مستقیم با هر روتر دیگر در آن AS داشته
باشد -- چون یک مسیر نمی‌تواند از میان یک
همتای iBGP میانی رله شود

مسئله مقیاس‌بندی درجه‌دوم

تعداد جلسات iBGP مورد نیاز برای full mesh:
n(n-1)/2، جایی که n تعداد روترهاست

۴ روتر:   ۶ جلسه
۱۰ روتر:  ۴۵ جلسه
۵۰ روتر:  ۱٬۲۲۵ جلسه
۱۰۰ روتر: ۴٬۹۵۰ جلسه

فراتر از صرفاً بار اداری پیکربندی و نگهداری این تعداد عظیم جلسات منفرد، هر جلسه واقعاً حافظه و منابع CPU روی هر روتر مصرف می‌کند، چون هر روتر باید وضعیت کامل هر یک از بسیاری رابطه همسایه خودش را ردیابی کند -- این واقعاً غیرعملی می‌شود بسیار پیش از رسیدن به هرجایی نزدیک صد روتر.

Route Reflector ها: شل‌کردن ایمن قانون جلوگیری-از-حلقه

یک Route Reflector (RR) این را با عمل‌کردن به‌عنوان یک استثنای تعیین‌شده به قانون استاندارد iBGP حل می‌کند: روترهای خاص پیکربندی می‌شوند تا مسیرهای یادگرفته‌شده-iBGP را به سایر کلاینت‌های iBGP‌شان "منعکس" (دوباره‌تبلیغ) کنند، و نیاز آن کلاینت‌ها به همتاسازی مستقیم با هر روتر دیگری در AS را حذف می‌کنند.

Route-Reflector(config)# router bgp 65001
Route-Reflector(config-router)# neighbor 10.0.0.2 remote-as 65001
Route-Reflector(config-router)# neighbor 10.0.0.2 route-reflector-client
Route-Reflector(config-router)# neighbor 10.0.0.3 remote-as 65001
Route-Reflector(config-router)# neighbor 10.0.0.3 route-reflector-client

-- کلیدواژه route-reflector-client فقط روی خود
-- route reflector اعمال می‌شود، و مشخص می‌کند
-- کدام همسایگان کلاینت‌های آن هستند -- خود
-- کلاینت‌ها هیچ پیکربندی خاصی فراتر از یک
-- جلسه iBGP کاملاً معمولی نیاز ندارند

تعداد جلسه حاصل با یک route reflector:
کلاینت‌ها فقط یک جلسه به‌ازای هرکدام نیاز دارند،
به RR، به‌جای یک جلسه مستقیم با هر روتر دیگر --
که کاهش می‌دهد آنچه می‌توانست ده‌ها یا صدها
جلسه باشد را به صرفاً تعداد کمی به‌ازای هر کلاینت

Client، Non-Client، و نقش خود RR

اصطلاحات Route Reflector:

Client: یک روتر صراحتاً پیکربندی‌شده با
  route-reflector-client، که مسیرهای منعکس‌شده
  را از RR بدون نیاز به جلسات با هر روتر دیگر
  دریافت می‌کند

Non-Client: یک روتر با یک جلسه iBGP معمولی به RR،
  اما بدون کلیدواژه client -- این روتر همچنان
  به full mesh سنتی با هر روتر non-client دیگر
  نیاز دارد، چون RR مسیرها را به non-client ها
  از سایر non-client ها منعکس نمی‌کند

Cluster: RR همراه با همه کلاینت‌هایش، شناسایی‌شده
  با یک Cluster ID مورد استفاده برای تشخیص
  حلقه‌های انعکاس در طراحی‌های پیچیده‌تر با
  چند route reflector افزونه

جلوگیری از حلقه درون انعکاس مسیر

از آنجا که انعکاس مسیر عمداً قانون استاندارد "هرگز مسیرهای iBGP را به همتایان iBGP دوباره تبلیغ نکن" را می‌شکند، دو ویژگی جدید BGP به‌طور خاص برای جلوگیری از حلقه‌هایی که این شل‌سازی در غیر این صورت می‌توانست معرفی کند وجود دارند.

Originator ID: شناسه روتر منبع اصلی یک مسیر
  درون AS را شناسایی می‌کند -- اگر یک روتر
  یک مسیر منعکس‌شده با شناسه روتر خودش به‌عنوان
  Originator ID دریافت کند، این را به‌عنوان
  یک حلقه تشخیص می‌دهد و دور می‌ریزد

Cluster List: از نظر مفهومی مشابه با ویژگی
  AS Path، که پیش‌تر در این مجموعه بحث شد،
  اما ردیابی اینکه یک مسیر از میان کدام
  خوشه‌های route reflector عبور کرده -- اگر
  یک route reflector Cluster ID خودش را از
  قبل حاضر در این لیست ببیند، مسیر را به‌عنوان
  یک حلقه دور می‌ریزد

تأیید عملیات Route Reflector

Route-Reflector# show ip bgp neighbors 10.0.0.2 | include reflector

  Route-Reflector Client, for the address family: IPv4 Unicast

Client-Router# show ip bgp 192.168.5.0

BGP routing table entry for 192.168.5.0/24
  Local
    10.0.0.5 from 10.0.0.1 (10.0.0.1)
      Origin IGP, metric 0, localpref 100, valid, internal, best
      Originator: 10.0.0.5, Cluster list: 10.0.0.1

حضور یک Originator و Cluster list در جزئیات مسیر تأیید می‌کند از طریق انعکاس یادگرفته شده به‌جای یک جلسه iBGP مستقیم و سنتی — تأیید مفید هنگام تأیید اینکه یک طراحی route reflector واقعاً مسیرها را همان‌طور که مورد نظر بود منتشر می‌کند.

Confederation ها: یک رویکرد جایگزین

BGP Confederations همان مسئله مقیاس‌بندی full-mesh را از طریق یک مکانیزم اساساً متفاوت حل می‌کنند: تقسیم یک AS بزرگ به چند سیستم خودمختار زیرمجموعه کوچک‌تر، با جلسات شبیه-eBGP (هرچند با استفاده از یک نوع خاص آگاه-از-confederation) بین sub-AS ها، در حالی که کل confederation همچنان به‌عنوان یک AS واحد به دنیای خارج ظاهر می‌شود.

Router(config)# router bgp 65501
Router(config-router)# bgp confederation identifier 65001
Router(config-router)# bgp confederation peers 65502 65503

-- 65501، 65502، 65503 شماره‌های sub-AS خصوصی
-- هستند، فقط قابل‌مشاهده درون شبکه خود این سازمان
-- 65001 شماره AS واحدی است که دنیای خارج
-- واقعاً وقتی از طریق eBGP معمولی با این سازمان
-- همتا می‌شود می‌بیند

چرا این نیازمندی مش را کاهش می‌دهد:
full mesh همچنان مورد نیاز است، اما فقط درون
هر sub-AS کوچک‌تر، نه در سراسر کل AS بزرگ اصلی --
تقسیم ۱۰۰ روتر به ۴ sub-AS با ۲۵ روتر هرکدام
تعداد کل جلسات مش را از n(n-1)/2 برای ۱۰۰ روتر
به فقط ۴ مش جداگانه با ۲۵ روتر هرکدام کاهش
می‌دهد، یک تعداد کلی به‌طور چشمگیر کوچک‌تر

مقایسه Route Reflector ها و Confederation ها

Route Reflector ها:
  - پیاده‌سازی ساده‌تر روی یک شبکه موجود، چون
    فقط نیازمند تغییرات پیکربندی روی خود روترهای
    reflector تعیین‌شده است
  - روترهای کلاینت اساساً هیچ پیکربندی خاصی
    نیاز ندارند
  - رایج‌ترین راه‌حل مستقر در شبکه‌های
    بزرگ‌مقیاس دنیای واقعی

Confederation ها:
  - نیازمند دوباره-شماره‌گذاری روترها به گروه‌های
    sub-AS است، یک تلاش بازطراحی قابل‌توجه‌تر
  - یک تقسیم بصری/اداری روشن‌تر فراهم می‌کند که
    می‌تواند با ساختار داخلی خود یک سازمان
    هماهنگ باشد (مثلاً sub-AS جداگانه به‌ازای
    هر منطقه یا مرکز داده)
  - کمتر رایج مستقر می‌شود نسبت به route
    reflector ها در عمل، به‌دلیل تلاش
    بازپیکربندی بیشتر درگیر

چرا هر دو راه‌حل همان محدودیت بنیادین را برطرف می‌کنند

هم route reflector ها و هم confederation ها به‌طور خاص وجود دارند تا همان قانون جلوگیری-از-حلقه iBGP زیربنایی بحث‌شده در ابتدای این مقاله را دور بزنند، با استفاده از مکانیزم‌های کاملاً متفاوت — یکی قانون انتشار را برای روترهای تعیین‌شده شل می‌کند، دیگری خود AS را به قطعات کوچک‌تری بازساختاردهی می‌کند که full mesh در آن‌ها به‌طور محلی عملی باقی می‌ماند. درک این علت ریشه‌ای مشترک، به‌جای صرفاً حفظ‌کردن نحو پیکربندی هر راه‌حل، چیزی است که به یک مهندس اجازه می‌دهد به‌درستی تشخیص دهد کدام رویکرد بهترین تناسب را با توپولوژی موجود و ساختار اداری یک شبکه خاص دارد وقتی full mesh استاندارد iBGP نگه‌داشتنش غیرعملی شده است.

نوشته و پژوهش‌شده توسط دکتر شاهین صیامی

مقالات مرتبط

عیب‌یابی سیستماتیک شبکه: یک روش‌شناسی که همه‌چیز را به هم پیوند می‌دهد

هر پروتکل و فناوری‌ای که در سراسر این مجموعه پوشش داده شد فقط زمانی مفید است که یک مسئله شامل آن واقعاً بتواند تحت فشار دنیای واقعی به‌طور کارآمد تشخیص و رفع شود. این مقاله یک روش‌شناسی عیب‌یابی سیستماتیک ساخته‌شده حول لایه‌های OSI ارائه می‌دهد، اعمالش روی یک مسئله اتصال واقع‌بینانه را مرور می‌کند، و نشان می‌دهد دستورات تأیید خاصی که در سراسر این کل مجموعه پوشش داده شدند چگونه در یک فرآیند تشخیصی ساختاریافته جا می‌گیرند.

ادامه

NETCONF، YANG، و پایتون: پیکربندی برنامه‌ای شبکه در مقیاس

REST API ها و فرمت‌های JSON/YAML که پیش‌تر در این مجموعه پوشش داده شدند یک رویکرد به اتوماسیون شبکه را نشان می‌دهند، اما NETCONF و YANG یک جایگزین ساختاریافته‌تر و مبتنی‌بر-استاندارد فراهم می‌کنند که به‌طور خاص برای پیکربندی دستگاه شبکه ساخته شده. این مقاله توضیح می‌دهد چه چیزی NETCONF را از یک REST API ساده متمایز می‌کند، اینکه مدل‌های YANG چگونه دقیقاً تعریف می‌کنند داده پیکربندی چگونه به‌نظر می‌رسد را پوشش می‌دهد، و استفاده از پایتون برای تعامل برنامه‌ای با دستگاه‌های شبکه را مرور می‌کند.

ادامه

اصول IPsec VPN: امن‌سازی ترافیک در سراسر شبکه‌های نامورد‌اعتماد

اتصال دو سایت در سراسر اینترنت عمومی ترافیک را در معرض رهگیری قرار می‌دهد مگر اینکه به‌درستی رمزگذاری شود، و IPsec چارچوب استانداردی برای ساخت تونل‌های امن و احراز‌هویت‌شده بین سایت‌ها فراهم می‌کند. این مقاله فرآیند مذاکره دومرحله‌ای IKE را توضیح می‌دهد، تمایز بین پروتکل‌های AH و ESP را پوشش می‌دهد، پیکربندی یک VPN سایت-به-سایت پایه IPsec را مرور می‌کند، و دستورات تأیید ضروری را پوشش می‌دهد.

ادامه

اصول MPLS: توضیح سوئیچینگ برچسب

مسیریابی IP سنتی نیازمند این است که هر روتر در طول یک مسیر یک جستجوی کامل جدول مسیریابی روی هر بسته انجام دهد، اما MPLS رویکردی اساساً متفاوت را با گرفتن آن تصمیم فوروارد‌کردن یک‌بار و متصل‌کردن یک برچسب ساده که هر روتر بعدی می‌تواند به‌جای آن استفاده کند اتخاذ می‌کند. این مقاله مفهوم اصلی سوئیچینگ-برچسب را توضیح می‌دهد، اینکه پروتکل توزیع برچسب چگونه جداول فوروارد‌کردن برچسبی که این را ممکن می‌کنند می‌سازد را مرور می‌کند، و بهره‌های عملی‌ای که MPLS در شبکه‌های ارائه‌دهنده واقعی فراهم می‌کند را پوشش می‌دهد.

ادامه

بررسی عمیق انواع ناحیه OSPF: Stub، Totally Stubby، و NSSA

طراحی OSPF چندناحیه‌ای پایه، که پیش‌تر در این مجموعه پوشش داده شد، از قبل اندازه پایگاه‌داده را با نگه‌داشتن LSA های جزئی نوع ۱ و ۲ محلی به ناحیه خودشان کاهش می‌دهد، اما انواع ناحیه تخصصی OSPF فراتر می‌روند، و به‌طور خاص LSA های خارجی نوع ۵ را هدف قرار می‌دهند. این مقاله انواع LSA که باید برای ساخت هر نوع ناحیه تخصصی سرکوب شوند را توضیح می‌دهد، پیکربندی نواحی stub، totally stubby، و not-so-stubby را مرور می‌کند، و مبادلات خاصی که هر انتخاب طراحی شامل می‌شود را پوشش می‌دهد.

ادامه

دستکاری مسیر BGP: Route Map ها و Community ها برای مهندسی ترافیک

الگوریتم انتخاب بهترین-مسیر پایه BGP، که پیش‌تر در این مجموعه پوشش داده شد، از یک توالی ثابت از ویژگی‌ها پیروی می‌کند، اما شبکه‌های واقعی نیاز دارند به‌طور فعال روی اینکه کدام مسیر انتخاب می‌شود تأثیر بگذارند به‌جای پذیرش منفعلانه نتیجه پیش‌فرض. این مقاله توضیح می‌دهد route map ها چگونه اطلاعات مسیریابی BGP را فیلتر و تغییر می‌دهند، Local Preference و MED را به‌عنوان دو اهرم اصلی برای تأثیرگذاری روی انتخاب مسیر پوشش می‌دهد، و community های BGP را به‌عنوان یک مکانیزم تگ‌گذاری انعطاف‌پذیر برای هماهنگی سیاست در سراسر کل شبکه معرفی می‌کند.

ادامه