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


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

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

Использование BPF с SOCK_DGRAM на Linux-машине
Можно ли фильтровать пакеты с помощью BPF на сокете дейтаграммы? Когда я пытаюсь прикрепить фильтр, но я не получаю никаких пакетов, ошибок не возникает. Я скомпилировал фильтр с помощью libpcap, а фильтр работает с tcpdump. Вот сокращенная...
1109 просмотров
schedule 04.08.2022

Использование libpcap для создания библиотек примеров файлов дампа
Использование libpcap оказалось очень простым, но скорость всегда является проблемой для гигантских (в произвольном смысле) дампов .pcap. Существуют ли какие-либо общепринятые методы простого сэмплирования дампа? Возможно, что-то, что эффективно...
49 просмотров
schedule 20.04.2024

классический BPF в Linux: фильтр не работает
Я пытаюсь протестировать классический BPF для фильтрации пакетов, подключив его к сырому сокету. Я хочу перехватывать TCP-пакеты с первым байтом исходного порта == 8 (tcpdump 'tcp [1: 1] = 0x50'), но я не вижу входящих пакетов в сокет. Без фильтра...
2967 просмотров
schedule 22.02.2022

Как фильтровать пакеты по списку IP с помощью Scapy
Я пытаюсь фильтровать пакеты определенного веб-сайта в Python (используя Scapy). У меня есть список возможных IP-адресов (используемых для балансировки нагрузки) веб-сайта. Я хочу фильтровать пакеты для всех этих IP-адресов. Как я могу это сделать?...
2219 просмотров
schedule 07.06.2024

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

Как решить ошибку «inv» недопустимого доступа к памяти R0 при загрузке файлового объекта eBPF
Я пытаюсь загрузить объект eBPF в ядро ​​​​с помощью libbpf , безуспешно, получая ошибку, указанную в заголовке. Но позвольте мне показать, насколько прост мой BPF *_kern.c . SEC("entry_point_prog") int entry_point(struct xdp_md *ctx) { int...
808 просмотров
schedule 06.12.2022

Почему 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

Как получить код возврата системного вызова с помощью SECCOMP_RET_DATA и PTRACE_GETEVENTMSG
Я немного сбит с толку, пытаясь получить возвращаемое значение системного вызова с помощью ptrace + seccomp. man 4 bpf говорит : FILTER MACHINE A filter program is an array of instructions, with all branches forwardly directed, terminated...
510 просмотров
schedule 18.07.2022

Почему моя программа 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

Почему эта программа, использующая BPF и RAW SOCKET, просто зависает?
ЦЕЛЬ: написать простой фильтр пакетов с использованием BPF. Пакетный фильтр должен позволять вам выбирать интерфейс. ПРОБЛЕМА: если я раскомментирую предпоследнюю инструкцию в коде (там, где есть вызов recvfrom , выполнение просто зависает, и...
156 просмотров
schedule 02.08.2022

загрузить сгенерированный код seccomp_export_bpf в ядро
http://man7.org/linux/man-pages/man3/seccomp_export_bpf.3.html как я могу загрузить сгенерированный код в ядро? Каковы возможные варианты использования этой функции?
80 просмотров
schedule 16.02.2024

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