Inspiration

I have an interest in eBPF in the context of computational storage. I'm also learning Python, so this seemed like an interesting project to pursue.

What it does

I've developed a visual debugger (Text User Interface) and an eBPF virtual machine that allows running and/or single-stepping through eBPF assembly (from a bpf target object).

How we built it

eBPF101 was built using Python and python-curses for the TUI.

Challenges we ran into

Learning Python, so relied on ChatGPT for Python idioms.

Accomplishments that we're proud of

From zero to working prototype in about two weeks!

What we learned

Expanding my Python knowledge and how to use curses with Python.

eBPF is a sparse instruction set, and should probably work towards a more optimized version (such as ARM's 16-bit thumb instructions instead of 64/128-bit instructions).

What's next for User-space eBPF VM and Debugger

Add maps (hash and arrays) to support greater fidelity. Improve the TUI and expand the VM's instruction set. Support modifying memory in the TUI. Support more helper functions.

Built With

Share this project:

Updates