مقالات

BGP EVPN در همپوشانی مرکز داده


مانند پروتکل های بسیار موفق دیگر مانند HTTP و DNS، در طول سال ها BGP وظایف اضافی بیشتری دریافت کرده است. در این پست وبلاگ، ما به عملکردهای جدید و موارد استفاده جدید که در طول سال ها به BGP اضافه شده اند نگاه خواهیم کرد. این موارد شامل استفاده های مختلف از BGP در شبکه های سازمانی و مراکز داده است.

BGP برای مسیریابی اینترنت

جهان در سال 1989 زمانی که مشخصات برای اولین نسخه BGP منتشر شد. قبل از BGP، پروتکل دروازه خارجی (EGP) وجود داشت، اما EGP به گونه ای طراحی شده بود که یک ستون فقرات مرکزی داشته باشد که شبکه های دیگر به آن متصل شوند (مشابه نحوه اتصال ناحیه OSPF 0 به مناطق دیگر). همانطور که شبکه های منطقه ای شروع به اتصال مستقیم به یکدیگر کردند و اولین ارائه دهندگان شبکه تجاری ظهور کردند، یک پروتکل مسیریابی انعطاف پذیرتر برای مدیریت مسیریابی بسته ها بین شبکه های مختلف که با هم اینترنت را تشکیل می دهند مورد نیاز بود. البته مسیریابی جهانی “بین دامنه” همچنان برجسته ترین استفاده از BGP است.

در آن روزهای اولیه BGP، پروتکل اینترنت (IP) فقط یک پروتکل در میان بسیاری از پروتکل ها بود: فروشندگان عمده معمولا پروتکل های شبکه خود را داشتند، مانند IBM’s SNA، Novell’s IPX، Apple’s AppleTalk، Digital’s DECnet و NetBIOS مایکروسافت. با پیشرفت دهه 1990، این پروتکل ها به سرعت کمتر مرتبط شدند زیرا به هر حال IP برای برقراری ارتباط با اینترنت مورد نیاز بود، بنابراین اجرای برنامه های داخلی از طریق IP نیز آسان تر بود.

BGP در شبکه های سازمانی

نتیجه این بود که BGP به سرعت نقشی را پیدا کرد درونی؛ داخلی پروتکل مسیریابی در شبکه های بزرگ سازمانی دلیل این امر این است که بر خلاف پروتکل‌های مسیریابی داخلی مانند OSPF و IS-IS، BGP اجازه می‌دهد تا سیاست اعمال شود تا مسیریابی بین بخش‌های شرکت در صورت نیاز کنترل شود. البته برای مسیریابی بین دامنه (اینترنت)، BGP با آدرس های IP عمومی و شماره های سیستم خودمختار عمومی (AS) استفاده می شود. اینها توسط پنج منطقه ثبت اینترنت منطقه ای (RIR) مانند ARIN در آمریکای شمالی ارائه می شوند. در شبکه های شرکتی، محدوده آدرس خصوصی 10.0.0.0/8، 172.16.0.0/12، و 192.168.0.0/16 اغلب استفاده می شود، اما، شاید شگفت آور، شبکه های شرکتی نیز تمایل به استفاده از آدرس های عمومی دارند، زیرا آنها استفاده از خصوصی را هماهنگ می کنند. محدوده ها به سرعت در سازمان های بزرگ، به ویژه پس از ادغام، بسیار پیچیده می شوند.

کتاب الکترونیکی BGP در شبکه های بزرگ

شبکه های سازمانی تمایل زیادی به استفاده از اعداد AS خصوصی دارند زیرا RIR ها در طول زمان در ارائه اعداد AS عمومی محدودتر شده اند – علیرغم این واقعیت که حدود ده سال پیش ما از اعداد AS 16 بیتی به 32 بیتی تغییر کردیم، به طوری که مطلقاً هیچ وجود ندارد. کمبود محدوده اعداد AS خصوصی 16 بیتی اصلی 64512 تا 65534 است که به 1023 شماره AS خصوصی اجازه می دهد. این در یک شبکه بزرگ زیاد نیست، بنابراین استفاده از یک عدد AS در بخش‌های مختلف شبکه غیرعادی نیست. محدوده خصوصی 32 بیتی 4200000000 تا 4294967294 است که تقریباً 95 میلیون شماره AS خصوصی اضافی را امکان پذیر می کند. بنابراین تداخل اعداد AS دیگر نباید مشکل ساز باشد تا زمانی که افراد کم و بیش آنها را به طور تصادفی انتخاب کنند به جای اینکه همه از 4200000001 شروع شوند.

جدای از این ملاحظات، ساختار شبکه‌های سازمانی کاملاً شبیه به ساختار اینترنت به‌عنوان یک کل است و شاید کمی بر امنیت BGP تأکید شود.

BGP در هسته مرکز داده

