Cloudflare publikigis xdpcap, trafikanalizilon bazitan sur la XDP-subsistemo

Cloudflare Kompanio prezentita malfermita projekto xdpkap, ene de kiu reto-pakaĵanalizilo simila al tcpdump estas evoluigita, konstruita surbaze de la subsistemo XDP (eXpress Datuma Vojo). La projektkodo estas skribita en Go kaj distribuita de sub BSD-licenco. La projekto ankaŭ preparita biblioteko por ligado de eBPF-trafiktraktiloj de Go-aplikoj.

La xdpcap-ilaĵo estas kongrua kun tcpdump/libpcap filtraj esprimoj kaj permesas vin prilabori signife pli grandajn volumojn de trafiko sur la sama aparataro. Xdpcap ankaŭ povas esti uzita por senararigado en medioj kie regula tcpdump ne estas uzebla, kiel ekzemple filtrado, DoS-protekto, kaj ŝarĝbalancadsistemoj kiuj uzas la Linuksan kernon XDP-subsistemon, kiu prilaboras pakaĵetojn antaŭ ol ili estas prilaboritaj per la Linukso-kerna retstako (tcpdump). ne vidas pakaĵetojn faligitaj de la XDP-traktilo).

Alta efikeco estas atingita per la uzo de eBPF kaj XDP-subsistemoj. eBPF estas bajtokoda interpretilo enkonstruita en la Linukso-kerno, kiu ebligas al vi krei alt-efikecajn prizorgantojn de enirantaj/elirantaj pakaĵoj kun decidoj pri plusendado aŭ forĵetado de ili. Uzante JIT-kompililon, eBPF-bajtkodo estas tradukita sur la flugo en maŝininstrukciojn kaj efektivigita kun la agado de indiĝena kodo. La XDP (eXpress Data Path) subsistemo kompletigas eBPF kun la kapablo prizorgi BPF-programojn sur la retŝofornivelo, kun subteno por rekta aliro al la DMA-pakaĵbufro kaj labori en la stadio antaŭ ol la skbuff-bufro estas asignita per la retstako.

Kiel tcpdump, la xdpcap-servaĵo unue tradukas altnivelajn trafikajn filtrajn regulojn en la klasikan BPF-reprezentadon (cBPF) uzante la norman libpcap-bibliotekon, kaj tiam konvertas ilin en la formon de eBPF-rutinoj uzante kompililon. cbpfc, uzante LLVM/Clang-evoluojn. Ĉe la eligo, trafikaj informoj estas konservitaj en la norma pcap-formato, kiu ebligas al vi uzi trafikan rubejon preparitan en xdpcap por posta studo en tcpdump kaj aliaj ekzistantaj trafikanaliziloj. Ekzemple, por kapti DNS-trafikinformojn, anstataŭ uzi la komandon "tcpdump ip and udp port 53", vi povus ruli "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" kaj poste uzi kapton. .pcap dosiero, ekz. kun la komando "tcpdump -r" aŭ en Wireshark.

fonto: opennet.ru

Aldoni komenton