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

Compania Cloudflare a prezentat proiect deschis xdpcap, în cadrul căruia se dezvoltă un analizator de pachete de rețea asemănător cu tcpdump, construit pe baza subsistemului XDP (eXpress Data Path). Codul proiectului este scris în limbajul Go și se răspândește sub licența BSD. Proiectul include de asemenea a fost pregătită o bibliotecă pentru legarea handler-elor eBPF de trafic din aplicații scrise în Go.

Utilitarul xdpcap este compatibil cu expresiile de filtrare tcpdump/libpcap și permite procesarea unor volume semnificativ mai mari de trafic pe același echipament. Xdpcap poate fi utilizat și pentru depanare în condiții în care tcpdump obișnuit nu poate fi folosit, de exemplu, atunci când sunt aplicate sisteme de filtrare, protecție împotriva atacurilor DoS și echilibrarea încărcării, care utilizează subsistemul XDP al nucleului Linux, procesând pachetele înainte de a fi gestionate de stiva de rețea a nucleului Linux (tcpdump nu vede pachetele eliminate de handler-ul XDP).

Performanța ridicată este obținută datorită utilizării subsistemelor eBPF și XDP. eBPF este un interpret de bytecode încorporat în nucleul Linux, permițând crearea de handler-e de pachete de intrare/ieșire de înaltă performanță prin luarea deciziilor de redirecționare sau eliminare a acestora. Prin intermediul compilatorului JIT, bytecode-ul eBPF este transformat î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 nivelul driver-ului de rețea, oferind suport pentru acces direct la buffer-ul DMA al pachetelor și funcționând înainte de alocarea buffer-ului skbuff de către stiva de rețea.

Ca și tcpdump, utilitarul xdpcap transformă inițial regulile de filtrare a traficului la un nivel înalt în reprezentarea clasică BPF (cBPF) folosind biblioteca standard libpcap, după care le transformă în forma subprogramelor eBPF, folosind compilatorul cbpfc, care utilizează instrumentele LLVM/Clang. La final, informațiile despre trafic sunt salvate într-un format standard pcap, ceea ce permite utilizarea dump-ului de trafic generat prin xdpcap pentru studii ulterioare în tcpdump și alte analizatoare de trafic existente. De exemplu, pentru a captura informații despre traficul DNS, în loc de comanda „tcpdump ip and udp port 53”, se poate rula „xdpcap /path/to/hook capture.pcap ‘ip and udp port 53’”, după care se poate folosi fișierul capture.pcap, de exemplu, cu comanda „tcpdump -r” sau în Wireshark.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster