Cloudflare publicou xdpcap, um analisador de tráfego baseado no subsistema XDP

Empresa Cloudflare apresentado projeto aberto xdpcap, dentro do qual está sendo desenvolvido um analisador de pacotes de rede semelhante ao tcpdump, construído com base no subsistema XDP (Caminho de dados Express). O código do projeto é escrito em Go e distribuído por sob licença BSD. O projeto também preparado biblioteca para vincular manipuladores de tráfego eBPF de aplicativos Go.

O utilitário xdpcap é compatível com expressões de filtragem tcpdump/libpcap e permite processar volumes de tráfego significativamente maiores no mesmo hardware. O Xdpcap também pode ser usado para depuração em ambientes onde o tcpdump regular não é aplicável, como filtragem, proteção DoS e sistemas de balanceamento de carga que usam o subsistema XDP do kernel Linux, que processa pacotes antes de serem processados ​​pela pilha de rede do kernel Linux (tcpdump não vê pacotes descartados pelo manipulador XDP).

O alto desempenho é alcançado através do uso dos subsistemas eBPF e XDP. eBPF é um interpretador de bytecode integrado ao kernel Linux que permite criar manipuladores de alto desempenho de pacotes de entrada/saída com decisões sobre encaminhá-los ou descartá-los. Usando um compilador JIT, o bytecode eBPF é traduzido dinamicamente em instruções de máquina e executado com o desempenho do código nativo. O subsistema XDP (eXpress Data Path) complementa o eBPF com a capacidade de executar programas BPF no nível do driver de rede, com suporte para acesso direto ao buffer de pacotes DMA e trabalho no estágio anterior ao buffer skbuff ser alocado pela pilha de rede.

Assim como o tcpdump, o utilitário xdpcap primeiro traduz regras de filtragem de tráfego de alto nível na representação BPF clássica (cBPF) usando a biblioteca libpcap padrão e depois as converte na forma de rotinas eBPF usando um compilador cbpfc, usando desenvolvimentos LLVM/Clang. Na saída, as informações de tráfego são salvas no formato pcap padrão, o que permite utilizar um dump de tráfego preparado em xdpcap para posterior estudo em tcpdump e outros analisadores de tráfego existentes. Por exemplo, para capturar informações de tráfego DNS, em vez de usar o comando "tcpdump ip and udp port 53", você pode executar "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" e então usar uma captura Arquivo .pcap, por exemplo, com o comando "tcpdump -r" ou no Wireshark.

Fonte: opennet.ru

Adicionar um comentário