Cloudflare a publicat xdpcap, un analizor de trafic bazat pe subsistemul XDP

Compania Cloudflare prezentat proiect deschis xdpcap, în cadrul căruia se dezvoltă un analizor de pachete de rețea similar cu tcpdump, construit pe baza subsistemului XDP (Calea datelor eXpress). Codul proiectului este scris în Go și distribuit de sub licență BSD. Proiectul de asemenea pregătit bibliotecă pentru legarea handlerelor de trafic eBPF din aplicațiile Go.

Utilitarul xdpcap este compatibil cu expresiile de filtrare tcpdump/libpcap și vă permite să procesați volume semnificativ mai mari de trafic pe același hardware. Xdpcap poate fi folosit și pentru depanare în medii în care tcpdump obișnuit nu este aplicabil, cum ar fi sistemele de filtrare, protecție DoS și echilibrare a încărcăturii care utilizează subsistemul XDP al nucleului Linux, care procesează pachetele înainte ca acestea să fie procesate de stiva de rețea a nucleului Linux (tcpdump). nu vede pachetele abandonate de handlerul XDP).

Performanța ridicată este obținută prin utilizarea subsistemelor eBPF și XDP. eBPF este un interpret de cod de octeți încorporat în nucleul Linux care vă permite să creați handlere de înaltă performanță a pachetelor de intrare/ieșire cu decizii privind redirecționarea sau eliminarea acestora. Folosind un compilator JIT, eBPF bytecode este tradus din mers în instrucțiuni de mașină și executat cu performanța codului nativ. Subsistemul XDP (eXpress Data Path) completează eBPF cu capacitatea de a rula programe BPF la nivel de driver de rețea, cu suport pentru acces direct la buffer-ul de pachete DMA și lucrează în stadiul înainte ca tamponul skbuff să fie alocat de către stiva de rețea.

La fel ca tcpdump, utilitarul xdpcap traduce mai întâi regulile de filtrare a traficului la nivel înalt în reprezentarea BPF clasică (cBPF) folosind biblioteca standard libpcap, apoi le convertește în forma de rutine eBPF folosind un compilator cbpfc, folosind dezvoltările LLVM/Clang. La ieșire, informațiile despre trafic sunt salvate în formatul standard pcap, ceea ce vă permite să utilizați un dump de trafic pregătit în xdpcap pentru studiul ulterioar în tcpdump și alte analizoare de trafic existente. De exemplu, pentru a captura informații de trafic DNS, în loc să utilizați comanda „tcpdump ip and udp port 53”, puteți rula „xdpcap /path/to/hook capture.pcap 'ip and udp port 53′” și apoi utilizați o captură .pcap, de exemplu, cu comanda „tcpdump -r” sau în Wireshark.

Sursa: opennet.ru

Adauga un comentariu