همه چیز در مرکز داده متفاوت است. در مراکز داده بزرگ، BGP سه نقش متمایز دارد. اول، “پشت‌بون” وجود دارد، شبکه فیزیکی که به بسته‌ها اجازه می‌دهد بین هر سرور در هر رک در مرکز داده به هر سرور دیگر در هر جای دیگر، و به فایروال‌ها و روترهایی که اتصال خارجی را مدیریت می‌کنند، حرکت کنند. دوم، اغلب یک “پوشش” وجود دارد که یک ساختار منطقی در بالای ساختار فیزیکی پد ایجاد می کند. و سوم، BGP می‌تواند توسط سرورهای فیزیکی برای مسیریابی بسته‌ها به و از ماشین‌های مجازی (VM) در حال اجرا بر روی آن سرورها استفاده شود.

تخمین زده می شود که به ازای هر کیلوبایت ترافیک خارجی (شمال-جنوب)، تا 930 کیلوبایت ترافیک داخلی (شرق-غرب) مرکز داده تولید می شود. این بدان معنی است که حجم ترافیکی که به یک مرکز داده بزرگ با هزاران سرور (فیزیکی) منتقل می شود، کاملاً عظیم است. توپولوژی های شبکه سلسله مراتبی مانند اینترنت نمی توانند این را پشتیبانی کنند، بنابراین مراکز داده معمولاً از توپولوژی ستون فقرات برگ استفاده می کنند، همانطور که در پست وبلاگ ما توضیح داده شده است. BGP در مراکز داده بزرگ.

ابزار BGPتوپولوژی شبکه 5 لایه Clos با خوشه ها

حتی بیشتر از شبکه های سازمانی، در هسته مرکز داده، BGP به عنوان یک پروتکل مسیریابی داخلی استفاده می شود. این بدان معناست که برای BGP مفید خواهد بود که بیشتر شبیه یک پروتکل مسیریابی داخلی رفتار کند و به‌طور خودکار روترهای همسایه را کشف کند، نه اینکه اتصالات بین همسایگان را به طور صریح پیکربندی کند. کار روی این موضوع در IETF چند سال پیش آغاز شد، همانطور که در پست وبلاگ ما بحث شد BGP LLDP Peer Discoveryاما تاکنون این اثر به عنوان RFC منتشر نشده است.

یکی دیگر از مشکلات استفاده در مقیاس بزرگ از BGP این است که برای شماره گذاری هر طرف هر پیوند BGP به مقدار قابل توجهی از فضای آدرس نیاز دارد. یک راه جالب در مورد این موضوع استفاده از “BGP unnumbered” است. استفاده از BGP بدون شماره با بسته FRRouting (چشمه ای از نرم افزار مسیریابی منبع باز Quagga) به خوبی در این فصل از کتاب در اوریلی

ایده این است که جلسات BGP را با آدرس پیوند محلی IPv6 روترهای همسایه تنظیم کنیم و سپس پیشوندهای IPv4 را روی آن جلسات BGP مبادله کنیم. IPv6 آدرس بعدی hop برای این پیشوندها استفاده می شود RFC 5549. در ابتدا این بی معنی به نظر می رسد: چگونه یک روتر می تواند بسته های IPv4 را به آدرس IPv6 ارسال کند؟ اما آدرس هاپ بعدی در واقع هیچ کاری را مستقیما انجام نمی دهد. عملکرد آدرس hop بعدی این است که یک ورودی ARP برای تعیین آدرس مک بعدی hop باشد. البته همین آدرس MAC را می توان از آدرس IPv6 next-hop با استفاده از IPv6 Neighbor Discovery بدست آورد. به این ترتیب روترهای BGP می توانند بسته ها را بدون نیاز به BGP برای استفاده از تعداد زیادی آدرس IPv4 به یکدیگر ارسال کنند.

BGP EVPN در همپوشانی مرکز داده

بسیاری از مستأجران مرکز داده نیازهای شبکه خود را دارند که فراتر از یک مدل مبتنی بر IP ساده است. بنابراین آنها یک شبکه همپوشانی را در بالای شبکه مرکز داده اصلی از طریق تونل سازی مستقر می کنند. اینها می توانند تونل های مبتنی بر IP با استفاده از پروتکلی مانند GRE یا لایه 2 که در بالای لایه 3 اجرا می شوند، اغلب به شکل VXLAN باشند.

VXLAN معمولاً در هایپروایزر یک سرور فیزیکی پیاده سازی می شود. به این ترتیب، ماشین‌های مجازی که بر روی سرورهای فیزیکی مشابه و متفاوتی اجرا می‌شوند، می‌توانند در صورت نیاز به شبکه متصل شوند – از جمله با شبکه‌های مجازی لایه 2، اجرای یک شبکه لایه 2 در بالای شبکه لایه 3، یک چالش منحصر به فرد را ارائه می‌کند: ترافیک BUM. BUM مخفف Broadcast، Unknown Unicast و Multicast است. اینها انواع ترافیکی هستند که سوئیچ معمولاً به همه پورت ها سرازیر می شود.

