SR-IOV چیست و چگونه می تواند بر روی یک سرور مجازی قرار گیرد؟
SR-IOV چیست و چگونه می تواند بر روی یک سرور مجازی قرار گیرد؟

SR-IOV اجازه می دهد تا یک منبع I/O بین چندین دستگاه مجازی به اشتراک گذاشته شود. SR-IOV مخفف Single-root I/O virtualization است و یکی از قابلیت هایی است که در برخی از کارت های شبکه وجود دارد. با کمک این قابلیت کارت های شبکه به صورت مستقیم به ماشین مجازی متصل می شوند و باعث می شوند که سربار پردازنده برای ترافیک شبکه کاهش پیدا کند و توان عملیاتی شبکه را به حداکثر می رساند و تاخیر را کاهش می دهد.

آشنایی با قابلیت SR-IOV

 SR-IOV، در واقع فناوری اصلی زیرساخت های I/O و اتصالات مجازی سازی شده است که امکان اشتراک گذاری یک منبع ورودی / خروجی را میان چند ماشین مجازی فراهم می آورد.  در واقع، SR-IOV اجازه می دهد تا یک ” دستگاه روت ” (مانند یک کارت شبکه اترنت) به صورت  چند دستگاه ظاهر شود، که می توان به صورت مجازی آنها را استفاده و مدیریت کرد. SR-IOV برای مجازی سازی آن قدر مهم است که در فرمت مشخصات PCI Express (PCIe) پذیرفته شده است. SR-IOV اساسا با تعریف مجموعه ای از توابع فیزیکی و مجازی در آداپتور شبکه کار می کند عملکرد فیزیکی آداپتور شبکه (PF) دستگاه و توانایی های SR-IOV را تعریف می کند و به ناظر ماشین مجازی مرتبط است. هر تابع مجازی (VF) سپس منابع دستگاه مانند حافظه محلی و پورت شبکه را با سایر توابع مجازی به اشتراک می گذارد.  نظر بر این است که  تابع فیزیکی و هرتابع مجازی،  یک ID شناسایی درخواست دهنده منحصربفرد PCI Express (PCIe RID ها) را دریافت می کنند که ناظر ماشین مجازی می تواند برای تمایز ترافیک شبکه و مهارکردن وقفه ها از آن استفاده کند. این اجازه می دهد تا ترافیک به هر ماشین مجازی از طریق تابع مجازی منحصر به فرد به تابع فیزیکی اصلی جریان یابد بدون اینکه تاثیری بر دیگر توابع فیزیکی داشته باشد. ترافیک ماشین مجازی، ایزوله است و می تواند کارت شبکه را بدون تاثیر بر دیگری به اشتراک بگذارد و ترافیک شبکه از لایه سوئیچ نرم افزار ناظر ماشین مجازی عبور می کند که عمل کننده I / O را کاهش می دهد و عملکرد را بهبود می بخشد.

 توسعه و استقرار SR-IOV به پشتیبانی ناظر ماشین مجازی مانند Hyper-V یا ESXi همراه با یک کارت شبکه مناسب و سرور نیاز دارد. سرور نیاز به پشتیبانی بایوسی دارد که از SR-IOV همراه با یک کارت شبکه با یک تراشه شبکه سازگار SR-IOV مانند کنترلر Intel 82599EB dual 10 GigE پشتیبانی کند. سرور های قدیمی تر ممکن است به روز رسانی سیستم عامل نیاز داشته باشند تا پشتیبانی مناسبی از SR-IOV کنند. درایورها نیاز به اتصال سیستم عامل به NIC دارند. به عنوان مثال، ویندوز سرور، 2012 ،کنترلر درایورهای محلی SR-IOV از جمله Emulex 10 GigE OneConnect، Broadcom 10 GigE 57712 و 10 GigE X520 Intel را ارائه می دهد. سایر درایورهای مناسب نیز ممکن است به طور مستقیم در فروشنده کارت شبکه در دسترس باشند.

SR-IOV چیست؟

مجازی سازی I / O موضوعی است که به تازگی  به دلیل عدم توجه به سیستم های Xsigo پس از مشارکت آنها در فناوری اطلاعات گشتالت به میزان قابل ملاحظه ای مورد توجه قرار گرفته است. در حالی که Xsigo از InfiniBand به عنوان مکانیسم مجازی سازی I / O استفاده می کند، دیگر فناوری های مجازی سازی I / O نیز وجود دارد یکی از این فن آوری ها (SR-IOV) است. پس SR-IOV چیست؟ پاسخ  این است که SR-IOV یک مشخصه است که اجازه می دهد یک دستگاه PCIe به صورت چندین دستگاه PCIe فیزیکی جداگانه ،به نظر برسد. خصوصیات SR-IOV توسط PCI SIG ایجاد شده و بر اساس  PCI SIG ، طبق نظریه کمک به  مشخصات استاندارد به ارتقای قابلیت همکاری، حفظ می شود. SR-IOV با معرفی ایده توابع فیزیکی (PFs) و توابع مجازی (VFs) کار می کند. توابع فیزیکی ، توابعی با خصوصیات کامل PCIe هستند؛ توابع مجازی (VFs) توابع سبک وزن هستند که منابع پیکربندی ندارند (من توضیح خواهم داد که چرا VF ها این منابع پیکربندی را به زودی از  دست می دهند.)

