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