◦ Develop both server-side and automotive systems ◦ Accelerate eBPF adoption across the company • Open Source Program Office in Toyota Recent Activities • The reviewer of the Japanese translation of the book "Learning eBPF" published by O'Reilly Japan • Cloud Native Community Japan Organizer Kenta Tada
of eBPF to accelerate its introduction into production systems • Disseminate patterns and best practices for developing eBPF programs • Increase contributions to eBPF-related open-source software from Japan
eBPF Japan Meetup(Today's topic) • ebpfjp : https://github.com/ebpfjp ◦ Workshop ▪ Try out uprobe and usdt, which are implemented in familiar middleware. ◦ Investigating hook points for kprobe and uprobe in various OSS ▪ I'll explain this activity in KubeDay 2024!!
Cilium, more CNCF projects are leveraging eBPF. ◦ Examples: bpfman, Kepler, LoxiLB • However, the ways in which eBPF is utilized often remain implicit knowledge. • Let's dive into eBPF usage in LoxiLB!
An open source hyper-scale software load-balancer for cloud-native workloads • loxilb is being developed to support the adoption of cloud-native tech in telco, mobility, and edge computing. ref: https://www.loxilb.io/
◦ TC is used for L4+ processing operations. • XDP ◦ XDP is difficult to handle tcp checksum offload and other such features used by linux networking stack. ◦ XDP is perfect for quick operations at l2 layer. • There are many other eBPF features in use, but today I will introduce two of them. ◦ 1. Proxy server ◦ 2. Sync states across the cluster
16 Socket User Kernel Process A sockmap Socket TCP/IP Routing TCP/IP Routing Process B netns 1 netns 2 SEC("sk_msg") - This program is called when sendmsg or sendfile syscalls are executed on the socket. - Redirect the message directly to the receiving socket. /opt/loxilb/cgroup/xxxx SEC("sockops") - This program is called when there's a socket operation on this cgroup. - Update sockmaps for redirection in the program of sk_msg.
synchronizes eBPF maps to others in the cluster. 2. Sync states across the cluster 17 eBPF Sync User Program Perf Ring Buffer eBPF Program attached to kprobe eBPF Maps eBPF Sync User Program Perf Ring Buffer eBPF Program attached to kprobe eBPF Maps gRPC or others User User Kernel Kernel
to get the information about eBPF maps ◦ For the current use-case in LoxiLB, we just need to hook entry-points of BPF_MAP_TYPE_HASH. ◦ Hook into below kernel functions and bpf syscalls ▪ htab_map_update_elem() ▪ htab_map_delete_elem() ▪ htab_map_lookup_and_delete_elem() ▪ bpf_map_update_value() ▪ array_map_update_elem() • This method is inspired by the following proof-of-concept example, which uses eBPF to monitor changes to eBPF maps from user and kernel programs. ◦ https://github.com/CrowdStrike/bpfmon-example
eBPF demands collaboration between application developers and kernel experts. • Let's discuss our activities in "Meet the speaker!" ◦ Call for papers ◦ Sponsors Needed ▪ Venue Sponsorships and so on ◦ Joint event with eBPF Japan Meetup