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 نیز به آن پیوسته‌اند. [۱۵]


همینطور ببینید

ویرایش
  • مسیر داده اکسپرس

منابع

ویرایش
  1. ۱٫۰ ۱٫۱ "eBPF Documentation: What is eBPF?". eBPF.io. Retrieved 1 July 2022.
  2. "eBPF - Rethinking the Linux Kernel". QCon 2020. Retrieved 1 July 2022.
  3. "Safe Programs The Foundation of BPF". eBPF Summit 2021. 8 November 2020. Retrieved 1 July 2022.
  4. "BPF and Spectre: Mitigating transient execution attacks". POPL 2022 conference. 22 January 2022. Retrieved 1 July 2022.
  5. "eBPF - The Silent Platform Revolution from Cloud Native" (PDF). SIGCOMM 2023, 1st Workshop on eBPF and Kernel Extensions. 10 September 2023. Retrieved 5 October 2023.
  6. Hedam, Niclas (26 May 2023). "eBPF - From a Programmer's Perspective" (PDF) (به انگلیسی). doi:10.13140/RG.2.2.33688.11529/4.
  7. "Linux BPF Superpowers". Brendan Gregg's Blog. 5 March 2016. Retrieved 1 July 2022.
  8. "Meta, Google, Isovalent, Microsoft and Netflix Launch eBPF Foundation as Part of the Linux Foundation". Linux Foundation. 12 August 2021. Retrieved 1 July 2022.
  9. "Classic BPF vs eBPF". LWN. March 2014. Retrieved 6 January 2023.
  10. "eBPF Summit Day Two". cilium.io. October 2020. Retrieved 1 July 2022.
  11. ۱۱٫۰ ۱۱٫۱ "What is the bee named?". ebpf.io. Retrieved 1 July 2022.
  12. "eBPF: One Small Step". Brendan Gregg's Blog. May 2015. Retrieved 1 July 2022.
  13. "Meta, Google, Isovalent, Microsoft and Netflix Launch eBPF Foundation as Part of the Linux Foundation". Linux Foundation. 12 August 2021. Retrieved 1 July 2022.
  14. "eBPF Foundation Charter". ebpf.foundation. June 2021. Retrieved 16 August 2022.
  15. "eBPF Foundation Governance". ebpf.foundation. August 2022. Retrieved 16 August 2022.