Cloudflare avalikustas xdpcap'i, XDP-alusel oleva liiklusanalüsaatori

Cloudflare esituse avatud projekt xdpcap, mille raames arendatakse tcpdumpile sarnast võrgu paketianalüsaatorit, mis on ehitatud aluseks XDP (eXpress Data Path). Projekti kood on kirjutatud Go keeles ja GNU Üldine Avaliku litsentsi alusel. ja BSD litsentsi alusel. Projekt on samuti valmistatud raamatukogu eBPF liiklusprotsessorite sidumiseks Go keeles kirjutatud rakendustest.

Utiliit xdpcap on ühilduv tcpdump/libpcap filtreerimisavaldistega ja võimaldab oluliselt suuremaid andmevooge käsitleda samal riistvaral. Xdpcap-d saab kasutada ka tõrkeotsinguks tingimustes, kus tavapärane tcpdump ei sobi, näiteks, kui kasutatakse filtreerimis- ja DoS-rünnakute kaitsesüsteemide, koormuse tasakaalustamissüsteemide, mis kasutavad Linuxi tuuma XDP süsteemi, mis töötleb pakette enne nende töötlemist Linuxi võrgu stackis (tcpdump ei näe pakette, mida XDP töötleja on tagasi lükanud).

Suure jõudluse saavutamine on võimalik eBPF ja XDP süsteemide kasutamise tõttu. eBPF on Linuxi tuuma sisse ehitatud baitekoodi tõlkija, mis võimaldab luua kõrge jõudlusega sisenevate/väljuvate pakettide töötlejaid, mis teevad otsuseid nende suunamise või tagasi lükkamise kohta. JIT-compilatori abil tõlgitakse eBPF baitekood reaalajas masinakeele käsklusteks ja seda täidetakse kohaliku koodi kiirusel. XDP süsteem (eXpress Data Path) täiendab eBPF-i võimalusega käivitada BPF-programme võrgu draiveri tasemel, toetades otsepääsu DMA-paketivõrku ja töötlemist enne skbuff-iblioteegi eraldamist võrgu stackis.

Nagu tcpdump, tõlgib utiliit xdpcap esmalt kõrgema taseme liiklusfiltreerimise reeglid klassikaliseks BPF (cBPF) esinduseks, kasutades põhi biblioteegi libpcap, seejärel muundab need eBPF alamprogrammide vormi, kasutades kompilaatorit cbpfc, mis põhineb LLVM/Clang arendustel. Lõpptulemusena salvestatakse liiklusandmed standardvormingus pcap, mis võimaldab kasutada xdpcap-s loodud andmevoogu hilisemaks uurimiseks tcpdumpis ja teistes olemasolevates paketianalüsaatorites. Näiteks, et saada DNS liiklusandmeid, võib käivitada käsu "xdpcap /path/to/hook capture.pcap 'ip and udp port 53'", mille järel saab kasutada faili capture.pcap, näiteks käsuga "tcpdump -r" või Wiresharkis.

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster