PPPoE Termination
PPPoE session termination via accel-ppp integration.
Overview
AthenaBNG terminates PPPoE sessions using accel-ppp, a high-performance PPPoE server. Each subscriber establishes a PPP session over Ethernet, which is then used to negotiate IP configuration via IPCP.
PPPoE Protocol
Discovery Phase
- PADI (PPPoE Active Discovery Initiation) — Subscriber broadcasts to find access concentrators
- PADO (PPPoE Active Discovery Offer) — BNG responds with offer
- PADR (PPPoE Active Discovery Request) — Subscriber requests session
- PADS (PPPoE Active Discovery Session-confirmation) — BNG confirms session
Session Phase
Once session is established:
- LCP (Link Control Protocol) — Negotiate PPP link parameters
- IPCP (IP Control Protocol) — Negotiate IP configuration
- Data Transfer — Subscriber traffic flows
- PADT (PPPoE Active Discovery Terminate) — Session termination
Session Establishment
1. VLAN Interface Creation
When PADI is received:
- abng-demux creates VLAN interface (e.g., eth1.111.500.100)
- Notifies abngd of new interface
- abngd tells accel-ppp to bind to interface
2. PPPoE Negotiation
accel-ppp:
- Sends PADO with AC name and service name
- Receives PADR from subscriber
- Sends PADS to establish session
- Creates PPP interface (e.g., ppp0)
3. LCP Negotiation
PPP Link Control Protocol:
- Negotiate MTU/MRU (default 1492)
- Enable LCP echo for keepalive (default 30s interval, 3 failures)
- Agree on authentication method (PAP)
4. IPCP Negotiation
IP Control Protocol:
- Subscriber requests IP address
- accel-ppp requests from RADIUS
- RADIUS returns Framed-IP-Address
- IPCP assigns IP to subscriber
5. IP-Up Hook
When IP is assigned:
- accel-ppp triggers ip-up script
- Script calls abng-notify with session details
- abngd creates session in database
- abng-qos applies QoS rules
Configuration
pppoe:
enabled: true
ac_name: "AthenaBNG"
mtu: 1492
mru: 1492
lcp_echo_interval: 30
lcp_echo_failure: 3
RADIUS Integration
Authentication
RADIUS Access-Request:
- User-Name — Subscriber username
- User-Password — Subscriber password (PAP)
- NAS-Identifier — "AthenaBNG"
- NAS-Port-Id — VLAN interface name (Circuit ID)
Authorization
RADIUS Access-Accept:
- Framed-IP-Address — Assigned IP address
- Framed-IP-Netmask — Subnet mask (usually 255.255.255.255)
- Session-Timeout — Session timeout in seconds
- Athena-Rate-Down — Download rate
- Athena-Rate-Up — Upload rate
QoS Integration
When session is established:
- abng-qos creates CAKE qdisc on PPP interface
- Sets download rate (egress shaping)
- Creates IFB device for ingress shaping
- Sets upload rate on IFB
Monitoring
View PPPoE Sessions
abng> show subscribers pppoe
View Session Details
abng> show subscribers detail 1
Check accel-ppp Status
sudo systemctl status accel-ppp
Monitor accel-ppp Logs
sudo journalctl -u accel-ppp -f
Troubleshooting
Sessions Not 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
- Check accel-ppp logs for errors
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
Best Practices
- AC Name — Use descriptive name (e.g., "AthenaBNG-Brisbane")
- MTU/MRU — Use 1492 for standard PPPoE
- LCP Echo — Use 30s interval with 3 failures for standard keepalive
- RADIUS — Always configure RADIUS before enabling PPPoE
- QoS — Enable QoS for per-subscriber rate limiting
- Monitoring — Monitor session count and churn rate
Next Steps
- DHCP/IPoE — DHCP details
- QoS/CAKE — Traffic shaping details
- RADIUS AAA — RADIUS integration