PPPoE Configuration
Configure PPPoE subscriber termination via accel-ppp.
Overview
The pppoe section configures the PPPoE server (accel-ppp), which:
- Terminates PPPoE sessions from subscribers
- Negotiates PPP protocol (LCP, IPCP)
- Integrates with RADIUS for authentication and IP assignment
- Applies per-subscriber QoS rules
Configuration Options
enabled
Enable or disable PPPoE (optional).
pppoe:
enabled: true
Type: Boolean
Required: No
Default: false
Valid values: true, false
CLI:
abng# set pppoe enabled true
Note: Requires radius.servers to be configured.
ac_name
Access Concentrator name advertised in PPPoE (optional).
pppoe:
ac_name: "AthenaBNG"
Type: String
Required: No
Default: "AthenaBNG"
Constraints: 1-64 characters
Purpose: Identifies the BNG in PPPoE PADO frames.
CLI:
abng# set pppoe ac_name "AthenaBNG"
mtu
Maximum Transmission Unit for PPP (optional).
pppoe:
mtu: 1492
Type: Integer
Required: No
Default: 1492
Constraints: 1280-1500 bytes
Purpose: PPP MTU (Ethernet MTU 1500 - 8 bytes for PPPoE header).
CLI:
abng# set pppoe mtu 1492
mru
Maximum Receive Unit for PPP (optional).
pppoe:
mru: 1492
Type: Integer
Required: No
Default: 1492
Constraints: 1280-1500 bytes
Purpose: Maximum size of PPP frames to receive.
CLI:
abng# set pppoe mru 1492
lcp_echo_interval
LCP Echo Request interval in seconds (optional).
pppoe:
lcp_echo_interval: 30
Type: Integer
Required: No
Default: 30
Constraints: Positive integer (seconds)
Purpose: Keepalive interval for PPP link monitoring.
CLI:
abng# set pppoe lcp_echo_interval 30
lcp_echo_failure
LCP Echo Request failures before disconnect (optional).
pppoe:
lcp_echo_failure: 3
Type: Integer
Required: No
Default: 3
Constraints: Positive integer
Purpose: Disconnect session after N failed echo requests.
CLI:
abng# set pppoe lcp_echo_failure 3
Example Configurations
Minimal PPPoE Configuration
pppoe:
enabled: true
Uses all defaults:
- AC Name: "AthenaBNG"
- MTU/MRU: 1492
- LCP Echo: 30s interval, 3 failures
Full PPPoE Configuration
pppoe:
enabled: true
ac_name: "AthenaBNG-01"
mtu: 1492
mru: 1492
lcp_echo_interval: 30
lcp_echo_failure: 3
Configuration via CLI
Enable PPPoE
abng> configure
abng# set pppoe enabled true
abng# commit
Set AC Name
abng# set pppoe ac_name "MyBNG"
abng# commit
Set MTU/MRU
abng# set pppoe mtu 1492
abng# set pppoe mru 1492
abng# commit
Set LCP Parameters
abng# set pppoe lcp_echo_interval 60
abng# set pppoe lcp_echo_failure 5
abng# commit
Verification
View PPPoE Configuration
abng> show configuration | match "^pppoe:"
pppoe:
enabled: true
ac_name: AthenaBNG
mtu: 1492
mru: 1492
lcp_echo_interval: 30
lcp_echo_failure: 3
View PPPoE Sessions
abng> show subscribers pppoe
┌────┬───────┬──────────┬───────────────┬────────────┬──────────┐
│ ID │ Type │ Username │ IP Address │ Interface │ Speed D/U│
├────┼── ─────┼──────────┼───────────────┼────────────┼──────────┤
│ 1 │ PPPoE │ user1 │ 203.0.113.10 │ ppp0 │ 100M/40M │
│ 2 │ PPPoE │ user2 │ 203.0.113.11 │ ppp1 │ 50M/20M │
└────┴───────┴──────────┴───────────────┴────────────┴──────────┘
Check accel-ppp Logs
sudo journalctl -u accel-ppp -f
Integration with RADIUS
PPPoE requires RADIUS for authentication and IP assignment:
pppoe:
enabled: true
ac_name: "AthenaBNG"
radius:
servers:
- host: "10.255.0.10"
secret: "your-secret"
nas_identifier: "AthenaBNG"
nas_ip_address: "10.255.0.1"
RADIUS attributes used:
- User-Name — Subscriber username
- User-Password — Subscriber password (PAP)
- Framed-IP-Address — Assigned IP address
- Framed-IP-Netmask — Subnet mask
- Session-Timeout — Session timeout in seconds
- Acct-Session-Id — Session ID for accounting
Integration with QoS
PPPoE sessions can have per-subscriber QoS rules:
qos:
enabled: true
default_down: "100mbit"
default_up: "40mbit"
default_overhead_profile: "pppoe_ethernet"
QoS is applied when:
- PPPoE session is established
- RADIUS returns rate attributes (Athena-Rate-Down, Athena-Rate-Up)
- abng-qos creates CAKE qdisc on PPP interface
Validation Rules
| Field | Validation |
|---|---|
enabled | Boolean |
ac_name | 1-64 characters |
mtu | Integer 1280-1500 |
mru | Integer 1280-1500 |
lcp_echo_interval | Positive integer (seconds) |
lcp_echo_failure | Positive integer |
Best Practices
- AC Name — Use a descriptive name (e.g., "AthenaBNG-Brisbane")
- MTU/MRU — Use 1492 for standard PPPoE (1500 - 8 byte header)
- LCP Echo — Use 30s interval with 3 failures for standard keepalive
- RADIUS — Always configure RADIUS servers before enabling PPPoE
- QoS — Enable QoS for per-subscriber rate limiting
- Monitoring — Monitor PPPoE session count and churn rate
Troubleshooting
No PPPoE Sessions Appearing
- Check PPPoE is enabled:
show configuration | match pppoe - Check VLAN demux is enabled:
show configuration | match demux - Check VLAN interfaces are created:
show vlans - Check RADIUS is reachable:
radtest testuser testpass <radius-ip> 1812 <secret> - Check accel-ppp logs:
journalctl -u accel-ppp -f
Sessions Disconnecting Frequently
- Check LCP echo settings:
show configuration | match lcp_echo - Check network stability:
ping -c 100 <upstream-router> - Check RADIUS timeout: Increase
lcp_echo_failureif RADIUS is slow - Check accel-ppp logs:
journalctl -u accel-ppp -f
Sessions Not Getting IP
- Check RADIUS is configured:
show configuration | match radius - Test RADIUS:
radtest testuser testpass <radius-ip> 1812 <secret> - Check RADIUS returns Framed-IP-Address
- Check abngd logs:
journalctl -u abngd -f
Next Steps
- DHCP Configuration — DHCP/IPoE server settings
- RADIUS Configuration — RADIUS servers and AAA
- QoS Configuration — CAKE traffic shaping
- Configuration Overview — All configuration sections