Para onde vai meu pacote eBPF?

Para onde vai meu pacote eBPF?

Eu tenho um caso de teste usando eBPF que configura um 'ping' entre 2 namespaces. Meu programa eBPF intercepta o primeiro pacote de um fluxo, envia-o para o espaço do usuário, onde é usado para construir um mapa para que os pacotes subsequentes do fluxo passem diretamente do eth receptor para o kernel onde a resposta do ping é gerada. O primeiro pacote é então alimentado em uma fila de transmissão eBPF, onde espero que ele vá para o kernel e gere uma resposta de ping, mas na verdade não vejo mais nenhum vestígio desse pacote; não em 'tcpdump' nas interfaces e não em 'pwru'. Alguém pode me dizer o que estou fazendo de errado?

Meu caso de teste está aquihttps://github.com/tjcw/bpf-examples/tree/tjcw-send-first-packet-debug-20221210.1121/AF_XDP-filter; o script de execução está aquihttps://github.com/tjcw/bpf-examples/blob/tjcw-send-first-packet-debug-20221210.1121/AF_XDP-filter/ping-namespace-direct-with-dummy/run.sh.

O log da execução (incluindo tcpdumps formatados) está aquihttps://github.com/tjcw/bpf-examples/blob/tjcw-send-first-packet-debug-20221210.1121/AF_XDP-filter/ping-namespace-direct-with-dummy/runlog.txte o log pwruestá aquihttps://github.com/tjcw/bpf-examples/blob/tjcw-send-first-packet-debug-20221210.1121/AF_XDP-filter/ping-namespace-direct-with-dummy/pwru.txt.

Estou executando o Ubuntu 22.04 completamente atualizado.

Desculpas, o log de execução acima não possui saída tcpdump. Aquihttps://github.com/tjcw/bpf-examples/blob/tjcw-send-first-packet-debug-20221210.1121/AF_XDP-filter/ping-namespace-direct-with-dummy/run2.txté o que eu pretendia postar, com tcpdumps.

Eu adicionei um teste UDP no diretóriohttps://github.com/tjcw/bpf-examples/tree/tjcw-send-first-packet-debug-20221212.1400/AF_XDP-filter(veja os arquivos udp-sender-count.c e udp-receiver.c e execute scripts e arquivos de log no diretório udp-namespace-direct-with-dummy). Este caso de teste mostra o primeiro pacote sendo redirecionado para o espaço do usuário e depois sendo perdido, e o segundo pacote chegando ao ouvinte udp.

Responder1

informação relacionada