The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Архитектура набора команд BPF получила статус предложенного стандарта

06.11.2024 14:38

Комитет IETF (Internet Engineering Task Force), занимающийся развитием протоколов и архитектуры интернета, завершил формирование RFC для архитектуры набора команд BPF и опубликовал связанную с ним спецификацию под идентификатором RFC 9669. RFC получил статус "Предложенного стандарта", после чего начнётся работа по приданию RFC статуса чернового стандарта (Draft Standard), фактически означающего полную стабилизацию и учёт всех высказанных замечаний.

Опубликованная спецификация описывает набор инструкций байткода BPF и низкоуровневую виртуальную машину, применяемую в подсистеме ядра Linux eBPF для выполнения внешних обработчиков, способных на лету менять поведение системы без необходимости изменения кода ядра. По сути eBPF реализует простейший виртуальный процессор со своим набором регистров, RISC-подобными инструкциями, стеком и счётчиком команд. Программы BPF обычно создаются на подмножестве языка Си, после чего компилируются в байткод, пригодный для выполнения в виртуальной машине. Виртуальная машина может выполнять BPF-программы как с использованием интерпретации, так и применяя JIT-компиляцию для трансляции байткода на лету в машинные инструкции.

Предполагается, что стандартизация архитектуры набора команд BPF станет стимулом для создания сторонних реализаций, совместимых с виртуальной машиной eBPF и способных выполнять BPF-программы, написанные для ядра Linux. Над созданием подобных виртуальных машин работают некоторые производители сетевых адаптеров, развивающие средства для аппаратного ускорения выполнения BPF-обработчиков сетевых пакетов. Идея в том, чтобы расширить возможности подсистемы XDP (eXpress Data Path) для выполнения BPF-программ не только на уровне сетевого драйвера, но и на стороне сетевой карты.

Например, компания Netronome добавила поддержку BPF в адаптер Netronome Agilio CX SmartNIC и предоставила коллекцию примеров универсальных BPF-программ, которые могут выполняться не только при помощи CPU в ядре с любым XDP-совместимым драйвером, но и на стороне сетевой карты, что позволяет принимать решения о отбрасывании, изменении или перенаправлении пакетов не тратя ресурсы CPU. Отдельно развивается технология XRP (eXpress Resubmission Path), позволяющая использовать BPF для выноса некоторых операций с накопителями NVMe, таких как работа с индексами и агрегирование данных, на уровень драйвера NVMe или на внешнее устройство.

