Cloudflare ir publicējis xdpcap, satiksmes analizatoru, kura pamatā ir XDP apakšsistēma

Uzņēmums Cloudflare uzrādīts atklāts projekts xdpcap, kurā tiek izstrādāts tīkla pakešu analizators, kas līdzīgs tcpdump, kas veidots uz apakšsistēmas bāzes. XDP (Express Data Path). Projekta kods ir rakstīts Go un izplata saskaņā ar BSD licenci. Projekts arī sagatavots bibliotēka eBPF trafika apstrādātāju saistīšanai no Go lietojumprogrammām.

Utilīta xdpcap ir saderīga ar tcpdump/libpcap filtrēšanas izteiksmēm un ļauj apstrādāt ievērojami lielāku trafika apjomu tajā pašā aparatūrā. Xdpcap var izmantot arī atkļūdošanai vidēs, kur parastais tcpdump nav piemērojams, piemēram, filtrēšanai, DoS aizsardzībai un slodzes līdzsvarošanas sistēmām, kas izmanto Linux kodola XDP apakšsistēmu, kas apstrādā paketes, pirms tās apstrādā Linux kodola tīkla steks (tcpdump neredz XDP apstrādātāja nomestās paketes).

Augsta veiktspēja tiek panākta, izmantojot eBPF un XDP apakšsistēmas. eBPF ir Linux kodolā iebūvēts baitkoda tulks, kas ļauj izveidot augstas veiktspējas ienākošo/izejošo pakešu apstrādātājus ar lēmumiem par to pārsūtīšanu vai atmešanu. Izmantojot JIT kompilatoru, eBPF baitkods tiek tulkots mašīnas instrukcijās un tiek izpildīts ar vietējā koda veiktspēju. XDP (eXpress Data Path) apakšsistēma papildina eBPF ar iespēju palaist BPF programmas tīkla draivera līmenī, ar atbalstu tiešai piekļuvei DMA pakešu buferim un darbam posmā, pirms skbuff buferis tiek piešķirts no tīkla steka.

Tāpat kā tcpdump, arī utilīta xdpcap vispirms pārvērš augsta līmeņa trafika filtrēšanas noteikumus klasiskajā BPF attēlojumā (cBPF), izmantojot standarta libpcap bibliotēku, un pēc tam pārvērš tos eBPF rutīnu formā, izmantojot kompilatoru. cbpfc, izmantojot LLVM/Clang izstrādes. Izvadā satiksmes informācija tiek saglabāta standarta pcap formātā, kas ļauj izmantot xdpcap sagatavotu satiksmes izdruku turpmākai izpētei tcpdump un citos esošajos satiksmes analizatoros. Piemēram, lai tvertu DNS trafika informāciju, tā vietā, lai izmantotu komandu "tcpdump ip un udp ports 53", varat palaist "xdpcap /path/to/hook capture.pcap 'ip and udp port 53" un pēc tam izmantot uztveršanu. .pcap failu, piemēram, ar komandu "tcpdump -r" vai programmā Wireshark.

Avots: opennet.ru

Pievieno komentāru