Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 10 Jun 2020 23:06:40 +0530
From:      Ankur Kothiwal <ankur@freebsd.org>
To:        soc-status@freebsd.org, rstone@freebsd.org, hrs@freebsd.org
Subject:   [GSoC'20 Weekly Update - Week 1] eBPF XDP Hook
Message-ID:  <CA%2BQRpiEUo%2BMQUGm8Uf7d7wCQnjuD5XnzmY6YGXK1ubvUXJ=Bcg@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi all,
Project: Implement eBPF XDP for FreeBSD by extending VirtIO ethernet
driver if_vtnet
The goal of this project is to extend an existing FreeBSD network
driver,VirtIO if_vtnet to be able to call into an eBPF program when
processing a newly received packet. The driver will perform the basic
actions of XDP like PASS and DROP the packet as specified by the
program. The project will also implement new map type and other eBPF
helper functions.The aim of this project is to add new probe sites
into the kernel that will call eBPF functions.

Mentor: Ryan Stone <rstone@> and Hiroki Sato <hrs@>

The aim for the design implementation was to register a struct
ebpf_probe when an interface is registered with pfil(9), and when a
program is attached to the ebpf probe, we will add a hook to the pfil
head for the interface to add a hook we used ebpf_activate_probe()).
But currently it is very specific to syscall probes.
So for the activating probe, we modified the ebpf_activate_probe to be
of general use and moved the syscall related active probe to a new
function ebpf_active_syscall_probe().
When initializing syscall probes, the activate pointer points to the
ebpf_active_sycall_probe() function and when the XDP probe is
registered, the function pointer can be set to a XDP related function.
To register with pfil_add_hook, we used the ebpf_probe_fire() as a
wrapper function to be used as general function and for syscall
related callback we created a new function ebpf_syscall_probe_fire().

Project GSoC Wiki: https://wiki.freebsd.org/SummerOfCodeIdeas#eBPF_XDP_Hooks
Github Repo for the code: https://github.com/rysto32/freebsd/tree/ebpf-import

For above related commits refer:
https://github.com/Ankurk99/freebsd/tree/ebpf-import

Thank you for reading. Please feel free to share your feedback and suggestions.

Thanks and Regards
Ankur Kothiwal



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CA%2BQRpiEUo%2BMQUGm8Uf7d7wCQnjuD5XnzmY6YGXK1ubvUXJ=Bcg>