Penguin

Specific PPP Configurations

User Mode PPPoE

If you install roaring penguin PPPoE on Linux from the tarball, you get a few scripts named adsl-start, adsl-connect etc.

Debian's pppconfig, among others, uses a much tidier way using pppd's "call" parameter and /etc/ppp/peers entries.

Here is an example entry for a PPPoE connection. In the following, you would replace ISP with the PPPoE service name on your modem/AccessConcentrator, eth0 with the ethernet device connected to your AccessConcentrator, foo@myisp.com with your username, myisp with a label for your ISP and mypassword with your password.

/etc/ppp/peers/myisp:

 pty '/usr/sbin/pppoe -p /var/run/pppoe.conf-adsl.pid.pppoe  -m 1412 -U -T 80 -I eth0 -S ISP'
 holdoff 5
 #debug
 persist
 ipcp-accept-remote
 ipcp-accept-local
 noauth
 defaultroute
 hide-password
 user foo@myisp.com
 lcp-echo-interval 5
 lcp-echo-failure 5
 remotename myisp
 maxfail 0

/etc/ppp/pap-secrets:

 "foo@myisp.com"    myisp      "mypassword"

Now, typing pppd call myisp should connect the the AccessConcentrator then establish the PPP connection with the RemoteAccessNode? (in the case of ADSL).

Kernel Mode PPPoE

The Linux kernel now has a built in PPPoE framer. Using the kernel mode PPPoE driver seems to yield measurably (but not noticably) lower CPU load than the userland client.

The framer provides a pty /dev/ppp for pppd to talk to, but it still needs a PPPoE plugin. The ppp package includes one which is supplied by the good folk at Roaring-Penguin. Oddly enough, the best docs for kernel mode seem to be in the usermode package, see doc/KERNEL-MODE-PPPOE.

You need a sufficiently recent version of ppp -- 2.4.2 is the minimum --, and your Kernel must have support for the following (this is for 2.6):

 CONFIG_PPP=m
 CONFIG_PPP_ASYNC=m
 CONFIG_PPP_DEFLATE=m
 CONFIG_PPP_BSDCOMP=m
 CONFIG_PPPOE=m

You will also need the appropriate character device, in case it doesn't exist:

 mknod --mode=664 /dev/ppp c 108 0

Add the following entries to /etc/modules.conf according to KERNEL-MODE-PPPOE (under your LinuxDistribution the file may already contain some or all of these):

 alias net-pf-24 pppoe
 alias char-major-108 ppp_generic
 alias tty-ldisc-3 ppp_async
 alias tty-ldisc-13 n_hdlc
 alias tty-ldisc-14 ppp_synctty

In the following, you would replace ISP with the PPPoE service name on your modem/AccessConcentrator, eth0 with the ethernet device connected to your AccessConcentrator, foo@myisp.com with your username, myisp with a label for your ISP and mypassword with your password.

/etc/ppp/peers/myisp:

 plugin rp-pppoe.so
 rp_pppoe_service ISP eth0
 holdoff 5
 #debug
 persist
 ipcp-accept-remote
 ipcp-accept-local
 noauth
 defaultroute
 hide-password
 user foo@myisp.com
 lcp-echo-interval 5
 lcp-echo-failure 5
 remotename myisp
 maxfail 0

/etc/ppp/pap-secrets:

 "foo@myisp.com"    myisp      "mypassword"

Now, typing pppd call myisp should connect the the AccessConcentrator then establish the PPP connection with the RemoteAccessNode? (in the case of ADSL).