Cloudflare hefur gefið út xdpcap, umferðargreiningartæki sem byggir á XDP undirkerfinu

Cloudflare fyrirtæki fram opið verkefni xdpcap, þar sem verið er að þróa netpakkagreiningartæki svipað og tcpdump, byggt á undirkerfinu XDP (eXpress Data Path). Verkefnakóði er skrifaður í Go og dreift af undir BSD leyfi. Verkefnið líka undirbúinn bókasafn til að binda eBPF umferðarstjóra frá Go forritum.

xdpcap tólið er samhæft við tcpdump/libpcap síunartjáningu og gerir þér kleift að vinna úr umtalsvert meiri umferðarmagni á sama vélbúnaði. Xdpcap er einnig hægt að nota til villuleitar í umhverfi þar sem venjulegur tcpdump á ekki við, svo sem síun, DoS vernd og álagsjafnvægiskerfi sem nota Linux kjarna XDP undirkerfi, sem vinnur pakka áður en þeir eru unnar af Linux kjarna netstafla (tcpdump sér ekki pakka sem XDP meðhöndlarinn sleppir).

Mikill árangur næst með því að nota eBPF og XDP undirkerfi. eBPF er bætikóða túlkur innbyggður í Linux kjarnann sem gerir þér kleift að búa til afkastamikla meðhöndlun komandi/útgefinna pakka með ákvörðunum um áframsendingu eða fleygja þeim. Með því að nota JIT þýðanda er eBPF bætikóði þýddur á flugi í vélaleiðbeiningar og keyrður með frammistöðu innfædds kóða. XDP (eXpress Data Path) undirkerfið bætir við eBPF með getu til að keyra BPF forrit á netkerfisstýristigi, með stuðningi fyrir beinan aðgang að DMA pakka biðminni og vinna á stigi áður en skbuff biðminni er úthlutað af netstaflanum.

Eins og tcpdump, þýðir xdpcap tólið fyrst umferðarsíunarreglur á háu stigi yfir í klassíska BPF framsetningu (cBPF) með því að nota staðlaða libpcap bókasafnið og breytir þeim síðan í formi eBPF venja með því að nota þýðanda cbpfc, með því að nota LLVM/Clang þróun. Við úttakið eru umferðarupplýsingar vistaðar á stöðluðu pcap sniði, sem gerir þér kleift að nota umferðarhaug sem útbúinn er í xdpcap fyrir síðari rannsókn í tcpdump og öðrum núverandi umferðargreiningartækjum. Til dæmis, til að fanga DNS umferðarupplýsingar, í stað þess að nota "tcpdump ip og udp port 53" skipunina, geturðu keyrt "xdpcap /path/to/hook capture.pcap 'ip og udp port 53'" og síðan notað handtaka .pcap skrá, t.d. með skipuninni "tcpdump -r" eða í Wireshark.

Heimild: opennet.ru

Bæta við athugasemd