Extended Berkely Packet Filter (eBPF) is a revolutionary technology with origins in the Linux kernel that can run sandboxed programs in an operating system kernel without modifying kernel source code or loading kernel modules. eBPF guarantees isolation and safety in native performance by enforcing static verification and just-in-time compilation. However, eBPF is not sufficient for safely and efficiently extending the capabilities of the kernel. Compared to the native kernel code, eBPF forces the users to follow the strict and limited programming guide and fixed execution model to ensure the possibility of static verification.
In this paper, we claim that the restrictions and disadvantages of eBPF could be overcome by carefully redesigning the separation between protection and verification with additional confinements of the hardware protections and execution models. Experiments with our prototype show comparable performance increments of various research projects without modification of kernel source code. We also show that vBPF could be an alternative solution for existing kernel bypassing solutions like Userfaultfd with better performance and flexibility. From the pioneer works done by SPIN~\cite{bershad_extensibility_1995}, we think that a flexible and safe kernel extension model has finally come!
확장 버클리 패킷 필터(eBPF)는 리눅스 커널 소스 코드 수정 없이, 다양한 확장 기능을 커널 샌드박스 환경에서 구동시키는 획기적인 기술이다. eBPF는 성능의 지연 없이 강력한 보안을 제공하기 위해서 정적 검정기(Static verification)와 동적 변역을 사용한다. 그러나 eBPF는 이러한 검증 방식으로 인하여 제한된 프로그래밍 방식과 정해진 작동 방식으로만 수행되는 한계를 가지게 되었다. 이에따라, 기존의 방식으로는 완전한 커널 확장을 개발하기에 무리가 있었다.
이 학위 논문은 이러한 eBPF의 단점을 정적 검정기와 하드웨어의 지원을 동시에 사용함으로 극복하는 모델을 제시하였다. 또한 eBPF에 기존 모델은 가지고 있지 않은 다양한 실행 방식(Execution model)을 제공하고 동시성 문제를 해결하여 eBPF의 한계를 극복하여 완전한 커널 확장 환경을 제안하였다. vBPF는 기존의 커널 소스 코드를 수정해야만 했던 커널 정책 수정을 커널 소스 코드 수정과 성능의 저하없이 쉽게 구현할 수 있는 환경을 제시하였다.