googyouhua / wavebpf

High-performance eBPF implementation in hardware.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

wBPF

WaveBPF (wBPF) is a "tightly-coupled multi-core" eBPF CPU, designed to be a high-throughput coprocessor for processing in-memory data (e.g. network packets).

This repository contains the hardware. Other resources:

Features

  • Supports all eBPF instructions.
  • AXI4-compatible peripheral interface.
  • Exception delegation to AXI4 master (so you can handle eBPF helper calls, etc. in a separate "cold-path" software logic).

Try it

Prebuilt Zynq-7020 (xc7z020clg400-2) BOOT.BIN including the bitstream and kernel is available here. Grab it and build the driver yourself.

Build

See the GitHub action workflow for instructions on generating Verilog from the design. The ports are:

  • mmio (AxiLite4, control port)
  • dataMemAxi4 (Axi4, tightly-coupled data memory)
  • excInterrupt (Interrupt line for exception delegation)

About

High-performance eBPF implementation in hardware.

License:Apache License 2.0


Languages

Language:Scala 92.8%Language:C 3.9%Language:Java 2.8%Language:Python 0.2%Language:Shell 0.2%Language:Assembly 0.1%