Pppoe Troubleshoot
Pppoe Troubleshoot
There are are essentially a handful of stages involved in bringing up a PPPoE client session on a Cisco router, each of which could fail
for a distinct set of reasons. This guide takes a walk through the entire process, step by step, highlighting the most common causes of Translate
problems at each stage.
Popular Posts
Routing
All sorts of things about LAC
and LAGs
Even though PPP itself is peer to peer, PPPoE is inherently client-server. That means that the connection has to be originated by the
A lot of people consider link
client and, in most cases, the client will only do that when it has some traffic to send over PPPoE. Therefore, the router must know the aggregation groups (LAG /
dialer as its next hop interface for some destination, i.e. it must have a route. It sounds trivial but it's surprising how often people go to all etherchannel / portchannel /
the trouble of putting in a perfectly good PPPoE config, then forget to put a default route in for the traffic! MLT) to be pretty basic functionality that
"just w...
More broadly, though, there are other things that could stop a route from being installed. For example, if you configure a dialer as a Configuring Basic 4G LTE
backup interface to another interface then there are some gotchas. Shutting down the primary will usually not enable its backup, also Connectivity on the Cisco 81
you still need a (static) route pointing traffic towards the dialer in order to make it dial - a step which is often forgotten. It's usually best to Router
remove the backup interface configuration while testing the dialer, then re-apply it when that has been proven to work. I've recently had the mixed
fortune to have set up a
couple of Cisco routers for 3G and 4G dat
Dialer services. It turns out to be surprisingl...
• Could also be due to PPPoE discovery phase failing, see below. ► 2017 (4)
► 2016 (4)
PPPoE Discovery ► 2015 (15)
▼ 2014 (12)
In order to bring up a PPP session over Ethernet, a PPPoE session must be set up to create a point-to-point connection over a ▼ November (3)
broadcast Ethernet network. This is established using PPPoE Auto-Discovery, where the PPPoE client (our router) searches for a
Removing
PPPoE access concentrator which is willing to terminate its connection. This phase should operate as follows: VLAN/MPLS/PPPoE/GRE/GTP/VX
LAN Encapsulati...
Troubleshooting PPPoE Client on
Cisco Routers
Basic Internet Connectivity Setup
Using HWIC-3G-GS...
► October (1)
► September (3)
► August (1)
► April (3)
► March (1)
► 2013 (12)
► 2012 (8)
► 2011 (3)
The client sends a PPPoE Auto Discovery Initiate (PADI) frame, asking any available access concentrators to make themselves known.
The access concentrator(s) then respond(s) with a PADO (offer) frame to indicate its availability. The client then sends a PADR (request)
frame to its chosen access concentrator which, all being well, will respond with a PADS (session) message to indicate that the PPPoE
session is now up. At any time either device may issue a PADT to close the PPPoE session.
Client#
The mark of a successful PPPoE Discovery phase is that a PADS packet is received - at this point the PPPoE session is up and
troubleshooting focus should shift to the PPP stage.
Common problems:
• Only PADI seen:
• Layer 1 or 2 issue between client and server
• PPPoE traffic being filtered between client and server, max sessions per MAC exceeded
• Sometimes possible even if interface is admin down!
• PADT messages received after PADI or PADR:
• Restrictions on Access Concentrator (e.g. max sessions per MAC exceeded)
• PADT message received after PADS:
• Generally a problem further up the stack, continue troubleshooting
Note - PPPoE discovery may occur without the dialer even being activated.
With the PPPoE session up, Link Control Protocol (LCP) will attempt to negotiate the parameters for the actual PPP session. These
include useful parameters such as the MRU and authentication type, plus potentially many less applicable parameters such as callback,
compression or PPP multilink.
The process is that each side will send proposals (CONFiguration REQuests or CONFREQs) to the other indicating its preferred
settings. The opposite device can then respond in one of the following ways:
To explain the above transaction, I have highlighted the two conversations in different colours. "O" indicates an outbound frame, "I" an
inbound frame.
The blue conversation is what we (the client) are proposing to the access concentrator. The client sends an essentially empty proposal
with only a magic number (used for loop detection). The access concentrator responds with an acknowledgement, after all there's
nothing to argue about!
The red conversation (where the access concentrator is proposing settings) is slightly more interesting. The first proposal contains a
proposed maximum receive unit (MRU) size of 1492 and a proposal to use CHAP authentication. In the next frame our client sends a
NAK message to indicate it would prefer the access concentrator used an MRU of 1500. Following that, the access concentrator sends a
new proposal with an MRU of 1500 and CHAP authentication, which our client then acknowledges.
Now that both sides are in agreement, the state changes to "Open", which is PPP talk for "up".
Common Problems:
• MRU mismatch - many access concentrators are strictly RFC 2516 compliant and allow a maximum MRU of 1492. This is
because 1492 bytes IP + 6 bytes PPPoE + 2 bytes PPP is the largest that can fit inside a standard 1500 byte Ethernet
payload. It may be necessary to tweak the MTU on the Ethernet interface using the "pppoe-client ppp-max-payload
xxxx" command.
• Authentication type mismatch - if one peer is set for CHAP only while the other is set to PAP only or no authentication, they
are not going to talk. A common mistake is forgetting the authentication callin option, which means that the client asks
the server to authenticate itself - this is almost invariably not.
General Note:
If you examine the debug output, it will be clear what the local device is saying (marked with "O" for output) and what the other end is
saying (marked with "I" for input). Whichever options are being rejected (CONFREJ'd) will be at the root of the problem - just work out
which end is rejecting what and the rest should fall into place.
PPP Authentication
PPP has the ability to authenticate either, both or neither of the peers. In a typical deployment, the access concentrator will require the
client to authenticate, but will refuse to authenticate itself to the client. This is typically done using CHAP as in the example below (output
from "debug ppp negotiation"):
The output clearly shows that this connection is considered to be a "callout", i.e. we are the initiating party. Next, the debug informs us
that we do not require the remote party to authenticate.
Following that, the peer (the access concentrator) asks us to authenticate. It sends us a "CHALLENGE", we send a "RESPONSE", then
it sends us a "SUCCESS" message, indicating that our credentials were accepted.
Common problems:
• It is worth noting the lines which state we are using the hostname and password from interface CHAP. This means that the
hostname (in practice essentially a username) and password are configured under the dialer interface with the "ppp chap
hostname xxx" and "ppp chap password xxxx". If these are not specified, the router will use its actual hostname and
the password will be taken from the local user database, under a user named after the the peer's hostname. Usually that's
not what you want.
• A response of "CHAP: I FAILURE id 1 len 25 msg is "Authentication failed"" means exactly what it looks
like it means. Check both the username and password are configured correctly.
• A response of "CHAP: Unable to authenticate for peer" indicates that the device does not know what password
to use to authenticate with the peer. This can be because a "ppp chap hostname" is configured but a "ppp chap
password" is not, there is not even a "ppp chap hostname" configured or in the case where local usernames are being
used it means there's no local username which matches the AC's hostname.
IPCP
Once the PPP session has been brought up (negotiated through LCP), the next stage is to negotiate each of the protocols that will run
through the PPP tunnel. Normally this is just IPv4, which is negotiated using IPCP, but there are also IPv6CP, CDPCP and so on,
collectively known as Network Control Protocols or NCPs. Below is some example debug (output from "debug ppp negotiation"),
with the AC's IP negotiation in blue and the client's IP negotiation in red:
Common Problems:
• If no IPCP appears at all, it could be that both ends have "ppp ncp passive" set.
• If you see a message similar to "O PROTREJ [Open] id 2 len 16 protocol IPCP
(0x0101000C030601010101)" this is because IP is not configured on the local dialer interface. Usually you just want to
add "ip address negotiated" under the dialer to fix this.
At this point your session is up and you should be able to pass traffic OK. If you're still looking, it may help to read my blog post on the
theory behind bringing up a PPPoE session.
References
http://tools.ietf.org/html/rfc2516 (PPPoE)
http://tools.ietf.org/html/rfc4638 (PPPoE large MRU)
http://tools.ietf.org/html/rfc1661 (PPP)
Labels: CHAP, Cisco, CONFACK, CONFNAK, CONFREJ, CONFREQ, debug, dialer, LCP, negotiation, PADI, PADO, PADR, PADS, PADT, PPP,
PPPoE, troubleshooting
5 comments:
MỞ