Cloudflare XDP ішкі жүйесіне негізделген xdpcap трафик анализаторын шығарды

Cloudflare компаниясы ұсынылған ашық жоба xdpcap, оның ішінде ішкі жүйе негізінде салынған tcpdump-қа ұқсас желілік пакеттік анализатор әзірленуде. XDP (eXpress деректер жолы). Жоба коды Go және тілінде жазылған таралады BSD лицензиясы бойынша. Жоба да дайындалған Go қолданбаларынан байланыстыратын eBPF трафик өңдеушілеріне арналған кітапхана.

xdpcap утилитасы tcpdump/libpcap сүзу өрнектерімен үйлесімді және бір жабдықта трафиктің айтарлықтай үлкен көлемін өңдеуге мүмкіндік береді. Xdpcap сонымен қатар Linux ядросының желілік стекімен (tcpdump) өңделмей тұрып пакеттерді өңдейтін Linux ядросының XDP ішкі жүйесін пайдаланатын сүзу, DoS қорғау және жүктемені теңестіру жүйелері сияқты тұрақты tcpdump қолданылмайтын орталарда жөндеу үшін де пайдаланылуы мүмкін. XDP өңдеушісі түсірген пакеттерді көрмейді).

Жоғары өнімділікке eBPF және XDP ішкі жүйелерін пайдалану арқылы қол жеткізіледі. eBPF – Linux ядросына кіріктірілген байт-код интерпретаторы, ол кіріс/шығыс пакеттерін қайта жіберу немесе жою туралы шешімдері бар жоғары өнімді өңдеушілерді жасауға мүмкіндік береді. JIT компиляторының көмегімен eBPF байт коды машина нұсқауларына жылдам аударылады және жергілікті кодтың өнімділігімен орындалады. XDP (eXpress Data Path) ішкі жүйесі eBPF жүйесін BPF бағдарламаларын желілік драйвер деңгейінде іске қосу мүмкіндігімен, DMA пакеттік буферіне тікелей қол жеткізуді қолдауымен және skbuff буфері желі стекімен бөлінгенге дейінгі кезеңде жұмыс істеу мүмкіндігімен толықтырады.

Tcpdump сияқты, xdpcap утилитасы алдымен стандартты libpcap кітапханасын пайдаланып жоғары деңгейлі трафикті сүзу ережелерін классикалық BPF көрсетіліміне (cBPF) аударады, содан кейін оларды компилятор арқылы eBPF процедураларының пішініне түрлендіреді. cbpfc, LLVM/Clang әзірлемелерін пайдалану. Шығару кезінде трафик туралы ақпарат стандартты pcap пішімінде сақталады, ол tcpdump және басқа қолданыстағы трафик анализаторларында кейіннен зерттеу үшін xdpcap ішінде дайындалған трафик демпін пайдалануға мүмкіндік береді. Мысалы, DNS трафик ақпаратын түсіру үшін «tcpdump ip және udp порты 53» пәрменін пайдаланудың орнына «xdpcap /path/to/hook capture.pcap 'ip және udp порт 53′» іске қосып, одан кейін түсіруді пайдалануға болады. .pcap файлы, мысалы, "tcpdump -r" пәрменімен немесе Wireshark ішінде.

Ақпарат көзі: opennet.ru

пікір қалдыру