Fast Packet IO – DEV Community

netmap چارچوبی برای بسته های ورودی/خروجی سریع از فضای کاربری است. بیایید ابتدا سعی کنیم بفهمیم چرا به آن نیاز داریم. هسته سیستم عامل پروتکل های پشته TCP/IP را تا لایه انتقال پیاده سازی می کند. در حالی که پروتکل های لایه برنامه (HTTP، FPT، SSH، SMTP و غیره) در فضای کاربری پیاده سازی می شوند. به ازای تخصیص حافظه پویا بسته، سربار فراخوانی سیستم و تخصیص حافظه، پشته شبکه سنتی لینوکس را ناکارآمد می کند. netmap سعی می کند این مشکل را حل کند تا مسیر داده بسته را کارآمد کند.
Netmap از این تکنیک ها برای دستیابی به عملکرد بالا استفاده می کند
- یک نمایش ابرداده سبک وزن، پردازش تعداد زیادی بسته در هر فراخوانی سیستم، در نتیجه هزینه آن کاهش می یابد.
- بافرهای بسته از پیش تخصیص داده شده خطی با اندازه ثابت
- حذف هزینه های کپی داده با اعطای دسترسی مستقیم و محافظت شده به برنامه های کاربردی به بافرهای بسته بسته های بین واسط ها.
Netmap API
netmap به عنوان ماژول هسته برای FreeBSD و Linux پیاده سازی شده است. ioctl(.., NIOCREG, arg)
آرگومان شامل نام رابط و به صورت اختیاری نشانگر آن است که کدام حلقه است
ما می خواهیم از طریق این توصیفگر فایل را کنترل کنیم.
سایر راه حل های بسته سریع ورودی/خروجی
XDP (express data path) یک مسیر داده با کارایی بالا است که برای ارسال و دریافت بسته ها با دور زدن پشته شبکه سازی هسته سیستم عامل استفاده می شود. از e-BPF (فیلتر بسته برکلی توسعه یافته) استفاده می کند، e-BPF به ما اجازه می دهد تا با خیال راحت عملکردهای هسته را بدون تغییر کد منبع هسته یا بارگیری ماژول هسته گسترش دهیم. به طور خلاصه e-BPF یک ماشین مجازی درون هسته است که توانایی اجرای برنامه های ارائه شده توسط کاربر در داخل هسته را دارد.
مراجع