On Linux, PPP functionality is split into two parts: a kernel component that
handles the low-level protocols (HDLC, IPCP, IPXCP, etc.) and the user space
pppd daemon that handles the various higher-level protocols,
such as PAP and CHAP. The current release of the PPP software for Linux
contains the PPP daemon pppd and a program named
chat that automates the dialing of the remote
system.
The PPP kernel driver was written by Michael Callahan and reworked by
Paul Mackerras. pppd was derived from a free PPP
implementation[1] for Sun and 386BSD machines that was written by
Drew Perkins and others, and is maintained by Paul Mackerras. It was
ported to Linux by Al Longyear. chat was written by
Karl Fox.[2]
Like SLIP, PPP is implemented by a special line discipline.
To use a serial line as a PPP link, you first establish the connection
over your modem as usual, and subsequently convert the line to PPP mode.
In this mode, all incoming data is passed to the PPP driver, which checks
the incoming HDLC frames for validity (each HDLC frame carries a 16-bit
checksum), and unwraps and dispatches them. Currently, PPP is able to
transport both the IP protocol, optionally using Van Jacobson header
compression, and the IPX protocol.
pppd aids the kernel driver, performing the
initialization and authentication phase that is necessary before
actual network traffic can be sent across the
link. pppd 's behavior may be fine-tuned
using a number of options. As PPP is rather complex, it is impossible
to explain all of them in a single chapter. This book therefore cannot
cover all aspects of pppd, but only gives you an
introduction. For more information, consult Using & Managing
PPP or the pppd manual pages, and
README s in the pppd
source distribution, which should help you sort out most questions
this chapter fails to discuss. The PPP-HOWTO might also be of use.
Probably the greatest help you will find in configuring PPP will come
from other users of the same Linux distribution. PPP configuration
questions are very common, so try your local usergroup mailing list or
the IRC Linux channel. If your problems persist even after reading the
documentation, you could try the comp.protocols.ppp newsgroup. This is
the place where you can find most of the people involved in
pppd development.