Chakraview Networking-SDN Architecture
Overview
Three-layer architecture for SDN portfolio project:
graph TD
subgraph "Northbound Interface"
EXTERNAL["External Clients<br/>REST API<br/>:8080"]
end
subgraph "Control Plane"
TOPO["Topology Service<br/>Device registration<br/>Graph + BFS path finding<br/>Discovery events"]
INTENT["Intent Engine<br/>Request validation<br/>Intent-to-config translation"]
subgraph CTRL["SDN Controller (Go)"]
TOPO
INTENT
end
end
subgraph "Fabric Layer"
BGP["BGP Speaker<br/>FSM: Idle→Establish<br/>Route learning<br/>Peer management"]
VXLAN["VXLAN Manager<br/>Tunnel creation<br/>Encap/Decap<br/>MAC learning"]
EVPN["EVPN Handler<br/>Type 2: MAC/IP<br/>Type 5: IP Prefix<br/>Route distribution"]
subgraph FABRIC["Fabric Nodes (Python)"]
BGP
VXLAN
EVPN
end
end
subgraph "Foundation Layer"
DPDK["DPDK Agent (C)<br/>User-space forwarding<br/>LPM routing<br/>VXLAN encap/decap"]
EBPF["eBPF Agent (Rust)<br/>XDP hook<br/>BPF maps<br/>In-kernel processing"]
subgraph FOUND["Packet Processing"]
DPDK
EBPF
end
end
subgraph "Southbound Interface"
GRPC["gRPC Southbound<br/>:50051<br/>SetRoutes, SetTunnels<br/>GetStats streaming"]
end
EXTERNAL -->|REST| INTENT
INTENT -->|path computation| TOPO
INTENT -->|check state| TOPO
TOPO -->|device updates| INTENT
CTRL -->|gRPC| GRPC
GRPC -->|calls| FABRIC
GRPC -->|calls| FOUND
FABRIC -->|BGP peers<br/>TCP :179| FABRIC
FABRIC -->|VXLAN tunnels<br/>UDP :4789| FABRIC
style CTRL fill:#2196F3,color:#fff
style FABRIC fill:#9C27B0,color:#fff
style FOUND fill:#4CAF50,color:#fff
style EXTERNAL fill:#FF9800,color:#fff
style GRPC fill:#F44336,color:#fff
Data Flow Example
Device Registration
- Fabric node calls gRPC
RegisterDevice() - Controller adds to topology graph
- Discovery service emits
device.registeredevent - Topology becomes queryable via REST
/api/v1/topology/devices
Route Advertisement
- BGP speaker learns route from peer
- gRPC
AdvertiseBgpRoute()to controller - Policy engine translates to forwarding rules
- Foundation layer (DPDK/eBPF) installs rules
- Packets forwarded per installed rules
Technology Stack
| Layer | Component | Language | Port |
|---|---|---|---|
| Control | SDN Controller | Go | 8080 (REST), 9090 (gRPC) |
| Fabric | BGP/VXLAN/EVPN | Python | gRPC client |
| Foundation | DPDK | C | Userspace |
| Foundation | eBPF | Rust + C | Kernel |
| Lab | Docker Compose | YAML | Local |
Extensibility
- Add Protocol: Implement gRPC handler in controller, Python client in fabric node
- Add Device Type: Extend NetworkDevice class with custom role behavior
- Add Policies: Define new PolicyIntent types, translators in policy engine
- Add Foundation Layer: Parallel user/kernel implementations compared