SR-IOV چیست؟

SR-IOV نیاز به پشتیبانی در BIOS و همچنین در سیستم عامل یا ناظر ماشین مجازی دارد که در حال اجرا بر روی سخت افزار است. تا همین اواخر،  بر این تصور بودم  که SR-IOV تنها به سخت افزار پردازش به کار رفت و نیاز به پشتیبانی از نرم افزارنداشت. متاسفانه، من اشتباه کردم پشتیبانی نرم افزاری در سیستم عامل یا ناظر ماشین مجازی قطعا مورد نیاز است. برای اینکه بدانیم چرا چنین است  باید کمی در مورد توابع فیزیکی و مجازی صحبت کنم قبلا ذکر کردم  توابع فیزیکی توابعی با خصوصیات  PCIe کامل هستند؛ آنها مانند هر دستگاه PCIe دیگر شناخته شده، مدیریت و دستکاری می شوند توابع فیزیکی دارای منابع پیکربندی کامل هستند، به این معنی که ممکن است دستگاه PCIe را از طریق  توابع فیزیکی ،پیکربندی یا کنترل کند و (البته)  توابع فیزیکی دارای توانایی کامل برای انتقال داده ها به دستگاه و خروج آن را دارند.

توابع مجازی شبیه توابع فیزیکی هستند اما منابع پیکربندی ندارند اساسا، آنها تنها قادر به انتقال داده به دستگاه و خارج کردن آن هستند. توابع مجازی را نمی توان پیکربندی کرد، زیرا این باعث می شود توابع فیزیکی زیربنایی و در نتیجه تمام دیگر  توابع مجازی را تغییر دهد پیکربندی تنها می تواند در برابر توابع فیزیکی انجام شود. از آنجا که توابع مجازی را نمی توان به عنوان یک دستگاه PCIe کامل  در نظر گرفت، باید بدانید که OS یا ناظر ماشین مجازی باید که آنها ،دستگاه های PCIe کامل نیستند بنابراین، سیستم عامل یا  پشتیبانی ناظر ماشین مجازی برای SR-IOV مورد نیاز است به طوری که  سیستم عامل یا ناظر ماشین مجازی  می تواند به درستی توابع فیزیکی و توابع مجازی ،تشخیص داده شده و راه اندازی  می شود . در این زمان، پشتیبانی SR-IOV تنها در برخی از هسته های منبع باز لینوکس یافت می شود این به این معنی است که اولین راه را برای KVM و Xen پیدا می کند. من یک دوره زمانی برای پشتیبانی SR-IOV پلت فرم مجازی سازی ابر رایانه VMware  یا مایکروسافت  مجازی سازی سرور ویندوز ندارم.

بنابراین، با در نظر گرفتن همه این موارد، هنگامی که یک دستگاه PCIe فعال SR-IOV را در یک سیستم با پشتیبانی مناسب BIOS و سخت افزار دارید، چه چیزی به دست می آورید و با استفاده از SR-IOV سیستم عامل یا  ناظر ماشین مجازی  ، اجرا میکنید؟ اساسا  این قابلیت رابه   دستگاه PCIe  می دهید تا چندین نمونه از خود به سیستم عامل یا  ناظر ماشین مجازی ارائه دهد. تعداد موارد مجازی که می توانند ارائه شوند بستگی به دستگاه دارد. مشخصات PCI SIG SR-IOV نشان می دهد که هر دستگاه می تواند تا 256 تا 256  تابع مجازی داشته باشد. بسته به دستگاه SR-IOV  مورد نظر و چگونگی ساخت آن ، ممکن است خود را به شکل های مختلف نشان دهد.  مثال زیر را در نظر بگیرید  :

کارت گرافیک شبکه SR-IOV چهار پورت (NIC) خود را به عنوان چهار دستگاه معرفی می کند،  هر کدام از این دستگاه ها می توانند تا 256  تابع مجازی (NIC های تک کانال) را برای مجموع نظری 1024 تابع مجازی داشته باشند. در این مورد، هر  تابع مجازی اساسا یک پورت NIC را نشان می دهد.

