کارگروه مهندسی اینترنت (IETF) که مسئولیت توسعه پروتکلها و معماری اینترنت را بر عهده دارد، RFC را برای معماری مجموعه دستورالعمل BPF نهایی کرده و مشخصات مرتبط را تحت شناسه RFC 9669 منتشر کرده است. به RFC وضعیت داده شده است یک "استاندارد پیشنهادی"، پس از آن کار برای دادن وضعیت یک استاندارد پیش نویس به RFC آغاز می شود، که در واقع به معنای تثبیت کامل و در نظر گرفتن تمام نظرات ارائه شده است.
مشخصات منتشر شده، مجموعه دستورالعملهای بایتکد BPF و ماشین مجازی سطح پایین مورد استفاده در زیرسیستم هسته را شرح میدهد. Linux eBPF برنامهای برای اجرای کنترلکنندههای خارجی است که قادر به تغییر رفتار سیستم در لحظه و بدون نیاز به اصلاح کد هسته هستند. اساساً، eBPF یک پردازنده مجازی ساده با مجموعه ثباتهای خاص خود، دستورالعملهای شبه RISC، پشته و شمارنده برنامه پیادهسازی میکند. برنامههای BPF معمولاً با زیرمجموعهای از زبان C نوشته میشوند و سپس به بایتکد مناسب برای اجرا در ... کامپایل میشوند. ماشین مجازیماشین مجازی میتواند برنامههای BPF را با استفاده از تفسیر یا کامپایل درجا (JIT) اجرا کند تا بایتکد را به دستورالعملهای ماشین در لحظه تبدیل کند.
انتظار میرود که استانداردسازی معماری مجموعه دستورالعملهای BPF، ایجاد پیادهسازیهای شخص ثالثی را که با ماشین مجازی eBPF سازگار هستند و قادر به اجرای برنامههای BPF نوشته شده برای هسته هستند، تحریک کند. Linuxدر مورد ایجاد موارد مشابه ماشینهای مجازی برخی از تولیدکنندگان آداپتور شبکه در حال توسعه ابزارهای شتابدهنده سختافزاری برای کنترلکنندههای بسته شبکه BPF هستند. ایده این است که قابلیتهای زیرسیستم XDP (eXpress Data Path) را گسترش دهند تا برنامههای BPF را نه تنها در سطح درایور شبکه، بلکه روی آداپتور شبکه نیز اجرا کنند.
برای مثال، Netronome پشتیبانی BPF را به آداپتور Netronome Agilio CX SmartNIC اضافه کرده است و مجموعهای از نمونههایی از برنامههای جهانی BPF را ارائه کرده است که میتوانند نه تنها با استفاده از CPU در هسته با هر درایور سازگار با XDP، بلکه بر روی کارت شبکه نیز اجرا شوند. side، که به شما امکان می دهد بدون اتلاف منابع CPU در مورد حذف، تغییر یا تغییر مسیر بسته ها تصمیم بگیرید. به طور جداگانه، فناوری XRP (مسیر ارسال مجدد eXpress) در حال توسعه است که استفاده از BPF را برای انتقال برخی از عملیات با درایوهای NVMe، مانند کار با فهرستها و تجمیع دادهها، به سطح درایور NVMe یا یک دستگاه خارجی ممکن میسازد.
اشاره شده است که پذیرش گستردهتر چنین قابلیتهایی تاکنون به دلیل خطرات مرتبط با مسائل سازگاری و نیاز به نظارت بر وضعیت eBPF در هسته مختل شده است. به دلیل این خطرات، برخی از تولیدکنندگان شتاب سخت افزاری BPF را در دستگاه های خود تا زمانی که استانداردی ایجاد شود به تعویق انداخته اند.
منبع: opennet.ru
