What is PPP?

Point-to-Point Protocol (PPP) is very similar to HDLC in that it’s also a multipoint protocol primarily used on leased lines. But it has more overhead that enables you to do more than you could with HDLC. It defines a set of additional supportive protocols — Link Control Protocol (LCP) and Network Control Protocol (NCP) — sort of like how Ethernet uses Spanning Tree to improve the frame forwarding process. They make PPP transmission more efficient and secure.

Link Control Protocol (LCP) and Network Control Protocol (NCP)

PPP will initiate 1 instance of LCP for each link that exists. It’s only concern is with the establishment and maintenance of the link between point A and point B. PPP functions such as error detection, loop detection, multilink support, and authentication (PAP and CHAP) actually take place in LCP.

NCP on the other hand will initiate 1 instance of itself for every type of protocol being used on that link. If the PPP link is propagating IPv4 and v6, NCP will initiate 1 instance of IPv4CP and IPv6CP. That’s because it’s only concerned with the encapsulated protocols sitting in the PPP frames.

How To Configure PPP

configure terminal
interface serial 0/0/x
ip address %ipv4Address% %subnetMask%
encapsulation ppp
no shutdown

We mentioned above how LCP provide authentication support to PPP via PAP or CHAP. Since PAP transmits auth passwords in clear text to its peer, CHAP is much more secure (instead hashing the password with MD5). You can add CHAP authentication to PPP as follows:

interface serial 0/0/x
encapsulation ppp
exit ## Go into global config mode
hostname %LocalDeviceName%

username %RemotePeersHostname% password %matchingPassword%

# %RemotePeersHostname% should match whatever was entered for the hostname command on the remote peer.
# %matchingPassword% should be the same on both devices.

interface serial 0/0/x ## Go back into interface config mode
ppp authentication chap
write mem

We also mentioned above how LCP provides multilink support for PPP. Multiple serial links are often desired between peers to increase redundancy or optimize load balancing. It’s also sometimes cheaper to add secondary or tertiary T1’s between the same peers rather than upgrading the T1 to a T3.

The PPP function of utilizing multiple links is called Multilink PPP (MLPPP). A multilink is just a virtual interface with its own L3 config that physical interfaces are then added to, very similar to LACP. You can configure MLPPP as follows:

## Config the multilink, define an IP to communicate with and a group to associate with 
conf t
int multilink 1 ## Note that the "1" just needs to be a matching number
encapsulation ppp
ppp multilink
ip addr %IpAddress% %subnetMask%
ppp multilink group 1

#Make the physical interface use MLPPP and add it to the same group as defined above
int serial 0/0/x
encapsulation ppp
ppp multilink
no ip address
ppp multilink group 1