Публикации по теме 'ebpf'


Программы BPF и модули ядра в сети Linux
Оптимизация сетевого управления и производительности с помощью различных точек подключения Программы BPF (Berkeley Packet Filter) оказали трансформирующее влияние на сетевое взаимодействие Linux, представив мощный механизм для подключения пользовательских программ на различных этапах ядра. Эти программы предоставляют сетевым администраторам и разработчикам беспрецедентный контроль и видимость сетевых событий, позволяя им оптимизировать производительность, повышать безопасность и получать..

eBPF, сокеты, расстояние перехода и ручная запись сборки eBPF
Автор Марек Майковски Друг дал мне интересную задачу: извлечь значения IP TTL из TCP-соединений, установленных программой пользовательского пространства. Эта, казалось бы, простая задача быстро превратилась в грандиозный взлом системного программирования Linux. Код результата сильно перестроен, но, черт возьми, мы многому научились в процессе! Контекст Вы можете задаться вопросом, почему она хотела проверить поле пакета TTL (формально известное как «IP Time To Live (TTL)» в..

Программирование eBPF для трассировки ядра Linux
От Вирадж Ариявангша — младшего инженера-электронщика-стажера Linux — одна из самых используемых операционных систем в мире. Linux является популярным выбором среди разработчиков и системных администраторов по всему миру, поскольку на нем работает более 95% из миллиона лучших серверов в мире. Основная причина, по которой Linux удалось добиться такой известности, как сегодня, связана с его легко адаптируемым ядром и наличием широкого спектра инструментов с открытым исходным кодом,..

Добавление целевой поддержки BPF в компилятор Rust
Когда я создал этот блог еще в сентябре, моей целью было публиковать сообщения хотя бы раз в месяц. Сейчас декабрь, и вы читаете мой второй пост, так что у меня не очень хорошее начало. 🤔 Однако дела на фронте Rust BPF были заняты! В конце октября я начал работать над блогом о текущем положении вещей, ровно через год после того, как начал этим заниматься. Делая это, я, наконец, почувствовал себя достаточно вдохновленным, чтобы попытаться добавить цель BPF в rustc, что-то, что было в..

Вопросы по теме 'ebpf'

ebpf - имена разделов
Обязательно ли иметь уникальные имена для каждого раздела программы в bpf программе? Например, эта программа отлично компилируется с llvm-5.0 : ... SEC("sockops") int bpf1(struct bpf_sock_ops *sk_ops) { return 1; } SEC("sockops") int...
693 просмотров
schedule 30.06.2023

Недопустимый аргумент (EINVAL) при попытке загрузить программу BPF
Я пытаюсь загрузить программу BPF с помощью системного вызова bpf , но в ответ получаю invalid argument (EINVAL). Из справочной страницы возможные причины этого находятся: EINVAL For BPF_PROG_LOAD, indicates an attempt to load an invalid...
1239 просмотров
schedule 15.12.2022

Отказано в доступе при извлечении поля из указателя на большую структуру в программе BPF
Я пытаюсь написать программу BPF, которая проверяет идентификатор сеанса любого процесса, вызывающего функцию ядра tty_write . Чтобы получить идентификатор, мне нужно пройти ряд полей от указателя к текущему task_struct , однако извлечение...
654 просмотров
schedule 17.06.2023

Всегда получайте 0 идентификатор сеанса в программе BPF
Я пытаюсь написать программу BPF, которая проверяет идентификатор сеанса любого процесса, вызывающего функцию ядра tty_write . Я пытаюсь сделать это, извлекая поле из текущей структуры task_struct . Мой код выглядит следующим образом:...
301 просмотров
schedule 27.06.2023

eBPF: понять два макроса в коде верификатора
Я смотрю в код верификатора ebpf и не могу понять следующие макросы: #define offsetof(TYPE, MEMBER) ((size_t)&((TYPE *)0)->MEMBER) #define offsetofend(TYPE, MEMBER) \ (offsetof(TYPE, MEMBER) + sizeof(((TYPE *)0)->MEMBER))...
73 просмотров
schedule 01.01.2023

ebpf: перехват вызовов функций
Я читаю о типе программы kprobes BPF и мне интересно, можно ли не просто перехватывать вызов функции для целей трассировки или собирать некоторую низкоуровневую информацию (регистры, стек и т. д.), но заменять вызов и выполнение вместо...
1059 просмотров
schedule 11.06.2023

ebpf: существует ли троичный поиск?
Есть ли map в ebpf , который может выполнять троичный поиск? Я знаю, что существует карта LPM для самого длинного совпадения префикса, но я хотел бы иметь что-то вроде этого: val & 0xF0F01234 == 0x10101234
81 просмотров
schedule 17.02.2023

Неявное объявление eBPF помощника BPF
У меня проблема с компиляцией программы eBPF, которую я устанавливаю с помощью TC. На данный момент он выполняет только некоторые базовые изменения, которые требуют пересчета контрольной суммы IP. Я заметил в хелперах BPF, что есть функция...
1077 просмотров
schedule 24.02.2023

Почему kretprobe на sys_futex вызывается реже, чем соответствующий kprobe?
Я занимаюсь отслеживанием различных функций ядра и системных вызовов и устанавливаю закономерности между ними, которые можно использовать для определенного профилирования производительности. Одна вещь, которую я заметил, заключается в том, что...
282 просмотров
schedule 27.10.2022

bpf/bcc сообщает об ошибке при попытке доступа к `struct rq`
Это моя программа bpf для профилирования функции ядра pick_next_task_fiar . #include <uapi/linux/ptrace.h> #include <linux/sched.h> #include <linux/nsproxy.h> #include <linux/pid_namespace.h> struct rq; // forward...
297 просмотров
schedule 09.04.2023

Почему моя программа BPF_PROG_TYPE_CGROUP_SKB не работает в контейнере?
Я написал следующую программу eBPF для подсчета пакетов: #include <linux/version.h> #include <uapi/linux/bpf.h> #include "include/bpf_map.h" #include "include/bpf_helpers.h" struct bpf_map_def SEC("maps/count") count_map = {...
399 просмотров
schedule 16.09.2022

eBPF/XDP не компилируется в Ubuntu 16.04.6
После обновления Ubuntu 16.04 больше невозможно скомпилировать eBPF. В файле bpf.h отсутствуют ключевые структуры, а заголовки uapi , похоже, не установлены. Образец кода: #include <linux/bpf.h> int main() { return XDP_DROP; }...
297 просмотров
schedule 03.02.2023

Как прочитать трассировку стека на стороне ядра в ebpf?
Я хотел бы отфильтровать свой ebpf с адресом в стеке, например, если трассировка стека содержит адрес _do_fork , а затем записать на карту. Я видел это...
586 просмотров
schedule 15.11.2022

Как использовать фильтр seccomp с ebpf?
Я ищу пример eBPF для написания фильтра seccomp, но не могу найти. Может ли кто-нибудь сказать мне, можно ли использовать eBPF для написания фильтра seccomp?
724 просмотров
schedule 05.04.2024

IP-заголовок программы XDP, данные, путаница с nh_off
Я сейчас изучаю коды XDP, и у меня возникла некоторая путаница в отношении того, как программы подходят к определенным частям заголовка пакета. Так! Когда я смотрю на код, который получает IP-адрес пакета, он выглядит так: static inline int...
127 просмотров
schedule 11.06.2024

libbpf: Ошибка загрузки раздела ELF .BTF: 0
Я получил это сообщение об ошибке в Ubuntu 19.04, когда я пытаюсь выполнить sudo ./mineonlyret , которая является программой пользовательского пространства, которая загружает программу ebpf, и она описана ниже. Я попробовал ту же конфигурацию на...
545 просмотров
schedule 26.12.2023

Как отследить функцию go с помощью BPF (BCC)
У меня есть код перехода (myclient). Выглядит это как-то так (тут актуален только mypackage): package mypackage import ( ... func (o *Client) CreateUser(ctx context.Context, user *User, ...) (User, error) { ... if err != nil ......
510 просмотров
schedule 08.11.2022

указатель формата bpf_trace_printk
Как "%p" реализовано в bpf_trace_printk ? Кажется, совсем по-другому с printf . #include <uapi/linux/ptrace.h> int print_args(struct pt_regs *ctx) { void *ptr = (void*)PT_REGS_PARM1(ctx); bpf_trace_printk("args: %lx %p %ld\n",...
813 просмотров
schedule 03.11.2023

Как отследить задержку пробуждения процесса исправления?
Я хочу использовать ftrace для отслеживания задержки пробуждения процесса исправления. Но ftrace будет записывать только максимальную задержку. И set_ftrace_pid бесполезен. Кто-нибудь знает, как это сделать? Спасибо большое.
290 просмотров
schedule 17.09.2022

Тестирование XDP против DPDK
У меня есть некоторый опыт работы с DPDK, но в настоящее время я читаю много блогов о XDP. Я пытаюсь сравнить обе технологии и понять различия между DPDK и XDP. Это вызывает некоторые вопросы. Я надеюсь, что кто-то может помочь мне со следующими...
2110 просмотров
schedule 08.07.2022