Skip to main content

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:

  1. PPPoE session is established
  2. RADIUS returns rate attributes (Athena-Rate-Down, Athena-Rate-Up)
  3. abng-qos creates CAKE qdisc on PPP interface

Validation Rules

FieldValidation
enabledBoolean
ac_name1-64 characters
mtuInteger 1280-1500
mruInteger 1280-1500
lcp_echo_intervalPositive integer (seconds)
lcp_echo_failurePositive integer

Best Practices

  1. AC Name — Use a descriptive name (e.g., "AthenaBNG-Brisbane")
  2. MTU/MRU — Use 1492 for standard PPPoE (1500 - 8 byte header)
  3. LCP Echo — Use 30s interval with 3 failures for standard keepalive
  4. RADIUS — Always configure RADIUS servers before enabling PPPoE
  5. QoS — Enable QoS for per-subscriber rate limiting
  6. Monitoring — Monitor PPPoE session count and churn rate

Troubleshooting

No PPPoE Sessions Appearing

  1. Check PPPoE is enabled: show configuration | match pppoe
  2. Check VLAN demux is enabled: show configuration | match demux
  3. Check VLAN interfaces are created: show vlans
  4. Check RADIUS is reachable: radtest testuser testpass <radius-ip> 1812 <secret>
  5. Check accel-ppp logs: journalctl -u accel-ppp -f

Sessions Disconnecting Frequently

  1. Check LCP echo settings: show configuration | match lcp_echo
  2. Check network stability: ping -c 100 <upstream-router>
  3. Check RADIUS timeout: Increase lcp_echo_failure if RADIUS is slow
  4. Check accel-ppp logs: journalctl -u accel-ppp -f

Sessions Not Getting IP

  1. Check RADIUS is configured: show configuration | match radius
  2. Test RADIUS: radtest testuser testpass <radius-ip> 1812 <secret>
  3. Check RADIUS returns Framed-IP-Address
  4. Check abngd logs: journalctl -u abngd -f

Next Steps