eBPF فناوری است که می تواند برنامهها را در یک محیط محافظتشده مانند هسته سیستم عامل اجرا کند. [۱] این جانشینی برای مکانیزم قبلی فیلترینگ در لینوکس با نام فیلتر بسته برکلی (BPF، با "e" در اصل به معنای "بسط یافته") میباشد و همچنین در سایر بخشهای کرنل لینوکس نیز استفاده میشود.
از eBPF برای گسترش ایمن و کارآمد قابلیتهای هسته در زمان اجرا بدون نیاز به تغییر در کد منبع کرنل یا بارگیری ماژولهای کرنل استفاده میشود. [۲] ایمنی توسط یک مکانیزم تایید کننده در داخل کرنل که تجزیه و تحلیل کد ایستا را انجام میدهد تضمین میشود، بدین صورت که برنامههایی را که از کار میافتند، هنگ میکنند یا با کرنل تداخل دارند را رد میکند. [۳] [۴]
این مدل اعتبار سنجی با محیطهای جعبه شنی (جایی که محیط اجرا محدود است و زمان اجرا دیدی در مورد برنامه ندارد) متفاوت است. [۵] نمونههایی از برنامههایی که بهطور خودکار رد میشوند، برنامههایی هستند که تضمینهای خروج قوی ندارند (به عنوان مثال حلقههای for/while بدون شرایط خروج) و برنامههایی که مقادیر نشانگرها را بدون بررسی از حافظه دریافت میکنند. [۶]
برنامههای بارگذاریشده که از تأییدکننده عبور کردهاند یا تفسیر میشوند یا برای عملکرد بهتر درجا در هسته کامپایل میشوند. مدل اجرا مبتنی بر رویداد است البته با وجود چند استثنا، به این معنی که برنامهها را میتوان به نقاط قلاب مختلف در هسته سیستمعامل متصل کرد و پس از راهاندازی یک رویداد اجرا میشوند. موارد استفاده از eBPF شامل شبکه هایی مانند XDP ، ردیابی و زیرسیستم های امنیتی است (که البته به اینها محدود نیست). [۱] با توجه به کارایی و انعطاف eBPF که فرصتهای جدیدی را برای حل مشکلات فراهم کرده است، برندان گرگ eBPF را «ابر قدرت لینوکس» نامیده است. [۷] لینوس توروالدز چنین میگوید: «BPF واقعاً مفید بوده است و قدرت واقعی آن این است که چگونه به افراد اجازه میدهد تا کدها را تا زمانی که درخواست نشدهاند فعال و اجرا نکند». [۸] به دلیل موفقیت در لینوکس، زمان اجرای eBPF در سیستم عامل های دیگر مانند ویندوز نیز مورد استفاده قرار گرفته است.
eBPF بر روی بستر فیلتر بسته برکلی (cBPF) ساخته شده است. در پایین ترین سطح، از ده رجیستر ۶۴ بیتی (به جای دو رجیستر طولانی ۳۲ بیتی برای cBPF)، مکانیزم پرش متفاوت، دستورالعمل فراخوانی و کنوانسیون عبور از رجیستر مربوطه، دستورالعملهای جدید و رمزگذاری متفاوت استفاده کرده است. [۹]
نام مستعار eBPF و BPF که اغلب به جای هم استفاده میشوند، برای مثال توسط جامعه هسته لینوکس مورد استفاده قرار گرفته است. eBPF و BPF به عنوان یک نام فناوری مانند LLVM شناخته میشوند. eBPF بر بستر فیلتر بسته برکلی تکامل یافته است، اما موارد استفاده آن از BPF پیشی گرفته است.
زنبور عسل آرم رسمی eBPF است. در اولین اجلاس eBPF رأی گیری صورت گرفت و شگوننما زنبور عسل «eBee» نام گرفت. [۱۰] [۱۱] این لوگو در اصل توسط Vadim Shchekoldin ساخته شده است. [۱۱] شگوننماهای غیررسمی دیگری باری eBPF در گذشته وجود داشته است، [۱۲] که با پذیرش گستردهای مواجه نشده بودند.
بنیاد eBPF در آگوست ۲۰۲۱ با هدف گسترش مشارکت های انجام شده بر روی eBPF ایجاد شده است. [۱۳] اعضای موسس عبارتند از متا، گوگل، ایزووالنت، مایکروسافت و نتفلیکس. هدف جمع آوری، برنامهریزی و صرف بودجه برای حمایت از پروژه های منبع باز، داده باز و/یا استانداردهای باز مرتبط با eBPF [۱۴] است تا رشد اکوسیستم eBPF را بیشتر کند. از زمان آغاز به کارRed Hat ،Huawei ، Crowdstrike ، Tigera، DaoCloud، Datoms، FutureWei نیز به آن پیوستهاند. [۱۵]