À propos du projet

ebpf-go est une bibliothèque Go pure de Cilium qui fournit des utilitaires pour charger, compiler et déboguer des programmes eBPF. Elle a un minimum de dépendances externes et est destinée à être utilisée dans des processus de longue durée. La bibliothèque comprend plusieurs paquets : - asm : un assembleur de base pour écrire des instructions d'assemblage eBPF directement dans le code Go - cmd/bpf2go : compile et intègre des programmes eBPF écrits en C dans le code Go, en générant automatiquement du code Go pour charger et manipuler des programmes eBPF et des objets map - link : attache des programmes eBPF à divers hooks du noyau - perf : lit depuis PERF_EVENT_ARRAY - ringbuf : lit depuis les maps BPF_MAP_TYPE_RINGBUF - features : découvre les fonctionnalités du noyau liées à BPF en utilisant du Go natif, équivalent à bpftool feature probe - rlimit : lève la contrainte RLIMIT_MEMLOCK sur les noyaux antérieurs à 5.11 - btf : lit le BPF Type Format - pin : travaille avec des objets épinglés sur bpffs Le projet prend en charge Linux (amd64, arm64) avec les versions LTS de kernel.org, et Windows (amd64) via eBPF for Windows. Les autres architectures sont prises en charge au mieux, et les architectures 32 bits ne sont pas prises en charge. La bibliothèque est sous licence MIT et fait partie de l'écosystème eBPF plus large documenté sur ebpf.io.