EBPF
Тип | Віртуальна машина |
---|---|
Автор | Олексій Старовоїтов, Даніель Боркман[1][2] |
Розробник | Спільнота з відкритим вихідним кодом, Meta, Google, Isovalent, Microsoft, Netflix[1] |
Стабільний випуск | (2014 ) |
Операційна система | Linux, Windows[3] |
Мова програмування | C |
Ліцензія | Linux: GPL Windows: MIT License |
Репозиторій | Linux: git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/ Windows: github.com/Microsoft/ebpf-for-windows/ |
Вебсайт | ebpf.io |
eBPF є технологією, яка може виконувати програми в привілейованому контексті, такому як ядро операційної системи.[4] Це наступник Berkeley Packet Filter (BPF, де "e" спочатку означало "розширений") механізму фільтрації в Linux і також використовується в не мережевих частинах ядра Linux.
Він використовується для безпечного та ефективного розширення можливостей ядра під час виконання без необхідності вносити зміни до початкового коду ядра або завантажувати модулі ядра.[5] Безпека забезпечується через внутрішньоядерний верифікатор, який виконує статичний аналіз коду та відхиляє програми, які викликають збої, зависання або іншим чином негативно впливають на ядро.[6][7]
Ця модель валідації відрізняється від середовищ з пісочницею, де середовище виконання обмежене і не має уявлення про програму.[8] Прикладом програм, які автоматично відхиляються, є програми без надійних умов завершення (наприклад, цикли for/while без умов завершення) та програми, які здійснюють розіменування вказівників без перевірок на безпеку.[9]
Завантажені програми, які пройшли перевірку, або інтерпретуються, або компілюються в ядрі за допомогою компіляції під час виконання (JIT) для досягнення високої продуктивності. Модель виконання є подійно-орієнтованою та, за рідкими винятками, працює за принципом виконання до завершення,[2] що означає, що програми можуть бути прикріплені до різних точок перехоплення в ядрі операційної системи та виконуються під час спрацювання події. Випадки використання eBPF включають (але не обмежуються) мережеві підсистеми, такі як XDP, трасування та підсистеми безпеки.[4] Завдяки ефективності та гнучкості eBPF відкрилися нові можливості для вирішення виробничих проблем, і Брендан Ґреґґ знаменито назвав eBPF "суперсилою для Linux".[10] Лінус Торвальдс зазначив: "BPF насправді був дуже корисним, і його реальна сила полягає в тому, як він дозволяє створювати спеціалізований код, який активується лише тоді, коли це потрібно".[11] Завдяки успіху в Linux, середовище виконання eBPF було портовано на інші операційні системи, такі як Windows.[3]
eBPF еволюціонував із класичного Berkeley Packet Filter (cBPF, ретроактивно надана назва). На базовому рівні він запровадив використання десяти 64-бітних регістрів (замість двох 32-бітних регістрів у cBPF), інші семантики переходів, інструкцію виклику та відповідну конвенцію передачі регістрів, нові інструкції та інше кодування для цих інструкцій.[12]
Дата | Подія |
---|---|
Квітень 2011 | Перший JIT-компілятор (Just-in-time compiler) для класичного фільтра пакетів Берклі (BPF) був інтегрований в ядро Linux.[13] |
Січень 2012 | Перше некласичне використання класичного фільтра пакетів Берклі — seccomp-bpf.[14] |
Березень 2014 | Девід С. Міллер, головний адміністратор мережевої підсистеми Linux, прийняв переробку старого інтерпретатора BPF в ядрі. Його замінив інтерпретатор eBPF, а ядро Linux тепер перекладає класичний BPF (cBPF) у команди eBPF.[15] |
Вересень 2014 | Введено системний виклик bpf, який забезпечив доступ до набору інструкцій eBPF з користувацького простору.[16] |
Березень 2015 | Можливість прикріплювати eBPF до kprobe була інтегрована як перший випадок використання для трасування.[17] |
Серпень 2015 | Модуль компілятора eBPF був інтегрований у версію LLVM 3.7.0.[18] |
Вересень 2015 | Брендан Грегг оголосив про новий набір інструментів для трасування на основі eBPF, відомий як проект bcc.[19] |
Липень 2016 | eBPF отримав можливість бути прикріпленим до ядра драйвера для обробки вхідних пакетів. Цей рівень відомий як eXpress DataPath XDP.[20] |
Серпень 2016 | Cilium був представлений як проект для швидкої мережевої комунікації IPv6 для контейнерів за допомогою eBPF і XDP.[21] |
Листопад 2016 | Netronome додав можливість оффлоаду програм eBPF для XDP та BPF.[22] |
Травень 2017 | Впроваджено балансувальник навантаження Katran від Meta, який використовує eBPF та XDP.[23] |
Листопад 2017 | eBPF став окремим підсистемою ядра для спрощення управління патчами ядра.[24] |
Січень 2018 | Випущена нова родина сокетів AF_XDP для високошвидкісної обробки пакетів.[25] |
Грудень 2019 | Випущено першу книгу на 880 сторінок про BPF, написану Бренданом Греггом.[26] |
Липень 2022 | Microsoft випустила eBPF для Windows.[3] |
eBPF мапи — це ефективні сховища ключ/значення, які знаходяться в просторі ядра та можуть використовуватися для обміну даними між декількома програмами eBPF або для комунікації між користувацьким простором та кодом eBPF, що працює в ядрі. Програми eBPF можуть використовувати мапи eBPF для зберігання та отримання даних у широкому спектрі структур даних. Реалізації мап надаються ядром. Існують різні типи,[27] включаючи хеш-мапи, масиви та кільцеві буфери.
На практиці eBPF мапи зазвичай використовуються у таких сценаріях, як запис конфігураційної інформації програмою користувацького простору для отримання програмою eBPF, збереження стану програмою eBPF для подальшого отримання іншою програмою eBPF (або під час повторного запуску тієї ж програми), або запис результатів чи метрик програмою eBPF у мапу для отримання програмою користувацького простору, яка представить результати.[28]
Віртуальна машина eBPF працює в межах ядра та приймає програму у вигляді байткоду eBPF, який конвертується у нативні машинні інструкції, що виконуються на процесорі. Ранні реалізації eBPF виконували інтерпретацію байткоду, проте тепер цей процес замінено на компіляцію Just-in-Time (JIT) для підвищення продуктивності та безпеки.[28] Віртуальна машина eBPF складається з одинадцяти 64-бітних регістрів з 32-бітними підрегістрами, лічильника команд та 512-байтного стека BPF. Ці регістри загального призначення зберігають стан під час виконання програм eBPF.[29]
Хвостовий виклик дозволяє викликати та виконувати іншу програму eBPF, замінюючи контекст виконання, подібно до того, як системний виклик execve() працює для звичайних процесів. Це дозволяє програмі eBPF викликати іншу програму eBPF. Хвостові виклики реалізуються як довгий стрибок, використовуючи ту саму фрейм стека. Хвостові виклики особливо корисні в eBPF, де стек обмежений 512 байтами. Під час виконання функціональність може бути додана або замінена атомарно, змінюючи поведінку виконання програми BPF.[29] Популярним випадком використання хвостових викликів є розподіл складності програм eBPF на кілька програм. Інший варіант використання — заміна або розширення логіки шляхом заміни вмісту масиву програми під час її використання. Наприклад, для оновлення версії програми без перерви в роботі або для ввімкнення/вимкнення логіки.[30]
Загальноприйнятою практикою в розробці програмного забезпечення є групування загального коду в функції, що інкапсулюють логіку для повторного використання. До версії ядра Linux 4.16 та LLVM 6.0 типова програма eBPF на мові C повинна була явно вказувати компілятору вбудовувати функцію, що призводило до створення об'єктного файлу BPF з дубльованими функціями. Це обмеження було знято, і сучасні компілятори eBPF тепер підтримують написання функцій у програмах eBPF природним чином. Це зменшує розмір згенерованого коду eBPF, роблячи його більш дружнім до кешу інструкцій процесора.[28][29]
Верифікатор є основним компонентом eBPF, і його головне завдання — гарантувати, що програма eBPF є безпечною для виконання. Він проводить статичний аналіз байткоду eBPF для забезпечення його безпеки. Верифікатор аналізує програму, оцінюючи всі можливі шляхи виконання. Він крокує по інструкціях у порядку їх виконання і оцінює їх. Процес верифікації починається з пошуку в глибину по всіх можливих шляхах програми, при цьому верифікатор симулює виконання кожної інструкції, відстежуючи стан регістрів і стека. Якщо якась інструкція може призвести до небезпечного стану, верифікація не проходить. Процес триває доти, поки всі шляхи не будуть проаналізовані або не буде знайдено порушення. Залежно від типу програми, верифікатор перевіряє порушення певних правил. До цих правил може входити перевірка того, що програма eBPF завжди завершується за розумний час (без нескінченних циклів або нескінченної рекурсії), перевірка того, що програмі eBPF не дозволяється читати довільну пам'ять, оскільки це може дозволити програмі витікати конфіденційну інформацію, перевірка того, що програми, пов'язані з мережею, не мають доступу до пам'яті поза межами пакета, оскільки сусідня пам'ять може містити конфіденційну інформацію, перевірка того, що програми не можуть створювати взаємне блокування, тому всі Spinlock повинні бути звільнені, і одночасно можна утримувати лише один замок, щоб уникнути взаємного блокування між кількома програмами, перевірка того, що програми не мають доступу до неініціалізованої пам'яті. Це не є вичерпним списком перевірок верифікатора, і є винятки з цих правил. Наприклад, програми трасування мають доступ до хелперів, які дозволяють їм читати пам'ять контрольованим чином, але такі типи програм вимагають привілеїв суперкористувача і тому не становлять загрози для безпеки.[30][28]
З часом верифікатор eBPF розвинувся, включивши нові функції та оптимізації, такі як підтримка обмежених циклів, Елімінація мертвого коду, верифікація по функціям і зворотні виклики.
Програми eBPF використовують пам'ять і структури даних ядра. Деякі структури можуть змінюватися між різними версіями ядра, змінюючи розташування пам'яті. Оскільки ядро Linux постійно розвивається, немає гарантії, що внутрішні структури даних залишаться незмінними в різних версіях. CO-RE є основним поняттям у сучасній розробці eBPF, яке дозволяє програмам eBPF бути портативними між різними версіями та конфігураціями ядра. Це вирішує проблему варіацій у структурах ядра між різними дистрибутивами Linux і версіями. CO-RE складається з BTF (BPF Type Format) — формату метаданих, який описує типи, що використовуються в ядрі та програмах eBPF, і надає детальну інформацію про структури, зсуви полів і типи даних. Це забезпечує доступ до типів ядра під час виконання, що є ключовим для розробки та верифікації програм BPF. BTF включений в образ ядра для підтримуваних версій. Спеціальні релокації генеруються компілятором (наприклад, LLVM). Ці релокації захоплюють опис високого рівня того, до якої інформації програма eBPF має намір звертатися. Бібліотека libbpf адаптує програми eBPF для роботи з макетом структури даних на цільовому ядрі, де вони виконуються, навіть якщо цей макет відрізняється від того, на якому код було скомпільовано. Для цього libbpf потребує інформацію про релокації BPF CO-RE, згенеровану Clang під час процесу компіляції.[28] Скомпільована програма eBPF зберігається у форматі ELF (Executable and Linkable Format). Цей файл містить інформацію про типи BTF та релокації, згенеровані Clang. Формат ELF дозволяє завантажувачу eBPF (наприклад, libbpf) обробляти та налаштовувати програму BPF динамічно для цільового ядра.[31]
Назва eBPF часто використовується взаємозамінно з BPF,[2][32] наприклад, у спільноті ядра Linux. eBPF і BPF згадуються як технологія, подібно до LLVM.[2] eBPF розвинувся з машинної мови для фільтруючої віртуальної машини в Фільтр Berkeley Packet як розширена версія, але оскільки його сфери використання вийшли за межі мереж, сьогодні "eBPF" найчастіше тлумачиться як псевдоакронім.[2]
Бджола є офіційним логотипом eBPF. Під час першого саміту eBPF було проведено голосування, на якому маскот-бджолу назвали "eBee".[33][34] Логотип спочатку був створений Вадимом Щеколдіним.[34] Раніше існували неофіційні маскоти eBPF,[35] але вони не отримали широкого поширення.
Фонд eBPF був створений у серпні 2021 року з метою розширення внесків, спрямованих на розширення потужних можливостей eBPF та виходу за межі Linux.[1] Засновниками виступили Meta, Google, Isovalent, Microsoft та Netflix. Метою є збір, бюджетування та витрачання коштів на підтримку різних проєктів з відкритим вихідним кодом, відкритими даними та/або відкритими стандартами, пов'язаних із технологіями eBPF,[36] для подальшого розвитку та впровадження екосистеми eBPF. З моменту заснування до них приєдналися Red Hat, Huawei, CrowdStrike, Tigera, DaoCloud, Datoms, FutureWei.[37]
eBPF був прийнятий рядом великих користувачів на виробництві, наприклад:
- Meta використовує eBPF через свій балансувальник навантаження 4-го рівня Katran для всього трафіку, що йде на facebook.com.[38][39][40][23]
- Google використовує eBPF у GKE, розробив та використовує BPF LSM для заміни аудиту та використовує eBPF для роботи в мережі.[41][42][43][44]
- Cloudflare використовує eBPF для балансування навантаження, захисту від DDoS та забезпечення безпеки.[45][46][47][48][49]
- Netflix використовує eBPF для моніторингу мережі в масштабах усієї інфраструктури та діагностики продуктивності.[50][51]
- Dropbox використовує eBPF через Katran для балансування навантаження на 4-му рівні.[52]
- Android використовує eBPF для NAT46 і моніторингу трафіку.[53][54][55]
- Samsung Galaxy використовує eBPF для мережевих рішень.[56]
- Yahoo! Inc використовує eBPF через Cilium для балансування навантаження на 4-му рівні.[57]
- LinkedIn використовує eBPF для спостереження за інфраструктурою.[58]
- Alibaba використовує eBPF для балансування навантаження в Kubernetes Pod.[59]
- Datadog використовує eBPF для мережевих рішень і забезпечення безпеки в Kubernetes Pod.[60][61][62]
- Trip.com використовує eBPF для мережевих рішень в Kubernetes Pod.[63][64]
- Shopify використовує eBPF для виявлення вторгнень через Falco.[65]
- DoorDash використовує eBPF через BPFAgent для моніторингу на рівні ядра.[66]
- Microsoft переніс eBPF та XDP на Windows.[67][68][69]
- Seznam використовує eBPF через Cilium для балансування навантаження на 4-му рівні.[70]
- DigitalOcean використовує eBPF та XDP для обмеження доступу до внутрішніх сервісів у своїй віртуальній мережі.[71]
- CapitalOne використовує eBPF для мережевих рішень в Kubernetes Pod.[72]
- Bell Canada використовує eBPF для модернізації телекомунікаційних мереж за допомогою SRv6.[73]
- Elastic_NV використовує eBPF для профілювання коду як частину своєї пропозиції по спостереженню.[74]
- Apple використовує eBPF для забезпечення безпеки Kubernetes Pod.[75]
- Sky використовує eBPF для мережевих рішень у Kubernetes Pod.[76]
- Walmart використовує eBPF для балансування навантаження на 4-му рівні.[77][78]
- Huawei використовує eBPF через свою систему захищеного завантаження DIGLIM.[79]
- Ikea використовує eBPF для мережевих рішень у Kubernetes Pod.[80]
- The New York Times використовує eBPF для мережевих рішень.[81]
- Red Hat використовує eBPF в масштабах для балансування навантаження та трасування в їх приватному хмарі.
- Palantir Technologies використовує eBPF для налагодження мережевих проблем у великих кластерах Kubernetes.[82]
Через легкість програмування, eBPF використовувався як інструмент для реалізації мікроархітектурних атак через бічний канал, таких як Spectre, проти вразливих мікропроцесорів.[83] Хоча eBPF без привілеїв реалізовував міграційні заходи проти атак тимчасового виконання,[84] використання без привілеїв зрештою було відключене спільнотою ядра за замовчуванням для захисту від використання проти майбутніх апаратних вразливостей.[85]
- ↑ а б в Meta, Google, Isovalent, Microsoft і Netflix заснували eBPF Foundation в рамках Linux Foundation. Linux Foundation. 12 серпня 2021. Процитовано 1 липня 2022.
- ↑ а б в г д BPF Internals. USENIX LISA 2021 conference. 1 червня 2021. Процитовано 1 липня 2022.
- ↑ а б в Зробити eBPF працездатним на Windows. Microsoft Open Source Blog. 10 травня 2021. Процитовано 1 липня 2022.
- ↑ а б eBPF Документація: Що таке eBPF?. eBPF.io. Процитовано 1 липня 2022.
- ↑ eBPF - Переосмислення ядра Linux. QCon 2020. Процитовано 1 липня 2022.
- ↑ Безпечні програми — основа BPF. eBPF Summit 2021. 8 листопада 2020. Процитовано 1 липня 2022.
- ↑ BPF та Spectre: Пом'якшення атак тимчасового виконання. POPL 2022 conference. 22 січня 2022. Процитовано 1 липня 2022.
- ↑ eBPF — Тиха революція платформи від Cloud Native (PDF). SIGCOMM 2023, 1-а майстерня з eBPF та розширення ядра. 10 вересня 2023. Процитовано 5 жовтня 2023.
- ↑ Hedam, Niclas (26 травня 2023). eBPF - З погляду програміста (PDF) (укр.). doi:10.13140/RG.2.2.33688.11529/4.
- ↑ Суперсили Linux BPF. Блог Брендана Ґреґґа. 5 березня 2016. Процитовано 1 липня 2022.
- ↑ Лінус Торвальдс про повернення до роботи над Linux. zdnet Інтерв'ю з Лінусом Торвальдсом. 23 жовтня 2018. Процитовано 1 липня 2022.
- ↑ Класичний BPF проти eBPF. LWN. березень 2014. Процитовано 6 січня 2023.
- ↑ net: filter: Just In Time compiler. lore.kernel.org. April 2011. Процитовано 1 липня 2022.
- ↑ Yet another new approach to seccomp. LWN. 1 January 2012. Процитовано 1 липня 2022.
- ↑ BPF updates. lore.kernel.org. March 2014. Процитовано 1 липня 2022.
- ↑ Happy birthday BPF!. lore.kernel.org. September 2014. Процитовано 1 липня 2022.
- ↑ tracing: attach eBPF programs to kprobes. lore.kernel.org. March 2015. Процитовано 1 липня 2022.
- ↑ LLVM 3.7 Release Notes. releases.llvm.org. August 2015. Процитовано 1 липня 2022.
- ↑ bcc: Taming Linux 4.3+ Tracing Superpowers. brendangregg.com. September 2015. Процитовано 1 липня 2022.
- ↑ Add driver bpf hook for early packet drop and forwarding. lore.kernel.org. July 2016. Процитовано 1 липня 2022.
- ↑ Cilium - Fast IPv6 Container Networking with BPF and XDP. slideshare.net. August 2016. Процитовано 1 липня 2022.
- ↑ nfp ring reconfiguration and XDP support. lore.kernel.org. November 2016. Процитовано 1 липня 2022.
- ↑ а б XDP 1.5 Years In Production. Evolution and Lessons Learned. lpc.events. Листопад 2018. Процитовано 16 серпня 2022.
- ↑ pull-request: bpf 2017-11-23. lore.kernel.org. November 2017. Процитовано 1 липня 2022.
- ↑ Introducing AF_XDP support. lore.kernel.org. January 2018. Процитовано 1 липня 2022.
- ↑ BPF Performance Tools (book). brendangregg.com. December 2019. Процитовано 16 серпня 2022.
- ↑ bpf.h - include/uapi/linux/bpf.h - Linux source code v5.15.86 - Bootlin. elixir.bootlin.com. Процитовано 1 серпня 2024.
- ↑ а б в г д Rice, Liz (2023). Learning eBPF: programming the Linux Kernel for enhanced observability, networking, and security (вид. First). Sebastopol, CA: O'Reilly Media. ISBN 978-1-0981-3512-6. OCLC 1353981026.
- ↑ а б в BPF Architecture — Cilium 1.16.0 documentation. docs.cilium.io. Процитовано 1 серпня 2024.
- ↑ а б Tail calls - eBPF Docs. ebpf-docs.dylanreimerink.nl. Процитовано 4 серпня 2024.
- ↑ BPF CO-RE - eBPF Docs. ebpf-docs.dylanreimerink.nl. Процитовано 7 серпня 2024.
- ↑ Брендан Грегг (Грудень 2019). BPF Performance Tools. Addison-Wesley. ISBN 978-0136554820.
- ↑ eBPF Summit Day Two. cilium.io. Жовтень 2020. Процитовано 1 липня 2022.
- ↑ а б What is the bee named?. ebpf.io. Процитовано 1 липня 2022.
- ↑ eBPF: One Small Step. Блог Брендана Грегга. Травень 2015. Процитовано 1 липня 2022.
- ↑ Статут фонду eBPF. ebpf.foundation. Червень 2021. Процитовано 16 серпня 2022.
- ↑ Управління фондом eBPF. ebpf.foundation. Серпень 2022. Процитовано 16 серпня 2022.
- ↑ Open-sourcing Katran, a scalable network load balancer. fb.com. Травень 2018. Процитовано 16 серпня 2022.
- ↑ BPF at Facebook. youtube.com. Грудень 2019. Процитовано 16 серпня 2022.
- ↑ From XDP to socket. lpc.events. Вересень 2021. Процитовано 16 серпня 2022.
- ↑ New GKE Dataplane V2 increases security and visibility for containers. cloud.google.com. Травень 2021. Процитовано 16 серпня 2022.
- ↑ eCHO episode 29: BPF LSM with KP Singh. youtube.com. Листопад 2021. Процитовано 16 серпня 2022.
- ↑ BPF security auditing at Google - Brendan Jackman/KP Singh. youtube.com. Листопад 2021. Процитовано 16 серпня 2022.
- ↑ Replacing HTB with EDT and BPF. netdevconf.info. Липень 2020. Процитовано 16 серпня 2022.
- ↑ Cloudflare architecture and how BPF eats the world. blog.cloudflare.com. Травень 2019. Процитовано 16 серпня 2022.
- ↑ It's crowded in here!. blog.cloudflare.com. Жовтень 2019. Процитовано 16 серпня 2022.
- ↑ Production ready eBPF, or how we fixed the BSD socket API. blog.cloudflare.com. Лютий 2022. Процитовано 16 серпня 2022.
- ↑ Live-patching security vulnerabilities inside the Linux kernel with eBPF Linux Security Module. blog.cloudflare.com. Червень 2022. Процитовано 16 серпня 2022.
- ↑ Unimog - Cloudflare's edge load balancer. blog.cloudflare.com. Вересень 2020. Процитовано 16 серпня 2022.
- ↑ How Netflix uses eBPF flow logs at scale for network insight. netflixtechblog.com. Червень 2021. Процитовано 16 серпня 2022.
- ↑ Extending Vector with eBPF to inspect host and container performance. netflixtechblog.com. Лютий 2019. Процитовано 16 серпня 2022.
- ↑ Dropbox traffic infrastructure: Edge network. dropbox.tech. Жовтень 2018. Процитовано 16 серпня 2022.
- ↑ eBPF Traffic Monitoring. source.android.com. Серпень 2022. Процитовано 16 серпня 2022.
- ↑ Extending the Kernel with eBPF. source.android.com. Серпень 2022. Процитовано 16 серпня 2022.
- ↑ NAT46 translation with BPF. lore.kernel.org. Квітень 2022. Процитовано 16 серпня 2022.
- ↑ BPF for Android: How we leverage BPF for our networking solutions - Madhan Raj Kanagarathinam. www.youtube.com. Лютий 2024. Процитовано 19 лютого 2022.
- ↑ Software L4 Load Balancing for Kubernetes Services at Yahoo! – Karthikeyan Thangaraj, Verizon Media (англ.), 19 серпня 2021, процитовано 3 лютого 2024
- ↑ Skyfall: eBPF agent for infrastructure observability. www.linkedin.com (англ.). Процитовано 3 лютого 2024.
- ↑ How Does Alibaba Cloud Build High-Performance Cloud-Native Pod Networks in Production Environments?. alibabacloud.com. Вересень 2020. Процитовано 16 серпня 2022.
- ↑ Datadog on eBPF. datadogon.datadoghq.com. Лютий 2021. Процитовано 16 серпня 2022.
- ↑ Runtime Security Monitoring with eBPF (PDF). sstic.org. Лютий 2021. Процитовано 16 серпня 2022.
- ↑ Our eBPF Journey at Datadog - Laurent Bernaille & Tabitha Sable, Datadog. youtube.com. Листопад 2020. Процитовано 16 серпня 2022.
- ↑ User Story - How Trip.com uses Cilium. cilium.io. Лютий 2020. Процитовано 16 серпня 2022.
- ↑ Trip.com: Stepping into Cloud Native Networking Era with Cilium+BGP. arthurchiao.art. Листопад 2020. Процитовано 16 серпня 2022.
- ↑ Keynote: Open Source Intrusion Detection for Containers at Shopify - Shane Lawrence & Kris Nóva (англ.), 4 вересня 2020, процитовано 9 лютого 2024
- ↑ Rogers, Patrick (15 серпня 2023). BPFAgent: eBPF for Monitoring at DoorDash - DoorDash Engineering Blog. DoorDash Engineering Blog (амер.). Процитовано 9 лютого 2024.
- ↑ Making eBPF work on Windows. cloudblogs.microsoft.com. Травень 2021. Процитовано 16 серпня 2022.
- ↑ Getting Linux based eBPF programs to run with eBPF for Windows. cloudblogs.microsoft.com. Лютий 2022. Процитовано 16 серпня 2022.
- ↑ Progress on making eBPF work on Windows. cloudblogs.microsoft.com. Листопад 2019. Процитовано 16 серпня 2022.
- ↑ Cilium Standalone Layer 4 Load Balancer XDP. cilium.io. Липень 2022. Процитовано 16 серпня 2022.
- ↑ Rate limiting access to internal services in a virtual network – Nick Bouliane, DigitalOcean (англ.), 19 серпня 2021, процитовано 4 лютого 2024
- ↑ Building a Secure and Maintainable PaaS - Bradley Whitfield, Capital One. youtube.com. Листопад 2020. Процитовано 16 серпня 2022.
- ↑ Why eBPF is changing the telco networking space – Daniel Bernier, Bell Canada (англ.), 31 серпня 2021, процитовано 9 лютого 2024
- ↑ Elastic Universal Profiling (англ.), процитовано 26 лютого 2024
- ↑ Think eBPF for Kernel Security Monitoring - Falco at Apple - Eric Sage & Melissa Kilby, Apple. youtube.com. Жовтень 2021. Процитовано 16 серпня 2022.
- ↑ eBPF & Cilium at Sky – Sebastian Duff, Anthony Comtois, Jospeh [sic] Samuel, Sky. youtube.com. Серпень 2021. Процитовано 16 серпня 2022.
- ↑ Running and orchestrating multiple XDP and TC programs – Brian Merrell, Walmart. youtube.com. Серпень 2021. Процитовано 16 серпня 2022.
- ↑ High Performance Load Balancing @Walmart – Kanthi Pavuluri & Karan Dalal, Walmart. youtube.com. Серпень 2021. Процитовано 16 серпня 2022.
- ↑ DIGLIM eBPF: secure boot at application level with minimal changes to distros - Roberto Sassu. youtube.com. Серпень 2022. Процитовано 16 серпня 2022.
- ↑ IKEA Private Cloud, eBPF Based Networking, Load Balancing, and Observability with... Karsten Nielsen. youtube.com. Травень 2022. Процитовано 16 серпня 2022.
- ↑ Panel Discussion: Is There Actually a Byte Behind All the Buzz? eBPF in Production! (англ.), 28 жовтня 2022, процитовано 9 лютого 2024
- ↑ Using user-space tracing to solve DNS problems – Andrius Grabauskas, Palantir (англ.), 19 серпня 2021, процитовано 9 лютого 2024
- ↑ Читання привілейованої пам'яті через бічний канал. googleprojectzero.blogspot.com. 3 січня 2018. Процитовано 16 серпня 2022.
- ↑ BPF та Spectre: Міграція від атак тимчасового виконання. popl22.sigplan.org. Процитовано 16 серпня 2022.
- ↑ bpf: Вимкнути безпривілейний bpf за замовчуванням. kernel.org. Процитовано 16 серпня 2022.
- Gregg, Brendan (Грудень 2019). BPF Performance Tools. Addison-Wesley. ISBN 978-0136554820.
- David Calavera, Lorenzo Fontana (Грудень 2019). Linux Observability With BPF. O'Reilly Media, Incorporated. ISBN 978-1492050209.
- Gregg, Brendan (Грудень 2020). Systems Performance, Second edition. ISBN 978-0136820154.
- Rice, Liz (Квітень 2022). What Is eBPF?. ISBN 978-1492097259.
- Rice, Liz (Квітень 2023). Learning eBPF: Programming the Linux Kernel for Enhanced Observability, Networking, and Security. O'Reilly Media. ISBN 978-1098135126.