NAME¶
pppoe-relay - user-space PPPoE relay agent.
SYNOPSIS¶
pppoe-relay [options]
DESCRIPTION¶
pppoe-relay is a user-space relay agent for PPPoE (Point-to-Point
Protocol over Ethernet) for Linux.
pppoe-relay works in concert with
the
pppoe client and
pppoe-server server. See the OPERATION
section later in this manual for details on how
pppoe-relay works.
OPTIONS¶
- -S interface
- Adds the Ethernet interface interface to the list of interfaces
managed by pppoe-relay. Only PPPoE servers may be connected to this
interface.
- -C interface
- Adds the Ethernet interface interface to the list of interfaces
managed by pppoe-relay. Only PPPoE clients may be connected to this
interface.
- -B interface
- Adds the Ethernet interface interface to the list of interfaces
managed by pppoe-relay. Both PPPoE clients and servers may be
connected to this interface.
- -n num
- Allows at most num concurrent PPPoE sessions. If not specified, the
default is 5000. num can range from 1 to 65534.
- -i timeout
- Specifies the session idle timeout. If both peers in a session are idle
for more than timeout seconds, the session is terminated. If
timeout is specified as zero, sessions will never be terminated
because of idleness.
Note that the idle-session expiry routine is never run more frequently than
every 30 seconds, so the timeout is approximate. The default value for
timeout is 600 seconds (10 minutes.)
- -F
- The -F option causes pppoe-relay not to fork into the
background; instead, it remains in the foreground.
- -h
- The -h option prints a brief usage message and exits.
OPERATION¶
pppoe-relay listens for incoming PPPoE PADI frames on all interfaces
specified with
-B or
-C options. When a PADI frame appears,
pppoe-relay adds a Relay-Session-ID tag and broadcasts the PADI on all
interfaces specified with
-B or
-S options (except the interface
on which the frame arrived.)
Any PADO frames received are relayed back to the client which sent the PADI
(assuming they contain valid Relay-Session-ID tags.) Likewise, PADR frames
from clients are relayed back to the matching access concentrator.
When a PADS frame is received,
pppoe-relay enters the two peers' MAC
addresses and session-ID's into a hash table. (The session-ID seen by the
access concentrator may be different from that seen by the client;
pppoe-relay must renumber sessions to avoid the possibility of
duplicate session-ID's.) Whenever either peer sends a session frame,
pppoe-relay looks up the session entry in the hash table and relays the
frame to the correct peer.
When a PADT frame is received,
pppoe-relay relays it to the peer and
deletes the session entry from its hash table.
If a client and server crash (or frames are lost), PADT frames may never be
sent, and
pppoe-relay's hash table can fill up with stale sessions.
Therefore, a session-cleaning routine runs periodically, and removes old
sessions from the hash table. A session is considered "old" if no
traffic has been seen within
timeout seconds. When a session is deleted
because of a timeout, a PADT frame is sent to each peer to make certain that
they are aware the session has been killed.
EXAMPLE INVOCATIONS¶
pppoe-relay -C eth0 -S eth1
The example above relays frames between PPPoE clients on the eth0 network and
PPPoE servers on the eth1 network.
pppoe-relay -B eth0 -B eth1
This example is a transparent relay -- frames are relayed between any mix of
clients and servers on the eth0 and eth1 networks.
pppoe-relay -S eth0 -C eth1 -C eth2 -C eth3
This example relays frames between servers on the eth0 network and clients on
the eth1, eth2 and eth3 networks.
AUTHORS¶
pppoe-relay was written by David F. Skoll <dfs@roaringpenguin.com>.
The
pppoe home page is
http://www.roaringpenguin.com/pppoe/.
SEE ALSO¶
pppd(8),
pppoe(8),
pppoe-sniff(8),
pppoe-relay(8),
/usr/share/doc/pppoe/README.Debian.gz