Skip to main content

Configuration Overview

AthenaBNG uses YAML-based configuration stored in /opt/athena-bng/etc/.

Configuration Files​

FilePurpose
running-config.yamlActive configuration (do not edit directly in production)
candidate-config.yamlStaged changes from CLI or API
config-archive/Timestamped rollback history

Configuration Model​

AthenaBNG uses a JunOS-style candidate/running config model:

  1. Candidate Config — Staged changes (modified via CLI set/delete)
  2. Running Config — Active configuration (applied via CLI commit)
  3. Archive — Previous running configs for rollback

Service Defaults​

All services are disabled by default — nothing listens or broadcasts until explicitly enabled in the config.

ServiceDefaultEnable
VLAN Demuxfalseset demux enabled true
PPPoEfalseset pppoe enabled true
DHCP/IPoEfalseset dhcp enabled true
QoSfalseset qos enabled true
RADIUS CoAfalseset radius coa_enabled true
REST APIfalseset api enabled true
SNMPfalseset snmp enabled true
BGPfalseset routing bgp enabled true
OSPFfalseset routing ospf enabled true
CGNATfalseset 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 settings
  • pppoe — PPPoE server configuration
  • dhcp — DHCP/IPoE server configuration
  • radius — RADIUS servers and settings
  • qos — QoS/CAKE configuration
  • cgnat — CGNAT VRF steering
  • routing — BGP and OSPF configuration
  • api — REST API configuration
  • snmp — SNMP agent configuration
  • monitoring — 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 system and interfaces sections
  • 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​

SectionPurposeRequiredDefault
systemSystem identityYes—
interfacesInterface mappingYes—
demuxVLAN demuxNodisabled
pppoePPPoE serverNodisabled
dhcpDHCP/IPoENodisabled
radiusRADIUS serversNodisabled
qosQoS/CAKENodisabled
cgnatCGNAT VRFNodisabled
routingBGP/OSPFNodisabled
apiREST APINodisabled
snmpSNMP agentNodisabled
monitoringPrometheus/syslogNodisabled

Configuration Validation Rules​

System Section​

  • hostname — Required, string
  • router_id — Required, valid IPv4 address
  • timezone — Optional, valid timezone (e.g., "Australia/Brisbane")
  • log_level — Optional, one of: debug, info, warn, error
  • log_format — Optional, one of: text, json
  • ntp_servers — Optional, list of NTP server addresses
  • dns_servers — Optional, list of DNS server addresses

Interfaces Section​

  • management — Required, valid interface name
  • subscriber_trunk — Required, valid interface name
  • upstream — Required, valid interface name
  • cgnat_handoff — Optional, valid interface name

VLAN Demux Section​

  • enabled — Boolean, default false
  • profiles[].name — Required, string
  • profiles[].trunk_interface — Required, valid interface name
  • profiles[].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 false
  • servers[].host — Required, valid IP address
  • servers[].port — Optional, default 1812
  • servers[].secret — Required, string (change from default!)
  • nas_identifier — Required, string
  • nas_ip_address — Optional, valid IP address
  • coa_enabled — Boolean, default false
  • coa_port — Optional, default 3799

Next Steps​