Cloudflare har udgivet xdpcap, en trafikanalysator baseret på XDP-undersystemet

Cloudflare Company fremlagde åbent projekt xdpcap, inden for hvilken der udvikles en netværkspakkeanalysator svarende til tcpdump, bygget på basis af undersystemet XDP (eXpress Data Path). Projektkoden er skrevet i Go og distribueret af under BSD-licens. Projektet også forberedt bibliotek til binding af eBPF-trafikhandlere fra Go-applikationer.

Xdpcap-værktøjet er kompatibelt med tcpdump/libpcap-filtreringsudtryk og giver dig mulighed for at behandle betydeligt større mængder trafik på den samme hardware. Xdpcap kan også bruges til fejlretning i miljøer, hvor almindelig tcpdump ikke er anvendelig, såsom filtrering, DoS-beskyttelse og belastningsbalanceringssystemer, der bruger Linux-kernens XDP-undersystem, som behandler pakker, før de behandles af Linux-kernenetværksstakken (tcpdump ser ikke pakker droppet af XDP-handleren).

Høj ydeevne opnås ved brug af eBPF- og XDP-undersystemer. eBPF er en bytekode-fortolker indbygget i Linux-kernen, der giver dig mulighed for at skabe højtydende behandlere af indgående/udgående pakker med beslutninger om videresendelse eller kassering af dem. Ved hjælp af en JIT-compiler bliver eBPF-bytekode oversat til maskininstruktioner og udføres med native kodes ydeevne. XDP (eXpress Data Path) undersystemet supplerer eBPF med evnen til at køre BPF-programmer på netværksdriverniveau, med understøttelse af direkte adgang til DMA-pakkebufferen og arbejde på stadiet før skbuff-bufferen tildeles af netværksstakken.

Ligesom tcpdump oversætter xdpcap-værktøjet først trafikfiltreringsregler på højt niveau til den klassiske BPF-repræsentation (cBPF) ved hjælp af standard libpcap-biblioteket og konverterer dem derefter til form af eBPF-rutiner ved hjælp af en compiler cbpfc, ved hjælp af LLVM/Clang-udviklinger. Ved udgangen gemmes trafikinformation i standard pcap-formatet, som giver dig mulighed for at bruge et trafikdump, der er forberedt i xdpcap til efterfølgende undersøgelse i tcpdump og andre eksisterende trafikanalysatorer. For at indfange DNS-trafikoplysninger kan du i stedet for at bruge kommandoen "tcpdump ip og udp port 53" køre "xdpcap /path/to/hook capture.pcap 'ip og udp port 53′" og derefter bruge en capture .pcap-fil, fx med kommandoen "tcpdump -r" eller i Wireshark.

Kilde: opennet.ru

Tilføj en kommentar