Cloudflare xdpcap, analîzkerek seyrûseferê li ser bingeha binepergala XDP weşand

Şirketa Cloudflare pêşkêş kirin projeya vekirî xdpcap, ku di hundurê wê de analîzerek pakêtek torê ya mîna tcpdump tête pêşve xistin, li ser bingeha bine pergalê hatî çêkirin. XDP (Rêya Daneyên eXpress). Koda projeyê li Go û tê nivîsandin belav kirin ji hêla di bin lîsansa BSD de. Proje jî amade kirin pirtûkxane ji bo girêdana rêvebirên seyrûsefera eBPF ji serîlêdanên Go.

Karûbar xdpcap bi îfadeyên fîlterkirina tcpdump/libpcap re hevaheng e û dihêle hûn li ser heman hardware jimarên seyrûseferê yên pir mezin pêvajoyê bikin. Xdpcap di heman demê de dikare ji bo debugkirina li derdorên ku tcpdump bi rêkûpêk ne pêkan e, wek fîlterkirin, parastina DoS, û pergalên hevsengkirina barkirinê yên ku binepergala kernel Linux XDP bikar tînin, ku pakêtan berî ku ew ji hêla stûna torê ya kernel Linux ve werin hilberandin (tcpdump pakêtên ku ji hêla hilgirê XDP ve hatine avêtin nabîne).

Performansa bilind bi karanîna binepergalên eBPF û XDP ve tê bidestxistin. eBPF tercumanek bytecode ye ku di nav kernel Linux de hatî çêkirin ku dihêle hûn bi biryarên di derheqê şandin an avêtina wan de rêgezên paketên hatinî/derketî bi performansa bilind biafirînin. Bi karanîna berhevkarek JIT-ê, bytecode eBPF di firînê de di rêwerzên makîneyê de tê wergerandin û bi performansa koda xwemalî tê darve kirin. Binepergala XDP (Rêya Daneyên eXpress) eBPF bi şiyana ku bernameyên BPF-ê di asta ajokera torê de bimeşîne, bi piştgirîya gihandina rasterast a tampona pakêtê ya DMA re temam dike û di qonaxê de berî ku tampona skbuff ji hêla stûna torê ve were veqetandin dixebite.

Mîna tcpdump, kargêriya xdpcap pêşî qaîdeyên fîlterkirina trafîkê ya asta bilind bi karanîna pirtûkxaneya standard libpcap vediguhezîne nûnertiya klasîk a BPF (cBPF), û dûv re wan bi karanîna berhevkerek di forma rûtînên eBPF de vediguherîne. cbpfc, pêşveçûnên LLVM / Clang bikar tînin. Di encam de, agahdariya seyrûseferê di forma pcap-a standard de tê hilanîn, ku dihêle hûn ji bo lêkolîna paşîn di tcpdump û analîzkerên din ên seyrûseferê yên heyî de dupek trafîkê ya ku di xdpcap de hatî amadekirin bikar bînin. Mînakî, ji bo girtina agahdariya seyrûsefera DNS-ê, li şûna ku emrê "tcpdump ip û udp port 53" bikar bînin, hûn dikarin "xdpcap /path/to/hook capture.pcap 'ip and udp port 53'" bixebitin û dûv re jî girtinek bikar bînin. Pelê .pcap, mînakî bi fermana "tcpdump -r" an di Wireshark de.

Source: opennet.ru

Add a comment