Quick Start Guide
Prerequisites
- Docker & Docker Compose
- Go 1.21+
- Python 3.11+
- Rust (for eBPF toolchain)
Local Development (No Containers)
1. Build Foundation Layer
cd foundation/dpdk
make clean && make
./dpdk-handler
Expected output:
DPDK Handler Starting
Forwarding decision: egress_port=1
VXLAN encapsulation: OK
VXLAN decapsulation: OK
2. Build Controller
cd controller
go mod tidy
go test ./...
go build -o sdn-controller ./cmd/sdn-controller
./sdn-controller
Expected output:
SDN Controller Starting
Topology: 0 devices, 0 links
gRPC server listening on 0.0.0.0:9090
REST API server listening on 0.0.0.0:8080
3. Build Fabric Protocols
cd fabric
pip install -r requirements.txt
python -m pytest -v
Expected output:
fabric/bgp/test_fsm.py::test_state_transitions PASSED
fabric/vxlan/test_tunnel.py::test_encapsulation PASSED
fabric/evpn/test_routes.py::test_mac_ip_route PASSED
Docker Lab Execution
1. Start Lab
cd lab
cp .env.example .env
docker-compose up -d
2. Initialize Topology
bash lab/scripts/init.sh
Expected output:
Initializing SDN Lab...
Waiting for controller to be ready...
Controller is ready!
Registering network devices...
Device registration complete
Verifying topology...
3. Query Topology
curl http://localhost:8080/api/v1/topology
curl http://localhost:8080/api/v1/topology/devices
Example response:
{
"status": "ok",
"summary": "Topology: 4 devices, 0 links",
"devices": 4,
"links": 0
}
4. Stop Lab
docker-compose down
Testing
Run end-to-end tests (requires running lab):
python -m pytest tests/e2e_test.py -v
bash tests/integration_test.sh
Next Steps
- Explore APIs: Use
curlto query topology endpoints - Add Devices: Modify
lab/scripts/register-devices.sh - Create Policies: Use REST API to define network intents
- Trace Packets: Enable debug logging in controller
- Study Implementation: Read ADRs in
docs/adrs/