Cloudflare publicou xdpcap, un analizador de tráfico baseado no subsistema XDP

Compañía Cloudflare presentado proxecto aberto xdpcap, dentro do cal se está a desenvolver un analizador de paquetes de rede similar a tcpdump, construído sobre a base do subsistema XDP (Ruta de datos eXpress). O código do proxecto está escrito en Go e distribuído por baixo licenza BSD. O proxecto tamén preparado biblioteca para vincular controladores de tráfico eBPF desde aplicacións Go.

A utilidade xdpcap é compatible coas expresións de filtrado tcpdump/libpcap e permítelle procesar volumes significativamente maiores de tráfico no mesmo hardware. Xdpcap tamén se pode usar para depurar contornas nos que non se aplica tcpdump normal, como sistemas de filtrado, protección DoS e equilibrio de carga que usan o subsistema XDP do núcleo de Linux, que procesa os paquetes antes de que sexan procesados ​​pola pila de rede do núcleo de Linux (tcpdump). non ve paquetes eliminados polo manejador XDP).

O alto rendemento conséguese mediante o uso de subsistemas eBPF e XDP. eBPF é un intérprete de código de bytes integrado no núcleo de Linux que che permite crear controladores de alto rendemento de paquetes entrantes/saíntes con decisións sobre reenviar ou descartalos. Usando un compilador JIT, o bytecode eBPF tradúcese sobre a marcha en instrucións de máquina e execútase co rendemento do código nativo. O subsistema XDP (eXpress Data Path) complementa eBPF coa capacidade de executar programas BPF a nivel de controlador de rede, con soporte para o acceso directo ao búfer de paquetes DMA e traballar na fase antes de que o búfer skbuff sexa asignado pola pila de rede.

Do mesmo xeito que tcpdump, a utilidade xdpcap traduce primeiro as regras de filtrado de tráfico de alto nivel na representación clásica de BPF (cBPF) usando a biblioteca estándar libpcap, e despois convérteas en forma de rutinas eBPF mediante un compilador. cbpfc, usando desenvolvementos LLVM/Clang. Na saída, a información de tráfico gárdase no formato pcap estándar, o que lle permite utilizar un volcado de tráfico preparado en xdpcap para o seu posterior estudo en tcpdump e outros analizadores de tráfico existentes. Por exemplo, para capturar información de tráfico DNS, en lugar de usar o comando "tcpdump ip and udp port 53", pode executar "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" e despois usar unha captura .pcap, por exemplo, co comando "tcpdump -r" ou en Wireshark.

Fonte: opennet.ru

Engadir un comentario