v
grep -nR 'xdp_xmit'
)Либо работает уже в ядре - xdp_generic (и тут два варианта, когда передается кусок памяти, и когда передается skb).
В этих всех вариантах возможен DROP, REDIRECT, PASS, XMIT. Все это так называемый XDP.
Дальше eBPF может быть прекручен к ingress/egress, в там работа уже только с skb.
Из возможностей: классификатор, либо тупо drop (redirect - не помню, но средставми tc вроде можно).
Дак вот в кубере оно отлично заходит, так как контейнеры между собой общаются через виртуальные интерфейсы.
Какраз на которые это все отлично вешается. Сам контейнер при этом ниего знать не знает что его фильтруют или както обрабатывают трафик.
p4 и eBPF - тоже я видел два типа:
1. в репе p4 (https://github.com/p4lang/p4c/blob/master/backends/ebpf/README.md), и там поддерживается только ingress/egres
2. vmware поделака p4 для XDP (https://github.com/vmware/p4c-xdp) тут действия как у XDP, но они пишут, что супер dataplane всеже не запилить.
Есть ограничения самого eBPF.
По этому eBPF как замена например dpdk - выглядит для меня пока как покрывало сшитое из лоскутков.
То есть несколько eBPF приложений, не факто, что в одно месте и возможно даже через дополнительные интерфейсы в системе.