Cloudflare on julkaissut XDP-alijärjestelmään perustuvan liikenneanalysaattorin xdpcap

Cloudflare Company esitetty avoin projekti xdpcap, jossa kehitetään tcpdumpin kaltaista verkkopakettianalysaattoria, joka on rakennettu alijärjestelmän pohjalle. XDP (Express Data Path). Projektikoodi on kirjoitettu Go ja jakelija BSD-lisenssillä. Projekti myös valmistetut kirjasto eBPF-liikenteen käsittelijöiden sitomiseen Go-sovelluksista.

xdpcap-apuohjelma on yhteensopiva tcpdump/libpcap-suodatuslausekkeiden kanssa ja mahdollistaa huomattavasti suurempien liikennemäärien käsittelyn samalla laitteistolla. Xdpcapia voidaan käyttää myös virheenkorjaukseen ympäristöissä, joissa tavallinen tcpdump ei sovellu, kuten suodatus-, DoS-suojaus- ja kuormantasausjärjestelmät, jotka käyttävät Linux-ytimen XDP-alijärjestelmää, joka käsittelee paketit ennen kuin Linux-ytimen verkkopino (tcpdump) käsittelee ne. ei näe XDP-käsittelijän pudottamia paketteja).

Korkea suorituskyky saavutetaan käyttämällä eBPF- ja XDP-alijärjestelmiä. eBPF on Linux-ytimeen sisäänrakennettu tavukooditulkki, jonka avulla voit luoda tehokkaita käsittelijöitä saapuville/lähteville paketeille ja tehdä päätöksiä niiden välittämisestä tai hylkäämisestä. JIT-kääntäjän avulla eBPF-tavukoodi käännetään lennossa konekäskyiksi ja suoritetaan alkuperäisen koodin suorituskyvyllä. XDP (eXpress Data Path) -alijärjestelmä täydentää eBPF:ää mahdollisuudella ajaa BPF-ohjelmia verkkoohjaintasolla, ja se tukee suoraa pääsyä DMA-pakettipuskuriin ja työskentelyä vaiheessa, ennen kuin verkkopino varaa skbuff-puskurin.

Kuten tcpdump, xdpcap-apuohjelma kääntää ensin korkean tason liikenteen suodatussäännöt klassiseen BPF-esitykseen (cBPF) käyttämällä tavallista libpcap-kirjastoa ja muuntaa ne sitten eBPF-rutiineiksi kääntäjän avulla. cbpfc, käyttämällä LLVM/Clang-kehitystä. Lähdössä liikennetiedot tallennetaan vakiomuotoiseen pcap-muotoon, jonka avulla voit käyttää xdpcapissa valmistettua liikennevedoskirjaa myöhempää tutkimusta varten tcpdumpissa ja muissa olemassa olevissa liikenneanalysaattoreissa. Esimerkiksi DNS-liikennetietojen kaappaamiseksi "tcpdump ip and udp port 53" -komennon sijaan voit suorittaa "xdpcap /path/to/hook capture.pcap 'ip and udp port 53" ja käyttää sitten sieppausta. .pcap-tiedosto, esimerkiksi komennolla "tcpdump -r" tai Wiresharkissa.

Lähde: opennet.ru

Lisää kommentti