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

Правильное выражение фильтра в libpcap для исходящих пакетов
Я хочу перехватывать только исходящий пакет TCP-ACK из моей системы. Поэтому я установил выражение фильтра в своей программе lib-pcap как: char filter_exp[] = "src host 172.16.0.1 and tcp[tcpflags] & (tcp-syn | tcp-fin | tcp-rst | tcp-psh)...
466 просмотров
schedule 07.04.2022

Каковы возможные коды возврата bpf_filter() в ядре FreeBSD? Что означает каждый код возврата?
Каковы возможные коды возврата bpf_filter() в ядре FreeBSD? Что означает каждый код возврата? справочная страница (ссылка) в этом вопросе не ясно. Функция bpf_filter() выполняет программу фильтрации, начиная с pc в пакете pkt. Аргумент...
645 просмотров
schedule 03.12.2022

Можно ли использовать eBPF или perf для расчета времени, затрачиваемого на отдельные отслеживаемые функции?
В настоящее время я могу сказать trace-cmd (внешний интерфейс ftrace) использовать инфраструктуру графа функций ftrace для трассировки указанной рабочей нагрузки. Используя некоторые инструменты обработки данных трассировки, я могу просмотреть...
1294 просмотров
schedule 20.01.2023

Berkeley Packet Filter для выражения фильтрации высокого уровня
У меня есть программа на C, которая устанавливает фильтр для сеанса WinPcap вручную с помощью Berkeley Filter. Теперь я хочу перенести этот инструмент на C# с помощью Pcap.Net. Pcap.Net предлагает в качестве аргумента не необработанный фильтр...
335 просмотров
schedule 05.04.2022

как собрать программу BPF из дерева ядра
Ядро предоставляет ряд примеров в samples/bpf . Я заинтересован в сборке одного из примеров вне дерева, точно так же, как мы собираем модуль ядра, где Makefile может быть достаточно простым. Можно ли сделать то же самое с bpf? Я попробовал это,...
5689 просмотров
schedule 14.05.2023

Как я могу получить идентификатор сеанса текущей задачи в программе BPF?
Вспомогательная функция BPF bpf_get_current_task возвращает указатель на task_struct текущей задачи. Как я могу использовать это в программе BPF для получения идентификатора сеанса текущей задачи?
199 просмотров
schedule 03.10.2023

Почему я не получаю пакеты, использующие BPF с сокетом udp?
ЦЕЛЬ: написать фильтр BPF, который разрешает только UDP-пакеты с определенного адреса src, и прикреплять его к UDP-сокету. ПРОБЛЕМА: если я запускаю программу и пытаюсь отправить udp-пакеты с виртуальной машины с правильным IP-адресом src, я не...
496 просмотров
schedule 19.10.2022

net/core/filter.c и linux/bpf/verifier.c
Если я правильно понял, изначально верификатор и интерпретатор cBPF находились внутри net/core/fiter.c , например, sk_run_filter здесь https://elixir.bootlin.com/linux/v3.2/source/net/core/filter.c#L112 просто преобразуйте инструкции cBPF,...
137 просмотров
schedule 29.07.2023

Каковы ограничения виртуальной машины bpf и карты bpf?
Я использую ebpf+XDP для создания демонстрации. когда я использую большую КАРТУ памяти, например: BPF_HASH(cache, u64, u64, 10240000); BPF_HASH(filter1, u32, u64, 10240000); BPF_HASH(filter2, struct XXX, u16, 10240000); когда я запускаю...
1144 просмотров
schedule 26.10.2022

Насколько на практике нестабильны kprobe, связанные с сетью?
Я очень новичок в мире разработки BPF, и мне нужно использовать kprobes в моей программе BPF, чтобы я мог правильно обнаруживать и собирать PID для процессов, пытающихся отправить пакеты по сети. Я хочу развернуть эту программу BPF с моим приложением...
131 просмотров
schedule 16.06.2023

Почему верификатор BPF выдает ошибку с нулевым ключом при использовании BPF_MAP_TYPE_QUEUE?
Я пытаюсь загрузить программу BPF с картой очереди. Кажется, я получаю сообщение об ошибке, связанное с нулевым ключом. libbpf: -- BEGIN DUMP LOG --- libbpf: 0: (b7) r1 = 123 1: (63) *(u32 *)(r10 -4) = r1 2: (bf) r3 = r10 3: (07) r3 += -4 4:...
133 просмотров
schedule 17.11.2022

Захват пакетов PTP с помощью RAW-сокета Linux
Я хочу реализовать программу на C, которая захватывает все кадры Precision-Time-Protocol (PTP) в Ethernet, поэтому я создал необработанный сокет и прикрепил фильтр для PTP. Я использую recvmsg() для чтения данных из сокета. Первая проблема...
592 просмотров
schedule 28.03.2023

Как изменить память пользовательского пространства с помощью eBPF?
Я пытаюсь написать пример кода и посмотреть, как он работает на практике. Как сказано здесь и обсуждается здесь . Если все верно, вывод должен быть: $ cat foo1 this is foo1 content $ cat foo2 this is foo2 content $ sudo bcc_mangle_open.py...
381 просмотров
schedule 03.09.2022

Недопустимый аргумент кольцевого буфера BPF (-22)?
Я хотел использовать последнюю карту eBPF, BPF_MAP_TYPE_RINGBUF , но я не могу найти много информации в Интернете о том, как я могу ее использовать, поэтому я просто пробую и ошибаюсь здесь. Я определил и использовал его следующим образом: struct...
240 просмотров
schedule 22.09.2023

Ошибка: недопустимый доступ к памяти 'inv' при использовании bpf_probe_read_*()
Вот проблема: Я пишу программу BPF, проверяющую функцию ядра vfs_read() с помощью kprobe: ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos) Соответствующая информация (внутри *file ) собирается с...
40 просмотров
schedule 13.04.2024

Отправка строк в пространство карты BPF и их печать
У меня есть небольшой текстовый файл, который я хотел бы записать здесь в BPF. Вот как выглядит мой код Python для BPF, но я пока не могу ничего распечатать. Я продолжаю получать сообщение «Не удалось загрузить программу: неверный аргумент с кучей...
20 просмотров
schedule 12.06.2023