pppoe: a PPP-over-Ethernet redirector for pppd
Copyright (C) 1999 Luke Stras

Introduction
============

This program can be used to enable PPPoE support using the pppd
daemon.  PPPoE is a technique for the encapsulation of PPP streams
inside of Ethernet frames.  This technology is being deployed by
high-speed Internet access providers (cable modems, xDSL, etc.) in
order to decouple the supply of bandwidth from ISP services.  In
particular, in Canada, the Bell Sympatico ADSL service is moving from
DHCP-based access control to PPPoE.  Further details on PPPoE can be
found in RFC2516.

Installation
============

Requirements
------------

Linux 2.0.0 or later (may work on other platforms, but untested)
pppd 2.3.7 or later

Compiling
---------

Compile and install pppd.  Then:

Unpack and make:

# tar xzvf pppoe-0.1.tar.gz
# make

Install to some convenient directory:

# cp pppoe /usr/local/sbin

Create an appropriate secrets file.  For example, Sympatico ADSL uses
PAP for authentication, so we need an /etc/ppp/pap-secrets file.  The
file consists of three columns, separated by whitespace.  The first
column is the user name.  For Sympatico, this is the Sympatico Member
ID (b1*).  This is case sensitive, and you must add '@sympatico.ca' to
the end.  The second entry is the server name.  This should be '*'.
The third entry is the secret.  For Sympatico users, this will be your
Sympatico password.  So a sample /etc/ppp/pap-secrets file might look
like:

b1aaaaaa@sympatico.ca * password

Make sure your ethernet interface is up:

ifconfig eth0 0.0.0.0 up

Then, start pppd like this:

pppd pty '/usr/local/sbin/pppoe -I eth0' noipdefault defaultroute \
     hide-password passive persist name b1aaaaaa@sympatico.ca

Options
=======

pppoe can take two run-time options:

-I if
  Specifies the ethernet interface to use.  The interface *must* be up
  before the program will start.

-L file
  Specifes a log file.  Note that pppd chroots to '/', so the path
  should be absolute.  Note that the log can get large.

-V
  Prints the version number, and exits.

Bugs
====

pppd will occasionally negotiate a connection, but refuse to transmit
any packets.  I've found that adding the 'debug' option to the pppd
command line seems to fix this problem.  Is this a race condition of
some kind?  I don't konw.

Occasionally, the ppp link negotiation enters an infinite loop.  The
cause is unknown, and the only solution is to try again.  I believe
this may have something to do with a bug in Access Concentrator used
by Bell, but I'm not sure.

Author Information
==================

I can be reached via e-mail at <stras@ecf.toronto.edu>.  This program
can be found at http://www.ecf.toronto.edu/~stras/pppoe.html
