Безопасные динамические программы и инструменты
eBPF — это технология, которая может запускать программы в привилегированном контексте , таком как ядро операционной системы . [5] Она является преемником механизма фильтрации Berkeley Packet Filter (BPF, где «e» изначально означало «расширенный») в Linux и также используется в несетевых частях ядра Linux.
Он используется для безопасного и эффективного расширения возможностей ядра во время выполнения, не требуя внесения изменений в исходный код ядра или загрузки модулей ядра . [6] Безопасность обеспечивается с помощью встроенного в ядро верификатора, который выполняет статический анализ кода и отклоняет программы, которые дают сбой, зависают или иным образом негативно влияют на работу ядра. [7] [8]
Эта модель проверки отличается от изолированных сред, где среда выполнения ограничена, а среда выполнения не имеет представления о программе. [9] Примерами программ, которые автоматически отклоняются, являются программы без строгих гарантий выхода (т. е. циклы for/while без условий выхода) и программы, разыменовывающие указатели без проверок безопасности. [10]
Дизайн
Загруженные программы, прошедшие проверку, либо интерпретируются , либо компилируются в ядре точно в срок (JIT-компиляция) для собственной производительности выполнения. Модель выполнения управляется событиями и, за редкими исключениями, выполняется до завершения [ 2], что означает, что программы могут быть прикреплены к различным точкам перехвата в ядре операционной системы и запускаться при возникновении события. Варианты использования eBPF включают (но не ограничиваются) сетевые функции, такие как XDP , трассировку и подсистемы безопасности . [5] Учитывая, что эффективность и гибкость eBPF открыли новые возможности для решения производственных проблем, Брендан Грегг назвал eBPF «суперспособностями для Linux». [11] Линус Торвальдс сказал: «BPF на самом деле был действительно полезен, и его настоящая сила в том, как он позволяет людям выполнять специализированный код, который не включается, пока его не попросят». [12] Благодаря своему успеху в Linux, среда выполнения eBPF была перенесена на другие операционные системы, такие как Windows . [4]
История
eBPF развился из классического Berkeley Packet Filter (cBPF, ретроспективно примененное название). На самом базовом уровне он ввел использование десяти 64-битных регистров (вместо двух 32-битных длинных регистров для cBPF), другую семантику перехода, инструкцию вызова и соответствующее соглашение о передаче регистров, новые инструкции и другую кодировку для этих инструкций. [13]
Архитектура и концепции
карты eBPF
Карты eBPF — это эффективные хранилища ключей/значений , которые находятся в пространстве ядра и могут использоваться для обмена данными между несколькими программами eBPF или для связи между приложением пользовательского пространства и кодом eBPF, работающим в ядре. Программы eBPF могут использовать карты eBPF для хранения и извлечения данных в широком наборе структур данных. Реализации карт предоставляются ядром ядра. Существуют различные типы, [44] включая хэш-карты, массивы и кольцевые буферы.
На практике карты eBPF обычно используются для таких сценариев, как запись программой пространства пользователя информации о конфигурации для извлечения программой eBPF, сохранение программой eBPF состояния для последующего извлечения другой программой eBPF (или будущего запуска той же программы) или запись программой eBPF результатов или показателей в карту для извлечения программой пространства пользователя, которая представит результаты. [45]
виртуальная машина eBPF
Виртуальная машина eBPF работает в ядре и принимает программу в форме инструкций байт-кода eBPF , которые преобразуются в машинные инструкции , которые выполняются на ЦП. Ранние реализации eBPF интерпретировали байт-код eBPF, но теперь это заменено процессом компиляции Just-in-Time (JIT) по причинам, связанным с производительностью и безопасностью. [45]
Виртуальная машина eBPF состоит из одиннадцати 64-битных регистров с 32-битными подрегистрами, счетчика программ и большого стекового пространства BPF размером 512 байт. Эти регистры общего назначения отслеживают состояние при выполнении программ eBPF. [46]
Хвостовые крики
Хвостовые вызовы могут вызывать и выполнять другую программу eBPF и заменять контекст выполнения , аналогично тому, как системный вызов execve() работает для обычных процессов. Это в основном позволяет программе eBPF вызывать другую программу eBPF. Хвостовые вызовы реализованы как длинный прыжок, повторно используя тот же стековый фрейм . Хвостовые вызовы особенно полезны в eBPF, где стек ограничен 512 байтами. Во время выполнения функциональность может быть добавлена или заменена атомарно, тем самым изменяя поведение выполнения программы BPF. [46] Популярный вариант использования хвостовых вызовов — это распределение сложности программ eBPF по нескольким программам. Другой вариант использования — замена или расширение логики путем замены содержимого массива программы во время его использования. Например, для обновления версии программы без простоя или для включения/отключения логики. [47]
Звонки BPF-BPF
Обычно считается хорошей практикой в разработке программного обеспечения группировать общий код в функцию, инкапсулирующую логику для повторного использования. До ядра Linux 4.16 и LLVM 6.0 типичная программа eBPF C должна была явно указывать компилятору встроить функцию, что приводило к объектному файлу BPF, содержащему дублирующие функции. Это ограничение было снято, и основные компиляторы eBPF теперь поддерживают написание функций естественным образом в программах eBPF. Это уменьшает размер сгенерированного кода eBPF, делая его более дружественным к кэшу инструкций ЦП. [45] [46]
верификатор eBPF
Верификатор является основным компонентом eBPF, и его главная обязанность — гарантировать, что программа eBPF безопасна для выполнения. Он выполняет статический анализ байт-кода eBPF, чтобы гарантировать ее безопасность. Верификатор анализирует программу для оценки всех возможных путей выполнения. Он проходит по инструкциям по порядку и оценивает их. Процесс проверки начинается с поиска в глубину по всем возможным путям программы, верификатор имитирует выполнение каждой инструкции, отслеживая состояние регистров и стека, если какая-либо инструкция может привести к небезопасному состоянию, проверка завершается неудачей. Этот процесс продолжается до тех пор, пока все пути не будут проанализированы или не будет обнаружено нарушение. В зависимости от типа программы верификатор проверяет наличие нарушений определенных правил. Эти правила могут включать проверку того, что программа eBPF всегда завершается в течение разумного периода времени (без бесконечных циклов или бесконечной рекурсии) , проверку того, что программе eBPF не разрешено читать произвольную память, поскольку возможность произвольного чтения памяти может привести к утечке конфиденциальной информации в программе, проверку того, что сетевым программам не разрешено получать доступ к памяти за пределами границ пакета , поскольку смежная память может содержать конфиденциальную информацию, проверку того, что программам не разрешено блокироваться , поэтому все удерживаемые спин-блокировки должны быть сняты, и только одна блокировка может удерживаться за раз, чтобы избежать взаимоблокировок в нескольких программах, проверку того, что программам не разрешено читать неинициализированную память. Это не исчерпывающий список проверок, которые выполняет верификатор, и из этих правил есть исключения. Примером является то, что программы трассировки имеют доступ к помощникам, которые позволяют им читать память контролируемым образом, но эти типы программ требуют привилегий root и, таким образом, не представляют угрозы безопасности. [47] [45]
Со временем верификатор eBPF развивался и включал в себя новые функции и оптимизации, такие как поддержка ограниченных циклов, устранение мертвого кода , проверка функций и обратные вызовы .
eBPF CO-RE (скомпилировать один раз — запустить везде)
Программы eBPF используют память и структуры данных из ядра. Некоторые структуры могут быть изменены между различными версиями ядра, изменяя структуру памяти. Поскольку ядро Linux постоянно развивается, нет гарантии, что внутренние структуры данных останутся теми же в разных версиях. CO-RE — это фундаментальная концепция в современной разработке eBPF, которая позволяет программам eBPF быть переносимыми между различными версиями и конфигурациями ядра. Она решает проблему различий в структуре ядра между различными дистрибутивами и версиями Linux . CO-RE включает BTF (формат типа BPF) — формат метаданных , который описывает типы, используемые в ядре и программах eBPF, и предоставляет подробную информацию о макетах структур, смещениях полей и типах данных. Он обеспечивает доступность типов ядра во время выполнения, что имеет решающее значение для разработки и проверки программ BPF. BTF включен в образ ядра ядер с поддержкой BTF. Специальные перемещения выдаются компилятором ( например, LLVM). Эти перемещения фиксируют высокоуровневые описания того, к какой информации программа eBPF намеревается получить доступ. Библиотека libbpf адаптирует программы eBPF для работы с макетом структуры данных на целевом ядре, где они запускаются, даже если этот макет отличается от ядра, где был скомпилирован код. Для этого libbpf нужна информация о перемещении BPF CO-RE, сгенерированная Clang как часть процесса компиляции. [45] Скомпилированная программа eBPF хранится в объектном файле ELF (Executable and Linkable Format) . Этот файл содержит информацию о типе BTF и перемещения, сгенерированные Clang . Формат ELF позволяет загрузчику eBPF (например, libbpf) динамически обрабатывать и корректировать программу BPF для целевого ядра . [48]
Брендинг
Псевдоним eBPF часто используется взаимозаменяемо с BPF, [2] [49] например, сообществом разработчиков ядра Linux. eBPF и BPF упоминаются как название технологии, как LLVM . [2] eBPF произошел от машинного языка для виртуальной машины фильтрации в Berkeley Packet Filter как расширенная версия, но поскольку его варианты использования переросли сетевые технологии, сегодня «eBPF» предпочтительно интерпретируется как псевдоаббревиатура . [ 2]
Пчела является официальным логотипом eBPF. На первом саммите eBPF было проведено голосование, и талисман пчелы был назван «eBee». [50] [51] Первоначально логотип был создан Вадимом Щеколдиным. [51] Ранее существовали и неофициальные талисманы eBPF, [52] но они не получили широкого распространения.
Управление
Фонд eBPF был создан в августе 2021 года с целью расширения вкладов, вносимых для расширения мощных возможностей eBPF и выхода за рамки Linux. [1] Среди основателей — Meta , Google , Isovalent, Microsoft и Netflix . Цель — собирать, составлять бюджет и тратить средства на поддержку различных проектов с открытым исходным кодом, открытыми данными и/или открытыми стандартами, связанных с технологиями eBPF [53], чтобы и дальше стимулировать рост и принятие экосистемы eBPF. С момента основания к ним также присоединились Red Hat , Huawei , Crowdstrike , Tigera, DaoCloud, Datoms, FutureWei. [54]
Принятие
eBPF был принят на вооружение рядом крупных производственных пользователей, например:
- Meta использует eBPF через свой балансировщик нагрузки Katran уровня 4 для всего трафика, идущего на facebook.com [55] [56] [57] [31]
- Google использует eBPF в GKE , разработал и использует BPF LSM для замены аудита, а также использует eBPF для работы в сети [29] [58] [59] [60]
- Cloudflare использует eBPF для балансировки нагрузки, защиты от DDoS-атак и обеспечения безопасности [61] [62] [63] [64] [65]
- Netflix использует eBPF для наблюдения за всей сетью и диагностики производительности [66] [67]
- Dropbox использует eBPF через Katran для балансировки нагрузки уровня 4 [68]
- Android использует eBPF для NAT46 и мониторинга трафика [69] [70] [71]
- Samsung Galaxy использует eBPF для сетевых решений [72]
- Yahoo! Inc использует eBPF через Cilium для балансировки нагрузки уровня 4 [73]
- LinkedIn использует eBPF для обеспечения наблюдаемости инфраструктуры [74]
- Alibaba использует eBPF для балансировки нагрузки Kubernetes Pod [75]
- Datadog использует eBPF для сетевых подключений и обеспечения безопасности Kubernetes Pod [76] [77] [78]
- Trip.com использует eBPF для сетей Kubernetes Pod [79] [80]
- Shopify использует eBPF для обнаружения вторжений через Falco [81]
- DoorDash использует eBPF через BPFAgent для мониторинга на уровне ядра [82]
- Microsoft перенесла eBPF и XDP в Windows [83] [84] [85]
- Seznam использует eBPF через Cilium для балансировки нагрузки уровня 4 [86]
- DigitalOcean использует eBPF и XDP для ограничения скорости доступа к внутренним сервисам в своей виртуальной сети [87]
- CapitalOne использует eBPF для сетей Kubernetes Pod [88]
- Bell Canada использует eBPF для модернизации телекоммуникационных сетей с помощью SRv6 [89]
- Elastic_NV использует eBPF для профилирования кода как часть своего предложения по наблюдаемости [90]
- Apple использует eBPF для безопасности Kubernetes Pod [91]
- Sky использует eBPF для сетей Kubernetes Pod [92]
- Walmart использует eBPF для балансировки нагрузки уровня 4 [93] [94]
- Huawei использует eBPF через свою систему безопасной загрузки DIGLIM [95]
- Ikea использует eBPF для сетей Kubernetes Pod [96]
- The New York Times использует eBPF для сетевого взаимодействия [97]
- Red Hat использует eBPF в больших масштабах для балансировки нагрузки и трассировки в своем частном облаке
- Palantir Technologies использует eBPF для отладки сетевых проблем в крупномасштабных кластерах Kubernetes [98]
Безопасность
Благодаря простоте программирования eBPF использовался в качестве инструмента для реализации микроархитектурных атак по сторонним каналам синхронизации, таких как Spectre, против уязвимых микропроцессоров . [99] В то время как непривилегированный eBPF реализовал смягчение последствий атак с использованием кратковременного выполнения, [100] непривилегированное использование в конечном итоге было отключено сообществом разработчиков ядра по умолчанию для защиты от использования в случае будущих уязвимостей оборудования. [101]
Смотрите также
Ссылки
- ^ abc "Meta, Google, Isovalent, Microsoft и Netflix запускают eBPF Foundation как часть Linux Foundation". Linux Foundation . 12 августа 2021 г. Получено 1 июля 2022 г.
- ^ abcde "BPF Internals". Конференция USENIX LISA 2021. 1 июня 2021 г. Получено 1 июля 2022 г.
- ^ "eBPF и Kubernetes: маленькие помощники для масштабирования микросервисов". CNCF KubeCon + CloudNativeCon Europe 2020. 19 августа 2020 г. Получено 1 июля 2022 г.
- ^ abc "Making eBPF work on Windows". Блог Microsoft Open Source . 10 мая 2021 г. Получено 1 июля 2022 г.
- ^ ab "eBPF Documentation: What is eBPF?". eBPF.io . Получено 1 июля 2022 г. .
- ^ "eBPF - Переосмысление ядра Linux". QCon 2020. Получено 1 июля 2022 г.
- ^ "Безопасные программы. Основа BPF". eBPF Summit 2021. 8 ноября 2020. Получено 1 июля 2022 .
- ^ "BPF и Spectre: смягчение атак с транзиентным выполнением". Конференция POPL 2022. 22 января 2022 г. Получено 1 июля 2022 г.
- ^ "eBPF - Тихая революция платформ из облака" (PDF) . SIGCOMM 2023, 1-й семинар по eBPF и расширениям ядра . 10 сентября 2023 г. . Получено 5 октября 2023 г. .
- ^ Хедам, Никлас (26 мая 2023 г.). «eBPF — с точки зрения программиста» (PDF) . doi :10.13140/RG.2.2.33688.11529/4.
- ^ "Linux BPF Superpowers". Блог Брендана Грегга . 5 марта 2016 г. Получено 1 июля 2022 г.
- ^ "Линус Торвальдс говорит о возвращении к работе над Linux". Интервью zdnet с Линусом Торвальдсом . 23 октября 2018 г. Получено 1 июля 2022 г.
- ^ "Classic BPF vs eBPF". LWN . Март 2014. Получено 6 января 2023 .
- ^ "net: filter: Just In Time compiler". lore.kernel.org . Апрель 2011 . Получено 1 июля 2022 .
- ^ «Еще один новый подход к seccomp». LWN . 1 января 2012 г. Получено 1 июля 2022 г.
- ^ "Обновления BPF". lore.kernel.org . Март 2014 . Получено 1 июля 2022 .
- ^ "Linux kernel 3.18, раздел 1.3. Системный вызов bpf() для программ виртуальной машины eBFP [sic]". kernelnewbies.org . 7 декабря 2014 г. . Получено 6 сентября 2019 г. .
- ^ "С днем рождения, BPF!". lore.kernel.org . Сентябрь 2014 г. Получено 1 июля 2022 г.
- ^ "трассировка: прикрепить программы eBPF к kprobes". lore.kernel.org . Март 2015 . Получено 1 июля 2022 .
- ^ "eBPF support for cls_bpf". lore.kernel.org . Март 2015 . Получено 1 июля 2022 .
- ^ "net, sched: add clsact qdisc". lore.kernel.org . Январь 2016 . Получено 1 июля 2022 .
- ^ ab "eBPF-based Networking, Observability, Security". cilium.io . Январь 2016 . Получено 1 июля 2022 .
- ^ "LLVM 3.7 Release Notes". releases.llvm.org . Август 2015. Получено 1 июля 2022 .
- ^ "bcc: Укрощение Linux 4.3+ Трассировка суперспособностей". brendangregg.com . Сентябрь 2015 . Получено 1 июля 2022 .
- ^ "Добавить драйвер bpf hook для раннего отбрасывания и пересылки пакетов". lore.kernel.org . Июль 2016 . Получено 1 июля 2022 .
- ^ "eCHO episode 9: XDP and Load Balancing". youtube.com . Июнь 2021 . Получено 1 июля 2022 .
- ^ Хёйланд-Йоргенсен, Токе; Брауэр, Йеспер Дангаард; Боркманн, Даниэль; Фастабенд, Джон; Герберт, Том; Ахерн, Дэвид; Миллер, Дэвид (декабрь 2018 г.). «Путь данных eXpress: быстрая программируемая обработка пакетов в ядре операционной системы». Труды 14-й Международной конференции по новым сетевым экспериментам и технологиям . стр. 54–66. doi : 10.1145/3281411.3281443 . ISBN 9781450360807. S2CID 53779310.
- ^ "Cilium - Fast IPv6 Container Networking with BPF and XDP". slideshare.net . Август 2016. Получено 1 июля 2022 .
- ^ ab "Новый GKE Dataplane V2 повышает безопасность и видимость контейнеров". cloud.google.com . Май 2021 . Получено 16 августа 2022 .
- ^ "перенастройка кольца nfp и поддержка XDP". lore.kernel.org . Ноябрь 2016 . Получено 1 июля 2022 .
- ^ ab "XDP 1,5 года в производстве. Эволюция и извлеченные уроки". lpc.events . Ноябрь 2018 . Получено 16 августа 2022 .
- ^ "pull-request: bpf 2017-11-23". lore.kernel.org . Ноябрь 2017 . Получено 1 июля 2022 .
- ^ "tools: add bpftool". lore.kernel.org . Сентябрь 2017 . Получено 1 июля 2022 .
- ^ "Представляем поддержку AF_XDP". lore.kernel.org . Январь 2018 . Получено 1 июля 2022 .
- ^ «Драйвер режима опроса AF_XDP» . doc.dpdk.org . Август 2022 года . Проверено 16 августа 2022 г.
- ^ "BPF приходит в брандмауэры". lwn.net . Февраль 2018. Получено 1 июля 2022 .
- ^ «Почему сообщество разработчиков ядра заменяет iptables на BPF?». cilium.io . Апрель 2018 г. Получено 1 июля 2022 г.
- ^ "bpftrace (DTrace 2.0) для Linux 2018". brendangregg.com . Октябрь 2018 . Получено 16 августа 2022 .
- ^ «Объединение kTLS и BPF для интроспекции и применения политик» (PDF) . vger.kernel.org . Ноябрь 2018 г. . Получено 1 июля 2022 г. .
- ^ "BTF deduplication and Linux kernel BTF". nakryiko.com . Ноябрь 2018 . Получено 1 июля 2022 .
- ^ "BPF Performance Tools (книга)". brendangregg.com . Декабрь 2019 . Получено 16 августа 2022 .
- ^ "Политика MAC и аудита с использованием eBPF (KRSI)". lore.kernel.org . Март 2020 . Получено 16 августа 2022 .
- ^ "BPF in GCC". lwn.net . Сентябрь 2020 г. Получено 16 августа 2022 г.
- ^ "bpf.h - include/uapi/linux/bpf.h - исходный код Linux v5.15.86 - Bootlin". elixir.bootlin.com . Получено 2024-08-01 .
- ^ abcde Райс, Лиз (2023). Изучение eBPF: программирование ядра Linux для улучшения наблюдаемости, сетевых возможностей и безопасности (первое издание). Севастополь, Калифорния: O'Reilly Media. ISBN 978-1-0981-3512-6. OCLC 1353981026.
- ^ abc "Архитектура BPF — документация Cilium 1.16.0". docs.cilium.io . Получено 2024-08-01 .
- ^ ab "Tail calls - eBPF Docs". ebpf-docs.dylanreimerink.nl . Получено 2024-08-04 .
- ^ "BPF CO-RE - eBPF Docs". ebpf-docs.dylanreimerink.nl . Получено 2024-08-07 .
- ^ Брендан Грегг (декабрь 2019 г.). Инструменты производительности BPF . Addison-Wesley. ISBN 978-0136554820.
- ^ "eBPF Summit Day Two". cilium.io . Октябрь 2020 . Получено 1 июля 2022 .
- ^ ab "Как зовут пчелу?". ebpf.io . Получено 1 июля 2022 г. .
- ^ "eBPF: One Small Step". Блог Брендана Грегга . Май 2015 г. Получено 1 июля 2022 г.
- ^ "eBPF Foundation Charter". ebpf.foundation . Июнь 2021 г. Получено 16 августа 2022 г.
- ^ "eBPF Foundation Governance". ebpf.foundation . Август 2022 . Получено 16 августа 2022 .
- ^ "Открытый исходный код Katran, масштабируемого сетевого балансировщика нагрузки". fb.com . Май 2018. Получено 16 августа 2022 .
- ^ "BPF at Facebook". youtube.com . Декабрь 2019. Получено 16 августа 2022 .
- ^ "От XDP до сокета". lpc.events . Сентябрь 2021 . Получено 16 августа 2022 .
- ^ "eCHO episode 29: BPF LSM with KP Singh". youtube.com . Ноябрь 2021 . Получено 16 августа 2022 .
- ^ "Аудит безопасности BPF в Google - Брендан Джекман/КП Сингх". youtube.com . Ноябрь 2021 г. . Получено 16 августа 2022 г. .
- ^ "Замена HTB на EDT и BPF". netdevconf.info . Июль 2020 . Получено 16 августа 2022 .
- ^ «Архитектура Cloudflare и как BPF пожирает мир». blog.cloudflare.com . Май 2019 . Получено 16 августа 2022 .
- ^ "Здесь тесно!". blog.cloudflare.com . Октябрь 2019 г. Получено 16 августа 2022 г.
- ^ "Готовый к производству eBPF, или как мы исправили API сокетов BSD". blog.cloudflare.com . Февраль 2022 . Получено 16 августа 2022 .
- ^ "Устранение уязвимостей безопасности в ядре Linux с помощью модуля безопасности eBPF Linux". blog.cloudflare.com . Июнь 2022 . Получено 16 августа 2022 .
- ^ "Unimog - балансировщик нагрузки на периферии Cloudflare". blog.cloudflare.com . Сентябрь 2020 . Получено 16 августа 2022 .
- ^ «Как Netflix использует журналы потоков eBPF в масштабе для понимания сети». netflixtechblog.com . Июнь 2021 г. Получено 16 августа 2022 г.
- ^ «Расширение Vector с помощью eBPF для проверки производительности хоста и контейнера». netflixtechblog.com . Февраль 2019 г. Получено 16 августа 2022 г.
- ^ "Инфраструктура трафика Dropbox: Edge network". dropbox.tech . Октябрь 2018 г. Получено 16 августа 2022 г.
- ^ "eBPF Traffic Monitoring". source.android.com . Август 2022. Получено 16 августа 2022 .
- ^ "Расширение ядра с помощью eBPF". source.android.com . Август 2022 . Получено 16 августа 2022 .
- ^ "Перевод NAT46 с BPF". lore.kernel.org . Апрель 2022 . Получено 16 августа 2022 .
- ^ "BPF для Android: как мы используем BPF для наших сетевых решений - Мадхан Радж Канагаратинам". www.youtube.com . Февраль 2024 . Получено 19 февраля 2022 .
- ^ Программное обеспечение L4 Load Balancing для Kubernetes Services в Yahoo! – Картикеян Тангарадж, Verizon Media, 19 августа 2021 г. , получено 03.02.2024
- ^ "Skyfall: агент eBPF для обеспечения наблюдаемости инфраструктуры". www.linkedin.com . Получено 2024-02-03 .
- ^ «Как Alibaba Cloud создает высокопроизводительные облачные сети Pod в производственных средах?». alibabacloud.com . Сентябрь 2020 г. Получено 16 августа 2022 г.
- ^ "Datadog on eBPF". datadogon.datadoghq.com . Февраль 2021 . Получено 16 августа 2022 .
- ^ "Мониторинг безопасности во время выполнения с помощью eBPF" (PDF) . sstic.org . Февраль 2021 г. . Получено 16 августа 2022 г. .
- ^ «Наше путешествие по eBPF в Datadog - Лоран Бернай и Табита Сейбл, Datadog» . youtube.com . ноябрь 2020 года . Проверено 16 августа 2022 г.
- ^ «История пользователя — Как Trip.com использует Cilium». cilium.io . Февраль 2020 . Получено 16 августа 2022 .
- ^ «Trip.com: Вступление в эру облачных сетей с Cilium+BGP». arthurchiao.art . Ноябрь 2020 г. Получено 16 августа 2022 г.
- ↑ Основной доклад: Open Source Intrusion Detection for Containers at Shopify — Шейн Лоуренс и Крис Нова, 4 сентября 2020 г. , получено 09.02.2024 г.
- ^ Роджерс, Патрик (15.08.2023). "BPFAgent: eBPF для мониторинга в DoorDash - блог инженеров DoorDash". Блог инженеров DoorDash . Получено 09.02.2024 .
- ^ "Making eBPF work on Windows". cloudblogs.microsoft.com . Май 2021 . Получено 16 августа 2022 .
- ^ «Как запустить программы eBPF на базе Linux с помощью eBPF для Windows». cloudblogs.microsoft.com . Февраль 2022 г. . Получено 16 августа 2022 г. .
- ^ «Прогресс в работе eBPF на Windows». cloudblogs.microsoft.com . Ноябрь 2019 г. Получено 16 августа 2022 г.
- ^ "Cilium Standalone Layer 4 Load Balancer XDP". cilium.io . Июль 2022 . Получено 16 августа 2022 .
- ^ Ограничение скорости доступа к внутренним сервисам в виртуальной сети – Ник Булиан, DigitalOcean, 19 августа 2021 г. , получено 04.02.2024
- ^ «Создание безопасной и обслуживаемой PaaS — Брэдли Уитфилд, Capital One». youtube.com . Ноябрь 2020 г. Получено 16 августа 2022 г.
- ^ Почему eBPF меняет телекоммуникационное сетевое пространство – Дэниел Бернье, Bell Canada, 31 августа 2021 г. , получено 09.02.2024 г.
- ^ Elastic Universal Profiling , получено 2024-02-26
- ^ «Подумайте об eBPF для мониторинга безопасности ядра — Falco в Apple — Эрик Сейдж и Мелисса Килби, Apple». youtube.com . Октябрь 2021 г. Получено 16 августа 2022 г.
- ^ "eBPF & Cilium at Sky – Себастьян Дафф, Энтони Комтуа, Джозеф [так в оригинале] Сэмюэл, Sky". youtube.com . Август 2021 . Получено 16 августа 2022 .
- ^ «Запуск и организация нескольких программ XDP и TC – Брайан Меррелл, Walmart». youtube.com . Август 2021 г. Получено 16 августа 2022 г.
- ^ «Высокопроизводительная балансировка нагрузки @Walmart – Канти Павулури и Каран Далал, Walmart». youtube.com . Август 2021 г. . Получено 16 августа 2022 г. .
- ^ "DIGLIM eBPF: безопасная загрузка на уровне приложений с минимальными изменениями в дистрибутивах - Роберто Сассу". youtube.com . Август 2022 . Получено 16 августа 2022 .
- ^ «Частное облако IKEA, сетевое взаимодействие на основе eBPF, балансировка нагрузки и наблюдаемость с... Карстеном Нильсеном». youtube.com . Май 2022 г. Получено 16 августа 2022 г.
- ^ Панельная дискуссия: есть ли на самом деле байт за всей этой шумихой? eBPF в производстве!, 28 октября 2022 г. , получено 09.02.2024
- ^ Использование трассировки пользовательского пространства для решения проблем DNS – Андрюс Грабаускас, Palantir, 19 августа 2021 г. , получено 09.02.2024
- ^ "Чтение привилегированной памяти с помощью побочного канала". googleprojectzero.blogspot.com . 3 января 2018 г. . Получено 16 августа 2022 г. .
- ^ "BPF и Spectre: смягчение атак с использованием транзиентного выполнения". popl22.sigplan.org . Получено 16 августа 2022 г. .
- ^ "bpf: Запретить непривилегированный bpf по умолчанию". kernel.org . Получено 16 августа 2022 г. .
Дальнейшее чтение
- Грегг, Брендан (декабрь 2019 г.). Инструменты производительности BPF . Addison-Wesley. ISBN 978-0136554820.
- Дэвид Калавера, Лоренцо Фонтана (декабрь 2019 г.). Linux Observability With BPF . O'Reilly Media, Incorporated. ISBN 978-1492050209.
- Грегг, Брендан (декабрь 2020 г.). Производительность систем, второе издание . ISBN 978-0136820154.
- Райс, Лиз (апрель 2022 г.). Что такое eBPF? . ISBN 978-1492097259.
- Райс, Лиз (апрель 2023 г.). Изучение eBPF: программирование ядра Linux для улучшенной наблюдаемости, сетевых возможностей и безопасности . O'Reilly Media. ISBN 978-1098135126.
- Thaler, Dave, ред. (октябрь 2024 г.). Архитектура набора инструкций BPF (ISA). IETF . doi : 10.17487/RFC9669 . RFC 9669 . Получено 05.01.2024 .
Внешние ссылки
- eBPF.io — Введение, обучающие материалы и ресурсы сообщества eBPF
- eBPF.foundation — сайт eBPF Foundation Linux Foundation
- Учебное пособие для разработчиков eBPF: пошаговое изучение eBPF с примерами
- Документальный фильм eBPF - Документальный фильм о зарождении eBPF