Cloudflare ha publicado xdpcap, un analizador de tráfico basado en el subsistema XDP

Compañía Cloudflare presentado proyecto abierto xdpcap, dentro del cual se está desarrollando un analizador de paquetes de red similar a tcpdump, construido sobre la base del subsistema xdp (Ruta de datos eXpress). El código del proyecto está escrito en Go y distribuido por bajo licencia BSD. El proyecto también preparado Biblioteca para vincular controladores de tráfico eBPF desde aplicaciones Go.

La utilidad xdpcap es compatible con las expresiones de filtrado tcpdump/libpcap y le permite procesar volúmenes de tráfico significativamente mayores en el mismo hardware. Xdpcap también se puede utilizar para depurar en entornos donde el tcpdump normal no es aplicable, como sistemas de filtrado, protección DoS y equilibrio de carga que utilizan el subsistema XDP del kernel de Linux, que procesa paquetes antes de que sean procesados ​​por la pila de redes del kernel de Linux (tcpdump). no ve los paquetes descartados por el controlador XDP).

El alto rendimiento se logra mediante el uso de subsistemas eBPF y XDP. eBPF es un intérprete de código de bytes integrado en el kernel de Linux que le permite crear controladores de alto rendimiento de paquetes entrantes/salientes con decisiones sobre reenviarlos o descartarlos. Utilizando un compilador JIT, el código de bytes eBPF se traduce sobre la marcha en instrucciones de máquina y se ejecuta con el rendimiento del código nativo. El subsistema XDP (eXpress Data Path) complementa eBPF con la capacidad de ejecutar programas BPF en el nivel del controlador de red, con soporte para acceso directo al búfer de paquetes DMA y trabajo en la etapa anterior a que la pila de red asigne el búfer skbuff.

Al igual que tcpdump, la utilidad xdpcap primero traduce las reglas de filtrado de tráfico de alto nivel a la representación BPF clásica (cBPF) usando la biblioteca libpcap estándar y luego las convierte en rutinas eBPF usando un compilador. cbpfc, utilizando desarrollos LLVM/Clang. En la salida, la información del tráfico se guarda en el formato pcap estándar, lo que le permite utilizar un volcado de tráfico preparado en xdpcap para su posterior estudio en tcpdump y otros analizadores de tráfico existentes. Por ejemplo, para capturar información de tráfico DNS, en lugar de usar el comando "tcpdump ip and udp port 53", puede ejecutar "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" y luego usar una captura .pcap, por ejemplo con el comando "tcpdump -r" o en Wireshark.

Fuente: opennet.ru

Añadir un comentario