Cloudflare го објави xdpcap, анализатор на сообраќај базиран на потсистемот XDP

Компанијата Cloudflare презентирани отворен проект xdpcap, во чии рамки се развива мрежен анализатор на пакети сличен на tcpdump, изграден врз основа на потсистемот XDP (eXpress Податочна патека). Кодот на проектот е напишан во Go и дистрибуирани од под лиценца BSD. Проектот исто така подготвени библиотека за врзување на ракувачи со сообраќај eBPF од апликациите Go.

Услужната алатка xdpcap е компатибилна со изразите за филтрирање tcpdump/libpcap и ви овозможува да обработувате значително поголем обем на сообраќај на истиот хардвер. Xdpcap може да се користи и за дебагирање во средини каде што не е применлив редовниот tcpdump, како што се филтрирање, DoS заштита и системи за балансирање на оптоварување што го користат потсистемот XDP на Linux кернелот, кој ги обработува пакетите пред да бидат обработени од мрежниот оџак на кернелот Linux (tcpdump не гледа пакети испуштени од XDP управувачот).

Високите перформанси се постигнуваат преку употреба на потсистеми eBPF и XDP. eBPF е преведувач на бајтекод вграден во кернелот на Линукс кој ви овозможува да креирате ракувачи со високи перформанси на дојдовни/излезни пакети со одлуки за нивно препраќање или отфрлање. Со користење на JIT компајлер, eBPF бајтекодот се преведува на лет во машински инструкции и се извршува со изведба на мајчин код. Потсистемот XDP (eXpress Data Path) го надополнува eBPF со способноста да се извршуваат BPF програми на ниво на двигател на мрежата, со поддршка за директен пристап до баферот за пакети DMA и работа на фазата пред тампонот skbuff да биде доделен од мрежниот стек.

Како и tcpdump, алатката xdpcap прво ги преведува правилата за филтрирање сообраќај на високо ниво во класичното претставување на BPF (cBPF) користејќи ја стандардната библиотека libpcap, а потоа ги претвора во форма на рутини eBPF користејќи компајлер cbpfc, користејќи развој на LLVM/Clang. На излезот, информациите за сообраќајот се зачувуваат во стандардниот формат pcap, кој ви овозможува да користите сообраќајна депонија подготвена во xdpcap за последователно проучување во tcpdump и други постоечки анализатори на сообраќај. На пример, за да снимите информации за сообраќајот на DNS, наместо да ја користите командата „tcpdump ip и udp port 53“, можете да извршите „xdpcap /path/to/hook capture.pcap „ip and udp port 53′“ и потоа да користите фаќање .pcap датотека, на пример, со командата „tcpdump -r“ или во Wireshark.

Извор: opennet.ru

Додадете коментар