Cloudflare ti ṣe atẹjade xdpcap, olutupalẹ ijabọ ti o da lori eto abẹlẹ XDP

Ile-iṣẹ Cloudflare gbekalẹ ìmọ ise agbese xdpcap, laarin eyiti oluyanju soso nẹtiwọọki kan ti o jọra si tcpdump ti wa ni idagbasoke, ti a ṣe lori ipilẹ ti eto-iṣẹ XDP (Ọna data eXpress). Awọn koodu ise agbese ti kọ ninu Go ati pin nipasẹ labẹ BSD iwe-ašẹ. Ise agbese na pese sile ìkàwé fun abuda eBPF ijabọ handlers lati Go ohun elo.

IwUlO xdpcap ni ibamu pẹlu tcpdump/libpcap awọn ikosile sisẹ ati gba ọ laaye lati ṣe ilana awọn iwọn ti o tobi pupọ ti ijabọ lori ohun elo kanna. Xdpcap tun le ṣee lo fun n ṣatunṣe aṣiṣe ni awọn agbegbe nibiti tcpdump deede ko wulo, gẹgẹbi sisẹ, Idaabobo DoS, ati awọn ọna ṣiṣe iwọntunwọnsi fifuye ti o lo Linux kernel XDP subsystem, eyiti o ṣe ilana awọn apo-iwe ṣaaju ṣiṣe wọn nipasẹ akopọ Nẹtiwọọki kernel Linux (tcpdump). ko ri awọn apo-iwe silẹ nipasẹ olutọju XDP).

Iṣẹ ṣiṣe giga jẹ aṣeyọri nipasẹ lilo eBPF ati awọn eto abẹlẹ XDP. eBPF jẹ onitumọ bytecode ti a ṣe sinu ekuro Linux ti o fun ọ laaye lati ṣẹda awọn oluṣakoso iṣẹ ṣiṣe giga ti awọn apo-iwe ti nwọle / ti njade pẹlu awọn ipinnu nipa fifiranṣẹ tabi sisọ wọn silẹ. Lilo olupilẹṣẹ JIT kan, eBPF bytecode ti tumọ lori fo sinu awọn ilana ẹrọ ati ṣiṣe pẹlu iṣẹ ti koodu abinibi. XDP (eXpress Data Path) ṣe afikun eBPF pẹlu agbara lati ṣiṣe awọn eto BPF ni ipele awakọ nẹtiwọọki, pẹlu atilẹyin fun iraye taara si apo idalẹnu DMA ati ṣiṣẹ ni ipele ṣaaju ki ifipamọ skbuff ti pin nipasẹ akopọ nẹtiwọọki.

Bii tcpdump, IwUlO xdpcap ni akọkọ tumọ awọn ofin sisẹ ijabọ ipele-giga sinu aṣoju BPF Ayebaye (cBPF) ni lilo ile-ikawe libpcap boṣewa, ati lẹhinna yi wọn pada si irisi awọn ilana eBPF ni lilo akopọ cbpfc, lilo LLVM/Clang idagbasoke. Ni iṣelọpọ, alaye ijabọ ti wa ni fipamọ ni ọna kika pcap boṣewa, eyiti o fun ọ laaye lati lo idalẹnu ijabọ ti a pese sile ni xdpcap fun ikẹkọ atẹle ni tcpdump ati awọn atunnkanka ijabọ miiran ti o wa tẹlẹ. Fun apẹẹrẹ, lati gba alaye ijabọ DNS, dipo lilo aṣẹ “tcpdump ip ati udp port 53”, o le ṣiṣẹ “xdpcap /path/to/hook capture.pcap 'ip and udp port 53′” ati lẹhinna lo igbasilẹ kan. .pcap faili, fun apẹẹrẹ pẹlu pipaṣẹ "tcpdump -r" tabi ni Wireshark.

orisun: opennet.ru

Fi ọrọìwòye kun