Configuration Overview
AthenaBNG uses YAML-based configuration stored in /opt/athena-bng/etc/.
Configuration Files
| File | Purpose |
|---|---|
running-config.yaml | Active configuration (do not edit directly in production) |
candidate-config.yaml | Staged changes from CLI or API |
config-archive/ | Timestamped rollback history |
Configuration Model
AthenaBNG uses a JunOS-style candidate/running config model:
- Candidate Config — Staged changes (modified via CLI
set/delete) - Running Config — Active configuration (applied via CLI
commit) - Archive — Previous running configs for rollback
Service Defaults
All services are disabled by default — nothing listens or broadcasts until explicitly enabled in the config.
| Service | Default | Enable |
|---|---|---|
| VLAN Demux | false | set demux enabled true |
| PPPoE | false | set pppoe enabled true |
| DHCP/IPoE | false | set dhcp enabled true |
| QoS | false | set qos enabled true |
| RADIUS CoA | false | set radius coa_enabled true |
| REST API | false | set api enabled true |
| SNMP | false | set snmp enabled true |
| BGP | false | set routing bgp enabled true |
| OSPF | false | set routing ospf enabled true |
| CGNAT | false | set cgnat enabled true |
Configuration Sections
Required Sections
These sections are always required:
system— System identity (hostname, router ID, timezone, logging)interfaces— Interface role mapping (management, trunk, upstream, CGNAT)
Optional Sections
These sections are optional and default to disabled:
demux— VLAN demux profiles and settingspppoe— PPPoE server configurationdhcp— DHCP/IPoE server configurationradius— RADIUS servers and settingsqos— QoS/CAKE configurationcgnat— CGNAT VRF steeringrouting— BGP and OSPF configurationapi— REST API configurationsnmp— SNMP agent configurationmonitoring— Prometheus and syslog configuration
Configuration Workflow
1. Edit Candidate Config
abng> configure
abng# set system hostname "AthenaBNG-01"
abng# set pppoe enabled true
abng# set pppoe ac_name "AthenaBNG"
2. Review Changes
abng# show | compare
+ system:
+ hostname: AthenaBNG-01
+ pppoe:
+ enabled: true
+ ac_name: AthenaBNG
3. Commit to Running Config
abng# commit
Configuration committed successfully.
4. Verify
abng# exit
abng> show configuration
abng> show subscribers
Configuration Validation
Configuration is validated at two levels:
Client-Side Validation (CLI)
The CLI validates before sending to abngd:
abng# set system router_id "not-an-ip"
Validation error: invalid IP address: "not-an-ip"
Server-Side Validation (abngd)
abngd validates the full configuration:
abng# commit
Validation error: radius.servers is required when pppoe.enabled is true
Base vs Example Configuration
Base Configuration
File: /opt/athena-bng/config/AthenaBNG.yaml.base
Minimal safe configuration with:
- Only
systemandinterfacessections - All services disabled
- Suitable for initial setup
Use case: Starting fresh, enabling services one at a time
Example Configuration
File: /opt/athena-bng/config/AthenaBNG.yaml.example
Fully populated reference configuration with:
- All sections and options
- All services enabled
- Realistic values
- Inline comments
Use case: Reference, understanding all options, quick setup
Configuration Sections
| Section | Purpose | Required | Default |
|---|---|---|---|
system | System identity | Yes | — |
interfaces | Interface mapping | Yes | — |
demux | VLAN demux | No | disabled |
pppoe | PPPoE server | No | disabled |
dhcp | DHCP/IPoE | No | disabled |
radius | RADIUS servers | No | disabled |
qos | QoS/CAKE | No | disabled |
cgnat | CGNAT VRF | No | disabled |
routing | BGP/OSPF | No | disabled |
api | REST API | No | disabled |
snmp | SNMP agent | No | disabled |
monitoring | Prometheus/syslog | No | disabled |
Configuration Validation Rules
System Section
hostname— Required, stringrouter_id— Required, valid IPv4 addresstimezone— Optional, valid timezone (e.g., "Australia/Brisbane")log_level— Optional, one of: debug, info, warn, errorlog_format— Optional, one of: text, jsonntp_servers— Optional, list of NTP server addressesdns_servers— Optional, list of DNS server addresses
Interfaces Section
management— Required, valid interface namesubscriber_trunk— Required, valid interface nameupstream— Required, valid interface namecgnat_handoff— Optional, valid interface name
VLAN Demux Section
enabled— Boolean, default falseprofiles[].name— Required, stringprofiles[].trunk_interface— Required, valid interface nameprofiles[].outer_vlans— Required, list of VLAN IDs (1-4094)profiles[].stag_range— Required, range format "100-999"profiles[].ctag_range— Required, range format "1-4094"profiles[].services— Required, list of ["pppoe", "dhcp"]profiles[].idle_timeout— Optional, seconds (default 3600)profiles[].max_interfaces— Optional, number (default 50000)profiles[].creation_rate_limit— Optional, per second (default 100)
RADIUS Section
enabled— Boolean, default falseservers[].host— Required, valid IP addressservers[].port— Optional, default 1812servers[].secret— Required, string (change from default!)nas_identifier— Required, stringnas_ip_address— Optional, valid IP addresscoa_enabled— Boolean, default falsecoa_port— Optional, default 3799
Next Steps
- System Configuration — System identity and logging
- Interfaces Configuration — Interface role mapping
- VLAN Demux Configuration — Dynamic VLAN creation
- PPPoE Configuration — PPPoE server settings
- DHCP Configuration — DHCP/IPoE server settings
- RADIUS Configuration — RADIUS servers and AAA
- QoS Configuration — CAKE traffic shaping
- CGNAT Configuration — Carrier-Grade NAT
- Routing Configuration — BGP and OSPF
- REST API Configuration — Management interface
- SNMP Configuration — SNMP monitoring
- Monitoring Configuration — Prometheus and syslog