Cloudflare heeft xdpcap gepubliceerd, een verkeersanalysator gebaseerd op het XDP-subsysteem

Cloudflare-bedrijf gepresenteerd open project xdpcap, waarbinnen een netwerkpakketanalysator vergelijkbaar met tcpdump wordt ontwikkeld, gebouwd op basis van het subsysteem XDP (eXpress-gegevenspad). De projectcode is geschreven in Go en gedistribueerd door onder BSD-licentie. Het project ook voorbereid bibliotheek voor het binden van eBPF-verkeersafhandelaars van Go-applicaties.

Het hulpprogramma xdpcap is compatibel met filterexpressies tcpdump/libpcap en stelt u in staat aanzienlijk grotere hoeveelheden verkeer op dezelfde hardware te verwerken. Xdpcap kan ook worden gebruikt voor het debuggen in omgevingen waar reguliere tcpdump niet van toepassing is, zoals filtering, DoS-bescherming en load-balancing-systemen die het Linux-kernel XDP-subsysteem gebruiken, dat pakketten verwerkt voordat ze worden verwerkt door de Linux-kernelnetwerkstack (tcpdump ziet geen pakketten die door de XDP-handler zijn verwijderd).

Hoge prestaties worden bereikt door het gebruik van eBPF- en XDP-subsystemen. eBPF is een bytecode-interpreter ingebouwd in de Linux-kernel waarmee u krachtige handlers van inkomende/uitgaande pakketten kunt maken met beslissingen over het doorsturen of weggooien ervan. Met behulp van een JIT-compiler wordt eBPF-bytecode direct vertaald in machine-instructies en uitgevoerd met de prestaties van native code. Het XDP-subsysteem (eXpress Data Path) vult eBPF aan met de mogelijkheid om BPF-programma's uit te voeren op netwerkstuurprogrammaniveau, met ondersteuning voor directe toegang tot de DMA-pakketbuffer en te werken in de fase voordat de skbuff-buffer wordt toegewezen door de netwerkstack.

Net als tcpdump vertaalt het xdpcap-hulpprogramma eerst verkeersfilterregels op hoog niveau naar de klassieke BPF-representatie (cBPF) met behulp van de standaard libpcap-bibliotheek, en converteert deze vervolgens naar de vorm van eBPF-routines met behulp van een compiler. cbpfc, met behulp van LLVM/Clang-ontwikkelingen. Aan de uitgang wordt verkeersinformatie opgeslagen in het standaard pcap-formaat, waardoor u een verkeersdump kunt gebruiken die is voorbereid in xdpcap voor later onderzoek in tcpdump en andere bestaande verkeersanalysatoren. Om bijvoorbeeld DNS-verkeersinformatie vast te leggen, kunt u in plaats van de opdracht "tcpdump ip and udp port 53" te gebruiken, "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" uitvoeren en vervolgens een capture gebruiken .pcap-bestand, bijvoorbeeld met het commando "tcpdump -r" of in Wireshark.

Bron: opennet.ru

Voeg een reactie