Abstract
As the main gateway for network traffic to a server, the network interface card (NIC) is an ideal place to incorporate diverse network functionality, such as traffic control, protocol offloading, and virtualization. However, the slow evolution and inherent inflexibility of NIC hardware have failed to support evolving protocols, emerging applications, and rapidly changing system/network architectures. The traditional soft- ware approach to this problem—implementing NIC features in the host network stack—is unable to meet increasingly challenging performance requirements. In this paper we present SoftNIC, a hybrid software-hardware architecture to bridge the gap between limited hardware capabilities and ever changing user demands. SoftNIC provides a programmable platform that allows applications to leverage NIC features implemented in software and hard- ware, without sacrificing performance. Our evaluation results show that SoftNIC achieves multi-10G performance even on a single core and scales further with multiple cores. We also present a variety of use cases to show the potential of software NIC augmentation
چکیده
دروازه ی اصلی برای ترافیک شبکه به یک سرویس دهنده، کارت واسط شبکه (NIC) است که مکان ایده آلی برای ترکیب کارکردهای شبکه ای مختلفی چون کنترل ترافیک، تخلیه بار پروتکل و مجازی سازی است. اما، تکامل آرام و انعطاف ناپذیری ذاتی سخت افزاری NIC سبب می شود قادر به پشتیبانی پروتکل های رو به رشد، برنامه های جدید و معماری های سیستم/شبکه که به سرعت تغییر می کنند نباشد. روش نرم افزاری معمول برای این مساله، پیاده سازی امکانات NIC در پشته ی شبکه ی میزبان، قادر به برآوردن نیازمندی های کارآیی چالش برانگیز رو به رشد نیست. در این مقاله، SoftNIC را ارائه می دهیم که یک معماری ترکیبی سخت افزاری جهت از میان برداشتن فاصله ی بین قابلیت های محدود سخت افزاری و تقاضاهای رو به رشد کاربر است. SoftNIC یک پلتفرم برنامه پذیر فراهم می آورد که به برنامه ها امکان می دهد امکانات NIC پیاده سازی شده در نرم افزار و سخت افزار را بدون کاهش کارآیی به کار بگیرند. نتایج ارزیابی ما نشان می دهند که SoftNIC کارآیی معادل چند ده گیگابایت به دست می دهد، حتی با یک هسته؛ و با چندین هسته نیز تغییر اندازه می دهد. ما همچنین چند نمونه کاربرد را جهت نشان دادن توانایی بالقوه ی تقویت نرمافزاری NIC ارائه می کنیم.
1-مقدمه
کارت های واسط شبکه ای مدرن (NICS) دائما جهت پشتیبانی از امکانات جدید تکامل می یابند. طی دهه ی اخیر، نقش NICها در سیستم های سرویس دهنده ی مدرن بیشتر از تقویت ترافیک بین یک CPU سرویس دهنده و لینک شبکه ی آن است، آنها در حال حاضر امکانات NIC پیشرفت های مانند تخلیه بار پروتکل، طبقه بندی بسته، محدودسازی نرخ و مجازی سازی را میزبانی می کنند. سه عامل در این مساله تاثیر دارند: (1) برنامه های جدیدی که نیازمندی های کارآیی شان را نمی توان با پشته های شبکه ای موجود برآورد، که تقویت سخت افزاری را ضروری می سازد؛ (2) محبوبیت فزاینده ی مجازی سازی، که در آن برای NICها مطلوب است که از کارکردهای سوئیچینگ پشتیبانی کنند؛ و (3) ایجاد مراکز دادهای چندمالکیتی و محاسبات ابری برای NICهایی که می بایست مکانیزم های ایزوله سازی را فراهم آورند...