go-conntracer-bpf
go-conntracer-bpf é uma biblioteca para Go para rastrear eventos de conexão de rede (TCP/UDP) (conectar, aceitar, enviar para, recvfrom) no BPF kprobe inspirado em weaveworks/tcptracer-bpf. go-conntracer-bpf é implementado sobre libbpf, que é uma biblioteca C representativa para o kernel Linux incluído no BPF.
Características
- Rastreamento de baixa sobrecarga agregando eventos de conexão no kernel.
- Habilitado para BPF CO-RE (Compile Once – Run Everywhere)
Pré-requisitos
Fase de compilação
- código fonte libbpf
- Clang/LLVM >= 9
Fase de tempo de execução
- Versão do kernel Linux >= 5.6 (devido a operações em lote para mapas BPF)
- Kernel Linux a ser construído com informações de tipo BTF. Consulte https://github.com/libbpf/libbpf#bpf-co-re-compile-once--run-everywhere.
Comum a ambas as fases
- bibliotecas libelf e zlib
Recursos do kernel Linux incluídos no go-conntracer-bpf
go-conntracer-bpf faz uso de alguns recursos mais recentes do kernel Linux.
- Formato de tipo BPF (BTF) na versão 4.18 do kernel.
- API em lote para mapa BPF (BPF_MAP_UPDATE_BATCH, BPF_MAP_LOOKUP_AND_DELETE_BATCH) no kernel versão 5.6.
- Ring Buffer no kernel versão 5.8 (apenas uma versão de não agregação no kernel).
Uso
conexão
conntop é uma ferramenta CLI para mostrar eventos de conexão.
Construir conexão
Projetos usando go-conntracer-bpf