Cloudflare XDP подсистемасына негизделген xdpcap трафик анализаторун чыгарды

Cloudflare компаниясы берилген ачык долбоор xdpcap, анын ичинде подсистеманын негизинде курулган tcpdump сыяктуу тармактык пакет анализатору иштелип жатат XDP (eXpress маалымат жолу). Долбоордун коду Go жана жазылган жайылуу BSD лицензиясы боюнча. Долбоор да даярдалган Go тиркемелеринен eBPF трафик иштетүүчүлөрүн бириктирүү үчүн китепкана.

xdpcap утилитасы tcpdump/libpcap чыпкалоочу туюнтмалар менен шайкеш келет жана ошол эле жабдыктагы трафиктин кыйла чоң көлөмүн иштетүүгө мүмкүндүк берет. Xdpcap ошондой эле кадимки tcpdump колдонулбаган чөйрөлөрдө мүчүлүштүктөрдү оңдоо үчүн колдонулушу мүмкүн, мисалы, чыпкалоо, DoS коргоо жана Linux ядросунун тармактык стеки (tcpdump) тарабынан пакеттерди иштеткенге чейин Linux ядросунун XDP кичи тутумун пайдаланган жүк баланстоо системалары 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 форматында сакталат, ал xdpcap ичинде даярдалган трафиктин таштандысын tcpdump жана башка учурдагы трафик анализаторлорунда кийинки изилдөө үчүн колдонууга мүмкүндүк берет. Мисалы, DNS трафик маалыматын тартуу үчүн, "tcpdump ip жана udp порт 53" буйругун колдонуунун ордуна, "xdpcap /path/to/hook capture.pcap 'ip жана udp порт 53′" иштетип, андан кийин тартууну колдонсоңуз болот. .pcap файлы, мис. "tcpdump -r" буйругу менен же Wireshark'та.

Source: opennet.ru

Комментарий кошуу