1999 Linux Symposium

new ppp subsystem


The New PPP subsystem

As of linux-2.2.15 there were 3 different PPP implementations in the kernel. The asynchronous serial PPP driver, the synchronous PPP driver and the isdn_ppp module. Each PPP implementation is tailored for different situations, but there is a lot of duplicated code and common functionality.

The new generic PPP driver in linux-2.4 provides the functionality which is of use in any PPP implementation, including the networking interface, TCP/IP header compression, packet compression, the interface to the PPP daemon, the kernel facilities needed for demand dialing, and multilink bonding.

The generic PPP driver calls on the services of PPP `channels' for sending and receiving frames. A PPP channel implementation can be arbitrarily complex internally but has a very simple interface with the generic PPP code: it merely has to be able to send PPP frames, receive PPP frames, and optionally handle ioctl requests. Currently there are PPP channel implementations for asynchronous serial ports, synchronous serial ports, and for PPP over ethernet.

The PPP channel interface deliberately does not include facilities for starting or stopping PPP channels. In general, each medium will already have a way of communicating with userland, which is used. Each medium will also have some actions to be performed at user level to initialize the medium for use as a PPP channel.

Paul Mackerras

Paul Mackerras is the maintainer of the Linux PPP implementation and the Linux port to the Power Macintosh. He works for Linuxcare, Inc. as a Senior Open Source Researcher, based in Canberra, Australia. Before joining Linuxcare, Mackerras was the leader of the CAP Research Program at the Australian National University, a program of research in parallel computing in collaboration with Fujitsu Laboratories, Japan. He has written numerous conference papers and reviewed journal articles.

Mackerras has contributed to several Opensource projects. As well as porting Linux to the Power Macintosh and rewriting and extending the Linux PPP implementation, he has contributed to the port of Linux to the AP1000+ distributed-memory multicomputer and to the development of the rsync algorithm and program. He has also ported NetBSD to a Motorola 68030-based system which he designed and built himself.

© 2000 Linux Symposium.  All Rights Reserved.