PPPoE (3.2)
In this section, you configure a Cisco router with PPPoE.
PPPoE Overview (3.2.1)
In this topic, you learn how PPPoE operates.
PPPoE Motivation (3.2.1.1)
In addition to understanding the various technologies available for broadband Internet access, it is also important to understand the underlying data link layer protocol that the ISP uses to form a connection.
A data link layer protocol commonly used by ISPs is Point-to-Point Protocol (PPP). PPP can be used on all serial links, including those links created with dialup analog and ISDN modems. To this day, the link from a dialup user to an ISP, using analog modems, likely uses PPP.
Figure 3-9 shows a basic representation of that analog dial connection with PPP.
Figure 3-9 PPP Frames over Legacy Dialup Connection
Additionally, ISPs often use PPP as the data link protocol over broadband connections. There are several reasons for this. First, PPP supports the ability to assign IP addresses to remote ends of a PPP link. With PPP enabled, ISPs can use PPP to assign each customer one public IPv4 address. More importantly, PPP supports CHAP authentication. ISPs often want to use CHAP to authenticate customers because during authentication, ISPs can check accounting records to determine whether the customer’s bill is paid prior to letting the customer connect to the Internet.
These technologies came to market in the following order, with varying support for PPP:
1. Analog modems for dialup that could use PPP and CHAP
2. ISDN for dialup that could use PPP and CHAP
3. DSL, which did not create a point-to-point link and could not support PPP and CHAP
ISPs value PPP because of the authentication, accounting, and link-management features. Customers appreciate the ease and availability of the Ethernet connection; however, Ethernet links do not natively support PPP. PPP over Ethernet (PPPoE) provides a solution to this problem. As shown in Figure 3-10, PPPoE sends PPP frames encapsulated inside Ethernet frames.
Figure 3-10 PPP Frames over an Ethernet Connection (PPPoE)
PPPoE Concepts (3.2.1.2)
As shown in Figure 3-11, the customer’s router is usually connected to a DSL modem using an Ethernet cable. PPPoE creates a PPP tunnel over an Ethernet connection. This allows PPP frames to be sent across the Ethernet cable to the ISP from the customer’s router. The modem converts the Ethernet frames to PPP frames by stripping the Ethernet headers. The modem then transmits these PPP frames on the ISP’s DSL network.
Figure 3-11 Tunneling to Create a PPP Link over Ethernet
Implement PPPoE (3.2.2)
In this topic, you implement a basic PPPoE connection on a client router.
PPPoE Configuration (3.2.2.1)
With the ability to send and receive PPP frames between the routers, the ISP could continue to use the same authentication model as with analog and ISDN. To make it all work, the client and ISP routers need additional configuration, including PPP configuration, as shown in Figure 3-12.
Figure 3-12 Steps for a PPPoE Customer Configuration
To understand the configuration, consider the following:
1. To create a PPP tunnel, the configuration uses a dialer interface. A dialer interface is a virtual interface. The PPP configuration is placed on the dialer interface, not the physical interface. The dialer interface is created using the interface dialer number global configuration command. The client can configure a static IP address but will more likely be automatically assigned a public IP address by the ISP.
2. The PPP CHAP configuration usually defines one-way authentication; therefore, the ISP authenticates the customer. The hostname and password configured on the customer router must match the hostname and password configured on the ISP router. Notice in Figure 3-12 that the CHAP username and password match the settings on the ISP router.
3. The physical Ethernet interface that connects to the DSL modem is then enabled with the pppoe enable interface configuration command. This command enables PPPoE and links the physical interface to the dialer interface. The dialer interface is linked to the Ethernet interface with the dialer pool number and pppoe-client dial-pool-number number interface configuration commands, using the same number. The dialer interface number does not have to match the dialer pool number.
4. The maximum transmission unit (MTU) should be lowered to 1492, versus the default of 1500, to accommodate the PPPoE headers.
PPPoE Verification (3.2.2.2)
As shown in Figure 3-13, the customer’s router is connected to the ISP router using DSL. Both routers have been configured for PPPoE.
Figure 3-13 Verifying the PPPoE Configuration
In Example 3-1, the show ip interface brief command is issued on R1 to verify the IPv4 address automatically assigned to the dialer interface by the ISP router.
Example 3-1 Verifying the Dialer Interface Is Up
R1# show ip interface brief Interface IP-Address OK? Method Status Protocol Embedded-Service-Engine0/0 unassigned YES unset administratively down down GigabitEthernet0/0 unassigned YES unset administratively down down GigabitEthernet0/1 unassigned YES unset up up Serial0/0/0 unassigned YES unset administratively down down Serial0/0/1 unassigned YES unset administratively down down Dialer2 10.1.3.1 YES IPCP up up Virtual-Access1 unassigned YES unset up up Virtual-Access2 unassigned YES unset up up R1#
As shown in Example 3-2, the show interface dialer command on R1 verifies the MTU and PPP encapsulation configured on the dialer interface.
Example 3-2 Verifying the MTU Size and Encapsulation
R1# show interface dialer 2 Dialer2 is up, line protocol is up (spoofing) Hardware is Unknown Internet address is 10.1.3.1/32 MTU 1492 bytes, BW 56 Kbit/sec, DLY 20000 usec, reliability 255/255, txload 1/255, rxload 1/255 Encapsulation PPP, LCP Closed, loopback not set Keepalive set (10 sec) DTR is pulsed for 1 seconds on reset <output omitted>
Example 3-3 displays the routing table on R1.
Example 3-3 Verifying the R1 Routing Table
R1# show ip route | begin Gateway Gateway of last resort is 0.0.0.0 to network 0.0.0.0 S* 0.0.0.0/0 is directly connected, Dialer2 10.0.0.0/32 is subnetted, 2 subnets C 10.1.3.1 is directly connected, Dialer2 C 10.1.3.2 is directly connected, Dialer2 R1#
Notice that two /32 host routes for 10.0.0.0 have been installed in R1’s routing table. The first host route is for the address assigned to the dialer interface. The second host route is the IPv4 address of the ISP. The installation of these two host routes is the default behavior for PPPoE.
As shown in Example 3-4, the show pppoe session command enables you to display information about currently active PPPoE sessions.
Example 3-4 Viewing the Current PPPoE Sessions
R1# show pppoe session 1 client session Uniq ID PPPoE RemMAC Port VT VA State SID LocMAC VA-st Type N/A 1 30f7.0da3.1641 Gi0/1 Di2 Vi2 UP 30f7.0da3.0da1 UP R1#
The output displays the local and remote Ethernet MAC addresses of both routers. The Ethernet MAC addresses can be verified by using the show interfaces command on each router.
PPPoE Troubleshooting (3.2.2.3)
After you ensure that the client router and DSL modem are connected with the proper cables, the cause of a PPPoE connection not functioning properly is usually one or more of the following reasons:
Failure in the PPP negotiation process
Failure in the PPP authentication process
Failure to adjust the TCP maximum segment size (MSS)
PPPoE Negotiation (3.2.2.4)
Verify PPP negotiation using the debug ppp negotiation command. Example 3-5 displays part of the debug output after R1’s G0/1 interface has been enabled.
Example 3-5 Examining the PPP Negotiation Process
R1# debug ppp negotiation *Sep 20 19:05:05.239: Vi2 PPP: Phase is AUTHENTICATING, by the peer *Sep 20 19:05:05.239: Vi2 LCP: State is Open <output omitted> *Sep 20 19:05:05.247: Vi2 CHAP: Using hostname from interface CHAP *Sep 20 19:05:05.247: Vi2 CHAP: Using password from interface CHAP *Sep 20 19:05:05.247: Vi2 CHAP: O RESPONSE id 1 len 26 from "Fred" *Sep 20 19:05:05.255: Vi2 CHAP: I SUCCESS id 1 len 4 <output omitted> *Sep 20 19:05:05.259: Vi2 IPCP: Address 10.1.3.2 (0x03060A010302) *Sep 20 19:05:05.259: Vi2 IPCP: Event[Receive ConfAck] State[ACKsent to Open] *Sep 20 19:05:05.271: Vi2 IPCP: State is Open *Sep 20 19:05:05.271: Di2 IPCP: Install negotiated IP interface address 10.1.3.2 *Sep 20 19:05:05.271: Di2 Added to neighbor route AVL tree: topoid 0, address 10.1.3.2 *Sep 20 19:05:05.271: Di2 IPCP: Install route to 10.1.3.2 R1# undebug all
The output is an example of what should be generated when PPP is correctly configured.
The four main points of failure in a PPP negotiation are as follows:
No response from the remote device (the ISP)
Link Control Protocol (LCP) not open
Authentication failure
IP Control Protocol (IPCP) failure
PPPoE Authentication (3.2.2.5)
After confirming with the ISP that it uses CHAP, verify that the CHAP username and password are correct. Example 3-6 shows the CHAP configuration on the dialer2 interface.
Example 3-6 Verify the CHAP Configuration
R1# show running-config | section interface Dialer2 interface Dialer2 mtu 1492 ip address negotiated encapsulation ppp dialer pool 1 ppp authentication chap callin ppp chap hostname Fred ppp chap password 0 Barney R1#
Re-examining the output of the debug ppp negotiation command in Example 3-7 verifies that the CHAP username is correct.
Example 3-7 Verify the CHAP Username
R1# debug ppp negotiation *Sep 20 19:05:05.239: Vi2 PPP: Phase is AUTHENTICATING, by the peer *Sep 20 19:05:05.239: Vi2 LCP: State is Open <output omitted> *Sep 20 19:05:05.247: Vi2 CHAP: Using hostname from interface CHAP *Sep 20 19:05:05.247: Vi2 CHAP: Using password from interface CHAP *Sep 20 19:05:05.247: Vi2 CHAP: O RESPONSE id 1 len 26 from "Fred" *Sep 20 19:05:05.255: Vi2 CHAP: I SUCCESS id 1 len 4 <output omitted> *Sep 20 19:05:05.259: Vi2 IPCP: Address 10.1.3.2 (0x03060A010302) *Sep 20 19:05:05.259: Vi2 IPCP: Event[Receive ConfAck] State[ACKsent to Open] *Sep 20 19:05:05.271: Vi2 IPCP: State is Open *Sep 20 19:05:05.271: Di2 IPCP: Install negotiated IP interface address 10.1.3.2 *Sep 20 19:05:05.271: Di2 Added to neighbor route AVL tree: topoid 0, address 10.1.3.2 *Sep 20 19:05:05.271: Di2 IPCP: Install route to 10.1.3.2 R1# undebug all
If the CHAP username or password were incorrect, the output from the debug ppp negotiation command would show an authentication failure message such as shown in Example 3-8.
Example 3-8 Authentication Failure Message
R1# *Sep 20 19:05:05.247: Vi2 CHAP: I FAILURE id 1 Len 26 MSG is "Authentication failure" R1#
PPPoE MTU Size (3.2.2.6)
Accessing some web pages might be a problem with PPPoE. When the client requests a web page, a TCP three-way handshake occurs between the client and the web server. During the negotiation, the client specifies the value of its TCP maximum segment size (MSS). The TCP MSS is the maximum size of the data portion in the TCP segment.
A host determines the value of its MSS field by subtracting the IP and TCP headers from the Ethernet maximum transmission unit (MTU). On an Ethernet interface, the default MTU is 1500 bytes. Subtracting the IPv4 header of 20 bytes and the TCP header of 20 bytes, the default MSS size will be 1460 bytes, as shown in Figure 3-14.
Figure 3-14 MTU and MSS
The default MSS size is 1460 bytes, when the default MTU is 1500 bytes; however, PPPoE supports an MTU of only 1492 bytes to accommodate the additional 8-byte PPPoE header, as shown in Figure 3-15.
Figure 3-15 Adjusted MSS with PPPoE Header
You can verify the PPPoE MTU size in running configuration, as shown in Example 3-9. This disparity between the host and PPPoE MTU size can cause the router to drop 1500-byte packets and terminate TCP sessions over the PPPoE network.
Example 3-9 Verifying the MTU Size on the Dialer Interface
R1# show running-config | section interface Dialer2 interface Dialer2 mtu 1492 ip address negotiated encapsulation ppp <output omitted>
The ip tcp adjust-mss max-segment-size interface configuration command helps prevent TCP sessions from being dropped by adjusting the MSS value during the TCP three-way handshake. In most cases, the optimum value for the max-segment-size argument is 1452 bytes. Example 3-10 shows this configuration on R1’s LAN interface.
Example 3-10 Adjusting the TCP MSS
R1(config)# interface g0/0 R1(config-if)# ip tcp adjust-mss 1452
The TCP MSS value of 1452 plus the 20-byte IPv4 header, the 20-byte TCP header, and the 8-byte PPPoE header adds up to a 1500-byte MTU, as illustrated previously in Figure 3-15.