|
  









|
 |
RASPPPOE
PPP over Ethernet Protocol
for Windows 98/98SE/ME
(If you are using Windows
2000 or later, please click
here)
written by Robert Schlabbach
Version 0.95, December 29th, 2000
Contents
1. Introduction
Welcome to RASPPPOE, a PPP over
Ethernet (short: PPPoE) implementation
for Windows 98/98SE/ME/2000. PPPoE as a method
for establishing PPP connections through Ethernet adapters is
described in RFC 2516 and is used by many
broadband service providers to allow authentication and maintain
the familiar "dial-up experience" when connecting to
the Internet through a broadband modem. Although there are other
PPPoE implementations for Windows, this one still has its
unmatched strong points:
- Designed exclusively for Windows
2000 from ground up and then
ported to Windows 98/98SE/ME, not the
other way around.
- Seamless integration into the operating
system. This protocol makes Ethernet Adapters
appear as "modems", allowing
PPPoE to be easily used within the standard Dial-Up
Networking framework.
- Compatibility: This protocol supports Internet
Connection Sharing (including on-demand
dialing), power management (Standby
and Hibernate) as well as multiprocessor
systems.
- Completeness: This protocol can not only
act as a PPPoE Host (client), but also
as an Access Concentrator (server),
fully implementing RFC 2516.
- Compactness: The complete protocol is
less than 200 KB. Yet no
concessions were made in the implementation.
To install this protocol, please follow the installation instructions carefully. If you
have problems using it, see Troubleshooting
for help. If you are successfully using this protocol, you can
check if you find any of the advanced
features useful. You may also want to know about the known issues. Users upgrading from a
previous version of this protocol should check the Revision History to find out what changed.
If you want to get in touch with me, see Contacting
the Author.
- Robert Schlabbach
License and Disclaimer
This driver, installation files and documentation is all Copyright
(C) 2000 by Robert Schlabbach. All rights reserved. It
is distributed without any warranty. Use
at your own risk. You may use and copy it complete
and unmodified free of charge for non-commercial
purposes only. Commercial exploitation, redistribution for
commercial purposes, especially redistribution by Internet
service providers as "their" service to their
customers, is strictly prohibited. Internet
service providers must purchase a license for distribution to
their customers. The licensed version additionally features an
installer, which typically requires no reboot
and leads the user to the first login for an "instant
success" customer experience. For licensing details
please contact:
Accis Systemhaus GmbH
Riedemannweg 59
13627 Berlin
Germany
Phone: +49-30-383792-0
Fax: +49-30-383792-11
e-mail: info@accis.de
Web: http://www.accis.de
2. Installing the PPP over
Ethernet Protocol
- NOTE: Since
the installation requires a reboot to
finish, you are advised to save your work and close all
running applications before proceeding.
- During installation, you may be prompted to insert your Windows
CD-ROM, so please have it ready in case you need
it. If you have a preconfigured machine with the Windows
installation files residing on your hard drive, you will
not need the CD-ROM.
- If there is already a different PPPoE
implementation installed on your machine, it might get
confused by the PPPoE traffic generated by this protocol.
This protocol was written to peacefully coexist with
other PPPoE implementations on the same machine, but
other programmers may not have been as thoughtful. Thus,
it is recommended (but not required!)
that you uninstall any other PPPoE
implementations and reboot your machine
before proceeding.
- This protocol requires the Dial-Up Networking
component of Windows to operate. If you
are not sure whether this component is installed, click
on the Start button, select Settings
then Control Panel to open the Control
Panel window. In that window, double-click Add/Remove
Programs. In the upcoming dialog, select the Windows
Setup tab, then double-click the item Communications
in the list, look for the item Dial-Up Networking
and make sure it is checked.
- Unpack the downloaded archive to a temporary installation
directory. Make sure that the following files are
correctly extracted: README98.HTM, README2K.HTM,
NETPPPOE.INF, RASPPPOE.INF,
WINPPPOE.INF, WINPPPOE.DLL,
RASPPPOE.DLL, RASPPPOE.EXE
and RMSPPPOE.SYS.
- Right-click the Network Neighborhood (Windows
98/98SE) or My Network Places (Windows
ME) icon on your desktop and select Properties
to bring up the Network Configuration
window.
- In the Select Network Component Type
window, select Protocol and click the Add...
button. (Note: It could take a few
seconds for the following window to come up.)
- In the Select Network Protocol window,
click the Have Disk... button.
- In the Install From Disk window, either
type the name of your temporary installation directory or
click the Browse... button to navigate
to it (it does not matter which of the three INF files
you select, Windows will automatically
pick the right one later). Then click the OK
button. A new window opens, offering the PPP over
Ethernet Protocol for installation. Click OK
to start installing the protocol.
- If you have more than one network adapter in your system,
you may want to remove the PPP over Ethernet Protocol for
all adapters but the one your broadband modem is actually
connected to. To do this, locate all unneeded PPP
over Ethernet Protocol -> Adapter
Name entries in the Network
Configuration window, select them one by one and
click the Remove button. (Note:
For each adapter you remove the protocol from, you will
see two additional entries disappear: PPP
over Ethernet Miniport -> PPP over Ethernet Protocol
and NDISWAN -> PPP over Ethernet Miniport.
Do not remove any of these entries
manually!)
- IMPORTANT:
Locate and select the TCP/IP->Adapter
Name entry for the network adapter
connected to your broadband modem. If this network
adapter is dedicated to your broadband
modem, simply click the Remove button.
If you also want to access other local machines through
the same network adapter, click the Configure
button and assign a fixed IP address (e.g.
192.168.0.1 with subnet mask 255.255.255.0).
If you do not take either of these steps, you will
experience periodic pauses while using
this protocol, because Windows will
periodically halt the network adapter and try to acquire
for an IP address for it, which also makes the machine
take significantly longer to boot up.
- Click the OK button to close the Network
Configuration window and confirm to reboot.
- After the reboot, the protocol is fully functional, but
you still need to create a dial-up connection to use it.
See the next section for details.
3. Creating PPP over
Ethernet Dial-up Connections
PPP over Ethernet dial-up connections can be most conveniently
created with the Dial-up Connection Setup application
provided with the protocol, which creates dial-up connections
with all the correct settings at the click of a button.
- NOTE: The Dial-Up Networking
folder interferes with the operation of this application
and prevents successful creation of dial-up connections.
Thus, if you currently have the Dial-Up
Networking folder open, please close
that window before proceeding.
- Click the Start button on the taskbar
and select Run... to bring up the Run
dialog box.
- Type RASPPPOE in the edit field and
click the OK button to run the Dial-up
Connection Setup application.
- If the application quits with an error message, follow
the advice it gives.
- A dialog box comes up with a combo box labeled Query
available PPP over Ethernet Services through Adapter:
at the top. Select the network adapter your broadband
modem is connected to from the list. If the protocol is
only operating on one network adapter, the box will be
grayed out as there is no choice to make.
- Generally, it is recommended that you
create a connection for an adapter, not
for a specific service, so that it continues to work even
if your provider changes the server or service name. To
do this, simply click the Create a Dial-up
Connection for the selected Adapter button now.
Shortly afterwards, a shortcut to the new dial-up
connection named Connection through Adapter
Name should show up on your desktop.
- If you want to create a connection for a specific
service, click the Query Available
Services button. The application will send out a
query for offered services and display the result in the
list view below. If an error message is displayed, see Troubleshooting for help. Otherwise,
select the desired service and the button below will
change to Create a Dial-up Connection for the
selected Service. Click the button to create a
connection for this service. Shortly afterwards, a
shortcut to the new dial-up connection named Connection
to Service Name
at Access Concentrator
or Connection to Access
Concentrator (if the connection is for the
default service) should show up on your desktop.
- After you have created the connection(s) you need, click
the Exit button to quit the application.
- Double-click the desktop icon for the dial-up connection
you created.
- In the Connect To window, enter your
user name and password if your service provider requires
authentication.
- Click on the Connect button. If all goes
well, you should be connected to the Internet almost
instantly. If not, see Troubleshooting.
4. Removing the PPP over
Ethernet Protocol
- NOTE: Since
the removal requires a reboot to finish,
you are advised to save your work and close all running
applications before proceeding.
- First, you may want to remove all dial-up connections you
created for connecting with this protocol. To do so,
first double-click the My Computer icon
on your desktop. If you are running Windows ME,
double-click the Control Panel icon in
the opened window. Now double-click the Dial-Up
Networking icon in the last opened window. In
the Dial-Up Networking window, right-click
each of the dial-up connections you created for this
protocol and select Delete. If you had
created any shortcuts to these dial-up connections on
your desktop, right-click them and select Delete
as well.
- Right-click the Network Neighborhood (Windows
98/98SE) or My Network Places (Windows
ME) icon on your desktop and select Properties
to bring up the Network Configuration
window.
- For each adapter the protocol is operating on, you will
find three bindings in this window:
- NDISWAN -> PPP over Ethernet Miniport.
- PPP over Ethernet Miniport -> PPP over
Ethernet Protocol
- PPP over Ethernet Protocol -> Adapter
Name
- Locate all PPP over Ethernet Protocol -> Adapter
Name entries in this window, select them
one by one and click the Remove button.
The other two bindings belonging to this one will be
automatically removed. If you accidentally remove one of
the other bindings, no harm is done - you only need to
remove the other two manually in this case.
- Once you have removed all protocol instances, click the OK
button to close the Network Configuration
window and confirm to reboot.
- After the reboot, the protocol is usually completely
removed from your machine. In some cases, Windows
keeps a copy of the INF file in the \WINDOWS\INF\OTHER
directory, named as Robert SchlabbachWINPPPOE.INF.
You can safely delete this file after removal.
5. Advanced Protocol
Features
This section covers the advanced features of the protocol.
Average users should be perfectly happy with the default
settings, although specifying the link speed
to display may be of interest. Users having problems with VPN
software might try if overriding the MTU
reported by the protocol helps. Users with flat rate Internet
access may be interested in making the
connection "always on". If you are interested in
using the protocol's server capability, please see Enabling the protocol to act as a PPPoE Access
Concentrator.
To bring up the protocol settings for an adapter:
- Right-click the Network Neighborhood (Windows
98/98SE) or My Network Places (Windows
ME) icon on your desktop and select Properties
to bring up the Network Configuration
window.
- Locate the PPP over Ethernet Protocol -> Adapter
Name entry for the adapter the protocol
settings of which you wish to modify, select it and click
the Properties button to bring up the
protocol's settings for this adapter.
- Any changes to the protocol settings require a reboot
to take effect. You will be prompted to reboot when you
close the Network Configuration window
with the OK button after making any
changes.
The General tab offers the following settings:
5.1 Limit TCP MSS
Maximum Segment Size (MSS) Option
When using Internet Connection Sharing,
the client machines are completely unaware of the packet size
restrictions imposed by the nature of PPP over
Ethernet (in contrast to e.g. modem
or ISDN connections, which allow passing
arbitrarily sized packets). Typically, a client assumes that
packets of up to 1500 bytes can be passed
and thus indicates a Maximum Segment Size of
1460 bytes (1500 bytes minus 40 bytes for
the TCP and IP headers) when opening a TCP
session, resulting in either side of the connection sending
packets up to 1500 bytes in size, too large
to pass through a PPP over Ethernet connection, which can
only pass packets up to 1492 bytes in size.
These oversized packets are then often silently
dropped at either side of the PPP over Ethernet
connection, leading to delays or hangs
when accessing the Internet from a client.
To work around this problem, this option makes the
protocol scan all network packets it sends and receives for
the TCP Maximum Segment Size (MSS) option
and, if a value greater than either the default (1492)
or the overridden MTU minus 40
for the IP and TCP headers (i.e. 1452 in
case of the default MTU) is found, change it
to this value, recalculate the TCP checksum and pass the
modified packet. This option is enabled by
default. If you are not using Internet
Connection Sharing, you can disable
this option to save a little (very little) CPU power,
although leaving it enabled has no negative
side effects.
5.2 Override Maximum
Transfer Unit
By default, the protocol will report an MTU of 1492
bytes, the maximum possible for PPP over Ethernet. However,
you can use this option to override the MTU initially
reported by the protocol. Making the protocol initially
report a lower MTU was found to help with
certain VPN software packages which "blindly" add
their own overhead without paying any respect to the MTU
reported by the driver, making the network packets too large
to pass through a PPP over Ethernet connection. Check the Override
Maximum Transfer Unit checkbox and type the MTU the
protocol should report in the Maximum Transfer Unit (MTU)
edit box. The valid range is 576 through 1492
bytes. Reducing the MTU by 32 bytes to 1460
should generally suffice to make misbehaved VPN software work.
Note: Regardless of this setting, the protocol will
always send and receive packets of up to 1492
bytes. Only the MTU initially reported by the
protocol (the MaxFrameSize value in response
to the OID_WAN_GET_INFO request) and, if
enabled, the TCP MSS option limit
are affected by this setting.
Note that the Dial-Up Adapter's IPMTU
registry parameter is also set to the override value, since
the Dial-Up Adapter ignores the MaxFrameSize
returned by the driver. This means that this setting will
affect the MTU of all dial-up connections,
and that the use of any other MTU adjustment tool will
possibly conflict with this option, altering it.
NOTE: This option will only "stick"
if you enter an MTU other than 1492. If you
only check the checkbox, but leave the MTU at 1492,
the protocol will recognize the default value and clear
the checkbox the next time you open the properties dialog,
because the MTU was not actually overridden.
5.3 Number of lines (WAN
endpoints)
The protocol is capable of running several simultaneous
PPP over Ethernet sessions through one adapter. This feature
will probably be very rarely - if ever - needed. To allow
this, you can configure the number of WAN endpoints (dial-up
devices) the protocol exposes for a network adapter. The
default is 1, and up to 10 WAN endpoints can be configured.
This setting requires a reboot to take
effect.
The Advanced tab offers the following
settings:
5.4 Specify Link Speed
By default, the protocol will report the speed of the
network adapter you are connecting through as the speed of a
dial-up connection you make through it, as it cannot find out
the actual speed of your broadband modem. However, you can
specify the connection speed the protocol should report for
connections through a specific adapter. To do this, check the
Specify Link Speed checkbox and type the
link speed the protocol should report in the Link
Speed (kbps) edit box, in kilobits per second. If
you want to revert to displaying the adapter's link speed,
clear the Specify Link Speed checkbox.
Note: This setting has absolutely no
effect on the network traffic through this adapter; it is
purely a cosmetic setting.
Beyond these settings, the protocol offers the following
possibilities:
5.5 Making a dial-up
connection "always on"
Users who enjoy flat rate Internet access may find it
desirable to turn their connection into an "always
on" connection that is established
automatically when you log on to Windows and
kept until you log off. To make your dial-up connection "always
on", follow these steps:
- If your service provider requires authentication,
make sure you have saved the password by checking the
Save Password checkbox in the Connect
To window and connecting at least
once.
- Double-click the My Computer icon on
your desktop. If you are running Windows ME,
double-click the Control Panel icon
in the opened window.
- Double-click the Dial-Up Networking
icon in the last opened window.
- If you are running Windows 98/98SE,
click on the Connections menu of the
Dial-Up Networking window and select
Settings... to bring up the Dial-Up
Networking settings dialog. In this dialog, clear
the Prompt for information before dialing
checkbox.
- If you are running Windows ME,
locate the dial-up connection you want to make "always
on", right-click it and select Properties.
In the properties dialog, select the Security
tab and check the Connect
automatically checkbox. Then select the Dialing
tab, check the This is the default Internet
connection checkbox, select Always
dial my default connection and clear
the Enable idle disconnect and the Disconnect
when connection may not be needed checkboxes.
- Click OK to save the changes.
- Now click and drag
the desktop icon of the dial-up
connection and drop it under Start Menu,
Programs, into the Startup
folder.
- Log off and log on
again. Windows will establish the
connection automatically and keep it connected until
you log off.
5.6 Addressing a
specific Service and/or Access Concentrator
In most cases, there is no need to
address a specific Service or Access Concentrator. But should
you have a need to do so, you can use the phone
number field of your dial-up connection to specify a
Service, Access Concentrator
or both. The following phone number formats
are possible:
- "0": The protocol will
connect to the default Service of
the first Access Concentrator that replies
to the connection request.
- "Service-Name": The
protocol will connect to the first
Access Concentrator that replies
offering the requested Service.
- "Access-Concentrator\":
The protocol will connect to the default
Service of the named Access
Concentrator.
- "Access-Concentrator\Service-Name":
The protocol will connect to the requested
Service of the named Access
Concentrator.
The RASPPPOE application uses format A
for the phone number if you create a connection for an adapter
and format C or D if you
create a connection for a specific service.
5.7 Enabling the
protocol to act as a PPPoE Access Concentrator
The protocol is able to act as a PPPoE Access
Concentrator (server). This feature can be used for
testing purposes, but also offers a future
potential for advanced provider services like instant
messaging or instant e-mail even
for users who are offline at the time a
message is received. The server capability is fully
integrated with the operating system's Dial-Up Server
component. No PPPoE-specific configuration is needed. The
protocol uses the current Computer Name as
the Access Concentrator Name and offers only
the unnamed default service. Note that the
protocol will not offer any services until
you explicitly enable its dial-up devices to
accept incoming connections. To do this, follow these steps:
- Double-click the My Computer icon on
your desktop. If you are running Windows ME,
double-click the Control Panel icon
in the opened window.
- Double-click the Dial-Up Networking
icon in the last opened window.
- In the Dial-Up Networking window,
click on the Connections menu of the
Dial-Up Networking window and select
Dial-Up Server... to bring up the Dial-Up
Server settings dialog. If you cannot find
this menu item, you first need to install the Dial-Up
Server component. Go to Control
Panel, Add/Remove Programs,
Windows Setup, Communications
and enable the component there.
- If you see a message saying "No modem is
installed.", or you don't see any tab
with the name of your network adapter
on it, you may have to reboot to make Dial-Up
Server recognize the dial-up devices exposed
by the protocol (see Known
Issues).
- Select the tab with the name of the network
adapter through which you want to accept
incoming PPP over Ethernet
connections and select Allow caller access
on that page. Click the Change Password...
and the Server Type... buttons to
configure the access.
- Click OK to save the changes and
enable the server.
- If you want to disable the server, open the Dial-Up
Server settings dialog again, select the tab
with the name of the network adapter
on it and select No caller access.
Then click OK to stop the protocol
from offering services on that network adapter.
For further help on using Dial-Up Server,
please refer to the operating system's documentation on this
topic.
6. Troubleshooting
This section helps you with possible problems you might
encounter during the installation and use of the protocol.
6.1 RASPPPOE application
does not list the desired adapter
First, be aware that you can use this protocol only on Ethernet
adapters. As PPP over Ethernet only works
over Ethernet, the protocol will only bind itself to Ethernet
adapters (NdisMedium802_3). Adapters that do
not support this medium type (e.g. internal or USB broadband
modems that do not expose a standard
Ethernet interface through their driver) are
not supported by this protocol.
Check in Device Manager whether the
network adapter connected to your broadband modem is enabled
and working properly. If it is, try rebooting
the machine. If that does not help, try uninstalling
the protocol, rebooting, re-installing
and rebooting again. Your adapter should be
listed now.
6.2 RASPPPOE application
reports "RASPPPOE - No Service Offers Received"
when querying available services
This error message means that the protocol did not receive
any response from your service provider. You
should check the following things in order:
- Check if your broadband modem has successfully
established a link with its counterpart. Most DSL
modems have a Sync LED on them which
indicates this status. If your modem has such an LED
and it indicates that the link is down, contact your
service provider for assistance.
- Check in Device Manager if the network
adapter your broadband modem is connected to
is enabled and working properly.
- Bring up the Network Configuration
window, select the network adapter your broadband
modem is connected to and click Properties.
In the Properties window, select the
Advanced tab, look through the
options and make sure that the correct Line
Speed and duplex mode is
selected (most DSL modems only support 10Mbps
half duplex mode). If your network adapter
has several connectors at the back, make sure the
correct connector is selected, which is most likely Twisted
Pair (TP).
- Check that the cable connecting your broadband modem
to your network adapter is properly attached and of
the correct type. Note that broadband modems
typically have a "crossed"
connector on them, so you will need a straight
cable to connect it directly to a
network adapter, while you need to use a crossed
cable or use an uplink
port to connect it to a hub or switch.
- Check with your service provider whether they
currently have a service outage.
6.3 Connection attempt
fails with "Error 678: There was no answer."
First, you should check whether you can get any
reply from your service provider with the Dial-up
Connection Setup application provided with the
protocol:
- Click the Start button on the
taskbar and select Run... to bring
up the Run dialog box.
- Type RASPPPOE in the edit field and
click the OK button to run the Dial-up
Connection Setup application.
- If the application quits with an error message,
follow the advice it gives.
- A dialog box comes up with a combo box labeled Query
available PPP over Ethernet Services through Adapter:
at the top. Select the network adapter your broadband
modem is connected to from the list. If the protocol
is only operating on one network adapter, the box
will be grayed out as there is no choice to make.
- Click the Query Available Services
button. If an error message is displayed, continue here for further help.
- If the list view shows one or more offered services
and you had tried to connect to a specific
Service and/or Access
Concentrator, make sure the one you had
tried to connect to is listed. If you find your
provider has changed the Service Name and/or the
Access Concentrator name, simply create a new
connection with the new name(s) or edit the Phone
number field in your existing dial-up
connection accordingly.
- Click the Exit button to quit the
application.
If you do not want to connect to a
specific Service and/or Access
Concentrator, make sure the Phone number
field of your dial-up connection really only contains a
single zero digit.
6.4 Connection is
successfully established, but some (or all) Internet websites
do not load properly
This is usually a sign of an MTU problem.
A possible cause for this could be that the Dial-Up
Adapter's common IP MTU
setting was altered to a value too high for PPP over
Ethernet. This setting is altered e.g. when you
change the IP Packet Size value on the Advanced
tab of the Dial-Up Adapter Properties to
something other than the "PPP over Ethernet"
setting added by the protocol, or by some MTU tools. You
should not change this setting, nor use any tools that alter
it when using PPP over Ethernet. To ensure
this setting is correct do the following:
- Right-click the Network Neighborhood
icon on your desktop and select Properties
to bring up the Network Configuration
window.
- Locate any PPP over Ethernet
Protocol -> Adapter Name
entry, select it and click the Properties
button.
- Close the properties window with the Cancel
button.
- Close the Network Configuration
window with the OK button. If Windows
prompts you to reboot, the IP
MTU setting had to be corrected. Allow the
reboot and try if the connection works properly.
If that did not help, you should determine the Path
MTU to the problem site(s) (Note:
The method described here does not work with all servers. If
you get no reply at all from a server or a number below 548,
you cannot determine the Path MTU to the server in question):
Connect, open an MS-DOS Prompt and run:
ping -f -l xxxx Address
Where Address is the name or IP
address of the server you have problems accessing.
For xxxx, start with 1464
and lower the number until you get a reply.
Then add 28 to the highest number at which
you get a reply. The result is the Path MTU.
Example: You start getting replies at ping
-f -l 1372 Address. The
Path MTU is 1372 + 28 = 1400 bytes in this
case.
Normally, the Path MTU to all servers should be 1492.
However, some service providers appear to have a
configuration problem which reduces the Path MTU. If you
determine a Path MTU lower than 1492 to
several (or all) servers on the Internet, you should enable
the MTU override option and set it
to the Path MTU you determined. After that
setting has taken effect, all sites with a Path MTU greater
than or equal to the value you set should load properly.
6.5 Connection is
successfully established, but there are periodic pauses while
using the Internet
This is typically the result of leaving the TCP/IP->Adapter
Name entry in the network configuration, not
assigning any fixed IP address to it, and
not having any DHCP server on the local
network either. This also makes the machine take
significantly longer to boot up. To fix this, right-click the
Network Neighborhood (Windows 98/98SE) or My
Network Places (Windows ME) icon on your desktop and
select Properties to bring up the Network
Configuration window. In this window, locate and
select the TCP/IP->Adapter
Name entry for the network adapter connected to
your broadband modem. If this network adapter is
dedicated to your broadband modem, simply click the Remove
button. If you also want to access other local machines
through the same network adapter, click the Configure
button and assign a fixed IP address (e.g. 192.168.0.1
with subnet mask 255.255.255.0).
6.6 Cannot get Internet
Connection Sharing to share the PPPoE connection
A common cause of this is that Internet Connection
Sharing was incorrectly set up to
use a network adapter for Internet access,
which bypasses the PPP over Ethernet
Protocol. Re-configure Internet Connection
Sharing and make sure you select the Dial-Up
Adapter as the device through which to access the
Internet. For further help, see this article in the Microsoft
support database:
Q273587
- How to Configure ICS for Use with DSL Connections That Use
PPPoE Adapters
6.7 The "Override
Maximum Transfer Unit" option does not remain checked
This option will only "stick" if you enter an
MTU other than 1492. If you only check the
checkbox, but leave the MTU at 1492, the
protocol will recognize the default value and clear
the checkbox the next time you open the properties dialog,
because the MTU was not actually overridden.
7. Known Issues
This section documents known issues with the protocol.
7.1 If the installer
requires a reboot to finish, the initial connection will not
have an icon in the system tray
If the installer detects that it can not start the
protocol dynamically, it informs the user that a reboot is
required. Upon the next reboot, the installer creates a dial-up
connection and brings up the Connect To
dialog before the task bar appears. If the
connection is established, it will be fully functional, but
there will be no icon for it in the system tray. To
disconnect the connection, double-click the Connection
through Adapter Name icon
that was placed on the desktop to bring up the connection
status and click the Disconnect button there.
Background: The installer places an entry
under the RunOnce registry key to run itself
after the reboot. When starting, Windows
runs all entries under this key and waits for each one to
finish before starting the shell. Thus, the
connection will be established before the task bar is
created, making it impossible for Dial-Up Networking
to add a connection icon to the system tray.
7.2 Dial-Up Server
does not recognize the dial-up devices exposed by the
protocol until the machine is rebooted
If the installer starts the protocol dynamically without a
reboot, it is possible to make outgoing
connections with it, but the Dial-Up Server
will not recognize the dial-up devices exposed by the
protocol. The user must reboot the machine
to make Dial-Up Server recognize the
protocol's dial-up devices.
Background: The cause of this issue is
undetermined.
8. Revision History
Version 0.95, December 29th, 2000
- Added: A no-reboot installer
(fully licensed version
only) that installs,
repairs or upgrades
the protocol from a single, self-extracting
executable, typically without
requiring a reboot on any of the
supported platforms. Additionally, it creates a dial-up
connection and then prompts the user to connect to
allow an "instant success"
experience. The protocol will be added to the list of
installed programs in Add/Remove Programs
in Control Panel for convenient and complete
uninstallation. Optional command-line switches allow silent
installation, upgrade and removal for licensees who
wish to provide their own installer front-end.
- Added: Server capability.
If one of the dial-up devices exposed by the protocol
is configured to accept incoming connections, the
protocol will offer the unnamed default
service on the corresponding adapter and use
the computer name set in the
networking configuration as the Access
Concentrator name. If the connection is
accepted, the protocol will do a left-to-right (big-endian)
comparison of the adapter's MAC address
with the one of the connecting host, and generate an even
(LSB 0) session identifier is the
adapter's MAC address is lower,
or an odd (LSB 1) one if it is higher,
to ensure that two machines connecting to each other
simultaneously do not generate identical
session identifiers. The server is not
industry-strength. There is no
limit on the connections per MAC address,
nor is any encryption being used in the Access
Concentrator Cookies generated by the
protocol, so a malicious user on the same
Ethernet segment could occupy all
incoming lines with a denial-of-service
attack, but do no harm beyond that. Great care has
been taken to minimize the load on
the system if such an attack is made.
- Added: Timers. The
protocol now times out connection requests and
resends requests two times, once after one
second, then after two seconds,
and three seconds after that
indicates no answer. Incoming
connections are offered for five seconds
before being rejected. When a connection is
established, a watchdog timer checks
every ten seconds whether any
packets been received, and generates and sends an LCP
Echo-Request to the peer if no packet has
been received since the last check. If at the next
check still no packet has been received, the
connection is terminated with no answer.
Thus, a connection that was dropped by the other end without
termination will be detected as lost within 20
to 30 seconds.
- Added: In Windows 98/98SE/ME,
RASPPPOE.EXE now checks whether Dial-up
Networking is installed and gives an error
message if it is not. Additionally, it checks if NDIS.VXD
version 4.10.2222 is installed, and
warns the user to install fix Q243199
if it is.
- Added: In Windows 98/98SE/ME,
WINPPPOE.DLL now adds a new value to
the Packet Size setting of the Dial-Up
Adapter called PPP over Ethernet,
which sets the packet size to either the default (1492)
or the overridden MTU.
- Fixed: RASPPPOE.EXE
would show erroneous query results
if more than one Access
Concentrator offered services, because the
driver was returning an incorrect query result length.
Fixed this by correcting the length calculation in
the driver.
- Fixed: In Windows 98/98SE/ME,
RASPPPOE.EXE was unable to properly
retrieve the names of network adapters which were 58
characters or more long, which led to it displaying a
blank adapter name and being unable
to create a dial-up connection for the adapter. Fixed
this by increasing the size of the retrieval buffer
and limiting the size of the passed name.
- Fixed: Windows 98/98SE/ME
was unable to tell apart the dial-up devices exposed
for two network adapters of the same name. Fixed this
by appending a "#X" suffix
to the dial-up device name if the protocol is already
bound to a network adapter of the same name.
- Fixed: In Windows 98SE/ME,
NDIS.VXD versions 4.10.2224
(from fix Q243199 for Windows
98SE) and 4.90.3000 (included
in Windows ME) randomly dropped
packets received from the NE2000 or
the Realtek RTL8029(AS) driver
without indicating them to the protocol for an
unknown reason. Worked around this problem by adding NDIS_PACKET_TYPE_ALL_LOCAL
to the packet filter if Windows 98/98SE/ME
and one of these two drivers is detected, which makes
NDIS.VXD work reliable again.
- Fixed: If TAPI
requested to drop a call, the
protocol would not transition to the idle
call state, because I had misunderstood a paragraph
in the DDK documentation. This might also have been
the cause of TAPISRV.EXE causing
crashes in RPCRT4.DLL in Windows
ME. Fixed this by reviewing all TAPI
call state transitions and making sure the behavior
is compliant with the DDK documentation.
- Fixed: When running a repair
or upgrade install on Windows
2000, the protocol could crash
the operating system with a blue screen indicating
that RASPPPOE.SYS was unloaded
without canceling pending operations. Investigation
revealed that Windows 2000 was
trying to call the protocol's ProtocolPnPEventHandler()
function after it had been unloaded, because the
protocol had not been deregistered. Further
investigation revealed that the ProtocolUnload()
handler is never called in Windows 2000,
which is not documented in the Windows
2000 DDK documentation. Fixed this by
providing a DriverUnload() handler
again to deregister the protocol, and by putting the
pointer to this function directly into the driver
object in DriverEntry() to omit the NdisMRegisterUnloadHandler()
call, which is not available in Windows 98.
The ProtocolUnload() handler is
still provided for Windows 98/98SE/ME.
- Changed: RASPPPOE.EXE
now displays a different error
message if the user tried to query available services
through an adapter which line is already in use by an
active PPPoE session, explaining that the user needs
to disconnect that session to be able to query
services.
- Changed: If more than one WAN
Endpoint is configured for a network
adapter, "Line X" suffixes
will now be appended in Windows 2000
as well. Previously, they were only appended in Windows
98/98SE/ME.
- Changed: In Windows 2000,
the protocol no longer logs query
results to the event log. RASPPPOE.EXE
made this function obsolete.
- Changed: Removed the NCF_NOT_USER_REMOVEABLE
flag from the WAN miniport (PPP over Ethernet
Protocol) INF file for Windows 2000,
allowing manual removal of any miniport instances
left behind in Device Manager.
- Changed: Replaced the previously
imported strncmp() and _strnicmp()
kernel functions with inline functions. Removed the
need for the _snwprintf() kernel
function by generating the "Line X"
suffixes directly in the code.
- Changed: During protocol
initialization and shutdown, the MiniportQueryInformation(),
MiniportSetInformation(),
MiniportReset() and MiniportWanSend()
handlers now return NDIS_STATUS_ADAPTER
NOT_READY instead of NDIS_STATUS_FAILURE.
- Changed: The protocol service name
and the driver binary name were changed to RMSPPPOE
and RMSPPPOE.SYS, respectively, to
enhance compatibility with future Windows versions.
Version 0.94, May 17th, 2000
- First release with Windows 98/98SE/ME support!
No thanks to Microsoft's complete lack of
documentation on NDIS intermediate drivers
in Windows 98/98SE/ME.
- Added: Windows 98/98SE/ME
support. Figured out the INF format
for NDIS intermediate drivers in Windows 98/98SE/ME
and where WAN.TSP expects an NDIS
intermediate driver's TAPI registry
subkey to be located in the registry. Added a 16-bit
Windows DLL (WINPPPOE.DLL) with an NDI
procedure to create that registry subkey
upon installation, set the Dial-Up Adapter's
IPMTU registry parameter to the MTU for PPP
over Ethernet (Windows 98/98SE/ME
was found to ignore the maximum
frame size returned by the driver) and offer the protocol
properties GUI. Changed the driver unload
function to ProtocolUnload(), since NdisMRegisterUnloadHandler()
is not supported in Windows 98/98SE/ME.
Removed the NdisIMAssociateMiniport()
call from the DriverEntry()
function, since that call is not supported in Windows
98.
- Added: RASPPPOE.EXE
user-mode application for easy dial-up connection
setup.
- Added: Limit TCP MSS Option
to make MTU changes on Internet Connection
Sharing client machines unnecessary. A new
function scans all incoming and outgoing packets for
the TCP Maximum Segment Size (MSS)
option and, if necessary, limits it to either the
default (1492) or the overridden
MTU (see below) minus 40 for the IP
and TCP headers (i.e. 1452 in case
of the default MTU) and recalculates the TCP checksum.
- Added: MTU Override
option to override the MTU initially reported by the
driver. If an override value is specified, it will be
reported as the MaxFrameSize in
response to the OID_WAN_GET_INFO
request. In Windows 98/98SE/ME, the Dial-Up
Adapter's IPMTU registry parameter is also
set to the override value. It will furthermore be
taken into account when limiting the TCP MSS
option. Making the protocol initially report
a lower MTU was found to help with
certain VPN software packages which "blindly"
add their own overhead without paying any respect to
the MTU reported by the driver.
- Added: WAN Endpoints GUI option to
easily change the number of dial-up devices exposed
for a network adapter.
- Fixed: Dial on demand
in Windows 2000 never triggered a
connection. Windows 2000 apparently
only dials modems, ISDN and X.25 devices on demand.
Changed the device type of the dial-up devices
exposed by the protocol to ISDN to
work around this bug.
- Fixed: The protocol could lose one
of its internal packets each time an NdisTransferData()
call failed, until it would eventually be unable to
receive any data. It appears that never actually
happened to anyone, though.
- Fixed: The PPPoE version and type
fields were reversed in the declaration. As the
current PPPoE version and type are both 1, this bug
went unnoticed.
- Changed: The protocol will now no
longer log a warning to the event log if it receives
a PADT packet for a session that
does not exist (or no longer does).
- Changed: The Event Logging
Options now default to logging all
types of events. This should now produce no
log entries during flawless operation.
Version 0.92, February 6th, 2000
- Fixed: No data transfer possible
after successfully establishing a connection. The
protocol was corrupting data packets it had to
retrieve through NdisTransferData().
I had made the incorrect assumption that NdisTransferData()
would use the ByteOffset parameter on the destination
buffer as well, but instead it just starts at offset
zero in the first buffer chained to the passed packet.
Fixed this by chaining an additional buffer
descriptor pointing to the desired destination
location to the front of the packet before calling NdisTransferData().
- Fixed: Connection Error "Opening
port... Error 797: The connection failed because the
modem (or other connecting device) was not found."
after waking the machine from Standby.
There were no OID_PNP_XXX handlers
in the protocol. Additionally, it turned out that TAPI
requests OID_TAPI_PROVIDER_INITIALIZE
after returning from Standby,
although it never shuts the provider
down with OID_TAPI_PROVIDER_SHUTDOWN.
The protocol did not allow re-initialization without
shutdown. Fixed this by adding the missing OID_PNP_XXX
handlers and allowing TAPI provider re-initialization
without a prior shutdown.
Version 0.90, January 30th, 2000
- First release that actually works! A
wholehearted Thank You! to Jerome Whelan
who invested so much time to provide me with the
comprehensive feedback that I needed to make this
protocol functional.
- Fixed: Installation Error "Could
not add the requested component. The error is:
Invalid access to memory location." on some
machines. On those, the loader crashed when loading RASPPPOE.DLL,
because I had linked it with the /align:16
linker switch. Removed the switch from the build
settings.
- Fixed: Connection Error "Disconnected.
Error 619: The specified port is not connected."
on all connection attempts. NDISWAN
failed to recognize the PPP frames within the
complete received Ethernet frames the protocol passed
to it, although I had specified the HeaderPadding
correctly as outlined in the DDK documentation. Fixed
this by setting the HeaderPadding to
zero and only passing the portion of the buffer with
the actual PPP frame to NDISWAN.
- Fixed: Ping Timeouts
with certain packet sizes. NDISWAN
passes up to four bytes more to a
WAN miniport's send handler than the WAN miniport
indicated as its MaxFrameSize.
Apparently a WAN miniport driver writer is expected
to make assumptions about the PPP HDLC overhead NDISWAN
adds before passing a packet to the
miniport - four bytes of simple PPP HDLC framing (Address
and Control fields and Protocol Identifier). Fixed
this by adjusting the maximum frame and total sizes
accordingly and changing the size limit comparisons.
Version 0.80, January 15th, 2000
9. Contacting the author
Before contacting me, please bear in mind that you are getting
this piece of software for free. You cannot
expect me to spend my time providing "tech support". If
you have a problem that you cannot resolve after reading above
documentation thoroughly, please first check if
there is updated information or a newer version
of this protocol available on the RASPPPOE Home Page.
Of course, developer suggestions for fixing the known issues, success stories (please
mention your service provider, so that I know which ones this
protocol works with) or just "thank you" notes are
always welcome.
You can contact me via the e-mail address normanb@cs.TU-Berlin.DE.
|