Skip to content

henrybarreto/hull

Repository files navigation

Hull

rust edition status

Hull is a single-node SDN controller.

Architecture

Hull uses a client-daemon architecture:

  • hull (client): sends JSON commands over a Unix socket
  • hulld (daemon): owns SQLite state, TAP lifecycle, TC eBPF attach, and sync

The daemon must run as root.

Build

Build both binaries:

make build

Quick Start

  1. Start the daemon:
sudo ./target/debug/hulld
  1. Initialize:
./target/debug/hull init
  1. Create a switch:
./target/debug/hull switch create sw0 10.0.0.0 24
  1. Add switch ports (TAPs are managed automatically):
./target/debug/hull switch port create sw0 swp0
./target/debug/hull switch port create sw0 swp1

Optional static addressing:

./target/debug/hull switch port create sw0 swp0 --ip 10.0.0.10 --mac 52:54:00:12:34:56

Unknown L2 destinations are not flooded; forwarding only uses known MAC/router state.

Configuration

Hull uses environment variables to locate its data directory:

  • HULL_PATH — root directory for Hull data (config, database, socket)
  • HULL_SOCKET — override the daemon socket path

Default paths (when HULL_PATH is not set):

  • Data: $XDG_DATA_HOME/hull or /var/lib/hull
  • Config: {HULL_PATH}/hull.json

CLI

See commands:

./target/debug/hull --help

License

MIT License. See LICENSE for details.

About

Hull is a single-node SDN controller.

Topics

Resources

License

Stars

Watchers

Forks

Contributors