Posts Tagged ‘PPPoE’
PPP Over Ethernet (PPPoE) is one of those topics that is very simple but unless you configure it a lot or practice enough, the nuances can escape you very easily. Currently, PPPoE is on the Service Provider lab blueprint but it has also been added to the v4 Routing and Switching lab blueprint. Here we look at a small scenario and do some debugging to gain some more insight into what exactly is going on. More details can be found in RFC 2516.

Objective
- PPPoE connection between R1 and R2.
- CHAP authentication is to be used.
- R2 should provide R1 an address via DHCP.
Configuration
We will start on R1. A dialer interface is needed and the FastEthernet interface needs to be associated with the same dialer pool. Under the dialer we can configure PPP options such as authentication and how the interface will learn its IP address. PPP commands will not be available until you specify the encapsulation as PPP on the dialer interface,
R1(config)#username R2 password pppoe-lab
R1(config)#int f0/0
R1(config-if)#pppoe-client dial-pool-number 1
R1(config)#int dialer 1
R1(config-if)#dialer-group 1
R1(config-if)#dialer pool 1
R1(config-if)#ppp auth?
% Unrecognized command
R1(config-if)#encapsulation ppp
R1(config-if)#ppp authen chap
R1(config-if)#ip address dhcp
R2, the server in this example, will not use a dialer interface. Instead it uses a virtual-template and bb-group configuration. PPP options are configured under the virtual template, the virtual-template is assigned to the bba-group, and the bba-group is attached to the FastEthernet interface. BBA is an abbreviation for Broadband access.
R2(config)#username R1 password pppoe-lab
R2(config)#ip dhcp pool R1
R2(dhcp-config)#network 192.168.1.0 /24
R2(dhcp-config)#exit
R2(config)#interface virtual-template 1
R2(config-if)#ip address 192.168.1.2 255.255.255.0
R2(config-if)#encap ppp
R2(config-if)#ppp authentication chap
R2(config-if)#exit
R2(config)#bba-group pppoe global
R2(config-bba-group)#virtual-template 1
R2(config-bba-group)#int f0/0
R2(config-if)#pppoe enable group globa
Debugging on R1 gives the following.
R1#debug pppoe events
PPPoE protocol events debugging is on
Aug 3 14:30:35.551: Sending PADI: Interface = FastEthernet0/0
Aug 3 14:30:35.567: PPPoE 0: I PADO R:c201.0bfc.0000 L:c200.0bfc.0000 Fa0/0
Aug 3 14:30:37.599: PPPOE: we’ve got our pado and the pado timer went off
Aug 3 14:30:37.599: OUT PADR from PPPoE Session
Aug 3 14:30:37.615: PPPoE 3: I PADS R:c201.0bfc.0000 L:c200.0bfc.0000 Fa0/0
Aug 3 14:30:37.619: IN PADS from PPPoE Session
Aug 3 14:30:37.631: %DIALER-6-BIND: Interface Vi1 bound to profile Di1
Aug 3 14:30:37.635: PPPoE: Virtual Access interface obtained.
Aug 3 14:30:37.635: PPPoE : encap string prepared
Aug 3 14:30:37.639: [0]PPPoE 3: data path set to Virtual Acess
Aug 3 14:30:37.659: %LINK-3-UPDOWN: Interface Virtual-Access1, changed state to up
Aug 3 14:30:41.051: %LINEPROTO-5-UPDOWN: Line protocol on Interface Virtual-Access1, changed state to up
Aug 3 14:30:49.175: %DHCP-6-ADDRESS_ASSIGN: Interface Dialer1 assigned DHCP address 192.168.1.3, mask 255.255.255.0, hostname R1
From the above output we can see the process follows the RFC pretty well. 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.
Here are some verification commands on each device:
R1#sho pppoe session
1 client session
Uniq ID PPPoE RemMAC Port VT VA State
SID LocMAC VA-st
N/A 3 c201.0bfc.0000 Fa0/0 Di1 Vi1 UP
c200.0bfc.0000 UP
R2#sho pppoe session
1 session in LOCALLY_TERMINATED (PTA) State
1 session total
Uniq ID PPPoE RemMAC Port VT VA State
SID LocMAC VA-st
3 3 c200.0bfc.0000 Fa0/0 1 Vi2.1 PTA
c201.0bfc.0000 UP
Some final things to remember
- Configure dialer interface in client
- Dialer interface contains ppp and addressing options
- Ethernet interface must belong to same dialer pool
- Configure virtual-template and bba-group on server
- Virtual-template contains ppp options and IP address
- BBA-group is configured under the Ethernet interface