„Cloudflare“ paskelbė „xdpcap“ – srauto analizatorių, pagrįstą XDP posistemiu

Cloudflare kompanija pateiktas atviras projektas xdpcap, kuriame kuriamas tinklo paketų analizatorius, panašus į tcpdump, sukurtas posistemės pagrindu. XDP (Express Data Path). Projekto kodas parašytas Go ir išplatino pagal BSD licenciją. Projektas taip pat paruoštas biblioteka, skirta susieti eBPF srauto tvarkykles iš Go programų.

Priemonė xdpcap yra suderinama su tcpdump/libpcap filtravimo išraiškomis ir leidžia apdoroti žymiai didesnį srautą ta pačia aparatūra. Xdpcap taip pat gali būti naudojamas derinimui aplinkose, kuriose įprastas tcpdump netaikomas, pvz., filtravimo, DoS apsaugos ir apkrovos balansavimo sistemose, kuriose naudojamas Linux branduolio XDP posistemis, kuris apdoroja paketus prieš juos apdorojant Linux branduolio tinklo krūvoje (tcpdump). nemato XDP tvarkyklės išmestų paketų).

Didelis našumas pasiekiamas naudojant eBPF ir XDP posistemes. „eBPF“ yra „Linux“ branduolyje įmontuotas baitinio kodo interpretatorius, leidžiantis sukurti didelio našumo gaunamų / siunčiamų paketų tvarkykles, priimant sprendimus dėl jų persiuntimo ar atmetimo. Naudojant JIT kompiliatorių, eBPF baitinis kodas iš karto verčiamas į mašinos instrukcijas ir vykdomas naudojant vietinį kodą. XDP (eXpress Data Path) posistemis papildo eBPF su galimybe paleisti BPF programas tinklo tvarkyklės lygiu, palaikydamas tiesioginę prieigą prie DMA paketų buferio ir darbo etapu, kol skbuff buferis yra paskirstomas tinklo dėklo.

Kaip ir tcpdump, xdpcap įrankis pirmiausia paverčia aukšto lygio srauto filtravimo taisykles į klasikinį BPF atvaizdavimą (cBPF), naudodamas standartinę libpcap biblioteką, o tada konvertuoja jas į eBPF rutinos, naudodamas kompiliatorių. cbpfc, naudojant LLVM/Clang plėtrą. Išvestyje eismo informacija išsaugoma standartiniu pcap formatu, kuris leidžia naudoti xdpcap paruoštą eismo išvadą tolesniam tyrimui tcpdump ir kituose esamuose eismo analizatoriuose. Pavyzdžiui, norėdami užfiksuoti DNS srauto informaciją, užuot naudoję komandą „tcpdump ip and udp port 53“, galite paleisti „xdpcap /path/to/hook capture.pcap 'ip and udp port 53′“ ir tada naudoti fiksavimą. .pcap failą, pvz., su komanda „tcpdump -r“ arba „Wireshark“.

Šaltinis: opennet.ru

Добавить комментарий