Совместное использование карты между различными типами программ ebpf - PullRequest
0 голосов
/ 18 октября 2019

Можно ли совместно использовать карты ebpf для разных типов программ. Мне нужно поделиться картой между программой tc-bpf и программой cgroup bpf. Это должно быть возможно, если карта прикреплена к файловой системе, которая действует как глобальное пространство имен. Но у меня это не работает.

Карта создается программой tc-bpf и прикрепляется к глобальному пространству имен. Поскольку это программа tc-bpf, карта имеет тип struct bpf_elf_map. Эта bpf-программа загружается через iproute2.

Теперь у меня есть bgf-программа cgroup, которая должна обращаться к этой карте, но поскольку она загружается через user.c (libbpf) или bpftool, а не iproute, картаопределенное здесь не может быть «bpf_elf_map», но это struct bpf_map_def. Таким образом, в программе cgroup bpf та же карта определена как struct bpf_map_def, а не struct bpf_elf_map.

Вероятно, из-за этого программа cgroup получает новый map_id, когда я сбрасываю карты (и не разделяет намеченную карту), в идеале, когда одна и та же карта является общей для всех программ bpf, эти программы bpf должны иметь одинаковый map_id, связанный с их уникальными prog_ids.

...