PPP

Point to Point protocol, defined in RFC 1661, was the protocol spoken with analog modems calling into an ISP as a successor to SLIP and today is most commonly used as PPPoE (Over Ethernet).

Kernel Synchronous PPP
also known as sppp was written in 1994 at Cronyx Ltd. in Russia by Serge Vakulenko  and rewritten to conform to RFC 1661 by Joerg Wunsch of FreeBSD. It is entirely in-kernel (is therefore speedy) and is controlled from userland with ioctls. In NetBSD and OpenBSD a kernel PPPoE implementation written by Martin Husemann  uses this driver which is very speedy.

In OpenBSD the connection via PPPoE is configured in the /etc/hostname.pppoe0 file, mine looks like this:

pppoedev rl0 !/sbin/ifconfig rl0 up !/usr/sbin/spppcontrol \$if myauthproto=pap myauthname=pbug myauthkey=secret !/sbin/ifconfig \$if inet 0.0.0.0 0.0.0.1 netmask 0xffffffff !/sbin/route add default 0.0.0.1 up

Upon boot the connection is set up.

Kernel Asynchronous PPP
modified extensively by Paul Mackeras  uses the pppd userland daemon. Apple Mac OS X uses this implementation for its PPPoE implementation. This PPP implementation has it's own Network interface called "ppp" starting with ppp0, ppp1 and so on.

Userland PPP
Also known as iijppp, is a PPP implementation entirely in userland written by Toshiharu OHNO  and was extensively modified by Brian Somers  who now maintains the program. In FreeBSD this program has extensive hooks into the kernel in order to make use of the PPPoE protocol. In OpenBSD there is a userland pppoe program that does PPPoE by means of bpf access to the OSI data link (somewhat slow and prone to packet loss). User-ppp uses the "tun" Network interface to connect the PPP implementation to the Kernel IP stack.

Here is a sample /etc/ppp/ppp.conf from FreeBSD 5.4-RELEASE. As always replace the variables: default: set log Phase Chat IPCP CCP tun command set device PPPoE:$sis0 set mru 1492 set mtu 1452 add! default HISADDR test: set authname test@test set authkey test set dial set login myisp: set authname $ISP_userid set authkey $ISP_Password set dial set login enable dns

"default" above identifies variables that will be shared across your various ppp connections. It is possible to have multiple, the author of this has 2 PPPoE sDSL connections for example. I left "test" above as many Redbacks allow this username/password combo for testing.

ppp> ddial test
 * 1) ppp

if all three letters in your prompt turn capitalized, it's working. At that stage you can try


 * 1) ppp -ddial myisp

and then check ifconfig and your ppp.log which is usually found in /var/log.

EA-700 Heritage DSL modem
EA-700> adsl show perf Downstream : Capacity Occupation : 36 % Noise Margin : 15 dB   Attenuation   : 56 dB   Output Power  : 18.5 dBm Upstream : Capacity Occupation : 34 % Noise Margin : 24 dB   Attenuation   : 31.5 dB   Output Power  : 12 dBm EA-700> adsl show error Downstream : FEC : 8 CRC : 0 HEC : 0 Upstream : FEC : 0 CRC : 0 HEC : 0 EA-700>