NoneE BPF или расширенный BPF
1 ответ

Классический БНФ - простая статистика недоступна?

Я играл с классиком BPF фильтровать что-то на netlink сокет и обнаружил, что нет простой статистики, доступной для проверки, был ли пакет отброшен или разрешен. Поэтому я посмотрел на https://elixir.bootlin.com/linux/latest/source/net/core/filter.c#…
02 янв '19 в 16:50
1 ответ

Как получить доступ к регистрам xmm в программе eBPF

Я пытаюсь использовать bcc-tools для отслеживания пользовательского процесса, используя uprobe, но некоторые функции принимают аргументы с плавающей запятой. Согласно ABI x86_64, эти значения обычно передаются в регистрах xmm. Функции eBPF в ОЦК зан…
16 янв '19 в 13:13
1 ответ

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 declaration …
08 фев '19 в 02:23
1 ответ

При установке bcc не могу найти пакет bpfcc

Эй, ребята, я пытаюсь установить модуль bcc на мою машину с Linux, чтобы я мог писать программы BPF. Я следил за страницей https://github.com/iovisor/bcc/blob/master/INSTALL.md#kernel-configuration собрать ядро ​​и установить модуль bcc. Однако всяк…
27 фев '19 в 14:05
1 ответ

Неявное объявление функции 'bpf'

Я недавно изучал BPF, но это не происходит из-за очень основной проблемы. Я включил linux/bpf.h, как описано в man bpf(2), но GCC не может найти функцию bpf. Этот код предназначен только для проверки того, что GCC может найти функцию bpf. #include &…
22 фев '19 в 07:27
0 ответов

BPF Системный вызов, связанный с сокетом kprobe, ошибка чтения данных сокета

Измените gobpf perf.go, измените системный вызов fchown на системный вызов, связанный с сокетом, попробуйте прочитать сведения о сокете, такие как PORT или Addr. Например, системный вызов 'connect'. Как я понимаю, у pt_regs * ctx есть параметр sysca…
02 мар '19 в 21:47
1 ответ

Программа eBPF для пересылки HTTP-запросов на другой порт

Я пытаюсь реализовать функцию, где в зависимости от пути HTTP-запроса я могу переслать запрос на другой порт. Например, если запрос GET /foo, я бы хотел перенаправить его на порт 81, а если это /bar, я бы хотел перенаправить его на порт 82. И если э…
20 дек '18 в 18:31
1 ответ

Почему kretprobe в sys_futex вызывается реже, чем соответствующий kprobe?

Я делаю некоторую трассировку различных функций ядра и системных вызовов и устанавливаю шаблоны между ними, которые можно использовать для определенного профилирования производительности. Одна вещь, которую я заметил, это то, что иногда, даже в моем…
07 фев '19 в 18:17
0 ответов

Невозможно использовать пользовательский тип программы eBPF (Landlock LSM)

В настоящее время я тестирую LSM без блокировки, среду, позволяющую выгружать код eBPF из контейнера, чтобы безопасно применять ограничения к себе. Эта структура вносит некоторые изменения, чтобы расширить поведение bpf (например, в usr/include/linu…
01 фев '19 в 11:00
4 ответа

Может ли eBPF изменить возвращаемое значение или параметры системного вызова?

Чтобы смоделировать некоторое поведение, я хотел бы присоединить зонд к системному вызову и изменить возвращаемое значение при передаче определенных параметров. В качестве альтернативы, было бы также достаточно изменить параметры функции, прежде чем…
24 мар '17 в 15:46
1 ответ

Как получить доступ к переменной ядра, используя BPF?

Например, чтобы получить доступ к skb переменная в функции ip_rcv: int ip_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_type *pt, struct net_device *orig_dev) { ... } Я искал в Интернете, но не могу найти ни одного примера.
29 май '17 в 16:54
1 ответ

При сборке ebpf я получаю "неизвестный целевой тройной 'bpf', пожалуйста, используйте -triple или -arch"

Я только начал экспериментировать с XDP на виртуальной машине. Я пытался собрать для bpf, и я сталкиваюсь с ошибкой, как я могу решить эту проблему? # clang -O2 -Wall -target bpf -c all_dropper.c -o dropper.o error: unknown target triple 'bpf', plea…
12 май '19 в 07:10
0 ответов

Могу ли я "замедлить" чтение / запись системных вызовов с помощью eBPF?

Я использую eBPF для наблюдения за системными вызовами чтения / записи и сбора того, что читается / пишется в пространстве пользователя, для целей аудита (в частности, действий в Unix-сокете Docker). Проблема в том, что если много чего читается / пи…
17 апр '19 в 16:13
0 ответов

Отсоединить объект bpf от события?

Я хочу иметь возможность отсоединять мои объекты BPF от прикрепленного события. Является ли единственный способ отсоединиться от события, чтобы уничтожить объект BPF? Я пытаюсь избежать необходимости создавать / уничтожать объекты каждый раз, когда …
29 апр '19 в 01:45
0 ответов

eBPF / XDP не может скомпилироваться в Ubuntu 16.04.6

После обновления Ubuntu 16.04 более невозможно скомпилировать eBPF. bpf.h В файле отсутствуют ключевые структуры и uapi заголовки не установлены. Образец кода: #include <linux/bpf.h> int main() { return XDP_DROP; } Составлено с clang -target b…
27 май '19 в 14:07
0 ответов

Linux - как пример использования процессора между событиями

Я хотел бы сделать что-то вроде "perf record -g -p PID - sleep 60", но ограничить выборку стека определенными периодами времени, чтобы избежать шума от множества потоков, работающих в приложении. Таким образом, идея заключается в том, что всякий раз…
20 май '19 в 11:32
1 ответ

Заголовки не работают на уровне ядра в коде eBPF

Так что я разрабатываю что-то на eBPF. Мне нужно было использовать заголовок unistd.h, потому что я хотел использовать функцию сна. Тем не менее, я понял, что когда я печатаю #include <unistd.h> эти заголовки не включаются, и я получаю сообщен…
28 мар '19 в 15:19
2 ответа

Как я могу получить заголовочный файл bpf_helpers.h для моего ядра Linux?

Я занимаюсь разработкой программы eBPF на машине с Ubuntu: $ uname -a Linux ubuntu-bionic 4.18.0-16-generic #17~18.04.1-Ubuntu SMP Tue Feb 12 13:35:51 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux Для этого мне нужны оба bpf.h для ряда определений, а такж…
30 мар '19 в 22:28
0 ответов

Какие-нибудь программы BPF требуются для карты памяти?

Я пишу программу BPF sockmap, и мне было интересно, каковы требования такой программы. К sockmap могут быть прикреплены парсер и программа вердикта, поэтому мой вопрос в том, требуется ли какая-либо из этих программ перед добавлением сокета на карту…
01 апр '19 в 00:15
0 ответов

Perf trace показывает не все точки трассировки для каждого прогона

Я пытаюсь увидеть точки трассировки, чтобы отследить путешествие пакета ping. Первый забег vagrant@ubuntu-xenial:~$ sudo perf trace --no-syscalls --event 'net:*' ping 10.0.2.2 -c 1 |column 0.705 net:net_dev_queue:dev=enp0s3 skbaddr=0xffff88003c70d20…
02 апр '19 в 09:53