Skip to content

PPPoE

PPPoE and LCP configuration lives in the ppp view. Access interfaces are a list that applies live on commit. This page covers the whole command set: the access list, MRU, authentication methods, keepalives, timeouts and the RADIUS-less address fallbacks for both stacks.

Configuration

MRU for PPPoE maxes at 1492. setup-timeout is the half-open reap timeout, default 60 seconds; session-timeout is a hard session lifetime with 0 meaning unlimited. An lcp-echo interval of 0 turns dead-peer keepalives off. Access interfaces are a list — add and remove stage into the candidate, commit applies live, save persists, and several names may be given per command.

cli
system-view
ppp interface add|remove <name> [<name>...]
ppp mru <bytes>                          # PPPoE max 1492
ppp auth-protocol pap,chap,mschap,mschap2
ppp lcp-echo interval <secs> failure <count>   # interval 0 = off
ppp setup-timeout <secs>                 # half-open reap, default 60
ppp session-timeout <secs>               # 0 = unlimited
ppp undo <mru|auth-protocol|lcp-echo|setup-timeout|session-timeout|
          pool|ipv6|ipv6-pool|ipv6-pd-pool>

ppp interface add access0 access1
ppp mru 1492
ppp auth-protocol chap,pap
ppp lcp-echo interval 30 failure 3
commit ; save

Authentication methods

auth-protocol takes a comma-separated set of allowed methods, defaulting to pap. The gateway proposes the strongest listed method and downgrades on NAK to any other listed method, refusing everything else. Listing only what you actually want is therefore the whole control — there is no separate ordering knob.

MS-CHAP and encryption

MS-CHAP and MS-CHAPv2 authenticate via RADIUS, and the server needs its mschap module enabled. The NAS relays the challenge and response and never sees the password. Because the gateway does not negotiate MPPE encryption, clients using MS-CHAP must be configured for optional rather than required encryption: a client that requires MPPE will bring the session up, find no encryption, and drop into a re-dial loop. That presents as a subscriber who connects and disconnects repeatedly with no authentication failure logged, which is a confusing symptom if you do not know to look for it. PAP is unaffected.

IPv4 address fallback

ppp pool selects which pool.conf pool a session draws its framed IPv4 address from when RADIUS supplies neither a Framed-IP-Address nor a Framed-Pool. Precedence is RADIUS Framed-Pool first, then ppp pool, then the pool named default. An empty name or ppp undo pool clears it back to default. show ppp reports the active value as pool.

cli
ppp pool <name>                          # RADIUS-less fallback
commit
show ppp

IPv6 address fallback

ppp ipv6 pool and pd-pool name an IPv6 prefix pool used only when RADIUS returns no v6 prefix. Precedence is RADIUS-first: a Framed-IPv6-Prefix for the NA /64, or a Delegated-IPv6-Prefix for PD, always wins. RADIUS may also select which pool by name, in order — the Netvyn IPv6 pool VSAs, then the unified Framed-Pool attribute 88, then the configured name. Because Framed-Pool covers both families, one policy name walls off v4 and v6 together: Framed-Pool=Expired places the subscriber in the v4 and v6 Expired pool, which is the classic walled garden with no separate v6 attribute needed. These apply live on commit to new sessions; existing sessions keep their prefixes. ppp ipv6 disable skips IPv6CP entirely.

cli
ppp ipv6 enable|disable                  # default enable
ppp ipv6 pool <name>                     # NA /64 framed prefix
ppp ipv6 pd-pool <name>                  # delegated PD prefix
commit
show ipv6 pool                           # utilisation

Upstream spread and PPPoE RSS

Plain RSS cannot see inside PPPoE, so without inner-IP steering every upstream PPPoE packet lands on one queue and therefore one worker. show interface reports whether the inner-IP rte_flow rule is installed — but rule installed is not a promise of spreading: some adapters accept the rule without steering on it, because the silicon cannot parse past the PPPoE header. Confirm the real spread with show health under load, and enable the software dispatcher when the adapter cannot do it.

cli
show interface access0        # RSS Supported / RSS Active / PPPoE RSS
dispatch enable               # software fan-out from worker 0
show health                   # per-worker busy cycle