Отмечается, что более широкому внедрению подобных возможностей до сих пор мешали риски, связанные с нарушением совместимости и необходимостью отслеживания состояния eBPF в ядре. Из-за данных рисков некоторые производители отложили включение средств аппаратного ускорения BPF в свои устройства до формирования стандарта.

  1. Главная ссылка к новости (https://mailarchive.ietf.org/a...)
  2. OpenNews: В ядре Linux появится возможность использования eBPF для создания планировщиков задач
  3. OpenNews: Использование BPF-программ для решения проблем в устройствах ввода
  4. OpenNews: Проект bpftime развивает реализацию eBPF, работающую в пространстве пользователя
  5. OpenNews: BumbleBee - инструментарий для упрощения создания и распространения eBPF-программ
  6. OpenNews: Создана организация eBPF Foundation
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/62187-bpf
Ключевые слова: bpf, rfc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (44) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 15:06, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    ну вот и сбылась мечта бекдощиков, виртуальная машина в контексте ядра.
     
     
  • 2.18, inklesspen (ok), 17:54, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Так eBPF в ядре с 2011 года 😀
     
     
  • 3.24, Аноним (24), 18:35, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
      Ну во-первых, пока что широкого применения не замечено, не очень распространено. Во-вторых, можно ограничить загрузку программ только одним рутом.
      Дальше, может появиться юзерспейсная проприетарщина, которая тащит с собой байткод и требует, чтобы для работы приложения этот байткод загрузили в ядро. Железки вот уже с собственной виртуальной машиной на подходе. Пока сетевые и NVMe, но потом и видяхи также. Соответственно, появятся и игрульки с приложенным таким байткодом, которые захотят, чтоб это код предварительно вгрузили.
      А поскольку байткод аппаратно независим, вот тут-то и расцветут байткодобекдоры, байткодовирусы, байткодочерви от x86_64 до роутеров и Малинок с Апельсинками. Эпоха Linux-вирусов, о которой так долго говорили, наконец наступит! Да что там Linux-вирусов - межсистемных (ага. и FreeBSD c OpenBSD) и аппаратно кроссархитекурных.
     
     
  • 4.29, Аноним (-), 18:57, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >   Ну во-первых, пока что широкого применения не замечено, не очень
    > распространено. Во-вторых, можно ограничить загрузку программ только одним рутом.

    Угу, пример ХЗ отлично показал, что ты можешь скачать официальную либу из официальной репы и там будет бекдор от анона.
    И помог тебе твой рут?

    > А поскольку байткод аппаратно независим, вот тут-то и расцветут байткодобекдоры, байткодовирусы, байткодочерви от x86_64 до роутеров и Малинок с Апельсинками.

    Эпоха бекдоров в линуксе уже - вон Bvp47 жил в ядре 10 лет.
    И это не считая всяких Miraiʼи, Rexobʼы, Xor DDoSʼы и прочую "радость".


     
     
  • 5.31, Аноним (24), 19:08, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Если официальном репозитории вашего нынешнего дистра лежат пакеты с бекдорами от васянов - меняйте дистр.
     
     
  • 6.37, Аноним (-), 19:58, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Если официальном репозитории вашего нынешнего дистра лежат пакеты с бекдорами от васянов - меняйте дистр.

    А если васяном оказался сам разработчик)?
    Или кто-то просто ошибся в коде (чесно-чесно верим))?


     
  • 4.35, Аноним (35), 19:28, 06/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.34, Аноним (-), 19:26, 06/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.41, Аноним (41), 20:29, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > ну вот и сбылась мечта бекдощиков, виртуальная машина в контексте ядра.

    И номер стандарта то какой хороший. Толи 96, толи 69... а впрочем разве между этими позами есть разница?! :)

     

  • 1.2, аНОНИМ (?), 15:11, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    В нетбсд вообще луа в ядре, и ничо.
     
     
  • 2.4, Аноним (4), 15:18, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Нетбсд - это неуловимый Джо. Они могут хоть бэйсик в ядро встрить.
     

  • 1.3, Аноним (4), 15:14, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    >более широкому внедрению подобных возможностей до сих пор мешали риски, связанные с нарушением совместимости и необходимостью отслеживания состояния eBPF в ядре

    Ждем первый вирус. Интересно, это будет шифровальщик или майнер?

     
     
  • 2.7, Аноним (7), 15:43, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > шифровальщик или майнер?

    прозрачный бекап файлов и/или дампов памяти прямо в Ленгли и Форт-Мид

     
     
  • 3.42, Аноним (41), 20:33, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > прозрачный бекап файлов и/или дампов памяти прямо в Ленгли и Форт-Мид

    Вот они заманаются то мои виртуалки по 20 гигз копировать и хранить :). Врядли они допрут рефлинкать их на образ оригинала, а без этого им придется только под одного меня целый датацентр построить.

     
  • 2.9, Жироватт (ok), 15:54, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > ЕГГОГ: This eBPF module need kernel version 7.1.1-RC1 or more. You 7.0.1 is too old to run this module
    > ЕГГОГ: Этот модуль требует наличие флага компиляции -iSCISIv13.199.1
    > Для того чтобы запустить наш вирос, вам нужно: перенести файл wetpussy.ebpf по адресу /local/share/ebpf; выставить права как указано на картинке через утилиту пакет ebpf_chmod (обычный chmod не работает); три раза на промт ввести пароль su; отключить проверку подписи, добавив в гроб параметр ядра FukinSingCHECKPleaseDoNotSetZero=0; поскакать на одной ножке; найти под подушкой красный айфон и тогда, возможно, если процесс не упадет, не найдя пакетов из core, мы вам зашифруем всю систему.
     
  • 2.11, crypt (ok), 16:15, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    я думаю, это будет какой-нибудь проприетарный сетевой драйвер от китайцев или nsa, который будет заодно подгружать свой payload.
     
  • 2.25, товарищ майор (?), 18:41, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А мы вам предложим резидентный BPF-антивирус. Конечно же, от Касперского, а вы что подумали?
     
     
  • 3.36, Анон36 (?), 19:49, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    тов. майёр, зайдите завтра в отдел кадров, распишитесь в выговоре о НСС

    # ll /opt/kaspersky/kesl/lib64/ | grep 'libbpf'
    -rw-r--r--  2 root root   376128 ноя  4 19:02 libbpf.so
    lrwxrwxrwx  2 root root        9 ноя  4 19:02 libbpf.so.1 -> libbpf.so

     

  • 1.5, Аноним (5), 15:39, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +7 +/
    Новость умалчивает, что продвижением eBPF как стандарта для всех ОС среди прочих является Microsoft.
    https://github.com/microsoft/ebpf-for-windows#architectural-overview

    Тут нужно вспомнить, что в Windows 2003 была добавлена отдалённо-схожий набор технологий, который позволял определять собственные куски сетевого стека NDIS еще старых версий, кастомные отладчики, а в последствии хуки на антивирусы и прочие фильтры. Он выполнял примерно те же задачи, то есть позволял кастомному коду встроиться в пайплайны в ядре. И эти технологии даже работали, но с ними была тонна проблем.
    1. Отсутствие вменяемой документации и стабильного API. То есть если ты не вендор-партнёр, то написать такое не выйдет.
    2. Технические ограничения, которые они вводили в развитие сетевого стека NDIS.
    3. Абсолютная несовместимость с какими бы то ни было способами разгрузки (offload) для IO на ASIC-ах.
    4. Нынешнее состояние minifilter drivers и Virtual File System в целом в Windows весьма плачевное

    Вот посмотрите, будет как с Kerberos, который придумали для UNIX, но массово он применяется именно в Windows.

     
     
  • 2.17, Аноним (1), 17:42, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > среди прочих является Microsoft.

    ща Нах попросит вас понюхать кое-что :)

     
  • 2.19, Аноним (19), 17:56, 06/11/2024 Скрыто ботом-модератором     [к модератору]
  • +/
     

  • 1.6, Аноним (6), 15:41, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Как это отключить?
     
     
  • 2.8, Аноним (8), 15:53, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Отключить стандарт? Найти всех, кто за него топит и сделать им предложение, от которого они не смогут отказаться.
     
  • 2.10, scriptkiddis (?), 15:56, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В этом и пичаль в последних ядрах это уже сильно увязло и фиг отключишь
     
     
  • 3.43, Аноним (41), 20:35, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > В этом и пичаль в последних ядрах это уже сильно увязло и фиг отключишь

    Да вроде отключается себе. Опять тут какие-то теоретики опеннетовские вещают, которые это даже на картинке не видели.

     
  • 2.12, Аноним (4), 16:23, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Самому компилять ядро с выключенной поддержкой всего не нужного
     
     
  • 3.20, Аноним (19), 17:59, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И отлаживать. И бросить все остальные дела.
     
  • 2.21, Аноним (19), 18:00, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    И уйти в маргиналы. Как systemd?
     

  • 1.13, nuclight (??), 17:04, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Ох, это адовое говнище всё-таки пошло в стандарт. В IETF иногда такое пропихивают, хоть стой, хоть падай, то DNSSEC был, теперь eBPF лезет... а получится как с Netlink, RFC есть, а толку.

    Ничо-ничо, вот я допроектирую свой BPF64, напишу разгромную статью на Хабр, будет куда удобнее для производителей железа.

     
     
  • 2.22, ШирлаМырла (?), 18:02, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В проекте не забудь про девочек и этот... Блекджек!
     
  • 2.44, Аноним (-), 20:38, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Ничо-ничо, вот я допроектирую свой BPF64, напишу разгромную статью на Хабр,
    > будет куда удобнее для производителей железа.

    К тому моменту - производители уже возьмут в оборот вот это. А твое поделие будет интересно - полутора академикам. Т.е. чипы переделывать очень дорого - ты узнаешь что такое too little and too late прямо на своей шкурке, когда на тебя все забьют.

    А какие проблемы с нетлинком, в линухах работает, и даже вроде бсды какие-то стали пыжиться имплементить оный.

    И если вам что-то не нравится - берите стандарт OOXML от ISO, вот это я понимаю, чтиво!

     

  • 1.14, Аноним (14), 17:28, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Зачем пакетому фильтру виртуальная машина?
     
     
  • 2.16, Аноним (16), 17:41, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Нужны динамические правила и трафика там бегает на гигабиты на системе уровня core2. Как-то надо решать.
     

  • 1.15, Аноним (15), 17:41, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Неплохо-неплохо.
    Опять корпы (судя по нытью анонов в этот раз Мелкомягкие) делают для опенсорса и ядра больше, чем "сообщество какиров одиночек".
    Не то чтобы я сильно удивился...
     
     
  • 2.26, Аноним (24), 18:49, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Чего в данном случае они больше делают? Больше коричневой субстанции добавляют?
     

  • 1.23, Аноним (23), 18:24, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А что за нытье про вирусы?
    Если кому-то хватит привилегий запустить пэйлоад BPF, то и .ko он без проблем запустит.
     
     
  • 2.27, Аноним (27), 18:52, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это значит что для вирей можно делать более удобный и близкий к ядру вход?
     
     
  • 3.30, Аноним (30), 19:01, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ничем он не более удобен, а наоборот. Людей, пишущих на Си на порядки больше, чем знающих BPF на таком уровне. Если у тебя в системе кто-то левый может запустить такие команды, не умеет уже никакого значения, BPF это или нет
     
     
  • 4.32, Аноним (32), 19:12, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > знающих BPF на таком уровне

    На каком, простите, уровне? Книжка про BPF бесплатно в интернете доступна даже из-за забора. Если знаешь английский хоть немного, то не составит труда прочитать. Сам же BPF прост, даже примитивен. Если умеешь не только кодить на Си, но ещё и немного программировать, то разберёшься за пару дней, максимум за неделю.

     
     
  • 5.39, nuclight (??), 20:14, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Разбежался, лол. Там сходу же будет, что твой код не пройдет ядерный верификатор. А потом еще, и еще, и вот еще таким способом тоже не пройдет. Хотя код на Си вполне валидный. У меня в итоге до заведения тикета (https://github.com/iovisor/bcc/issues/5062) в clang дошло, между прочим.

    А когда пройдет верификатор, столкнешься с тем, что предоставляемый инструментарий дичайше кастрирован. Нее, обычного Си-человека за этот отстой писать не посадишь - дофига усилий, включая дизассемблер этого самого BPF.

     
  • 4.33, Аноним (24), 19:15, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >Людей, пишущих на Си на порядки больше, чем знающих BPF на таком уровне.
    >Программы BPF обычно создаются на подмножестве языка Си, после чего компилируются в байткод, пригодный для выполнения в виртуальной машине.

    Так что, уметь достаточно в кодинг на C.

     
  • 2.28, Аноним (24), 18:54, 06/11/2024 [^] [^^] [^^^] [ответить]  
  • +/
    .ko ещё нужно собрать из исходников. Для этого сами исходники должны быть, во-первых. Во-вторых, есть хороший сдерживающий фактор - Stable API/ABI is nonsence.
     

  • 1.38, Аноним (19), 20:03, 06/11/2024 Скрыто ботом-модератором [﹢﹢﹢] [ · · · ]     [к модератору]
  • +/
     
  • 1.40, Аноним (19), 20:15, 06/11/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Всё идет по плану
    https://en.wikipedia.org/wiki/EBPF
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру