Architecture Overview
High-level system design and component interactions.
System Architecture
AthenaBNG is a multi-process, event-driven broadband network gateway built on Linux with Rust daemons and Python services.
Component Roles
Management Plane
- CLI (abng-cli) — Interactive shell for operators
- REST API — Programmatic management interface
- SNMP Agent — Integration with NOC systems
Control Plane
- abngd — Core orchestrator (session management, config, IPC)
- abng-demux — Dynamic VLAN interface creation
- abng-qos — Traffic shaping orchestration
Data Plane
- accel-ppp — PPPoE termination
- abng-dhcpd — DHCP/IPoE termination
- nftables — CGNAT steering
- FRRouting — BGP/OSPF routing
Data Flow
Session Establishment (PPPoE)
Session Termination
IPC Protocol
All components communicate with abngd via JSON-RPC 2.0 over Unix domain socket at /opt/athena-bng/run/abngd.sock.
Request:
{
"jsonrpc": "2.0",
"method": "show.subscribers",
"params": {},
"id": 1
}
Response:
{
"jsonrpc": "2.0",
"result": [...],
"id": 1
}
Configuration Flow
Service Dependencies
Systemd Target
All services are managed via AthenaBNG.target:
sudo systemctl start AthenaBNG.target
sudo systemctl stop AthenaBNG.target
sudo systemctl status AthenaBNG.target
Next Steps
- Daemons — Detailed daemon responsibilities
- Session Lifecycle — Detailed session flow
- IPC Protocol — JSON-RPC protocol reference