Firma Cloudflare opublikowała xdpcap, analizator ruchu oparty na podsystemie XDP.

Firma Cloudflare przedstawiła otwarty projekt xdpcap, w ramach którego rozwijany jest analizator pakietów sieciowych podobny do tcpdump, oparty na subsystemie XDP (eXpress Data Path). Kod projektu został napisany w języku Go i rozpowszechniany jest udostępniany na licencji BSD. Projekt obejmuje również przygotowano bibliotekę do wiązania eBPF-obsługujących aplikacji pakietów w języku Go.

Narzędzie xdpcap jest zgodne z wyrażeniami filtrującymi tcpdump/libpcap i pozwala na przetwarzanie na tym samym sprzęcie znacznie większych ilości ruchu. Xdpcap może być również stosowane do debugowania w warunkach, gdy zwykły tcpdump jest nieprzydatny, na przykład, gdy stosowane są systemy filtracji, zabezpieczenia przed atakami DoS oraz równoważenia obciążenia, wykorzystujące subsystem jądra Linux XDP, obsługujące pakiety na etapie przed ich przetworzeniem przez stos sieciowy jądra Linux (tcpdump nie widzi pakietów, które zostały odrzucone przez procesor XDP).

Wysoka wydajność jest osiągana dzięki zastosowaniu subsystemów eBPF i XDP. eBPF to osadzony w jądrze Linux interpreter bajtowego kodu, który pozwala tworzyć wysoko wydajne procesory pakietów przychodzących/wychodzących, podejmując decyzje dotyczące ich przekierowania lub odrzucenia. Dzięki kompilatorowi JIT kod bajtowy eBPF jest w locie tłumaczony na instrukcje maszynowe i wykonywany z wydajnością kodu natywnego. Subsystem XDP (eXpress Data Path) uzupełnia eBPF możliwością uruchamiania programów BPF na poziomie sterownika sieciowego, z obsługą bezpośredniego dostępu do bufora DMA pakietów oraz działaniem na etapie przed przydzieleniem bufora sk_buff przez stos sieciowy.

Podobnie jak tcpdump, narzędzie xdpcap początkowo tłumaczy zasady filtracji ruchu na wysokim poziomie na klasyczne przedstawienie BPF (cBPF) za pomocą standardowej biblioteki libpcap, a następnie przekształca je w postać podprogramów eBPF, korzystając z kompilatora cbpfc, wykorzystującego osiągnięcia LLVM/Clang. Na wyjściu informacje o ruchu są zapisywane w standardowym formacie pcap, co pozwala na wykorzystanie zrzutu ruchu przygotowanego w xdpcap do dalszego badania w tcpdump i innych istniejących analizatorach ruchu. Na przykład, aby przechwycić informacje o ruchu DNS zamiast polecenia „tcpdump ip and udp port 53” można uruchomić „xdpcap /path/to/hook capture.pcap ‘ip and udp port 53′”, a następnie użyć pliku capture.pcap, na przykład w poleceniu „tcpdump -r” lub w Wireshark.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster