поддерживает ли eBPF события?

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

Я вижу, что в настоящее время единственный способ сообщить об этом событии/состоянии — через maps, который может быть опрошен пользовательским приложением.


person Mark    schedule 04.05.2018    source источник


Ответы (1)


Нет, в настоящее время нет способа подать сигнал пользовательскому пространству или другим программам без опроса карт.

Это было кратко обсуждалось на сайте iovisor-dev. список рассылки перед. Если у вас есть вариант использования для этого, вы можете попытаться добавить его в список рассылки.

person pchaigno    schedule 04.05.2018
comment
Спасибо за ссылку! Это предлагает интересную идею использовать ftrace для отслеживания вызовов обновления карты, я должен попробовать это. - person Mark; 07.05.2018
comment
Рад, что смог помочь! Обратите внимание, что вы также можете использовать BPF напрямую вместо ftrace для трассировки вызовов bpf_map_update_elem. Что-нибудь, что вы хотите, чтобы я добавил в ответ, чтобы принять это? - person pchaigno; 07.05.2018
comment
У меня есть еще один вопрос. Является ли отслеживание вызовов (с ftrace, tracepoints) асинхронным механизмом? - person Mark; 11.05.2018
comment
Я не уверен, что вы подразумеваете под асинхронностью....? - person pchaigno; 12.05.2018
comment
Например, я могу подписаться на события IP (добавлять/удалять правила FIB) или события сетевых интерфейсов (включение/выключение связи) через setsockopt, события будут отображаться в сокете netlink, где я запускаю select(), поэтому нет необходимости постоянно опрос сокета. Как работает ftrace по сравнению с моим примером? - person Mark; 12.05.2018
comment
Насколько я знаю, вам также придется проводить опрос с помощью ftrace. - person pchaigno; 12.05.2018
comment
Как наконец решились на это @mark. - person Haswell; 09.01.2021