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

golang, ebpf и продолжительность функций
Я играю с gobpf и у меня проблема с вычислением продолжительности отслеживаемой функции пользовательского пространства. Я использую bpf_ktime_get_ns () для чтения времени, а затем пытаюсь вычислить дельту, но получаю огромные числа, хотя...
498 просмотров
schedule 22.09.2021

Создать исполняемый файл из скрипта bcc python
bcc использует python для компиляции программ ebpf, есть ли удобный способ сгенерировать исполняемый файл из этих сценариев python чтобы я мог запускать эти программы трассировки на серверах, на которых не установлены среды clang и llvm?
133 просмотров
schedule 08.11.2021

Фильтр BPF не работает
Кто-нибудь может предположить, почему эта (классическая) программа BPF иногда пропускает пакеты без DHCP-ответа: # Load the Ethertype field BPF_LD | BPF_H | BPF_ABS 12 # And reject the packet if it's not 0x0800 (IPv4) BPF_JMP | BPF_JEQ | BPF_K...
76 просмотров
schedule 22.04.2022

AF_XDP: `BPF_MAP_TYPE_XSKMAP` имеет только записи с `Операция не поддерживается`
Это весь мой код ядра XDP/BPF: struct bpf_map_def SEC("maps") xsks_map = { .type = BPF_MAP_TYPE_XSKMAP, .key_size = sizeof(int), .value_size = sizeof(int), .max_entries = 64, /* Assume netdev has no more than 64 queues */ };...
224 просмотров
schedule 06.08.2022

Взять имя вызываемой функции в eBPF
Я хотел бы отслеживать функции конкретного PID и собирать некоторую статистику (общее количество вызовов, общее время и т. д.), и мне не совсем понятно, как создать BPF_HASH с парами funcname+my_struct. Есть ли способ получить имена вызываемых...
794 просмотров
schedule 29.08.2022

Как скомпилировать BCC на Ubuntu 20.04?
Я пытаюсь скомпилировать структуру BCC BPF ( https://github.com/iovisor/bcc ) на Убунту 20.04. Я выполнил все инструкции для 18.04, но, конечно; они терпят неудачу. Проблема, которая у меня есть, кажется, связана с clang, хотя In file...
759 просмотров
schedule 22.09.2022

Простой способ проверить правильность фильтра BPF
Каков самый простой способ проверить фильтр BPF в качестве обычного пользователя? Самое простое, что я нашел, это запустить tcpdump с небольшим файлом pcap в качестве входных данных для параметра -r . $ tcpdump -r one_packet.pcap -F...
2463 просмотров
schedule 25.06.2023

Как собрать ядро ​​​​Linux для поддержки опции сокета SO_ATTACH_BPF?
Я хочу создать приложение, которое поддерживает eBPF на CentOS 7 (версия ядра 3.10.0 ): if(setsockopt(sock, SOL_SOCKET, SO_ATTACH_BPF, prog_fd, sizeof(prog_f)) { ...... } Итак, я загружаю версию 4.0.5 , делаю следующие настройки:...
566 просмотров
schedule 14.10.2022

не удается прикрепить большой двоичный объект eBPF
Я только что скомпилировал примеры BPF из ядра tools/testing/selftests/bpf и попытался загрузить их, как описано в http://cilium.readthedocs.io/en/v0.10/bpf/ : % tc filter add dev enp0s1 ingress bpf \ object-file...
579 просмотров
schedule 02.04.2023

БНФ: владелец карты
Это продолжение кто создает карту в BPF , поскольку мой новый вопрос не напрямую актуальной этой ветки. Итак, мне кажется, что должна быть одна точка , где создается карта BPF, либо это программа bpf, либо пользовательская программа, которая...
1039 просмотров
schedule 03.05.2023

eBPF: работает в пространствах имен Linux
Таким образом, BPF программы являются объектами ядра, поскольку они выполняются в пространстве ядра. С другой стороны, пространства имен Linux, также известные как контейнеры, обеспечивают изоляцию на уровне приложений, и в этом случае все они...
796 просмотров
schedule 02.05.2023

поддерживает ли eBPF события?
Возможно ли, чтобы ebpf программа генерировала событие, например, счетчик пакетов достиг предопределенного порогового значения, а ebpf генерировало некоторое уведомление/событие для пользователя, что-то похожее на то, что обеспечивает netlink ....
107 просмотров
schedule 04.08.2023

Программа eBPF для пересылки HTTP-запросов на другой порт
Я пытаюсь реализовать функцию, в которой в зависимости от пути HTTP-запроса я могу перенаправить запрос на другой порт. Например, если запрос GET /foo, я бы хотел перенаправить его на порт 81, а если это /bar, я бы хотел перенаправить его на порт...
760 просмотров
schedule 22.02.2023

Классическая простая статистика BPF недоступна?
Я играл с классическим BPF , чтобы отфильтровать что-то в сокете netlink , и обнаружил, что нет простой статистики, доступной для проверки того, был ли пакет отброшен или разрешен. Поэтому я посмотрел на...
64 просмотров
schedule 10.12.2022

eBPF против системы против DTrace
Какой из них будет основным, который будет поддерживаться CentOS в будущем? Я не являюсь экспертом ни в одном из этих инструментов, поэтому я хотел бы знать, какой из них я должен изучить намного глубже. Спасибо
586 просмотров
schedule 16.04.2023

У меня ошибка при попытке получить доступ к iphdr с помощью eBPF
Поэтому я пытался получить доступ к iphdr с помощью eBPF. static inline int parse_ipv4(void *data, u64 nh_off, void *data_end) { struct iphdr *iph = data + nh_off; if ((void*)&iph[1] > data_end) return 0; return iph->protocol; }...
123 просмотров
schedule 08.06.2023

используйте другую структуру данных вместо seccomp_data с seccomp
Можно ли использовать другую структуру данных вместо seccomp_data в коде BPF seccomp? Например из этого... ... BPF_STMT(BPF_LD+BPF_W+BPF_ABS,(offsetof (struct seccomp_data, args[0]))), ... к этому ......
44 просмотров
schedule 02.07.2023

Как удалить skb_buff, используя ebpf/bcc?
Я запускаю пример скрытой копии https://github.com/iovisor/bcc/blob/master/examples/networking/http_filter/http-parse-simple.c , в котором комментарий поясняет: /* eBPF program. Filter IP and TCP packets, having payload not empty and...
408 просмотров
schedule 06.10.2023

Каков реальный адрес `%fs:0xffffffffffffffff8`?
Я хочу отслеживать goid программ go с помощью ebpf . После прочтения некоторых сообщений и блогов я знаю, что %fs:0xfffffffffffffff8 указывает на структуру g функции go, а инструкция mov %fs:0xfffffffffffffff8,%rcx всегда появляется в начале...
343 просмотров
schedule 14.07.2023

Хэш-карта BPF не показывает правильное значение при извлечении
Я пытаюсь создать хэш-карту в BPF в коде ядра следующим образом: struct bpf_map_def SEC("maps") hash_map = { .type = BPF_MAP_TYPE_HASH, .key_size = sizeof(__u32), .value_size = sizeof(__u32), .max_entries = 1000, };...
35 просмотров
schedule 30.06.2023