یک آداپتور گذرگاه میزبان SR-IOV دو پورتی (HBA) خود را به عنوان یک دستگاه با دو پورت معرفی می کند.  با در نظر گرفتن تابع مجازی  256 ،این باعث می شود که HBA 512 پورت  درکل  HBA  مجازی 256 پورت  دوگانه گسترش پیدا کنند.

SR-IOV چیست و چگونه می تواند بر روی یک سرور مجازی قرار گیرد؟

البته این موارد  از لحاظ  نظری است. از آنجا که هر تابع مجازی نیاز به منابع سخت افزاری واقعی دارد، محدودیت های عملی کمی بیشتر است. در حال حاضر ظاهرا تابع مجازی  64 VF بیشترین محدودیت را در بین دستگاه ها دارد. در شرایطی که تابع مجازی  نشان دهنده پورت های NIC اضافی یا پورت های HBA هستند، فناوری های دیگری نیز باید وارد بازی شوند. به عنوان مثال، فرض کنید که یک سیستم HBA  با کانال فیبری با قابلیت  SR-IOV داشته باشید. که HBA می تواند خود را به عنوان چند HBA  مجزا نشان می دهد البته، چون این HBA های منطقی هنوز هم پورت HBA فیزیکی تکی دارند، شما به NPIV نیاز دارید تا از چندین WWN وشناسه پورت ان در یک پورت HBA فیزیکی  تکی پشتیبانی کند. به طور مشابه، شما ممکن NIC اترنت گیگابایتی با پشتیبانی SR-IOV داشته باشید. این NIC می تواند به لحاظ تئوری (بر اساس مشخصات PCI SIG SR-IOV) خود را به عنوان  NIC مجازی 256 معرفی کند. هر یک از این NIC ها به صورت جداگانه و جدا از  سیستم عامل یا ناظر ماشین مجازی است، اما سوئیچ اترنت  فیزیکی  ازتوابع مجازی آگاه نیست به طور پیش فرض، سوئیچ ها، برخی از انواع ترافیک  را با ورود به درون یک پورت (از یک تابع مجازی )  و با خروج از همان پورت (به تابع فیزیکی دیگر) نشان نمی دهد. این می تواند نتایج غیر منتظره ای ایجاد کند

SR-IOV دارای محدودیت  است. تابع مجازی باید از همان نوع دستگاه فیزیکی  باشد؛ به عنوان مثال، شما نمی توانید توابع مجازی داشته باشید که خود را به عنوان یک نوع دستگاه معرفی می کنند زمانی که تابع فیزیکی  خود را به عنوان نوع دیگری از دستگاه معرفی  می کند. همچنین از همان ابتدا یادآوری می کنیم که  توابع مجازی به طور کلی نمی توانند برای پیکربندی دستگاه فیزیکی واقعی مورد استفاده قرار گیرند، اگر تا حدی این فرض درست باشد بستگی به اجرای آن دارد مشخصات SR-IOV ، دراجرای واقعی ، راه گریز ایجاد می کند. این  راه گریز به این معنی است که برخی از NIC های فعال کننده SR-IOV نیز ممکن است قابلیت  تغییر تابع مجازی را داشته باشند  (جایی که NIC می تواند ترافیک بین  توابع مجازی را بدون کمک  سوئیچ فیزیکی، تغییر دهد) در حالی که دیگر NIC ها ممکن است قابلیت تغییر توابع مجازی را نداشته باشند (در این صورت  توابع مجازی نمی توانند با یکدیگر بدون حضور یک سوئیچ فیزیکی  ارتباط بگیرند.).

 SR-IOV با استفاده از توانایی سیستم مدیریت ویدیویی برای اتصال به  توابع مجازی و اشتراک یک NIC فیزیکی ،قابلیت دور زدن ویژگی های امنیتی در هک کردن  را به  ناظر ماشین مجازی  می دهد. با این حال، استفاده از SR-IOV به طور خودکار نشان نمی دهد که  این قابلیت دخیل خواهد بود. این مسئله، موضوعی است که مطمئن هستم که در آینده نزدیک جزئیات بیشتری خواهم گفت. در نهایت، شایان ذکر است که PCI SIG نیز بر روی یک مشخصه مجازی سازی ورودی و خروجی جداگانه کار می کند که  استفاده از    چندین سیستم برای به اشتراک گذاشتن دستگاه های PCIe، را ممکن می کند. این مشخصات، که به عنوان مجازی سازی ورودی و خروجی چند مرکزی شناخته می شود (MR-IOV)، چندین سیستم را قادر می سازد تا توابع فیزیکی PCIe ها را به اشتراک بگذارد امیدوارم اطلاعات بیشتری در مورد MR-IOV در آینده نزدیک نیز داشته باشیم.

اشتراک گذاری