اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

В شماره قبلی من چارچوب اتوماسیون شبکه را توضیح دادم. به گفته برخی افراد، حتی این رویکرد اول به مشکل قبلاً برخی از سؤالات را حل کرده است. و این من را بسیار خوشحال می کند، زیرا هدف ما در این چرخه پوشاندن Ansible با اسکریپت های پایتون نیست، بلکه ساختن یک سیستم است.

همین چارچوب ترتیبی را تعیین می کند که در آن به این سؤال رسیدگی خواهیم کرد.
و مجازی سازی شبکه، که این شماره به آن اختصاص داده شده است، به ویژه در مبحث ADSM، جایی که ما اتوماسیون را تجزیه و تحلیل می کنیم، نمی گنجد.

اما بیایید از زاویه دیگری به آن نگاه کنیم.

بسیاری از سرویس ها برای مدت طولانی از یک شبکه استفاده می کنند. در مورد اپراتور مخابراتی، برای مثال 2G، 3G، LTE، پهنای باند و B2B است. در مورد DC: اتصال برای کلاینت های مختلف، اینترنت، ذخیره سازی بلوک، ذخیره سازی اشیا.

و همه خدمات نیاز به انزوا از یکدیگر دارند. اینگونه بود که شبکه های همپوشانی ظاهر شدند.

و همه سرویس ها نمی خواهند منتظر بمانند تا شخصی آنها را به صورت دستی پیکربندی کند. اینگونه بود که ارکستراتورها و SDN ظاهر شدند.

اولین رویکرد برای اتوماسیون سیستماتیک شبکه، یا بهتر بگوییم بخشی از آن، مدت‌هاست که در بسیاری از مکان‌ها اتخاذ و اجرا شده است: VMWare، OpenStack، Google Compute Cloud، AWS، Facebook.

این چیزی است که امروز با آن سروکار خواهیم داشت.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

مقدار

  • علل
  • اصطلاحات
  • زیرانداز - شبکه فیزیکی
  • پوشش - شبکه مجازی
    • همپوشانی با ToR
    • پوشش از میزبان
    • استفاده از پارچه تنگستن به عنوان مثال
      • ارتباط در یک ماشین فیزیکی واحد
      • ارتباط بین ماشین های مجازی واقع در ماشین های فیزیکی مختلف
      • خروج به دنیای بیرون

  • پاسخ به برخی سوالات مهم
  • نتیجه
  • لینک های مفید

علل

و از آنجایی که ما در مورد این صحبت می کنیم، لازم است به پیش نیازهای مجازی سازی شبکه اشاره کنیم. در واقع این روند از دیروز آغاز نشد.

احتمالاً بیش از یک بار شنیده اید که شبکه همیشه بی اثرترین بخش هر سیستمی بوده است. و این به تمام معنا درست است. شبکه مبنایی است که همه چیز بر آن استوار است و ایجاد تغییرات در آن بسیار دشوار است - سرویس ها در صورت قطع شدن شبکه آن را تحمل نمی کنند. اغلب، از کار انداختن یک گره می تواند بخش بزرگی از برنامه ها را از بین ببرد و بر بسیاری از مشتریان تأثیر بگذارد. تا حدی به همین دلیل است که تیم شبکه ممکن است در برابر هر تغییری مقاومت کند - زیرا اکنون به نوعی کار می کند (ما حتی ممکن است ندانیم چگونه، اما در اینجا شما باید چیز جدیدی را پیکربندی کنید و مشخص نیست که چگونه بر شبکه تأثیر می گذارد.

برای اینکه منتظر نمانند تا شبکه‌ها VLAN را وارد کنند و هیچ سرویسی را در هر گره شبکه ثبت نکنند، مردم به فکر استفاده از همپوشانی - شبکه‌های همپوشانی - افتادند که تنوع زیادی از آنها وجود دارد: GRE، IPinIP، MPLS، MPLS L2/L3VPN، VXLAN، GENEVE، MPLSoverUDP، MPLSoverGRE و غیره.

جذابیت آنها در دو چیز ساده نهفته است:

  • فقط گره‌های انتهایی پیکربندی شده‌اند—گره‌های ترانزیت نیازی به لمس ندارند. این به طور قابل توجهی روند را سرعت می بخشد و گاهی اوقات به شما امکان می دهد بخش زیرساخت شبکه را به طور کامل از روند معرفی خدمات جدید حذف کنید.
  • بار در اعماق هدرها پنهان است - گره های ترانزیت نیازی به دانستن چیزی در مورد آن، آدرس دهی هاست ها یا مسیرهای شبکه همپوشانی ندارند. این به این معنی است که شما باید اطلاعات کمتری را در جداول ذخیره کنید، که به معنای استفاده از دستگاه ساده‌تر/ارزان‌تر است.

در این موضوع نه کاملاً کامل، من قصد ندارم تمام فناوری‌های ممکن را تجزیه و تحلیل کنم، بلکه چارچوبی را برای عملکرد شبکه‌های همپوشانی در DCها شرح دهم.

کل مجموعه یک مرکز داده را توصیف می کند که از ردیف هایی از رک های یکسان تشکیل شده است که تجهیزات سرور یکسانی در آن نصب شده است.

این تجهیزات ماشین های مجازی / کانتینر / بدون سرور را اجرا می کند که خدمات را پیاده سازی می کند.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

اصطلاحات

در یک چرخه سرور من برنامه ای را نام می برم که سمت سرور ارتباط کلاینت و سرور را پیاده سازی می کند.

ماشین های فیزیکی در رک ها سرور نامیده می شوند هیچ ما خواهیم کرد.

ماشین فیزیکی - رایانه x86 در یک رک نصب شده است. پرکاربردترین اصطلاح میزبان. این چیزی است که ما آن را "ماشین" یا میزبان.

هایپروایزر - برنامه ای که بر روی یک ماشین فیزیکی اجرا می شود که منابع فیزیکی را که ماشین های مجازی روی آنها اجرا می شوند شبیه سازی می کند. گاهی اوقات در ادبیات و اینترنت از کلمه “hypervisor” به عنوان مترادف “host” استفاده می شود.

ماشین مجازی - یک سیستم عامل در حال اجرا بر روی یک ماشین فیزیکی در بالای یک Hypervisor. برای ما در این چرخه، واقعاً مهم نیست که واقعاً یک ماشین مجازی باشد یا فقط یک ظرف. بیا اسمش را بگذاریم"VM«

مستاجر مفهوم گسترده ای است که در این مقاله به عنوان یک سرویس جداگانه یا یک مشتری جداگانه تعریف می کنم.

چند اجاره ای یا چند اجاره - استفاده از یک برنامه توسط مشتریان/خدمات مختلف. در عین حال، جداسازی کلاینت‌ها از یکدیگر به لطف معماری برنامه به دست می‌آید و نه از طریق نمونه‌های در حال اجرا جداگانه.

ToR - بالای سوئیچ Rack - سوئیچ نصب شده در قفسه ای که تمام ماشین های فیزیکی به آن متصل هستند.

علاوه بر توپولوژی ToR، ارائه دهندگان مختلف End of Row (EoR) یا Middle of Row را تمرین می کنند (اگرچه مورد دوم نادر است و من مخفف MoR را ندیده ام).

شبکه زیرانداز یا شبکه زیربنایی یا زیرساخت زیرساخت فیزیکی شبکه است: سوئیچ ها، روترها، کابل ها.

شبکه همپوشانی یا همپوشانی شبکه یا همپوشانی - یک شبکه مجازی از تونل‌هایی که در بالای تونل فیزیکی اجرا می‌شوند.

پارچه L3 یا پارچه IP - اختراع شگفت انگیز بشر که به شما امکان می دهد از تکرار STP و یادگیری TRILL برای مصاحبه اجتناب کنید. مفهومی که در آن کل شبکه تا سطح دسترسی منحصراً L3 است، بدون VLAN و بر این اساس، دامنه های پخش گسترده گسترده. در قسمت بعدی به این خواهیم پرداخت که کلمه "کارخانه" از کجا آمده است.

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

NFV - مجازی‌سازی عملکرد شبکه - مجازی‌سازی دستگاه‌های شبکه، که نشان می‌دهد برخی از عملکردهای شبکه را می‌توان در قالب ماشین‌های مجازی یا کانتینرها اجرا کرد تا اجرای سرویس‌های جدید را سرعت بخشد، زنجیره خدمات را سازمان‌دهی کند و مقیاس‌پذیری افقی ساده‌تر.

VNF - عملکرد شبکه مجازی دستگاه مجازی خاص: روتر، سوئیچ، فایروال، NAT، IPS/IDS و غیره.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

من اکنون عمداً شرح را برای اجرای خاصی ساده می کنم تا خواننده را بیش از حد سردرگم نکنم. برای مطالعه دقیق تر، او را به بخش ارجاع می دهم مراجع. علاوه بر این، Roma Gorge، که این مقاله را به دلیل عدم دقت مورد انتقاد قرار می دهد، قول می دهد که یک شماره جداگانه در مورد فناوری های مجازی سازی سرور و شبکه، عمیق تر و با دقت بیشتر به جزئیات بنویسد.

اکثر شبکه های امروزی به وضوح به دو بخش تقسیم می شوند:

زیرانداز - یک شبکه فیزیکی با پیکربندی پایدار.
پوشش - انتزاع روی Underlay برای جداسازی مستاجرین.

این هم در مورد DC (که در این مقاله آن را تجزیه و تحلیل خواهیم کرد) و هم برای ISP (که ما آن را تجزیه و تحلیل نمی کنیم، درست است، زیرا قبلاً انجام شده است. SDSM). البته در مورد شبکه های سازمانی، وضعیت تا حدودی متفاوت است.

تصویر با تمرکز روی شبکه:

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

زیرانداز

Underlay یک شبکه فیزیکی است: سوئیچ ها و کابل های سخت افزاری. دستگاه های زیرزمینی می دانند چگونه به ماشین های فیزیکی برسند.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

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

اما شخصی مانند گوگل می تواند سوئیچ های خود را توسعه دهد و پروتکل های پذیرفته شده را کنار بگذارد. اما LAN_DC گوگل نیست.

Underlay نسبتاً به ندرت تغییر می کند زیرا وظیفه آن اتصال IP اولیه بین ماشین های فیزیکی است. Underlay چیزی در مورد خدمات، مشتریان یا مستاجرانی که در بالای آن کار می کنند نمی داند - فقط باید بسته را از یک دستگاه به دستگاه دیگر تحویل دهد.
زیرانداز می تواند اینگونه باشد:

  • IPv4+OSPF
  • IPv6+ISIS+BGP+L3VPN
  • L2 + TRILL
  • L2 + STP

شبکه Underlay به روش کلاسیک پیکربندی شده است: CLI/GUI/NETCONF.

دستی، اسکریپت ها، ابزارهای اختصاصی.

مقاله بعدی این مجموعه با جزئیات بیشتری به زیرسازی اختصاص داده خواهد شد.

پوشش

Overlay یک شبکه مجازی از تونل‌هایی است که در بالای Underlay کشیده شده‌اند و به ماشین‌های مجازی یک کلاینت اجازه می‌دهد تا با یکدیگر ارتباط برقرار کنند، در حالی که از سایر کلاینت‌ها جدا می‌شوند.

داده های مشتری در برخی از سربرگ های تونل برای انتقال از طریق شبکه عمومی کپسوله می شوند.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

بنابراین ماشین های مجازی یک کلاینت (یک سرویس) می توانند از طریق Overlay با یکدیگر ارتباط برقرار کنند، حتی بدون اینکه بدانند بسته واقعاً چه مسیری را طی می کند.

برای مثال، پوشش می تواند مانند آنچه در بالا ذکر کردم باشد:

  • تونل GRE
  • VXLAN
  • EVPN
  • L3VPN
  • GENEVE

یک شبکه همپوشانی معمولاً از طریق یک کنترل کننده مرکزی پیکربندی و نگهداری می شود. از آن، پیکربندی، Control Plane و Data Plane به دستگاه هایی که ترافیک مشتری را مسیریابی و محصور می کنند، تحویل داده می شود. کمی در زیر بیایید با مثال هایی به این موضوع نگاه کنیم.

بله، این SDN در خالص ترین شکل آن است.

دو رویکرد اساسی برای سازماندهی یک شبکه Overlay وجود دارد:

  1. همپوشانی با ToR
  2. پوشش از میزبان

همپوشانی با ToR

روکش می تواند از سوئیچ دسترسی (ToR) که در قفسه ایستاده است شروع شود، به عنوان مثال، در مورد پارچه VXLAN.

این یک مکانیسم آزمایش شده با زمان در شبکه های ISP است و همه فروشندگان تجهیزات شبکه از آن پشتیبانی می کنند.

با این حال، در این حالت، سوئیچ ToR باید به ترتیب بتواند سرویس های مختلف را از هم جدا کند و مدیر شبکه باید تا حدی با مدیران ماشین مجازی همکاری کند و تغییراتی (هر چند به صورت خودکار) در پیکربندی دستگاه ها ایجاد کند. .

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

در اینجا خواننده را به مقاله ای در مورد آن ارجاع می دهم VxLAN در Habré دوست قدیمی ما @bormoglotx.
در این ارائه با ENOG رویکردهای ساخت شبکه DC با پارچه EVPN VXLAN به تفصیل شرح داده شده است.

و برای غوطه وری کامل تر در واقعیت، می توانید کتاب Tsiska را بخوانید یک پارچه مدرن، باز و مقیاس پذیر: VXLAN EVPN.

توجه داشته باشم که VXLAN تنها یک روش کپسوله‌سازی است و خاتمه تونل‌ها می‌تواند نه در ToR، بلکه در میزبان رخ دهد، همانطور که برای مثال در مورد OpenStack اتفاق می‌افتد.

با این حال، فابریک VXLAN، جایی که همپوشانی از ToR شروع می‌شود، یکی از طرح‌های شبکه همپوشانی ثابت است.

پوشش از میزبان

روش دیگر شروع و خاتمه تونل ها در میزبان پایانی است.
در این حالت شبکه (Underlay) تا حد امکان ساده و ثابت می ماند.
و خود میزبان تمام کپسولاسیون لازم را انجام می دهد.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

البته این کار مستلزم اجرای یک برنامه خاص بر روی هاست است، اما ارزشش را دارد.

اولاً، اجرای یک کلاینت بر روی یک ماشین لینوکس آسان تر یا، فرض کنید، حتی ممکن است، در حالی که در یک سوئیچ به احتمال زیاد باید به راه حل های اختصاصی SDN روی بیاورید، که ایده چند فروشنده را از بین می برد.

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

در سری ADSM، من رویکرد همپوشانی را از میزبان انتخاب می کنم - سپس فقط در مورد آن صحبت می کنیم و به کارخانه VXLAN برنمی گردیم.

ساده ترین کار این است که به نمونه ها نگاه کنید. و به عنوان یک موضوع آزمایشی، ما از پلتفرم OpenSource SDN OpenContrail استفاده می کنیم که اکنون به عنوان شناخته شده است پارچه تنگستن.

در پایان مقاله نظراتی در مورد قیاس با OpenFlow و OpenvSwitch خواهم داد.

استفاده از پارچه تنگستن به عنوان مثال

هر ماشین فیزیکی دارد vRouter - یک روتر مجازی که از شبکه های متصل به آن و اینکه به کدام کلاینت ها تعلق دارند می داند - اساساً یک روتر PE. برای هر مشتری، یک جدول مسیریابی ایزوله (بخوانید VRF) را حفظ می کند. و vRouter در واقع تونل سازی Overlay را انجام می دهد.

کمی بیشتر در مورد vRouter در انتهای مقاله آمده است.

هر ماشین مجازی واقع در هایپروایزر از طریق به vRouter این دستگاه متصل می شود رابط TAP.

شیر - نقطه دسترسی ترمینال - یک رابط مجازی در هسته لینوکس که امکان تعامل با شبکه را فراهم می کند.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

اگر چندین شبکه پشت vRouter وجود داشته باشد، برای هر یک از آنها یک رابط مجازی ایجاد می شود که یک آدرس IP به آن اختصاص داده می شود - این آدرس دروازه پیش فرض خواهد بود.
تمام شبکه های یک کلاینت در یک قرار می گیرند VRF (یک جدول)، موارد مختلف - به انواع مختلف.
من در اینجا سلب مسئولیت می کنم که همه چیز به این سادگی نیست و خواننده کنجکاو را تا پایان مقاله می فرستم.

به طوری که vRouter ها می توانند با یکدیگر ارتباط برقرار کنند و بر این اساس ماشین های مجازی واقع در پشت آنها، اطلاعات مسیریابی را از طریق رد و بدل می کنند. کنترلر SDN.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

برای ورود به دنیای خارج، یک نقطه خروج از ماتریس وجود دارد - یک دروازه شبکه مجازی VNGW - دروازه شبکه مجازی (دوره من).

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

حالا بیایید به نمونه هایی از ارتباطات نگاه کنیم - و وضوح وجود خواهد داشت.

ارتباط در یک ماشین فیزیکی واحد

VM0 می خواهد یک بسته به VM2 ارسال کند. بیایید فعلاً فرض کنیم که این یک VM تک مشتری است.

صفحه داده

  1. VM-0 یک مسیر پیش فرض برای رابط eth0 خود دارد. بسته به آنجا ارسال می شود.
    این رابط eth0 در واقع از طریق واسط tap0 به صورت مجازی به vRouter روتر مجازی متصل می شود.
  2. vRouter تجزیه و تحلیل می کند که بسته به کدام رابط آمده است، یعنی به کدام کلاینت (VRF) تعلق دارد، و آدرس گیرنده را با جدول مسیریابی این مشتری بررسی می کند.
  3. vRouter پس از تشخیص اینکه گیرنده در یک دستگاه روی یک پورت متفاوت است، بسته را بدون هیچ عنوان اضافی به آن ارسال می کند - برای این مورد، vRouter قبلا یک رکورد ARP دارد.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

در این مورد، بسته وارد شبکه فیزیکی نمی شود - در داخل vRouter هدایت می شود.

کنترل هواپیما

هنگامی که ماشین مجازی راه اندازی می شود، هایپروایزر به آن می گوید:

  • آدرس IP خودش.
  • مسیر پیش فرض از طریق آدرس IP vRouter در این شبکه است.

Hypervisor از طریق یک API ویژه به vRouter گزارش می دهد:

  • آنچه برای ایجاد یک رابط مجازی نیاز دارید.
  • چه نوع شبکه مجازی (VM) برای ایجاد نیاز دارد؟
  • به کدام VRF (VN) متصل شود.
  • یک ورودی ARP ایستا برای این ماشین مجازی - آدرس IP آن روی چه رابطی قرار دارد و به چه آدرس MAC متصل است.

دوباره، روش تعامل واقعی به خاطر درک مفهوم ساده شده است.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

بنابراین، vRouter تمام ماشین‌های مجازی یک کلاینت را در یک ماشین خاص به‌عنوان شبکه‌های متصل مستقیم می‌بیند و خود می‌تواند بین آنها مسیریابی کند.

اما VM0 و VM1 متعلق به کلاینت های مختلف هستند و بر این اساس در جداول vRouter مختلف قرار دارند.

اینکه آیا آنها می توانند مستقیماً با یکدیگر ارتباط برقرار کنند به تنظیمات vRouter و طراحی شبکه بستگی دارد.
برای مثال، اگر ماشین‌های مجازی هر دو کلاینت از آدرس‌های عمومی استفاده کنند یا NAT روی خود vRouter رخ دهد، می‌توان مسیریابی مستقیم به vRouter را انجام داد.

در موقعیت مخالف، امکان عبور از فضاهای آدرس وجود دارد - برای دریافت یک آدرس عمومی باید از سرور NAT عبور کنید - این شبیه به دسترسی به شبکه های خارجی است که در زیر مورد بحث قرار می گیرد.

ارتباط بین ماشین های مجازی واقع در ماشین های فیزیکی مختلف

صفحه داده

  1. شروع دقیقاً مشابه است: VM-0 بسته ای را با مقصد VM-7 (172.17.3.2) در حالت پیش فرض ارسال می کند.
  2. vRouter آن را دریافت می کند و این بار می بیند که مقصد روی دستگاه دیگری است و از طریق Tunnel0 قابل دسترسی است.
  3. اول، یک برچسب MPLS برای شناسایی رابط راه دور آویزان می کند، به طوری که در سمت عقب vRouter می تواند تعیین کند که این بسته را بدون جستجوی اضافی کجا قرار دهد.

    اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

  4. Tunnel0 دارای منبع 10.0.0.2، مقصد: 10.0.1.2 است.
    vRouter هدرهای GRE (یا UDP) و یک IP جدید را به بسته اصلی اضافه می کند.
  5. جدول مسیریابی vRouter یک مسیر پیش فرض از طریق آدرس ToR1 10.0.0.1 دارد. آنجاست که می فرستد.

    اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

  6. ToR1 به عنوان عضوی از شبکه Underlay، می داند (مثلاً از طریق OSPF) چگونه به 10.0.1.2 برسد و بسته را در طول مسیر ارسال می کند. توجه داشته باشید که ECMP در اینجا فعال است. دو بعدی بعدی در تصویر وجود دارد و رشته های مختلف بر اساس هش در آنها طبقه بندی می شوند. در مورد یک کارخانه واقعی، احتمال بیشتری وجود دارد که 4 nexthop وجود داشته باشد.

    در عین حال، او نیازی به دانستن آنچه در زیر هدر IP خارجی است، ندارد. یعنی در واقع، تحت IP می‌تواند یک ساندویچ IPv6 از MPLS از طریق اترنت در مقابل MPLS بر GRE بیش از یونانی وجود داشته باشد.

  7. بر این اساس، در سمت دریافت کننده، vRouter GRE را حذف می کند و با استفاده از تگ MPLS، متوجه می شود که این بسته باید به کدام رابط ارسال شود، آن را جدا می کند و به شکل اصلی برای گیرنده می فرستد.

کنترل هواپیما

هنگامی که ماشین را روشن می کنید، همان چیزی که در بالا توضیح داده شد اتفاق می افتد.

و به علاوه موارد زیر:

  • برای هر کلاینت، vRouter یک تگ MPLS را اختصاص می دهد. این برچسب سرویس L3VPN است که توسط آن مشتریان در یک ماشین فیزیکی از هم جدا می شوند.

    در واقع، تگ MPLS همیشه بدون قید و شرط توسط vRouter اختصاص داده می شود - از قبل، از قبل مشخص نیست که ماشین فقط با ماشین های دیگر پشت همان vRouter تعامل داشته باشد و این به احتمال زیاد حتی درست نیست.

  • vRouter با استفاده از پروتکل BGP (یا مشابه آن - در مورد TF، XMPP 0_o) با کنترلر SDN ارتباط برقرار می کند.
  • از طریق این جلسه، vRouter مسیرهای شبکه های متصل را به کنترلر SDN گزارش می دهد:
    • آدرس شبکه
    • روش کپسولاسیون (MPLSoGRE، MPLSoUDP، VXLAN)
    • برچسب مشتری MPLS
    • آدرس IP شما به عنوان nexthop

  • کنترلر SDN چنین مسیرهایی را از تمام vRouterهای متصل دریافت می کند و آنها را به دیگران منعکس می کند. یعنی به عنوان Route Reflector عمل می کند.

در جهت مخالف هم همین اتفاق می افتد.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

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

کنترل‌کننده مرکزی تمام پیچیدگی‌های حفظ پیکربندی و نظارت بر جداول سوئیچینگ/مسیریابی روی vRouter را بر عهده می‌گیرد.

به طور کلی، کنترلر از طریق BGP (یا یک پروتکل مشابه) با همه vRouter ها ارتباط برقرار می کند و به سادگی اطلاعات مسیریابی را منتقل می کند. به عنوان مثال، BGP از قبل دارای Address-Family برای انتقال روش کپسوله سازی است MPLS-in-GRE یا MPLS-in-UDP.

در عین حال ، پیکربندی شبکه Underlay به هیچ وجه تغییر نمی کند ، که اتفاقاً خودکار کردن آن بسیار دشوارتر است و با یک حرکت ناخوشایند شکستن آن آسان تر است.

خروج به دنیای بیرون

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

دو رویکرد تمرین می شود:

  1. یک روتر سخت افزاری نصب شده است.
  2. دستگاهی راه اندازی شد که عملکردهای یک روتر را پیاده سازی می کند (بله، پس از SDN، ما نیز با VNF مواجه شدیم). بیایید آن را یک دروازه مجازی بنامیم.

مزیت روش دوم مقیاس پذیری افقی ارزان است - قدرت کافی وجود ندارد - ما ماشین مجازی دیگری را با یک دروازه راه اندازی کردیم. در هر ماشین فیزیکی، بدون اینکه به دنبال قفسه‌ها، واحدها، خروجی برق رایگان باشید، خود سخت‌افزار را بخرید، حمل کنید، نصب کنید، آن را تغییر دهید، پیکربندی کنید و سپس اجزای معیوب را در آن تغییر دهید.

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

با یک پا، دروازه مانند یک ماشین مجازی معمولی به شبکه مجازی Overlay نگاه می کند و می تواند با تمام ماشین های مجازی دیگر تعامل داشته باشد. در عین حال، می تواند شبکه های همه مشتریان را خاتمه دهد و بر این اساس، مسیریابی بین آنها را انجام دهد.

دروازه با پای دیگر خود به شبکه ستون فقرات نگاه می کند و می داند چگونه وارد اینترنت شود.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

صفحه داده

یعنی روند به این صورت است:

  1. VM-0 با پیش‌فرض روی همان vRouter، بسته‌ای را با مقصدی در دنیای بیرون (185.147.83.177) به رابط eth0 ارسال می‌کند.
  2. vRouter این بسته را دریافت می کند و آدرس مقصد را در جدول مسیریابی جستجو می کند - مسیر پیش فرض را از طریق دروازه VNGW1 از طریق تونل 1 پیدا می کند.
    او همچنین می بیند که این یک تونل GRE با SIP 10.0.0.2 و DIP 10.0.255.2 است و همچنین باید ابتدا برچسب MPLS این کلاینت را که VNGW1 انتظار دارد وصل کند.
  3. vRouter بسته اولیه را با MPLS، GRE و هدر IP جدید بسته بندی می کند و به طور پیش فرض به ToR1 10.0.0.1 ارسال می کند.
  4. شبکه زیربنایی بسته را به دروازه VNGW1 تحویل می دهد.
  5. دروازه VNGW1 سرصفحه های تونل زنی GRE و MPLS را حذف می کند، آدرس مقصد را می بیند، با جدول مسیریابی خود مشورت می کند و متوجه می شود که به اینترنت هدایت می شود - یعنی از طریق Full View یا Default. در صورت لزوم، ترجمه NAT را انجام می دهد.
  6. ممکن است یک شبکه IP معمولی از VNGW تا مرز وجود داشته باشد که بعید است.
    ممکن است یک شبکه MPLS کلاسیک (IGP+LDP/RSVP TE)، ممکن است یک پارچه پشتی با BGP LU یا یک تونل GRE از VNGW به مرز از طریق یک شبکه IP وجود داشته باشد.
    در هر صورت، VNGW1 کپسوله سازی های لازم را انجام می دهد و بسته اولیه را به سمت مرز ارسال می کند.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

ترافیک در جهت مخالف از همان مراحل به ترتیب مخالف می گذرد.

  1. مرز بسته را به VNGW1 می‌اندازد
  2. لباس او را در می آورد، به آدرس گیرنده نگاه می کند و می بیند که از طریق تونل Tunnel1 (MPLSoGRE یا MPLSoUDP) قابل دسترسی است.
  3. بر این اساس، یک برچسب MPLS، یک هدر GRE/UDP و یک IP جدید را متصل کرده و به ToR3 10.0.255.1 خود ارسال می کند.
    آدرس مقصد تونل آدرس IP vRouter است که ماشین مجازی هدف در پشت آن قرار دارد - 10.0.0.2.
  4. شبکه زیربنایی بسته را به vRouter مورد نظر تحویل می دهد.
  5. vRouter هدف GRE/UDP را می خواند، رابط را با استفاده از برچسب MPLS شناسایی می کند و یک بسته IP خالی را به رابط TAP خود مرتبط با eth0 VM می فرستد.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

کنترل هواپیما

VNGW1 یک محله BGP با یک کنترلر SDN ایجاد می کند، که از آن تمام اطلاعات مسیریابی در مورد کلاینت ها را دریافت می کند: کدام آدرس IP (vRouter) در پشت کدام مشتری قرار دارد، و با کدام برچسب MPLS شناسایی می شود.

به طور مشابه، او خود کنترل کننده SDN را از مسیر پیش فرض با برچسب این کلاینت مطلع می کند و خود را به عنوان nexthop نشان می دهد. و سپس این پیش فرض به vRouters می رسد.

در VNGW، تجمع مسیر یا ترجمه NAT معمولاً اتفاق می‌افتد.

و در جهت دیگر دقیقاً این مسیر تجمیع شده را به جلسه با مرزها یا Route Reflectors ارسال می کند. و از آنها مسیر پیش فرض یا Full-View یا چیز دیگری را دریافت می کند.

از نظر کپسوله سازی و تبادل ترافیک، VNGW هیچ تفاوتی با vRouter ندارد.
اگر دامنه را کمی گسترش دهید، می توانید سایر دستگاه های شبکه مانند فایروال ها، تمیز کردن ترافیک یا مزارع غنی سازی، IPS و غیره را به VNGW ها و vRouter ها اضافه کنید.

و با کمک ایجاد متوالی VRF ها و اعلام صحیح مسیرها، می توانید ترافیک را به شکلی که می خواهید لوپ کنید که به آن Service Chaining می گویند.

یعنی در اینجا نیز کنترلر SDN به عنوان یک Route-Reflector بین VNGW ها، vRouter ها و سایر دستگاه های شبکه عمل می کند.

اما در واقع، کنترل کننده همچنین اطلاعات مربوط به ACL و PBR (مسیریابی مبتنی بر سیاست) را به بیرون درز می‌کند و باعث می‌شود جریان‌های ترافیک فردی متفاوت از آنچه مسیر به آنها می‌گوید حرکت کند.

اتوماسیون برای کوچولوها قسمت اول (که بعد از صفر است). مجازی سازی شبکه

پاسخ به برخی سوالات مهم

چرا همیشه تذکر GRE/UDP را بیان می کنید؟

خوب، به طور کلی، می توان گفت که این مربوط به پارچه تنگستن است - اصلاً لازم نیست آن را در نظر بگیرید.

اما اگر آن را در نظر بگیریم، خود TF، در حالی که هنوز OpenContrail است، از هر دو کپسولاسیون پشتیبانی می کند: MPLS در GRE و MPLS در UDP.

UDP خوب است زیرا در پورت منبع رمزگذاری یک تابع هش از IP + Proto + Port اصلی در هدر آن بسیار آسان است، که به شما امکان می دهد تعادل را انجام دهید.

در مورد GRE، متأسفانه، فقط IP خارجی و هدرهای GRE وجود دارند که برای همه ترافیک کپسوله شده یکسان هستند و صحبتی در مورد تعادل وجود ندارد - افراد کمی می توانند تا این حد عمیق داخل بسته نگاه کنند.

تا مدتی، روترها، اگر می دانستند چگونه از تونل های پویا استفاده کنند، این کار را فقط در MPLSoGRE انجام می دادند و اخیراً استفاده از MPLSoUDP را یاد گرفتند. بنابراین، ما همیشه باید در مورد امکان دو کپسولاسیون متفاوت یادداشت کنیم.

در انصاف، شایان ذکر است که TF به طور کامل از اتصال L2 با استفاده از VXLAN پشتیبانی می کند.

شما قول داده بودید که با OpenFlow تشابهاتی را ترسیم کنید.
آنها واقعاً درخواست می کنند. vSwitch در همان OpenStack کارهای بسیار مشابهی را با استفاده از VXLAN انجام می دهد که اتفاقاً یک هدر UDP نیز دارد.

در صفحه داده آنها تقریباً یکسان کار می کنند؛ صفحه کنترل به طور قابل توجهی متفاوت است. Fabric تنگستن از XMPP برای ارائه اطلاعات مسیریابی به vRouter استفاده می کند، در حالی که OpenStack Openflow را اجرا می کند.

می توانید کمی بیشتر در مورد vRouter به من بگویید؟
این به دو بخش تقسیم می شود: vRouter Agent و vRouter Forwarder.

اولین مورد در فضای کاربر سیستم عامل میزبان اجرا می شود و با کنترل کننده SDN ارتباط برقرار می کند و اطلاعاتی در مورد مسیرها، VRF ها و ACL ها تبادل می کند.

دومی Data Plane را پیاده سازی می کند - معمولاً در Kernel Space، اما می تواند روی SmartNIC ها نیز اجرا شود - کارت های شبکه با یک CPU و یک تراشه سوئیچینگ قابل برنامه ریزی جداگانه، که به شما امکان می دهد بار را از CPU ماشین میزبان بردارید و شبکه را سریعتر و بیشتر کنید. قابل پیش بینی.

سناریوی احتمالی دیگر این است که vRouter یک برنامه DPDK در فضای کاربر است.

vRouter Agent تنظیمات را به vRouter Forwarder ارسال می کند.

شبکه مجازی چیست؟
در ابتدای مقاله در مورد VRF اشاره کردم که هر مستاجر به VRF خودش گره خورده است. و اگر این برای درک سطحی عملکرد شبکه همپوشانی کافی بود، در تکرار بعدی لازم است توضیحاتی ارائه شود.

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

بنابراین، به این ترتیب، هیچ گونه مکاتبه مستقیمی بین شبکه مجازی و مستاجر وجود ندارد.

نتیجه

این یک توصیف بسیار سطحی از عملکرد یک شبکه مجازی با یک پوشش از میزبان و یک کنترلر SDN است. اما مهم نیست که امروز چه پلتفرم مجازی سازی را انتخاب می کنید، به روشی مشابه کار می کند، خواه VMWare، ACI، OpenStack، CloudStack، Tungsten Fabric یا Juniper Contrail. آنها در انواع کپسوله‌سازی‌ها و هدرها، پروتکل‌های ارائه اطلاعات به دستگاه‌های شبکه پایانی متفاوت خواهند بود، اما اصل یک شبکه همپوشانی قابل تنظیم توسط نرم‌افزار که در بالای یک شبکه زیر لایه نسبتاً ساده و ایستا کار می‌کند، یکسان باقی می‌ماند.
می توان گفت که امروزه SDN مبتنی بر یک شبکه همپوشانی برنده زمینه ایجاد یک ابر خصوصی شده است. با این حال، این بدان معنا نیست که Openflow در دنیای مدرن جایی ندارد - در OpenStacke و در همان VMWare NSX استفاده می شود، تا آنجا که من می دانم، گوگل از آن برای راه اندازی شبکه زیرزمینی استفاده می کند.

اگر می‌خواهید موضوع را عمیق‌تر مطالعه کنید، در زیر پیوندهایی به مطالب دقیق‌تر ارائه کرده‌ام.

و در مورد زیرانداز ما چطور؟

اما در کل هیچی. او تمام راه را تغییر نداد. تنها کاری که او باید در مورد همپوشانی از هاست انجام دهد، به‌روزرسانی مسیرها و ARP‌ها به‌عنوان ظاهر شدن و ناپدید شدن vRouter/VNGW و حمل بسته‌ها بین آنهاست.

بیایید فهرستی از الزامات شبکه Underlay را فرموله کنیم.

  1. بتوانیم از نوعی پروتکل مسیریابی، در شرایط ما - BGP استفاده کنیم.
  2. پهنای باند وسیعی داشته باشید، ترجیحاً بدون اشتراک بیش از حد، تا بسته ها به دلیل بارگذاری بیش از حد گم نشوند.
  3. پشتیبانی از ECMP بخشی جدایی ناپذیر از پارچه است.
  4. قادر به ارائه QoS، از جمله موارد پیچیده مانند ECN باشید.
  5. حمایت از NETCONF پایه ای برای آینده است.

من در اینجا زمان بسیار کمی را به کار خود شبکه Underlay اختصاص دادم. این به این دلیل است که بعداً در سری روی آن تمرکز خواهم کرد و فقط به صورت گذراً روی Overlay لمس خواهیم کرد.

بدیهی است که من با استفاده از یک نمونه از شبکه DC ساخته شده در کارخانه Cloz با مسیریابی IP خالص و یک پوشش از میزبان، همه ما را به شدت محدود می کنم.

با این حال، من مطمئن هستم که هر شبکه ای که دارای طراحی باشد را می توان به صورت رسمی و خودکار توصیف کرد. فقط هدف من در اینجا درک رویکردهای اتوماسیون است و نه اینکه همه را با حل مشکل به شکلی کلی گیج کنم.

به عنوان بخشی از ADSM، رومن گرج و من قصد داریم یک شماره جداگانه در مورد مجازی سازی قدرت محاسباتی و تعامل آن با مجازی سازی شبکه منتشر کنیم. در تماس باش.

لینک های مفید

متشکرم

  • رومن گرگا - میزبان سابق پادکست linkmeup و اکنون متخصص در زمینه پلتفرم های ابری. برای نظرات و ویرایش ها خوب، ما منتظر مقاله عمیق تر او در مورد مجازی سازی در آینده نزدیک هستیم.
  • الکساندر شالیموف - همکار و کارشناس من در زمینه توسعه شبکه های مجازی. برای نظرات و ویرایش ها
  • والنتین سینیتسین - همکار و کارشناس من در زمینه پارچه تنگستن. برای نظرات و ویرایش.
  • آرتیوم چرنوبای - پیوند تصویرگر. برای KDPV.
  • الکساندر لیمونوف. برای میم "خودکار".

منبع: www.habr.com

اضافه کردن نظر