1PPPOE(8) System Manager's Manual PPPOE(8)
2
3
4
6 pppoe - user-space PPPoE client.
7
9 pppd pty 'pppoe [pppoe_options]' [pppd_options]
10
11 pppoe -A [pppoe_options]
12
14 pppoe is a user-space client for PPPoE (Point-to-Point Protocol over
15 Ethernet) for Linux and other UNIX systems. pppoe works in concert
16 with the pppd PPP daemon to provide a PPP connection over Ethernet, as
17 is used by many DSL service providers.
18
19
21 -I interface
22 The -I option specifies the Ethernet interface to use. Under
23 Linux, it is typically eth0 or eth1. The interface should be
24 "up" before you start pppoe, but should not be configured to
25 have an IP address.
26
27
28 -T timeout
29 The -T option causes pppoe to exit if no session traffic is
30 detected for timeout seconds. I recommend that you use this
31 option as an extra safety measure, but if you do, you should
32 make sure that PPP generates enough traffic so the timeout will
33 normally not be triggered. The best way to do this is to use
34 the lcp-echo-interval option to pppd. You should set the PPPoE
35 timeout to be about four times the LCP echo interval.
36
37
38 -t timeout
39 The -t option sets the initial timeout for discovery packets in
40 seconds.
41
42
43 -D file_name
44 The -D option causes every packet to be dumped to the specified
45 file_name. This is intended for debugging only; it produces
46 huge amounts of output and greatly reduces performance.
47
48
49 -V The -V option causes pppoe to print its version number and exit.
50
51
52 -A The -A option causes pppoe to send a PADI packet and then print
53 the names of access concentrators in each PADO packet it
54 receives. Do not use this option in conjunction with pppd; the
55 -A option is meant to be used interactively to give interesting
56 information about the access concentrator.
57
58
59 -S service_name
60 Specifies the desired service name. pppoe will only initiate
61 sessions with access concentrators which can provide the speci‐
62 fied service. In most cases, you should not specify this
63 option. Use it only if you know that there are multiple access
64 concentrators or know that you need a specific service name.
65
66
67 -C ac_name
68 Specifies the desired access concentrator name. pppoe will only
69 initiate sessions with the specified access concentrator. In
70 most cases, you should not specify this option. Use it only if
71 you know that there are multiple access concentrators. If both
72 the -S and -C options are specified, they must both match for
73 pppoe to initiate a session.
74
75
76 -U Causes pppoe to use the Host-Uniq tag in its discovery packets.
77 This lets you run multiple pppoe daemons without having their
78 discovery packets interfere with one another. You must supply
79 this option to all pppoe daemons if you intend to run multiple
80 daemons simultaneously.
81
82
83 -s Causes pppoe to use synchronous PPP encapsulation. If you use
84 this option, then you must use the sync option with pppd. You
85 are encouraged to use this option if it works, because it
86 greatly reduces the CPU overhead of pppoe. However, it MAY be
87 unreliable on slow machines -- there is a race condition between
88 pppd writing data and pppoe reading it. For this reason, the
89 default setting is asynchronous. If you encounter bugs or
90 crashes with Synchronous PPP, turn it off -- don't e-mail me for
91 support!
92
93
94 -m MSS Causes pppoe to clamp the TCP maximum segment size at the speci‐
95 fied value. Because of PPPoE overhead, the maximum segment size
96 for PPPoE is smaller than for normal Ethernet encapsulation.
97 This could cause problems for machines on a LAN behind a gateway
98 using PPPoE. If you have a LAN behind a gateway, and the gate‐
99 way connects to the Internet using PPPoE, you are strongly rec‐
100 ommended to use a -m 1412 option. This avoids having to set the
101 MTU on all the hosts on the LAN.
102
103
104 -p file
105 Causes pppoe to write its process-ID to the specified file.
106 This can be used to locate and kill pppoe processes.
107
108
109 -e sess:mac
110 Causes pppoe to skip the discovery phase and move directly to
111 the session phase. The session is given by sess and the MAC
112 address of the peer by mac. This mode is not meant for normal
113 use; it is designed only for pppoe-server(8).
114
115
116 -n Causes pppoe not to open a discovery socket. This mode is not
117 meant for normal use; it is designed only for pppoe-server(8).
118
119
120 -k Causes pppoe to terminate an existing session by sending a PADT
121 frame, and then exit. You must use the -e option in conjunction
122 with this option to specify the session to kill. This may be
123 useful for killing sessions when a buggy peer does not realize
124 the session has ended.
125
126
127 -d Causes pppoe to perform discovery and then exit, after printing
128 session information to standard output. The session information
129 is printed in exactly the format expected by the -e option.
130 This option lets you initiate a PPPoE discovery, perform some
131 other work, and then start the actual PPP session. Be careful;
132 if you use this option in a loop, you can create many sessions,
133 which may annoy your peer.
134
135
136 -f disc:sess
137 The -f option sets the Ethernet frame types for PPPoE discovery
138 and session frames. The types are specified as hexadecimal num‐
139 bers separated by a colon. Standard PPPoE uses frame types
140 8863:8864. You should not use this option unless you are abso‐
141 lutely sure the peer you are dealing with uses non-standard
142 frame types. If your ISP uses non-standard frame types, com‐
143 plain!
144
145
146 -F numfloods
147 The -F option sets the discovery flood, only used for stress-
148 testing.
149
150
151 -h The -h option causes pppoe to print usage information and exit.
152
153
155 PPPoE (Point-to-Point Protocol over Ethernet) is described in RFC 2516
156 and is a protocol which allows the session abstraction to be maintained
157 over bridged Ethernet networks.
158
159 PPPoE works by encapsulating PPP frames in Ethernet frames. The proto‐
160 col has two distinct stages: The discovery and the session stage.
161
162 In the discovery stage, the host broadcasts a special PADI (PPPoE
163 Active Discovery Initiation) frame to discover any access concentra‐
164 tors. The access concentrators (typically, only one access concentra‐
165 tor) reply with PADO (PPPoE Active Discovery Offer) packets, announcing
166 their presence and the services they offer. The host picks one of the
167 access concentrators and transmits a PADR (PPPoE Active Discovery
168 Request) packet, asking for a session. The access concentrator replies
169 with a PADS (PPPoE Active Discovery Session-Confirmation) packet. The
170 protocol then moves to the session stage.
171
172 In the session stage, the host and access concentrator exchange PPP
173 frames embedded in Ethernet frames. The normal Ethernet MTU is 1500
174 bytes, but the PPPoE overhead plus two bytes of overhead for the encap‐
175 sulated PPP frame mean that the MTU of the PPP interface is at most
176 1492 bytes. This causes all kinds of problems if you are using a Linux
177 machine as a firewall and interfaces behind the firewall have an MTU
178 greater than 1492. In fact, to be safe, I recommend setting the MTU of
179 machines behind the firewall to 1412, to allow for worst-case TCP and
180 IP options in their respective headers.
181
182 Normally, PPP uses the Link Control Protocol (LCP) to shut down a PPP
183 link. However, the PPPoE specification allows the link to be shut down
184 with a special PADT (PPPoE Active Discovery Terminate) packet. This
185 client recognizes this packet and will correctly terminate if a termi‐
186 nate request is received for the PPP session.
187
188
190 My design goals for this PPPoE client were as follows, in descending
191 order of importance:
192
193
194 o It must work.
195
196
197 o It must be a user-space program and not a kernel patch.
198
199
200 o The code must be easy to read and maintain.
201
202
203 o It must be fully compliant with RFC 2516, the proposed PPPoE
204 standard.
205
206
207 o It must never hang up forever -- if the connection is broken, it
208 must detect this and exit, allowing a wrapper script to restart
209 the connection.
210
211
212 o It must be fairly efficient.
213
214
215 I believe I have achieved all of these goals, but (of course) am open
216 to suggestions, patches and ideas. See my home page, http://www.roar‐
217 ingpenguin.com, for contact information.
218
219
221 For best results, you must give pppd an mtu option of 1492. I have
222 observed problems with excessively-large frames unless I set this
223 option. Also, if pppoe is running on a firewall machine, all machines
224 behind the firewall should have MTU's of 1412.
225
226 If you have problems, check your system logs. pppoe logs interesting
227 things to syslog. You may have to turn on logging of debug-level mes‐
228 sages for complete diagnosis.
229
230
232 pppoe was written by David F. Skoll <dfs@roaringpenguin.com>, with much
233 inspiration from an earlier version by Luke Stras.
234
235 The pppoe home page is http://www.roaringpenguin.com/pppoe/.
236
237
239 pppoe-start(8), pppoe-stop(8), pppoe-connect(8), pppd(8),
240 pppoe.conf(5), pppoe-setup(8), pppoe-status(8), pppoe-sniff(8), pppoe-
241 server(8), pppoe-relay(8)
242
243
244
245
2464th Berkeley Distribution 3 July 2000 PPPOE(8)