go-conntracer-bpf
go-conntracer-bpf ist eine Bibliothek für Go zum Verfolgen von Netzwerkverbindungsereignissen (TCP/UDP) (Connect, Accept, Sendto, Recvfrom) auf BPF kprobe, inspiriert von weaveworks/tcptracer-bpf. go-conntracer-bpf ist auf libbpf implementiert, einer repräsentativen C-Bibliothek für den im BPF enthaltenen Linux-Kernel.
Merkmale
- Tracing mit geringem Overhead durch Aggregation von Verbindungsereignissen im Kernel.
- BPF CO-RE (Compile Once – Run Everywhere)-fähig
Voraussetzungen
Kompilierungsphase
- libbpf-Quellcode
- Clang/LLVM >= 9
Laufzeitphase
- Linux-Kernel-Version >= 5.6 (aufgrund von Batch-Operationen für BPF-Maps)
- Linux-Kernel, der mit BTF-Typinformationen erstellt werden soll. Siehe https://github.com/libbpf/libbpf#bpf-co-re-compile-once--run-everywhere.
Beiden Phasen gemeinsam
- libelf- und zlib-Bibliotheken
Funktionen des Linux-Kernels, die in go-conntracer-bpf enthalten sind
go-conntracer-bpf nutzt einige aktuelle Funktionen des Linux-Kernels.
- BPF Type Format (BTF) in Kernel-Version 4.18.
- Batch-API zur BPF-Zuordnung (BPF_MAP_UPDATE_BATCH, BPF_MAP_LOOKUP_AND_DELETE_BATCH) in Kernel-Version 5.6.
- Ringpuffer in Kernel-Version 5.8 (nur eine Variante von No-Aggregation im Kernel).
Verwendung
conntop
conntop ist ein CLI-Tool zum Anzeigen von Verbindungsereignissen.
Conntop erstellen
Projekte mit go-conntracer-bpf