برای جلوگیری از این امر، VTEP (نقاط پایانی تونل VXLAN) / NVE (لبه‌های مجازی‌سازی شبکه) می‌توانند از BGP برای برقراری ارتباط از آدرس‌های IP و کدام آدرس‌های MAC استفاده کنند، همراه با سایر پارامترها، بنابراین نیاز به تخصیص ترافیک BUM تا حد زیادی اجتناب می‌شود. VTEP ها “سرکوب ARP” را پیاده سازی می کنند، که به آنها اجازه می دهد به صورت محلی به درخواست های ARP برای آدرس های راه دور پاسخ دهند، به طوری که پخش های ARP مجبور نباشند با تکرار آنها به همه VTEP های راه دور، سیل شوند.

RFC 7432 “BGP MPLS-based Ethernet VPN” را مشخص می کند و تا حد زیادی برای VXLAN استفاده مجدد می شود. در ابتدا BGP فقط برای مسیریابی IPv4 قابل استفاده بود پسوندهای چند پروتکلی (همچنین برای IPv6 BGP استفاده می شود) به BGP اجازه می دهد تا برای برقراری ارتباط اطلاعات EVPN بین VTEP ها استفاده شود. هر VTEP آدرس های MAC و IP را که می داند به BGP تزریق می کند، بنابراین تمام VTEP های دیگر. سپس VTEP های راه دور می توانند ترافیک را به این آدرس ها به آدرس بعدی پرش موجود در به روز رسانی BGP تونل کنند. برخلاف BGP زیربنایی، که معمولاً از eBGP استفاده می کند، اطلاعات EVPN از طریق iBGP منتقل می شود: همه VTEP/NVE ها بخشی از همان AS هستند. اگر تعداد زیادی از آنها وجود داشته باشد، به این معنی است که استفاده از بازتابنده مسیر برای جلوگیری از تعداد بیش از حد جلسات iBGP مفید است.

BGP و فرعی

علاوه بر لایه زیرین و پوشش، سطح سومی از مسیریابی وجود دارد که به طور فزاینده ای در مرکز داده مرتبط می شود: مسیریابی بین “طبقه” هاست های (مجازی). سیستم هایی مانند داکر اجازه می دهد تا برنامه ها در ظروف سبک وزن برای استقرار آسان قرار گیرند. کانتینر یک سیستم مستقل است که شامل نسخه های صحیح کتابخانه ها و سایر وابستگی ها است. برخلاف ماشین‌های مجازی، که هر کدام یک کپی جداگانه از کل سیستم عامل را در محیط مجازی خود اجرا می‌کنند، چندین کانتینر در کنار هم زیر یک نسخه از یک سیستم عامل اجرا می‌شوند. ظروف من میتوانم بسیاری از شبکه های خود را انجام می دهند، اما معمولاً فقط به عنوان یک سرویس در شماره پورت TCP یا UDP آدرس IP میزبان (مجازی) اجرا می شوند.

با این حال، این اشتراک‌گذاری آدرس IP میزبان، استقرار چندین نسخه از یک برنامه یا سرویس را ناخوشایند می‌کند، زیرا معمولاً انتظار دارند بتوانند از یک شماره پورت معروف استفاده کنند. کوبرنتیس این مشکل را با گروه بندی کانتینرها در زیر حل می کند. پادها نسبتا زودگذر هستند و ایده این است که چندین پاد را روی یک ماشین (مجازی) یکسان اجرا کنید. کانتینرها در یک پاد یک آدرس IP و فضای پورت TCP/UDP را به اشتراک می گذارند. در یک استقرار Kubernetes، همه پادها می توانند بدون استفاده از NAT با یکدیگر ارتباط برقرار کنند.

رابط(های) شبکه کف را می توان به رابط(های) شبکه میزبان لایه 2 پل زد و بنابراین مستقیماً به سرویس لایه 2 یا لایه 3 ارائه شده از شبکه همپوشانی متصل شد. با این حال، این مقیاس پذیرترین راه حل نیست. گزینه جایگزین این است که مسیر سیستم عامل میزبان بین رابط(های) شبکه و ماژول های در حال اجرا در آن میزبان باشد. در این شرایط معمولاً پادها با مقداری فضای آدرس IP از جمله etcd فراهم می‌شوند. برای اینکه سایر ماژول ها و سایر نقاط جهان به بسته دسترسی پیدا کنند، این آدرس ها باید در یک پروتکل مسیریابی ارائه شوند. در اینجا دوباره، BGP به دلیل انعطاف پذیری آن، مزیتی دارد، همانطور که در این پست وبلاگ Cloud Native Labs و این پست وبلاگ Flockport نشان داده شده است.


نتیجه

BGP بدون شک یکی از پیشرفته ترین پروتکل های مسیریابی IP است که امروزه در اینترنت استفاده می شود. پیچیدگی آن عمدتاً به دلیل تمرکز آن بر سیاست های مسیریابی است. این بیانیه کلی که BGP تنها زمانی استفاده می شود که نیاز به مسیریابی بین دو سیستم مستقل وجود داشته باشد، کاملا گمراه کننده است. سناریوهای متعددی وجود دارد که در آن فرد ممکن است استفاده از پروتکل را انتخاب کند یا حتی ممکن است به آن نیاز داشته باشد. BGP ابزار مناسب برای بسیاری از وظایف باقی می ماند!




Source link

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

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

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