One of the technologies I have never touched in a prod environment is the PPPoE Client/Server configuration. I think this is because PPPoE is mostly used in Service Provider environments and I have only worked in Enterprise environments. If you don’t configure this often, it can be hard to understand and remember the configuration steps required. Today, I’ll lay out the easiest way to configure this with a static IP (IPCP).
First, let’s talk a little bit how PPPoE works. PPP over Ethernet (PPPoE) will have 2 configurations, the client and the server.
The client will not have any IP’s configured on it. Instead, it will have a dialer interface to receive its IP address from the PPPoE server through IPCP. The configuration will be like this:
The PPPoE server will have its own IP address configured and the remote client IP address will be negotiated through IPMP or DHCP. To do this, we will create a bba-group on the server and assign a virtual-template holding IP configuration.
Once this is configured, let’s do a “debug pppoe events” on the client and take a look at the negotiation process:
- The client broadcasts a PPPoE Active Discovery Initiation (PADI) packet to learn of any servers on the network.
- R2 responds with a unicast PPPoE Active Discovery Offer (PADO). This packet contains a tag that the client uses to associate with the proper request.
- After receiving the PADO, the client sends a PPPoE Active Discovery Request (PADR) packet, which is unicast top the server.
- The server responds with a PPPoE Active Discovery Session-confirmation (PADS) packet and PPP negotiation begins.
Again, here are the steps to configure PPPoE Client/Server:
1. Configure dialer interface in client, this contains ppp and negotiation options
2. Configure the ethernet interface with the dialer pool and bba-group
1. Configure virtual-template with the IP address (DHCP pool or IPCP with local pool)
2. Configure the bba-group and add the virtual-template inside
3. Configure the ethernet interface with the bba-group