Upgrade to Pro — share decks privately, control downloads, hide ads and more …

eBPF e inovações em sistemas operacionais

eBPF e inovações em sistemas operacionais

eBPF é uma máquina virtual no kernel que permite a execução de código no espaço do kernel. Nesta palestra vamos apresentar sua história, arquitetura, como funciona um programa eBPF, e suas várias aplicações para observabilidade, segurança, e redes. Entenderemos como esta tecnologia tem alavancado inovações nos últimos anos e despertado interesses na academia e na indústria.

Palestra apresentada no FLISOL 2023 em Belo Horizonte.

Lucas Bleme

April 14, 2023
Tweet

More Decks by Lucas Bleme

Other Decks in Technology

Transcript

  1. eBPF e inovações em Sistemas
    Operacionais
    Lucas Bleme

    View Slide

  2. Agenda
    Definições Arquitetura Workflow Implementação Casos de Uso Conclusão

    View Slide

  3. Uma VM que permite executar código no Kernel.
    “extended Berkeley Packet Filter”
    BPF introduzido no Linux Kernel 2.1.75 em 1997
    eBPF introduzido em Março de 2014 (Daniel Borkmann)
    O que é eBPF?
    https://lore.kernel.org/netdev/[email protected]

    View Slide

  4. Arquitetura Kernel
    fonte: https://ebpf.foundation/

    View Slide

  5. Suporte nativo VS kernel modules :(
    Alterar o código fonte do kernel ou escrever um kernel module
    (1) Esperar anos até que a nova versão seja largamente utilizada
    (2) Prover fixes regularmente para novas versões do kernel
    Preocupação com limites de segurança

    View Slide

  6. eBPF for the rescue
    fonte: https://ebpf.foundation/

    View Slide

  7. Programa eBPF
    kernel space
    user space

    View Slide

  8. Programa eBPF
    Subset de C (versão restrita)
    Sem loops, printf, variáveis globais…
    Orientado a eventos (syscalls, ingresso de pacotes, tracepoints)
    Pode ser carregado no kernel usando C, Go, Python e Rust

    View Slide

  9. Workflow
    fonte: https://ebpf.foundation/

    View Slide

  10. Workflow (hooks)
    fonte: https://ebpf.foundation/

    View Slide

  11. Workflow (maps)
    fonte: https://ebpf.foundation/

    View Slide

  12. Implementação
    (kernel)
    __u32 ip_src = iph->saddr;
    __u32 ip_dst = iph->daddr;
    int pkt_sz = data_end - data;

    View Slide

  13. Implementação
    (kernel com map)

    View Slide

  14. Implementação
    (user space)

    View Slide

  15. Casos de uso
    Networking
    balanceamento de carga, filtro de pacotes, roteamento.
    Segurança
    monitorar system calls, fluxos de rede, prevenir ações não autorizadas.
    Observabilidade
    identificar fluxos de rede, analisar desempenho, detectar falhas.

    View Slide

  16. Casos de uso balanceamento de carga L4
    https://engineering.fb.com/2018/05/22/open-source/open-sourcing-katran-a-scalable-network-load-balancer/
    “Katran runs packet handling XDP
    routines right after packet has been
    received by network interface card
    (NIC)”

    View Slide

  17. Casos de uso mitigando DDoS
    https://blog.cloudflare.com/how-to-drop-10-million-packets/
    “With XDP we can drop 10 million
    packets per second on a single
    CPU.”

    View Slide

  18. Casos de uso observabilidade e desempenho
    https://www.brendangregg.com/Slides/reInvent2019_BPF_Performance_Analysis/
    “Flow Exporter uses eBPF
    tracepoints to capture TCP flows at
    near real time. At much less than 1%
    of CPU.”
    https://netflixtechblog.com/how-netflix-uses-ebpf-flow-logs-at-scale-for-network-insight-e3ea997dca96

    View Slide

  19. cillium
    eBPF-based Networking,
    Security, and Observability
    bpftrace
    High-level tracing language for
    Linux eBPF (awk like)
    BumbleBee
    OCI compliant eBPF tooling
    Falco
    Cloud Native Runtime Security
    pwru
    eBPF-based Linux kernel
    network packet tracer
    Projetos

    View Slide

  20. Conclusão e o Futuro
    Ferramental ainda é pouco amigável, requer conhecimentos de SO
    (bcc, libbpf, libbpf-bootrstrap, running eBPF in docker containers)
    Impacto em múltiplas camadas do SO
    “The next wave of SDN” Dan Wendlandt (isovalent & nicira)
    Distribuição, interoperabilidade, debugging
    (bumblebee, ebpf-for-windows, edb)

    View Slide

  21. Obrigado :)
    andreybleme.com/talks
    Perguntas?
    [email protected]

    View Slide